首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开放阴影语言(OSL)在新材料/BSDFs方面的限制究竟是什么?

开放阴影语言(OSL)在新材料/BSDFs方面的限制究竟是什么?
EN

Stack Overflow用户
提问于 2019-09-21 17:40:43
回答 1查看 699关注 0票数 2

我正在研究BRDF描述和实现技术,OSL是主要的语言之一。我很好奇如何使用OSL来实现一个新的BRDF,或者是否有可能做到这一点,而不影响它的源代码

OSL文档给出了一组可供任何渲染者使用的材料。例如,搅拌器提供了一组扩展的实现材料,可以在OSL中使用(这些材料实际上已经作为循环中的节点使用)。我有兴趣创造新的材料(BRDF)。根据这条线的说法,OSL不应该像这样使用,相反,用户应该利用现有的材料闭包(BSDF)来创建新的材料。线程中的OP试图实现BRDF,但由于找不到获得所需特定向量的方法,所以无法继续执行。

最后,我的问题是:为了创建用于OSL的新材料(BRDF),是否需要先在C++中实现它们,然后重新编译OSL,最后才能使它们可用?我没能找到这个问题的确切答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-28 10:02:36

从OSL规范的介绍开始,

OSL的表面和体积着色器计算一个明确的符号描述,称为“闭合”,一个表面或体积散射光的方式,以单位的亮度。

在混合器中,具有绿色输出套接字的循环节点是“闭包”节点,它们提供BRDF/BSDF计算,在呈现中提供外观。循环提供可用的闭包类型,OSL无法实现新的闭包类型。

因此,您必须更改混合器代码以提供不同的闭包类型,但是OSL脚本可以在周期节点树中添加大量的自定义功能,而不必更改混合器代码。OSL脚本是使用LLVM的JIT编译器编译的,以在当前使用的CPU上运行。因此,OSL脚本会将新代码“注入”到呈现引擎中,它只是在如何更改最终结果方面受到限制。

请注意,OSL脚本不必提供闭包输出,它可以输出浮点数或颜色值,从而允许它在节点树中提供中间节点。

例如,OSL脚本,LGHexTiles.osl提供了一个完整的节点,可以自己使用作为材料。当MAscales.osl提供颜色和浮点输出时,只能在材料中形成一个节点。

和许多事情一样,OSL脚本也可能被滥用。这里你会发现关于旧的Amiga正在一个OSL脚本实现的信息。是的,一个简单的渲染引擎,用OSL编写。我敢肯定他还在继续发展射线追踪器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58042659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档