Cycles: better path termination for transparency.
[blender.git] / intern / cycles / kernel / kernel_types.h
index c26769341f0401c84610c9294ea061d3c88fd264..44e7fd46adc87037608718902a55de609df30c89 100644 (file)
@@ -361,6 +361,17 @@ enum PathRayFlag {
        PATH_RAY_STORE_SHADOW_INFO           = (1 << 18),
        /* Zero background alpha, for camera or transparent glass rays. */
        PATH_RAY_TRANSPARENT_BACKGROUND      = (1 << 19),
+       /* Terminate ray immediately at next bounce. */
+       PATH_RAY_TERMINATE_IMMEDIATE         = (1 << 20),
+       /* Ray is to be terminated, but continue with transparent bounces and
+        * emission as long as we encounter them. This is required to make the
+        * MIS between direct and indirect light rays match, as shadow rays go
+        * through transparent surfaces to reach emisison too. */
+       PATH_RAY_TERMINATE_AFTER_TRANSPARENT = (1 << 21),
+       /* Ray is to be terminated. */
+       PATH_RAY_TERMINATE                   = (PATH_RAY_TERMINATE_IMMEDIATE|PATH_RAY_TERMINATE_AFTER_TRANSPARENT),
+       /* Path and shader is being evaluated for direct lighting emission. */
+       PATH_RAY_EMISSION                    = (1 << 22)
 };
 
 /* Closure Label */