which is fastest
hi
i am start to develop my game engine and i need to know fastest way for implmentng graphic in my game engine.
which is fastest :
1. vbo,dispaly lists, indexed vertex arrays
2. FBO or gbuffer ( for deferred shading)
3. CSAA, MSAA, FSAA ( i think CSAA is faster than others)
4. GLSL, ARB shaders or CG
Use VBO and GLSL/CG to ensure future compability.
after all, it depends on your target platform and what not.
after all, it depends on your target platform and what not.
IME:
1. Indexed VBO. Though currently on nVidia cards, display-lists are reported to be much faster
2. There's no g-buffer in openGL. It's a concept, that uses a FBO with multiple attached textures.
3. CSAA is nicest and almost as fast as MSAA.
4. They differ only in speed of binding + set constants. GLSL: fast to bind and set unis on ATi, slower on nVidia. ARB: fastest, but extremely limited (think Doom3 graphics only, no branching). NV-asm: available only on nV, as fast as ARB but with all latest features. CG: internally compiles only either to NV-asm, ARB-asm, or fails.
1. Indexed VBO. Though currently on nVidia cards, display-lists are reported to be much faster
2. There's no g-buffer in openGL. It's a concept, that uses a FBO with multiple attached textures.
3. CSAA is nicest and almost as fast as MSAA.
4. They differ only in speed of binding + set constants. GLSL: fast to bind and set unis on ATi, slower on nVidia. ARB: fastest, but extremely limited (think Doom3 graphics only, no branching). NV-asm: available only on nV, as fast as ARB but with all latest features. CG: internally compiles only either to NV-asm, ARB-asm, or fails.
Also, non-trivial GLSL is hell on different ATi drivers, judging from reports in the opengl forum. Your shader works fine on one driver, crashes/misbehaves on 2 others. There's no ATi alternative to nV-asm.
There is a new object, VAO - which promises speedups on binding VBOs.
Streaming vertex-data must use streaming VBOs (in round-robin fashion, and glMapBuffer).
Indexed triangles can make use of the vertex-cache.
I think that also the DX caps-viewer shows which vertex-data declarations are actually directly accelerated by the gpu (i.e 4 unsigned bytes for a color, instead of 3UBs). Anything not listed there is probably retranslated by the driver. I haven't benchmarked, yet.
If I would like to support the 30% ATi users, most of which anyway have SM2.0 cards, I'd make a second path in the engine (material-manager), where either dumbed-down ARB or slowed-down GLSL is used. While primarily using nV-asm, compiled from the Cg compiler.
ASM shaders will stay for as long as DX9, DX10 and DX11 exist (as they also use asm-code exclusively to instruct the driver), so I'm betting on asm.
There is a new object, VAO - which promises speedups on binding VBOs.
Streaming vertex-data must use streaming VBOs (in round-robin fashion, and glMapBuffer).
Indexed triangles can make use of the vertex-cache.
I think that also the DX caps-viewer shows which vertex-data declarations are actually directly accelerated by the gpu (i.e 4 unsigned bytes for a color, instead of 3UBs). Anything not listed there is probably retranslated by the driver. I haven't benchmarked, yet.
If I would like to support the 30% ATi users, most of which anyway have SM2.0 cards, I'd make a second path in the engine (material-manager), where either dumbed-down ARB or slowed-down GLSL is used. While primarily using nV-asm, compiled from the Cg compiler.
ASM shaders will stay for as long as DX9, DX10 and DX11 exist (as they also use asm-code exclusively to instruct the driver), so I'm betting on asm.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement