我正在研究 BRDF 描述和实现技术,而 OSL 是这样做的主要语言之一。我很好奇使用 OSL 实现新 BRDF 的方式,或者是否可以在不弄乱源代码的情况下这样做。
OSL 文档提供了一组任何渲染器都应该使用的材料。例如,Blender 提供了一组可在 OSL 中使用的扩展的已实现材质(这些材质实际上已作为 Cycles 中的节点提供)。我对创建新材料 (BRDF) 很感兴趣。根据这个线程,OSL 不应该像这样使用,而是用户应该利用已经可用的材料闭包(BSDF)来创建新材料。该线程中的 OP 试图实现 BRDF 但无法取得进展,因为他找不到获得所需某些向量的方法。
最后,我的问题是:为了创建用于 OSL 的新材料(BRDF),是否有必要先在 C++ 中实现它们并重新编译 OSL,才能最终使它们可用?我无法找到这个问题的明确答案。