5 ms·
The article mentions a "distance to occluder buffer". I suspect this is like a shadow buffer, which normally is obtained by rendering the scene using the point
by alejohausner 11y ago
The article mentions a "distance to occluder buffer". I suspect this is like a shadow buffer, which normally is obtained by rendering the scene using the point light as the eye point, and saving the resulting depth buffer. Perhaps they reverse the depth test, to store, at each pixel in the shadow buffer, the distance to the object furthest from the light source. This would then be distance to the occluder closest to the ground plane.
But I don't see evidence of blockiness that such a pixelized distance map would produce. It's hard to tell what they're doing. One thing I'm sure they're not doing is real ray casting from each hit point to the light source. I don't see how they could test each such ray against the whole scene, and do that using the GPU.
While I'm on the topic, the soft shadows they compute are not exact, since they assume the light source is a circle, and their analytic formula for the penumbra angle is an approximation. Shadows would look different for linear lights like fluorescent tubes.
But hey, if you're in the middle of a game, dodging enemies, you won't stop to criticize the slightly incorrect shadows. In an architectural rendering, the difference might be noticeable.
- jdecell 11y agoThe distance to occluder buffer is a screen space "inverse shadow map" if you will. For each screen space pixel it stores the distance from the surface under that pixel to closest occluder, should one exist. We are in fact casting a real ray from each non-trivially shadowed pixel towards the light source. We're using the PowerVR Wizard GPU's hardware ray tracing unit to accelerate process. Pixels who's surface is back-facing WRT the light (i.e. N dot L < 0) we know are shadowed so there's no need to cast any rays.