Last night I dreamed that graphics card processors would make a return to partial fixed function operation. They would be part GPU, but have set functions for performing depth of field, fresnel water effects, normal/specular/parallax mapping, high dynamic range, motion blur and maybe a shadow map technique. So the next iteration of the nVidia line would have the same amount of stream processors as the current gen and all the extra transistors would be for the fixed function items. The performance increase would be the same as when graphics cards first went to performing 3D functions, ala the Voodoo 1, but would only be noticed if the game was patched to support it. The functions would be called inside fragment programs so the data generated by the fixed functions could be used in the shaders.
The thing is, that sounds quite plausible to me. GPU's have become so versatile that they surely can't be as fast as fixed function. They still have the ROPs, but with every game on the market sporting all those features I listed above, surely it could actually be better to have a hybrid approach? The operations wouldn't have to go through thread schedulers and the data wouldn't have to be passed around. It would just go straight through and come out the other end done. Would those functions require too many transistors to be practical?
I see the performance hit that the R6xx takes due to not having normal fixed function AA as the inspiration for this dream. The original move away from x86 processors was for this exact reason. I remember reading a quote from an old 3dfx employee who said they would take a mathematical function, like the 2D transform and just slap it onto the dye. Put the number in, get the answer out. Another reason for the dream could be the Wii, as I heard its really easy to develop for and get good results because the GPU is fixed function.
Sure there would be some problems, like the graphics card isn't 'future compatible', but I've always believed any hope of a graphics card lasting longer than 2 years and still being able to play games decently is nothing more than wishful thinking. Patching games would be easy as you could just take the shaders, cut out a big chunk of math in the middle and put in the function call with the custom parameters.
What other problems would there be to that approach or is it really just too far fetched? Just remember I'm talking hybrid here, you have to keep shaders for infinitely obvious reasons, so I'm not even considering going totally backwards. It just seems like every developer reinvents the wheel by writing their own shader code for something thats done in 100 other games, then the hardware company has to go in and optimize their driver so it gets good performance because the programmer did things slightly differently, even though he got the same result.
The thing is, that sounds quite plausible to me. GPU's have become so versatile that they surely can't be as fast as fixed function. They still have the ROPs, but with every game on the market sporting all those features I listed above, surely it could actually be better to have a hybrid approach? The operations wouldn't have to go through thread schedulers and the data wouldn't have to be passed around. It would just go straight through and come out the other end done. Would those functions require too many transistors to be practical?
I see the performance hit that the R6xx takes due to not having normal fixed function AA as the inspiration for this dream. The original move away from x86 processors was for this exact reason. I remember reading a quote from an old 3dfx employee who said they would take a mathematical function, like the 2D transform and just slap it onto the dye. Put the number in, get the answer out. Another reason for the dream could be the Wii, as I heard its really easy to develop for and get good results because the GPU is fixed function.
Sure there would be some problems, like the graphics card isn't 'future compatible', but I've always believed any hope of a graphics card lasting longer than 2 years and still being able to play games decently is nothing more than wishful thinking. Patching games would be easy as you could just take the shaders, cut out a big chunk of math in the middle and put in the function call with the custom parameters.
What other problems would there be to that approach or is it really just too far fetched? Just remember I'm talking hybrid here, you have to keep shaders for infinitely obvious reasons, so I'm not even considering going totally backwards. It just seems like every developer reinvents the wheel by writing their own shader code for something thats done in 100 other games, then the hardware company has to go in and optimize their driver so it gets good performance because the programmer did things slightly differently, even though he got the same result.