DemoCoder said:
II would beg to differ. I would say that "Register Combiners" are an extension of Multitexturing, not "Pixel Shaders", where RC's are a subset of PS's. The trouble is that RC's are what we have now on the Geforce, Radeon & Parhelia (To varying degrees), so there is a limit to what you can do. These are only the first totering steps into Pixel Shader land.
I would beg to differ too! The current DX8 "pixel shaders" are actually a subset of GF3 register combiners. The OpenGL interface for NV_register_combiners2 allows one to do things not possible in DX8 PS because of the multiple output nature of the combiners (e.g. can do A.B, AB, and AB+CD using only a single combiner)
I would agree that the current shaders are somewhat limited, allowing only 16 per pixel operations in total (8 scalar, 8 vector). And PS1.4 isn't much better.
However, even with the limited number of operations available in PS1.1 or PS1.4, you can accomplish a great many things. Most lighting revolves around combinations of a few simple quantities: the local normal, light vector, eye vector, half angle vector, etc I've looked at some pretty slick RenderMan surface shaders that only used a few ops and no loops.
I'd say the lack of interesting pixel shader effects to this day has been caused by several things:
1) no market demand -- widespread lack of DX8 capable, or even DOT3 capable hardware. Takes a lot of extra content creation work to utilize effectively, little reward. Game engine has to be designed from the ground up to avoid doing the effects "piece meal", and frankly, 2 years ago when most new engines being used today started getting written, there was even less pixel shading hardware out there.
2) lack of performance. Using 3 or 4 textures all ovee the scene was probably prohibitively slow until latest hardware gen
3) difficultly in doing something "new". Water? Seen it. Shiny Bumpy? Bo-ring. Reflections? Yawn. Translucence? Refraction? Per pixel shader? All seen in demos before, nothing new.
4) Per pixel lighting only takes you so far. Realism comes in large part from global lighting algorithms, including shadows. Seeing a game with realistic, dynamic, shadows and ambient lighting is far more impressive, far more real looking, then same old Quake-engine style lighting that every game up till Q3 has had.
5) real value of per pixel generalized shading will be realized by procedural texture effects, infinite non-repeating textures with mega zoom capability and not much texture ram storage required. Also, per pixel programmable displacement mapping will be big.