question

Rudy Cortes avatar image
Rudy Cortes asked ·

Custom Closure Development

Hello, everyone.

Is there any documentation on how to create a custom closure? Once I create such closure, what would I need to do to "expose" it to OSL?

Thanks so much

shaders
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Mike Farnsworth avatar image
Mike Farnsworth answered ·

You can create custom BSDFs in Arnold using the C++ API in ai_shader_bsdf.h by filling in the callbacks for your specific BSDF. You can wrap it in a closure like so:

AtBSDF* bsdf = AiBSDF(sg, rgb_weight, my_bsdf_methods, my_bsdf_data_size);
sg->out.CLOSURE() = AtClosure(my_color, bsdf);

This will work from within C++ shaders, but obviously not OSL shaders. Unfortunately, I don't think it's possible at this time to exposure arbitrary closures to OSL code directly. However, you should be able to create a C++ shader that outputs a closure that can be connected as an input closure color to an OSL shader (and vice-versa) in the shader network.

1 comment Share
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Is this something that is planned? Having the ability to write BxDFs and expose them as OSL closures would be great.

0 Likes 0 · ·
Rudy Cortes avatar image
Rudy Cortes answered ·

Thanks a lot Mike.

Share
10 |600 characters needed characters left characters exceeded

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 5 attachments (including images) can be used with a maximum of 2.0 MiB each and 9.8 MiB total.

Welcome to the Arnold Answers community.

This is the place for Arnold renderer users everywhere to ask and answer rendering questions, and share knowledge about using Arnold, Arnold plugins, workflows and developing tools with Arnold.

If you are a new user to Arnold Answers, please first check out our FAQ and User Guide for more information.

When posting questions, please be sure to select the appropriate Space for your Arnold plugin and include the plugin version you are using.

Please include images, scene and log files whenever possible as this helps the community answer your questions.

Instructions for generating full verbosity log files are available for MtoA, MaxtoA, C4DtoA, HtoA, KtoA, and Kick.

If you are looking for Arnold Documentation and Support please visit the Arnold Support site.

To try Arnold please visit the Arnold Trial page.

Bottom No panel present for this section.