Well, considering that DirectX and OpenGL move only towards a system with a shader (that is, without a fixed function), the answer to your "what effects are possible only with shaders" may be "everything."
Some methods that I believe are impossible / possible without programmable shaders (or using specific black box APIs) are:
- Perpixel lighting
- Shadow mapping.
- Removing skins from the graphics adapter (i.e. changing the matrix palette) for animated grids.
- Any of the various post-process effects that are common today: flowering, SSAO, depth of field, etc.
- Deferred shading.
- Implement arbitrary / โotherโ lighting models such as Oren-Nayar, Cook-Torrance, Rim-Lighting, etc.
and the list goes on, and Iโm sure that some people will disagree with my assessment that they cannot be achieved using fixed function functions (through hacks or various extensions of fixed functions).
The fact that it all comes down to that in front of programmable shaders, this effect should have been implemented in the hardware / driver by the supplier, and it should have been something that could reasonably be expressed through the API. Now you can efficiently execute any custom code that you want (within the limits of various shader stages and other hardware limitations) so that you can flexibly customize the rendering pipeline and invent new methods as you see fit.
Take a look at the first two books of GPU Gems (which can be read for free on the Nvidia website) to get an idea of โโthe methods that appeared after the firmware was available.
eodabash
source share