FurMark
Current Version: 1.7.0
»FurMark
»Benchmark Submissions

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

My Account



Blogs
»Demoniak3D Blog
»JeGX's Infamous Lab

Link to Us

oZone3D.Net 100% Realtime 3D

»All Site's Network

Visitors Map

 


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



4 - Variables

4.1 - Data category

NV_parameter_buffer_object and EXT_bindable_uniform offer the same functionality but not for the same language. In terms of GLSL, there are four data sources that a shader can process: attributes, like for example the vertex position, its normal, its texture coordinates, the textures with all the diversity that it means (especially with the GeForce 8800), the varying variables that make it possible to pass data from a shader to another, and finally the uniform variables which are data that are valid for all the vertex, all the triangles and all the fragments of a GPU program.

Among these data, we usually find samplers and other material properties, as well as lights. The idea behind these extensions is to store the value of the uniform variables into the memory of the graphic card and then be able to exchange these variables for a same program. In order to benefit from this behavior, it is not possible to use the fixed pipeline functions, which drops a little bit more this old method.



4.2 - Evolution of the method

Practically, a scene can contain a certain number of different lights with very different properties. But if an object is moving inside the scene, it will be exposed to different lights according to its position; we will then just have to change the "bindable uniform buffer objects" used by the program.

In an even more practical manner, let's consider a scene featuring few static objects that have each one their own material but with a same applicable program for each. In the same way, we just need to change the "bindable uniform buffer object" instead of changing the value of each object one after one, which leads to a CPU charge decrease.

Finally, one single "bindable uniform buffer object" can be applied to several different programs. For a single multi pass light rendering, we can assume that several passes will need to access the lights' parameters. Another very interesting contribution that will change the shader programming approach is that binding a buffer does not mean "assigning a value". Values may be assigned at the initialization and then selected when it comes really necessary. EXT_bindable_uniform uses the excellent buffer object API proposed by OpenGL 1.5 for the vertex buffer objects [1].



4.3 - Benefits

This extension makes me particularly happy cause I think it brings some flexibility to the GPU programming, which may result in a decrease of the number of shaders used in a project while reducing the CPU charge and memory consumption as well. This functionality will certainly be officially present in the next OpenGL version, even more since the ARBis actually working on it.



Note d'Edition




[ Index ]

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

»Next Page







Language:

3D Graphics Search Engine:

The Geeks Of 3D



Geeks3D News


HackLAB News

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


PhysX FluidMark
Current Version: 1.1.1
»PhysX FluidMark
»Benchmark Submissions



Misc
»Texture DataPack #1
»Asus Silent Knight CPU Cooler
Page generated in 0.062091112136841 seconds.