Programmable Vertex Processing ?

Started by
2 comments, last by KuroKage 18 years ago
Hi, I saw in the thread [D3D] do you use the programmable pipeline that this term is mentioned by Namethatnobodyelsetook.
Quote: A *huge* number of effects become possible with programmable vertex processing, which can be emulated on the CPU for older hardware, so lack of hardware isn't a good excuse for not using the programmable pipe.
What does he mean by this? Does it mean that I can still learn shaders but the effects will be emulated by the CPU? I'm not sure what it is. Please help. Also, I also found a thread Modern Graphics Engine Design where SimmerD said something about using vertex shaders in lower end machines.
Quote: Regarding lower-end machines : In many engines, the #1 thing you can do to improve performance and quality on lower end machines is to use vertex shaders ( even in software ). By trying to use fixed-function T&L, you can waste more CPU with low batch sizes ( due to constantly switching world matrices, and turning lights on & off ) than you spend in the SW vertex shader routines. By using vertex shaders, you can also do a better job setting up the fixed function texture blending pipeline than the fixed T&L pipe could. For instance, you could never do averaged L bump mapping in the fixed pipe, but it's easy in vertex shaders.
One big reason that I can't get started learning shaders is that my video card doesn't support one (so I'm stuck with FFP) and shamefully, I don't have any money to buy one. It would really be nice if I can do this with my old card and the only difference will be which of the hardware will implement it. I'm really hoping that you can help me with this. Thank You
Advertisement
It is easy to enable software vertex processing - just specify D3DCREATE_SOFTWARE_VERTEXPROCESSING as a flag in the call to CreateDevice. You can then run any vertex shader profile on the device.

D3D doesn't do high-performance pixel shader emulation, but you can test pixel shaders on the reference rasterizer device (very slowly, though).

Niko Suni

Both Intel and AMD have included highly optimized vertex shader emulation as part of Direct3D. As Niko mentioned, just create your device with software processing, and voila, you have vertex shader support.

The trickier part of making this choice is GeForce256, and GeForce2 cards (and Radeons of the same caliber). These cards have hardware T&L, but no shaders. If you use software processing, you lose out on hardware T&L, but gain shaders. If you use hardware processing you get fixed pipeline hardware T&L, but lose shaders. Which way is better is up to your app. Do you need the flexibility of shaders, or the speed of HW T&L? For these cards, another option crops up, called MIXED processing. With this you can switch on hardware processing, render as much as possible, switch to software processing, and render everything else. This can also be used to emulate missing point sprite functionality. The switch is costly, but doing it once or twice a frame won't hurt.
Hi,

Thanks a lot guys for the infos. I really appreciate it. I'm not really that particular about optimal performance of my app at the time. I just want to learn HLSL first and get familiar with it before getting into those things. Anyway, thanks again.

This topic is closed to new replies.

Advertisement