前言
开发你的第一个 Arnold 着色器,我们在之前的文章Open Shading Language (OSL) “开放的着色器语言”中已经对 OSL 语言有了一个初步的了解,那么 Arnold 渲染器的强大和可玩性,已经为我们带来了无限可能,那么 OSL 的出现,让这种无限可能成真。
一说起开发编程之类的话题,很多小伙伴就赶脚一脸懵逼,当然这也并不是每个学渲染器的必修课,在这里也只是抛砖引玉,对于此有兴趣的小伙伴,可以了解下。
从官方文档来看,Arnold 支持 C++、Python 语言开发,那么 OSL 语言是索尼旗下 Imageworks 公司开发的,它很适合支持光线追踪和全局光照的物理渲染器,这货不就是为 Arnold 开发的么...OSL 最大的特性就是轻量化、简单、不用学习过于复杂的语言姿势...
那么今天就来开发我们的第一个 OSL 着色器,来了解下 OSL 的基本结构和用法;
OSL 的基本结构和用法
完整代码:
//你的第一个 Arnold 漫射颜色着色器节点 surface RShader ( color inputColor = color(1), output closure color Rcolor = diffuse(N) ) { Rcolor = inputColor * diffuse(N); }
使用方法
1、将上面代码保存为 RShader .osl 文件;
2、丢到 x:\Program Files\MAXON\Cinema 4D R19\plugins\C4DtoA\shaders 里面;
3、重启 C4D,打开 Arnold 节点编辑器,在左侧找到 RShader 节点。
PS:新版 Arnold 增加了 OSL 节点,可以直接使用。
代码解析
由此可见,OSL 的语言设计非常简洁高效,短短 4 段语句就开发出了类似 Arnold 漫射颜色的着色器。好吧,从此以后你又多了一个称号,会开发着色器的渲染师,emmm~
OSL 和其他着色器不同,也就是我们没有确切的去定义对象表面的样子,而是,我们去告诉着色器节点,如何计算表面的样子,通过自定义函数、算法,结合影响表面的内置函数、功能等...OSL 基本上通过闭包函数,我们告诉它如何计算表面效果,从而导致高效运行。当然 OSL 目前只支持闭包纹理颜色,听起来很复杂,但对于有一些编程的基础,基本上应该问题不大...
6666
这样太强了吧
6666
6666666666666666666
6666
666666666
11111111111
1111
1111
6666
666
6666666
66666666
165465841614