← All ideas
  • Published 30 Nov 2025

[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.

100%

Development Status: Open

Upvote 1 Downvote 0
mermelada
30 Nov 2025

0 Comments