Preface:
Pardon me if I over simplify (or get it wrong) from lack of detailed knowledge. My questions are based on what I understand NVidia is saying in regards to 3d Mark 03 tests and my own personal journey towards learning more about 3d development and hardware.
Questions:
Once game developers start developing games where graphics is primarily done by shaders on todays top NVidia hardware platforms are NVidia suggetsing the following rules apply:
1. Be modest in your demands for high colour precision in any scene, regardless if you are using DX9 or OpenGL in any pathway.
Your code has to be mapped to physical hardware that only has so much throughput in its capablity to handle fx12, fp16 or fp32 bit colour precision. So when you code your games budget for how much of a frame will need high precision colour rendering (pixel shading).
Prehaps today on NV35 set a target for a demanding game with alot of shaders and complex lighting to use 5 - 10% fp32 in any given scene, 60% fp16 and 35 - 30% fx12 colour precision on our best 3d hardware (yes I know all games target 2 generation old h/w anyway).
2. When you write pixel shaders you need to specify (hard code) the exact colour precision required for certain effects on any object knowing exactly what the colour precision is in advance.
I understand 3d GPU assembler is not a high level abstract language. You have to specify the data accuracy in the specific instructions used and the data types they address. Worst case this would mean writing 3 different precision shaders to do the same effect on 3 different colour precision objects (or is worse case having to write nine shaders for a FX 12, fp16 or fp32 based model interacting with a fx 12, fp 16 or fp32 image affecting pixel shader)?
3. Whenever a object needs to be modified you would need to know what colour precision it is currently at and what colour precision object or event is affecting it and therefore what colour precision the target result should be calculated at?
So if Object A is skinned to colour accuracy fx 12 (say its a persons arm) and it interacts with object B (say a can of silver paint) causing shader C (a fp 16 or fp32 accuracy function) - to add a reflective mirror surface to that persons arm - then you'd somehow have to up the colour accuracy of shading that object to fp32 level within that environment.
* * *
This all sounds very powerful but extremely complex to manage in future games or benchmarks. Is managing that level of complexity for every object in a game and every shading function really what would have to be done in future?
Pardon me if I over simplify (or get it wrong) from lack of detailed knowledge. My questions are based on what I understand NVidia is saying in regards to 3d Mark 03 tests and my own personal journey towards learning more about 3d development and hardware.
Questions:
Once game developers start developing games where graphics is primarily done by shaders on todays top NVidia hardware platforms are NVidia suggetsing the following rules apply:
1. Be modest in your demands for high colour precision in any scene, regardless if you are using DX9 or OpenGL in any pathway.
Your code has to be mapped to physical hardware that only has so much throughput in its capablity to handle fx12, fp16 or fp32 bit colour precision. So when you code your games budget for how much of a frame will need high precision colour rendering (pixel shading).
Prehaps today on NV35 set a target for a demanding game with alot of shaders and complex lighting to use 5 - 10% fp32 in any given scene, 60% fp16 and 35 - 30% fx12 colour precision on our best 3d hardware (yes I know all games target 2 generation old h/w anyway).
2. When you write pixel shaders you need to specify (hard code) the exact colour precision required for certain effects on any object knowing exactly what the colour precision is in advance.
I understand 3d GPU assembler is not a high level abstract language. You have to specify the data accuracy in the specific instructions used and the data types they address. Worst case this would mean writing 3 different precision shaders to do the same effect on 3 different colour precision objects (or is worse case having to write nine shaders for a FX 12, fp16 or fp32 based model interacting with a fx 12, fp 16 or fp32 image affecting pixel shader)?
3. Whenever a object needs to be modified you would need to know what colour precision it is currently at and what colour precision object or event is affecting it and therefore what colour precision the target result should be calculated at?
So if Object A is skinned to colour accuracy fx 12 (say its a persons arm) and it interacts with object B (say a can of silver paint) causing shader C (a fp 16 or fp32 accuracy function) - to add a reflective mirror surface to that persons arm - then you'd somehow have to up the colour accuracy of shading that object to fp32 level within that environment.
* * *
This all sounds very powerful but extremely complex to manage in future games or benchmarks. Is managing that level of complexity for every object in a game and every shading function really what would have to be done in future?