[OSL] Support for `trace()` with OptiX
As of 5.0, OSL + GPU rendering has limitations that make OSL impractical for professional shading workflows.
Mainly, the
trace()
function is not available, resulting in nodes like
Ambient Occlusion
,
Bevel
and custom OSL tracing shaders (like a sample based curvature shader) impossible to use.
(
docs.blender.org/manual/en/latest/render/cycles/osl/index.html
)
This really cripples OSL support because these nodes are very common+useful, forcing the users to either use CPU (impractical), finding alternatives to these nodes (sometimes impossible), or just not using OSL at all.
There are two approaches that I see:
-
One is to fully support these nodes and
trace() - The other is to fall back to the non-GPU implementation for shader graphs that contain these nodes/functions. But the granularity is tricky here; mixing both CPU and GPU shader graph evaluation is probably not possible.
For context: I heavily rely on OSL for my shading workflows on other DCCs, and not having some of these very basic and important procedural nodes limits my ability to migrate to Blender.
0 Comments