Archived

This topic is now archived and is closed to further replies.

Venerable

Software vs. Hardware

Recommended Posts

I am returning to graphics programming after a long absence. I had learned how to do software rendering a long time ago and even written a simple software renderer. I am in the process of learning DirectX/Direct3D and am progressing fairly well. I find that the one thing I am not clear about at this point is exactly what functions have now been taken over by the hardware. I know I''m not going to be doing rasterization any more and probably no texture mapping, simple shading or lighting. I am wondering if there is a good article that delineates the differences between old style software rendering and the capabilities of the newer graphics cards. I am particularly interested in getting an idea of at what points in the pipeline one can still ''jump in'' and do something out of the ordinary. I hope the question is clear and thanks in advance for any help.

Share this post


Link to post
Share on other sites
quote:

I find that the one thing I am not clear about at this point is exactly what functions have now been taken over by the hardware.


Well, pretty much everything. Or to be more precise: everything at face/vertex level is taken by hardware: 3D clipping, transformation, projection, 2D clipping, backface culling, lighting, texturing, shadows, blending, etc.

quote:

I am particularly interested in getting an idea of at what points in the pipeline one can still ''jump in'' and do something out of the ordinary.


Unfortunately, there is no way to jump in anywhere in the pipeline, using the CPU. At least, if you are interested in good performance. But that''s where the famous vertex and pixelshaders jump in: they let you directly program the 3D pipeline and adjust it to your needs. The main difference is that you are now programming the GPU instead of the CPU (as in the old SW rendering days).

Share this post


Link to post
Share on other sites
Well, correct me if I''m wrong, but you can still lock the surface after all the hardware is done with it, and add any effects you can dream up software rendered, then unlock the surface and flip it. I''m not sure if that''s what you mean, but it''s one way of adding your own stuff to the rendering.

It''''s nice to be important, but it''''s more important to be nice.

Share this post


Link to post
Share on other sites
Your best bet for jumping in and doing unordinary things are pixel and vertex shaders, which allow you to directly program the video card''s GPU. Lock/Unlock are extremely inefficient, especially if you''re calling them every frame.


Don''t listen to me. I''ve had too much coffee.

Share this post


Link to post
Share on other sites