My Account


RSS
oZone3D.Net RSS Feeds»RSS 2.0 Feeds

Blogs
»Demoniak3D Blog
»JeGX's Infamous Lab

Sponsors

Modul8: real time video mixing and compositing


Link to Us

oZone3D.Net 100% Realtime 3D

»All Links

Web Partners

www.geeks3d.com
www.benchmarkhq.ru
www.tdt3d.com
www.steph3d.net
www.g-truc.net
www.worldpcspecs.com


Banners Exchange

www.jmax-hardware.com
cgindia.blogspot.com
grapejuice.c.la
www.game-lab.com


Links Exchange

»CYGAD's 3DXtra

Search
Google
Web
oZone3D.Net
 


GIGABYTE Technology - Geforce 8800 Series - oZone3D.Net Sponsor
*** If you read this text, that means you should install a Flash plugin: Get Flash Player ***
NVIDIA nZone.com NVIDIA Developer Blog
NVIDIA G80: OpenGL Programming

By: Christophe [Groove] Riccio - www.g-truc.net
Initial Version: November 12, 2006
Edited and Translated by the oZone3D Team
Last Update: March 25, 2007


[ Index ]

Introduction | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

»Next Page



8 - GLSL

8.1 - Geometry shader

An important number of the previously described extensions have implications at the GLSL level but also with the API that allows the interaction between the CPU and the GPU. The GL_EXT_gpu_shader4 extension handles these changes and GL_EXT_geometry_shader4 is in charge of integrating into OpenGL the geometry shader notion which, just for recalling, should be called "primitive shader" according to the OpenGL terminology. The geometry shaders bring new geometric shapes to describe the neighborhood of each primitive, which allows for example to apply the triangle subdivision [1]. Contrarily to Direct3D 10, the syntax of the geometry shaders is not snaky. In fact, it is the same than the one that has been used till now for the vertex shaders and the fragment shaders with this famous unification function, which means that all the functionalities are available for all the shaders.

Besides, there are only two functions available on the geometry shader: EmitVertex() and EndPrimitive() whose working is easily understandable when referring to the immediate mode of OpenGL. EmitVertex() is then equivalent to glVertex*() and EndPrimitive() is equivalent to glEnd(). glBegin() is implicit, when we go in a geometry shader, we may consider that a call of this type is done, also after each call to EndPrimitive(). Data that have been given to each newly created vertex correspond to the values given to the varying variables.



8.2 - Language update

At the GLSL level, we have to deal with two new functions, round and truncate, as well as a revaluation of integers. They are now coded on 32 bits, the bit-to-bit operators are supported, the abs, sign, min, max and clamp functions fully support integers and new unsigned integer types are available: unsigned int, uvec2, uvec3 et uvec4 and a big number of new samplers for texture representation with integers. Regarding functions for the textures, it is a real bleeding, like the one for the "texture fetch", to get the dimensions, access to the texture array, without take into account two new notions: the first is the gradiant (partial derivateon each component) and the second is the offset, that allows to offset the texture coordinates by a sum



Editor's Notes
  • [1]: Triangles subdivision is only one of the numerous applications of the geometry shaders. In 2001-2002, ATI had integrated into radeon the Trueform technology which can be seen as a limited and fixed version of the G80's geometry shaders. For more information about Trueform see the following article: ATI TRUFORM Technology - Powering the next generation Radeon.




[ Index ]

Introduction | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

»Next Page







Language:


Demoniak3D
Current Version: 1.23.0
»Demoniak3D
»Download
»Libraries and Plugins
»Demos
»Online Help - Reference Guide
»Codes Samples


GPU Caps Viewer
Current Version: 1.4.2
»GPU Caps Viewer
»GPU DB Submissions


FurMark
Current Version: 1.4.0
»FurMark
»Benchmark Submissions


Geeks3D News
Page generated in 0.064095973968506 seconds.