PDA

View Full Version : Texture Splatting: Fixed pipeline VS Pixel Shaders



unreal
12-14-2005, 11:45 PM
Hello There! I am currently working on a 3D Engine.
The minumum gfx requiremens will be ATI Radeon 8500+ and GeForce4 Ti4200+ hardware.
The engine is a terrain engine. End I will use texture splatting for texturing the terrain.
Whitch is the fastest way to do texture splatting at Pixel Shader v1 class hardware?

Just using the fixed pipeline? or using Pixel Shaders? (Register combiners for nVidia and ATI_fragment_program for ATI)

Thanks For your time! :)

Groovounet
12-15-2005, 05:38 AM
I have done a terrain renderer using splatting and I think that splatting isn't a reason to use fragment shader, lighting is.

You can have exactly the same result on the screen using the fixed pipeline or shaders so to have the best performance use the fixed pipeline (But that true that you can have exactly the same performence with shaders)

Also you say "The minumum gfx requiremens will be ATI Radeon 8500+ and GeForce4 Ti4200+ hardware." but without ATI or NV extensions (GL_NV_texture_shader2 for GF4200) you could not use shader to do this. To you really think that write a more complicate code that doing nothing better is usefull? No I am.

With my terrain renderer I discover that texture splatting wasn't as good I have thinking before because it is really slower that big textures. To a terrain tools as the one of Ground control 2 (Look at it it is a great tool) it could be usefull because with want that the texture dynamicaly change. But for the game, if the terrain never change, it didn't really improve some think.

On my AthlonXP 2800+ and GF6600 I have around 500 FPS with texture stretching with a texture witch size is 4096*4096 and 150 FPS with texture splatting with 5 basis textures witch size if 512*512.

My texture streching code path is CPU bound and my texture splatting code path is fill rate bound.

unreal
12-15-2005, 06:08 AM
I will say an example..
Using ATI_fragment_shader on a ATI R2x0 class hardware(6 texture units) you can render with one pass a terrain with 1 base texture + 4 splat textures + 1 (4 to 1 packed) RGBA alphamap.
To render this stuff using the fixed pipeline you need 2 passes cause you can not access the individual channels in the alpha map and you need 4 alphamap textures instead of one.
so.. i think that one pass is better than two.
but one pass with pixel shader.. is it better than two passes with fixed pipeline?

thanks :D