Blender Git Loki
Git Commits -> Revision 9c6a382
Revision 9c6a382 by Mikhail Matrosov (master) June 28, 2021, 12:05 (GMT) |
Cycles: reduce shadow terminator artifacts Offset rays from the flat surface to match where they would be for a smooth surface as specified by the normals. In the shading panel there is now a Shading Offset (existing option) and Geometry Offset (new). The Geometry Offset works as follows: * 0: disabled * 0.001: only terminated triangles (normal points to the light, geometry doesn't) are affected * 0.1 (default): triangles at grazing angles are affected, and the effect fades out * 1: all triangles are affected Limitations: * The artifact is still visible in some cases, it could be that some quads require to be treated specifically as quads. * Inconsistent normals cause artifacts. * If small objects cast shadows to a big low poly surface, the shadows can appear to be in a wrong place - because the surface moved slightly above the geometry. This can be noticed only at grazing angles to light. * Approximated surfaces of two non-intersecting low-poly objects can overlap that causes off-the-wall shadows. Generally, using one or a few levels of subdivision can get rid of artifacts faster than before. Differential Revision: https://developer.blender.org/D11065 |
Commit Details:
Full Hash: 9c6a382f9540c8e334a16b7740b5ba6bb294fca9
Parent Commit: ce25b58
Committed By: Brecht Van Lommel
Lines Changed: +138, -22
10 Modified Paths:
/intern/cycles/blender/addon/properties.py (+8, -1) (Diff)
/intern/cycles/blender/addon/ui.py (+19, -7) (Diff)
/intern/cycles/blender/blender_object.cpp (+6, -2) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+79, -0) (Diff)
/intern/cycles/kernel/closure/bsdf.h (+3, -6) (Diff)
/intern/cycles/kernel/geom/geom_triangle.h (+13, -0) (Diff)
/intern/cycles/kernel/kernel_emission.h (+1, -2) (Diff)
/intern/cycles/kernel/kernel_types.h (+2, -1) (Diff)
/intern/cycles/render/object.cpp (+5, -2) (Diff)
/intern/cycles/render/object.h (+2, -1) (Diff)
/intern/cycles/blender/addon/ui.py (+19, -7) (Diff)
/intern/cycles/blender/blender_object.cpp (+6, -2) (Diff)
/intern/cycles/kernel/bvh/bvh_util.h (+79, -0) (Diff)
/intern/cycles/kernel/closure/bsdf.h (+3, -6) (Diff)
/intern/cycles/kernel/geom/geom_triangle.h (+13, -0) (Diff)
/intern/cycles/kernel/kernel_emission.h (+1, -2) (Diff)
/intern/cycles/kernel/kernel_types.h (+2, -1) (Diff)
/intern/cycles/render/object.cpp (+5, -2) (Diff)
/intern/cycles/render/object.h (+2, -1) (Diff)