Page MenuHome

Fix T74939: Random Walk subsurface appearance in OptiX does not match other engines
ClosedPublic

Authored by Patrick Mours (pmoursnv) on Wed, Mar 25, 6:38 PM.

Details

Summary

Random Walk subsurface looks different with OptiX as per T74939, which is happening because transmittance is calculated based on the hit distance, but the OptiX implementation of scene_intersect_local would return the distance in world space, while the Cycles BVH version returns it in object space. Because of that Cycles applies an object->world transformation to the distance returned by scene_intersect_local in some places, which breaks with OptiX where this is already in the correct space.

One solution would have been to fix the OptiX variant of scene_intersect_local to also return the distance in object space. But that would involve unnecessary transformation math that is later reversed anyway. So instead I opted to simply skip the object->world transforms in all the places using the result of scene_intersect_local with OptiX.

Diff Detail

Repository
rB Blender