CryTek Comments on Shader 3.0
In an effort to uncover the truth behind Shader 3.0, we created a list of questions to ask Mr. Yerli. We were pleased to see that NVIDIA made no suggestions for questions and that the CEO was so willing to comply. Hopefully, these questions will help end all the speculation and myths regarding Shader 3.0 and we can all truly understand what its purpose is from the developer's point of view. It should be noted that all Mr. Yerli's responses are posted exactly as they were received. Given the informal nature of the interview and a bit of a language barrier, grammar and spelling might have been sacrificed in a few cases. Regardless, all the juicy information you're after is present and accounted for.
1) As a developer, what are the most convincing arguments for the use of Shader 3.0 over 2.0?
Â· In VS3.0 shader model actually is possible to support general displacement mapping (with smart shader design when vertex shader has to do something during waiting for texture access).
Â· In PS3.0 shaders it's possible to decrease number of shaders using dynamic branching (single shader for general lighting) and in such way decrease number of shader switches, passes, and as result increase speed, and also we can utilize dynamic conditional early reject for some cases in both PS and VS and this also will increase speed. As to NV40 generally possible to use co-issues better to take advantage of super-scalar architecture (we can execute 4 instructions per cycle in a single pipeline).
Â· We can handle several light sources in single pixel shaders by using dynamic loops in PS3.0.
Â· We can decrease number of passes for 2-sided lighting using additional face register in PS3.0.
Â· We can use geometry instancing to decrease number of draw-calls (remove CPU limitations as much as possible).
Â· We can use unrestricted dependent texture read capabilities to produce more advanced post-processing effects and other in-game complex particles/surfaces effects (like water).
Â· We can use full swizzle support in PS3.0 to make better instructions co-issue and as result speedup performance.
Â· We can take advantage of using 10 texture interpolators in PS3.0 shader model to reduce number of passes in some cases.
2) As a developer, do you see any compromises or negative aspects resulting from the use of Shader 3.0 over 2.0?
3.0 shader model is just extension to 2.0 shader model. It means it's possible to compile PS2.0 shader as PS3.0 shader target and it still remains 2.0 compliant shader from the hardware side. Several new features in 3.0 shader model aren't for free. Texture access in vertex shader is expensive, dynamic branching is not for free. So if developer has to utilize some features of PS3.0 shader model he/she should design shader in way which will remove other much important bottlenecks of application (CPU limitations, states/shaders changing, make shorter shader execution path, decrease streams bandwidthâ€¦).
3) Was Crytek or any of its employees paid by NVIDIA to present at the launch event for the GeForce 6800 series?
I wish we would have got some Ferraris :D but nope!
4) Will we see an update for FarCry which enables Shader 3.0? If so, will this be for the entire game or for specific new maps? If a patch enabling Shader 3.0 in FarCry is pending, when can we expect to see it available?
5) Is Crytek planning on implementing Shader 3.0 on any/all titles following FarCry or is the company 'testing the waters'?
In future generally for all new titles. We don't have to test water, we know its warm there :D
6) For the screenshot examples shown at the launch event, why was PS 1.1 used to contrast PS 3.0? Why wasn't a PS 2.0 screenshot compared to PS 3.0 instead?
On the event PS1.1 was compared with PS2.0/PS3.0. We don't use PS3.0 everywhere. The general rule is to use as lower shader version as possible. So PS3.0 could be used only in several critical places where it gives performance boost.
7) What aspects of the screenshots seen at the launch event are specific examples of the flexibility and power of Shader 3.0?
In current engine there are no visible difference between PS2.0 and PS3.0. PS3.0 is used automatically for per-pixel lighting depending on some conditions to improve speed of rendering.
8) Is the same level of image quality seen when using Shader 3.0 possible using Shader 2.0? If so, what dictates which Shader you decide to use?
In current generation engine quality of PS3.0 is almost the same as PS2.0. PS3.0 is used for performance optimisation purposes.
9) What is your opinion on 64-bit blending and filtering. Do you feel there are cases where it will make a difference to gamers?
64-bit blending and filtering can be used for HDR Rendering and also for soft shadows and other special effects such as Depth of Field. Beside this it is also useful for SAT texture mapping (Summed Area Tables). In video-games using of HDR & DOF will enable us to render real-time scenes very close to movie production quality which will increase realism in the imagery.