We have enough knowledge of the local surface that we can fairly easily detect this case with a single dot product between the per-pixel reflection vector and the interpolated vertex normal. The gist is that we need to start occluding light coming in along these “underground” reflection vectors. As far as I know it’s my invention, but it’s easy enough that I wouldn’t be surprised to learn it has been done elsewhere. Toolbag’s renderer uses a simple technique to help correct this. Here is a sphere lit with a single environment map that illustrates the problem well: This is mitigated sometimes by shadow mapping or other occlusion terms, but in the case of image-based lighting it can be especially tricky to avoid this kind of “light leaking”. If this vector is then used for shading, a surface can end up receiving light that should never have reached it. With just about any normal map this happens quite a bit - the reflection vector ends up pointing behind the surface being rendered. When rendering reflective surfaces with normal maps, something often goes wrong: Horizon Occlusion for Normal Mapped Reflections
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |