PATH_RAY_ALL_VISIBILITY = ((1 << 14)-1),
- PATH_RAY_MIS_SKIP = (1 << 15),
- PATH_RAY_DIFFUSE_ANCESTOR = (1 << 16),
- PATH_RAY_SINGLE_PASS_DONE = (1 << 17),
- PATH_RAY_SHADOW_CATCHER = (1 << 18),
- PATH_RAY_STORE_SHADOW_INFO = (1 << 19),
- PATH_RAY_TRANSPARENT_BACKGROUND = (1 << 20),
+ /* Don't apply multiple importance sampling weights to emission from
+ * lamp or surface hits, because they were not direct light sampled. */
+ PATH_RAY_MIS_SKIP = (1 << 14),
+ /* Diffuse bounce earlier in the path, skip SSS to improve performance
+ * and avoid branching twice with disk sampling SSS. */
+ PATH_RAY_DIFFUSE_ANCESTOR = (1 << 15),
+ /* Single pass has been written. */
+ PATH_RAY_SINGLE_PASS_DONE = (1 << 16),
+ /* Ray is behind a shadow catcher .*/
+ PATH_RAY_SHADOW_CATCHER = (1 << 17),
+ /* Store shadow data for shadow catcher or denoising. */
+ PATH_RAY_STORE_SHADOW_INFO = (1 << 18),
+ /* Zero background alpha, for camera or transparent glass rays. */
+ PATH_RAY_TRANSPARENT_BACKGROUND = (1 << 19),
};
/* Closure Label */
"glossy", /* PATH_RAY_GLOSSY */
"singular", /* PATH_RAY_SINGULAR */
"transparent", /* PATH_RAY_TRANSPARENT */
+
"shadow", /* PATH_RAY_SHADOW_OPAQUE_NON_CATCHER */
"shadow", /* PATH_RAY_SHADOW_OPAQUE_CATCHER */
"shadow", /* PATH_RAY_SHADOW_TRANSPARENT_NON_CATCHER */
"shadow", /* PATH_RAY_SHADOW_TRANSPARENT_CATCHER */
"__unused__",
+ "volume_scatter", /* PATH_RAY_VOLUME_SCATTER */
+ "__unused__",
+
"__unused__",
"diffuse_ancestor", /* PATH_RAY_DIFFUSE_ANCESTOR */
"__unused__",
"__unused__",
- "__unused__", /* PATH_RAY_SINGLE_PASS_DONE */
- "volume_scatter", /* PATH_RAY_VOLUME_SCATTER */
+ "__unused__",
+ "__unused__",
};
const int nraytypes = sizeof(raytypes)/sizeof(raytypes[0]);