XxStratoMasterXx
Regular
Well, I was pleasanly surprised that after 5 minutes, I had gotten a reply from Tim on my questions. So I asked basically about shadowing in Unreal Engine 3. I hope you guys find this interesting!
Would dynamic, soft-shadow buffers be possible (from an actual functionality standpoint) to be cast from everything onto everything?
That's possible, but to get good results (and avoid aliasing) you need *extremely* high-resolution shadow maps, such as 2048x2048 or higher. And the performance impact of rendering shadow buffers for all objects in the scene for every light (as opposed to only dynamic lights or dynamic objects) is fairly high. This seems like it will be a viable technique in the future, perhaps when GPU's are 4X-10X faster and state-change overhead is further reduced.
Are the stencil volumes "softened" by use of filtering or fragment program processing?
We have a shader that performs oversampling, and it takes advantage of bilinear filtering to enhance the blurring effect.
What exactly is a "pre-computed shadow mask"?
This is a single-component, 8-bit-deep texture map applied to surfaces in a similar way to a lightmap (though lightmaps store 3-component RGB values). A shadow mask's greyscale values indicate the percentage occlusion from the light to each texel on a surface, independent of the light's attenuation, color, and brightness. The shadow mask stores the shadow part of a lighting computation in a precomputed way, while the per-pixel normal-mapping, specular lighting, and attenuation are done dynamically.
How is High-Dynamic-Range rendering done on R300/R420 class visual processors?
The only special consideration on that hardware is its lack of floating-point blending. To work around that, we swap to a new render target, and perform manual blending in a shader program, using the original render target as a texture. This is slower than real floating-point blending, but only affects total performance by 20% or so
Well, I'd like to thank Tim for answering my email!
Would dynamic, soft-shadow buffers be possible (from an actual functionality standpoint) to be cast from everything onto everything?
That's possible, but to get good results (and avoid aliasing) you need *extremely* high-resolution shadow maps, such as 2048x2048 or higher. And the performance impact of rendering shadow buffers for all objects in the scene for every light (as opposed to only dynamic lights or dynamic objects) is fairly high. This seems like it will be a viable technique in the future, perhaps when GPU's are 4X-10X faster and state-change overhead is further reduced.
Are the stencil volumes "softened" by use of filtering or fragment program processing?
We have a shader that performs oversampling, and it takes advantage of bilinear filtering to enhance the blurring effect.
What exactly is a "pre-computed shadow mask"?
This is a single-component, 8-bit-deep texture map applied to surfaces in a similar way to a lightmap (though lightmaps store 3-component RGB values). A shadow mask's greyscale values indicate the percentage occlusion from the light to each texel on a surface, independent of the light's attenuation, color, and brightness. The shadow mask stores the shadow part of a lighting computation in a precomputed way, while the per-pixel normal-mapping, specular lighting, and attenuation are done dynamically.
How is High-Dynamic-Range rendering done on R300/R420 class visual processors?
The only special consideration on that hardware is its lack of floating-point blending. To work around that, we swap to a new render target, and perform manual blending in a shader program, using the original render target as a texture. This is slower than real floating-point blending, but only affects total performance by 20% or so
Well, I'd like to thank Tim for answering my email!