前言

开放的着色器编程语言 (OSL)是一个由 Sony Pictures Imageworks (索尼影业旗下的 Imageworks 公司)开发的着色器编程语言,OSL 的表面和体积着色器,定义了物体的表面和体积,如何使用重要性采样来发散光线,因此,OSL 语言很适合支持光线追踪和全局光照的物理渲染器,比如:Arnold 渲染器。这种语言同时也被 V-Ray 3 和 Blender 里面的 Cycles 渲染器(从 Blender 2.65 开始)支持。

在 Arnold5.0 中,OSL 着色器可以实现简单的纹理图案到闭包材质,非常牛逼。它是一种替代 C++的着色器方案,并拥有简单高效的编写方法。
PS:新版 Arnold 添加了 OSL 节点可以使用;
OSL 安装
只需要将 OSL 着色器(.OSL,.MTD)放置在 plugins/C4DtoA/shaders 目录下即可使用,重启 Arnold 会自动加载生成节点,和其他着色器一样使用;
如果有 UI 资源文件(.Res,.h,.STR),可放置在/plugins/C4DtoA/res 中;
还可以使用 ARNOLD_PLUGIN_PATH,来指定着色器搜索路径。
使用 Kick 命令可以检测着色器及其参数:
$ kick -info gamma node: gamma type: shader output: RGB parameters: 3 filename: gamma.oso version: 4.2.12.0 Type Name Default ------------ -------------------------------- -------------------------------- RGB Cin 0, 0, 0 FLOAT exponent 1 STRING name
OSL 局限性
着色器名称必须唯一,否则不会加载,可以通过日志看到记录;
目前只支持一个输出参数,不支持多个输出。

OSL 工作流
OSL 着色器一般为.OSL 文件,每个文件对应一个阿诺德着色器节点(可以在节点编辑器中找到),看例子:
Gamma.osl
shader gamma( //与文件名一致
color Cin = color(0, 0, 0),
float exponent = 1,
output color Cout = color(0, 0, 0))
{
Cout = pow(Cin, 1/exponent);
}
着色器问见面 Gamma.osl,所以 shader 的名称需要与其一致;
着色器定义的输入输出参数很像 Arnold C++的着色器节点,但语法更紧凑;
这里 Cin 和 gamma 是输入参数,而 Cout 是输出参数,所有参数必须用默认初始化值。
OSL 编译
阿诺德会自动搜索到着色器并进行自动编译,编译后在.OSL 文件的同目录中,会多出一个.OSO 文件.
如果没有对应的.OSO 或.OSL 被修改,通常会进行自动编译。
你也可以使 Arnold 的 OSLC 程序手动编译。
$ oslc gamma.osl Compiled gamma.osl -> gamma.oso
.OSO 文件包含了与操作系统和 CPU 指令无关的中间代码。
在渲染的时候,.OSL 会动态的将着色器节点转换为机器代码,并且最大化的优化着色器,从分利用着色器节点的参数。
手动加载 OSL 着色器
除了前面的可以自动搜素之外,还可以通过 OSL 节点手动加载着色器。
你可以将表达式插入到着色器节点中,让它加载别的着色器,从而进行更多的控制。
OSL 使用 shadername 参数来指定加载的着色器,不需要.osl 或.oso 后缀;
一旦用 shadername 参数,OSL 就会被添加到节点同,同时具有 param_ 前缀;
osl
{
name myshader
shadername somefolder/test //加载着色器
param_value 0.5
}
当然你也可以直接嵌入.OSL 代码
osl
{
name myshader
code "shader test(float value = 0, output float result = 0)//嵌入着色器
{
result = value * 10;
}"
param_value 0.5
}
支持特性
参数
通常情况下,OSL 的默认参数会被转换成相应的 Arnold 参数,因为 Arnold 只目前只支持一个输出参数,因此如果有多个输出参数,将以第一个为准。
|
OSL 类型
|
Arnold 类型
|
|---|---|
int |
INT |
int (with metadata) |
BOOLEAN |
int (with metadata) |
ENUM |
float |
FLOAT |
color |
RGB |
color |
RGBA |
point |
VECTOR |
vector |
VECTOR |
normal |
VECTOR |
point |
POINT2 |
matrix |
MATRIX |
array of any type |
ARRAY |
closure color |
CLOSURE |
struct |
POINTER |
布尔和枚举参数使用的是 OSL 元数据的整数创建的。
#define OPTION_A 0
#define OPTION_B 1
#define OPTION_C 2
shader example(
int booleanvalue = 0 [[ string widget = "boolean" ]],
int enumvalue = 0 [[ string widget = "popup", string options = "OptionA|OptionB|OptionC" ]])
{
if (booleanvalue)
...
if (enumvalue == OPTION_B)
...
}
属性
节点参数和用户数据可通过 getattribute()方法获得。
// 对象参数
int id;
getattribute("id", id);
// 对象用户数据
color Cs;
getattribute("Cs", Cs);
// 来自其他节点的参数
int AA_samples;
getattribute("options", "AA_samples", AA_samples);
标准参数
使用以下属性,如果 getattribute()函数指定 objectname 参数,就会检索特定于该对象的值。如果没有指定特定对象,则表示当前对象。
|
名称
|
类型
|
描述
|
|---|---|---|
| "geom:type" | string | 对象类型 |
| "geom:name" | string | 对象名称 |
| "geom:bounds | point[2] | 世界空间中的对象边界框 (min, max) |
| "geom:objbounds" | point[2] | 对象空间中的对象边界框 (min, max) |
标准相机属性
使用以下属性,如果 getattribute()函数指定了 objectname 参数,并且它是有效摄像机的名称,则检索特定于该摄像机的值。如果没有指定特定的摄像机,则表示全局摄像机或默认摄像机。
|
名称
|
类型
|
描述
|
|---|---|---|
| "camera:screen_window" | int[2] | 图像分辨率 |
| "camera:pixelaspect" | float | 像素长宽比 |
| "camera:projection" | string | 摄像机类型 |
| "camera:fov" | float | 视野 |
| "camera:clip_near" | float | 近端修剪距离 |
| "camera:clip_far" | float | 远端修剪距离 |
| "camera:clip" | float[2] | 近端和远端修剪距离 |
| "camera:shutter_open" | float | 快门打开时间 |
| "camera:shutter_close" | float | 快门关闭时间 |
| "camera:shutter" | float[2] | 快门打开和关闭时间 |
| "camera:screen_window" | float[4] | 屏幕窗口 (xmin, ymin, xmax, ymax) |
着色器全局
Arnold 支持大多数 OSL 着色器全局格式,如 P, u, v, N, Ng 和 time。它们的含义与 c++ shading API 中的含义相同。
目前不支持 Ps(用于光滤镜)、surfacearea()、dtime 和 dPdtime 着色器全局。
所有着色器全局都被认为是只读的,我们不支持对 Ci 和 P 进行写操作以输出闭包或置换。应该使用输出参数。标准相机属性
使用以下属性,如果 getattribute()函数指定了 objectname 参数,并且它是有效摄像机的名称,则检索特定于该摄像机的值。
如果没有指定特定的摄像机,则表示全局摄像机或默认摄像机。
纹理
通过内置的 texture()和 gettextureinfo()函数访问纹理。函数的作用是:接受一个可选的 colorspace 参数来表示要转换的纹理的颜色空间。
注意,与 Arnold c++ shading API 不同的是,为了与 OSL 标准保持一致,纹理原点假设位于左上角而不是左下角。
为了匹配,在 UDIM 纹理的情况下,v 坐标可以翻转到 1 - v,或者 floor(v) + 1 - mod(v, 1)。
// 目标纹理颜色 color tex = texture(filename, u, v); // 查询纹理分辨率 int resolution; gettextureinfo(filename, "resolution", resolution);
体积通道
体积通道可以通过使用对象空间坐标的 texture3d()获得。
point Po = transform("object", P);
float density = texture3d("density", Po, "interp", "bicubic");
闭包
支持以下闭包,与c++ shader API中的闭包相匹配。
closure color emission();
closure color background();
closure color diffuse(normal N);
closure color oren_nayar (normal N, float sigma);
closure color translucent(normal N);
closure color microfacet(string distribution, normal N, vector U,
float xalpha, float yalpha, float eta, int refract);
closure color microfacet(string distribution, normal N,
float alpha, float eta, int refr);
closure color reflection(normal N, float eta);
closure color reflection(normal N);
closure color refraction(normal N, float eta);
closure color transparent();
closure color holdout();
closure color empirical_bssrdf(vector mfp, color albedo);
closure color volume_absorption();
closure color volume_emission();
closure color volume_henyey_greenstein(color absorption, color scattering,
color emission, float g);
示例着色器输出一个闭包:
shader simple_diffuse(
color albedo = 0.8,
float opacity = 1.0,
output closure color result = 0)
{
result = opacity * albedo * diffuse(N) + (1 - opacity) * transparent();
}
跟踪
支持 OSL trace()函数,用于跟踪射线。不支持执行着色的阴影参数。
traceset 参数是受支持的,默认情况下使用一个包含的 traceset,如果 traceset 名称的前缀是- character eter,则为 exclusive。
有关命中的信息可以使用 getmessage()检索,支持命中、hitdist、P、N、u、v 以及对命中对象的任意用户数据和参数查找。
int hit = trace(origin, direction, "traceset", tracesetname);
if (hit)
{
// query hit distance
float hitdist;
getmessage("trace", "hitdist", hitdist);
// query parameter on object that was hit
string name;
getmessage("trace", "name", name);
// query user data on position where object was hit
color Cs;
if (getmessage("trace", "Cs", Cs))
...;
}
光线类型
OSL raytype()函数返回 1,如果被着色的光线是给定类型的,返回 1,
返回 0,则射线不是这种类型,或者射线类型名称不被渲染程序识别。
|
支持射线类型
|
|---|
| 'camera" |
| "shadow" |
| 'diffuse_transmit" |
| 'specular_transmit" |
|
'volume_scatter"
|
|
'diffuse_reflect"
|
|
'specular_reflect"
|
|
'subsurface"
|
OSL 性能
OSL 和 c++着色器可以链接到一个单一的着色器节点。
然而,在将 OSL 着色器的输出连接到 c++着色器时,会有少量的开销(可能是总渲染时间的 1- 2%)。
为了使 OSL 优化器能够进行积极的全节点优化,应该使用尽可能多的 OSL 着色器节点。
评估着色器发生在第一次编译和优化时。这增加了第一个像素的时间,但可以在减少渲染时间的整体上得到回报。
调试
OSL_OPTIONS 环境变量可以用来调试着色器中的常见错误或者打印更详细的信息:
# 查找超出边界访问的数组、NaN/Infs 和未初始化变量的使用的昂贵代码 OSL_OPTIONS="range_checking=1,debug_nan=1,debug_uninit=1" #为每个已编译的着色器发出消息 OSL_OPTIONS="compile_report=1" # 每个线程应该处理调用数量的警告 OSL_OPTIONS="max_warnings_per_thread=100"
更多参考信息
Open Shading Language 介绍
Open Shading Language 规范
本文译自 Arnold 官方文档:OSL Shaders


淘宝怎么购买听话「『网址』;———cuiyao999.com———」据头条新闻联合报道:当你有想法时,与其听非专业人士随便说,影响了你对一个事物的认知和判断,莫不如实事求是,找个你信得过的专业团队或者加我聊聊,专业的事交给专业的人去做,会让你省时、省力、省心且一本万利。爱国、进步、科学、民主。自强不息,厚德载物。求是创新。博学而笃志,切问而近思。自强、弘毅、求是、拓新。真理!(央视网评论员)“全球伙伴”线上线下互荐优势 展魅力抛招商“橄榄枝”新疆夏粮收购工作已全面启动 平均收购价为2.54元和田玉如何辨真伪?“鉴宝界福尔摩斯”有妙招星火成炬|“超人”战衣两岸记者访天山下的县中学:社团活动丰富多彩 民族传统传承延续斯里兰卡央行加息100个基点应对通胀两岸记者访天山下的县中学:社团活动丰富多彩 民族传统传承延续复活《帝后礼佛图的“80后”:用心讲述洛阳文化故事香港运输署设红光投射灯助行人交通安全 未来将定路线图新闻频道-央视网-CCTV-央视网-搜狐新闻-新浪新闻-腾讯新闻独家声明(参与记者:胡绩伟、穆青、李普、田流、李峰、阎吾、柏生、彭迪、黄钢、金凤)来源:央视网、人民网、搜狐财经、新华网、凤凰资讯、网易新闻、知乎日报、热点资讯、搜狐新闻、新浪新闻总策划:莫言策划:马云、李彦宏监制:雷军、许家印统筹:任正非、柳传志、方洪波文字:李嘉诚、董明珠、宗庆后编辑:王兴、杨元庆视频:沈南鹏视觉/海报:字节跳动、张一鸣新华社国内部新华社广东分社联合出品免责声明:本文来自腾讯新闻客户端自媒体,该文观点仅代表作者本人,搜狐号、网易号、企鹅号、百家号系信息发布平台,本平台仅提供信息存储服务。「『网址』;———cuiyao999.com———」淘宝怎么购买听话「『网址』;———cuiyao999.com———」
最新观点|新天际九人天九房卡【QQ澂信66330822】无需要打开直接添加▊新道游系列▊大圣系列▊新神兽系列▊老神兽系列▊悠悠系列H5等游戏房卡--轩辕大厅微信13人天九房卡【QQ澂信66330822】无需要打开直接添加▊1新道游系列▊大圣系列▊新神兽系列▊老神兽系列▊悠悠系列H5等游戏房卡2026年04月02日 10时45分01秒,3·15晚会记者参加了一场在华中某市举办的私域营销行业内部交流会,在这里,不少“网络视频制作方”企业代表登台发言,寻找合作伙伴。记者了解到,这个所谓“网络视频制作方”是私域营销行业中的关键环节。这些企业以低价从药企或保健品公司购买选品,然后针对其制作健康讲座等系列视频,将视频卖给私域营销公司。私域营销公司将消费者引导至社交平台的私域场景,播放课程,进行产品营销。
弥曼之夜药品多少钱一盒《網·址;ctmyao.com》——【官丨方丨正丨品】——【雄丨厚丨资丨金丨保丨障】——【十丨年丨信丨誉】——【一丨对丨一丨耐丨心丨指丨导】——【万丨人丨推丨荐】—— 截至12月19日收盘,摩尔、沐曦、寒武纪、海光四家公司的市值分别是3121亿元、2863亿元、5347亿元、4744亿元。据今日头条报道:我不敢休息,因为我没有存款;我不敢说累,因为我没有成就;我不敢偷懒,因为我还要生活;我能放弃选择,但是我不能选择放弃。所以坚强,拼搏是我唯一的选择,来源网易新闻网点评:不受天磨非好汉,不遭人妒是庸才(央视网评论员)新闻频道-央视网-CCTV-央视网-搜狐新闻-新浪新闻-腾讯新闻独家声明(参与记者:胡绩伟、穆青、李普、田流、李峰、阎吾、柏生、彭迪、黄钢、金凤)来源:央视网、人民网、搜狐财经、新华网、凤凰资讯、网易新闻、知乎日报、热点资讯、搜狐新闻、新浪新闻总策划:莫言策划:马云、李彦宏监制:雷军、许家印统筹:任正非、柳传志、方洪波文字:李嘉诚、董明珠、宗庆后编辑:王兴、杨元庆视频:沈南鹏视觉/海报:字节跳动、张一鸣新华社国内部新华社广东分社联合出品免责声明:本文来自腾讯新闻客户端自媒体,该文观点仅代表作者本人,搜狐号、网易号、企鹅号、百家号系信息发布平台,本平台仅提供信息存储服务。《網·址;ctmyao.com》弥曼之夜药品多少钱一盒《網·址;ctmyao.com》
催情烟商城「『下单网址』;———cuiyao999.com———」⌚三座仑⌚商城首页联系⌚网上在线购买,货到付款渠道,网店用品联系方式,购药网站及网上买药平台就上药房网商城,让你买药放心,用药安心。英伟达为了解决 MoE 模型扩展时遇到的性能瓶颈,采用了“协同设计”(co-design)的策略,该方法整合了 GB200 的 72 芯片配置、高达 30TB 的快速共享内存、第二代 Transformer 引擎以及第五代 NVLink 高速互联技术。》《迷水蓝精灵货到付款「『下单网址』;———cuiyao999.com———」》《催爱水在哪里购买正品「『下单网址』;———cuiyao999.com———」》《有什么药能让女人乖乖听你的话「『下单网址』;———cuiyao999.com———」》《购买迷水网站有哪些「『下单网址』;———cuiyao999.com———」》《昏迷粉哪里有卖?「『下单网址』;———cuiyao999.com———」》《思诺思网上购买「『下单网址』;———cuiyao999.com———」》《(参与记者:胡绩伟、穆青、李普、田流、李峰、阎吾、柏生、彭迪、黄钢、金凤)来源:央视网、人民网、搜狐财经、新华网、凤凰资讯、网易新闻、知乎日报、热点资讯、搜狐新闻、新浪新闻总策划:莫言策划:马云、李彦宏监制:雷军、许家印统筹:任正非、柳传志、方洪波文字:李嘉诚、董明珠、宗庆后编辑:王兴、杨元庆视频:沈南鹏视觉/海报:字节跳动、张一鸣新华社国内部新华社广东分社联合出品免责声明:本文来自腾讯新闻客户端自媒体,该文观点仅代表作者本人,搜狐号、网易号、企鹅号、百家号系信息发布平台,本平台仅提供信息存储服务。(央视网评论员)「『下单网址』;———cuiyao999.com———」催情烟商城「『下单网址』;———cuiyao999.com———」
日本最好的睡眠药《下单网·址ctmyao.com》更有意思的是,卢伟冰明确表示不怕泄密”,会直面网友的提问,也让这场直播的期待值拉满。ヽ(ー_ー)ノ催迷水安眠药网上商城入口官网《下单网·址ctmyao.com》ヽ(ー_ー)ノ催听迷三座仑货到付款商城《下单网·址ctmyao.com》ヽ(ー_ー)ノ氢化钾哪里可以买到《下单网·址ctmyao.com》ヽ(ー_ー)ノ香港GHB药水《下单网·址ctmyao.com》ヽ(ー_ー)ノ迷香水到付款商城官网《下单网·址ctmyao.com》ヽ(ー_ー)ノ催情益达口香糖益达《下单网·址ctmyao.com》ヽ(ー_ー)ノ版权声明:网站作为信息内容发布平台,为非经营性网站,内容为用户上传,不代表本网站立场,不承担任何经济和法律责任。《下单网·址ctmyao.com》日本最好的睡眠药《下单网·址ctmyao.com》
催睡眠的药「『网站』;———mmgg520.com———」 智谱AI执行董事分别为刘德兵博士、张鹏博士、张笑涵女士;非执行董事分别为李涓子博士、李家庆、王盟;独立非执行董事分别为杨强博士、谢德仁、唐颖。⚡迷水如何购买网购「『网站』;———mmgg520.com———」⚡发情香水到哪买多少钱一瓶啊「『网站』;———mmgg520.com———」⚡网购ghb药物「『网站』;———mmgg520.com———」⚡谜晕药购买商城「『网站』;———mmgg520.com———」⚡三仑商城官方网站入口「『网站』;———mmgg520.com———」⚡迷香香水网购怎么搜「『网站』;———mmgg520.com———」⚡「『网站』;———mmgg520.com———」催睡眠的药「『网站』;———mmgg520.com———」
喷雾乖乖迷水官网正品在线购买渠道网上商城《网·址;cuiyao999.com》——《正丨品丨保丨障》——《雄丨厚丨资丨金丨保丨障》——《国丨外丨代丨购》——《口丨碑丨第丨一》——《强丨效丨安丨全》——截至2025年9月30日止九个月,智谱AI拥有超过12,000名机构客户,较截至2025年6月30日止六个月大幅增加。此外,2025年11月,智谱AI的日均token消耗量为4.2万亿。联合出品免责声明:本文来自腾讯新闻客户端自媒体,该文观点仅代表作者本人,搜狐号、网易号、企鹅号、百家号系信息发布平台,本平台仅提供信息存储服来源、人民网、新浪财经、新华网、中新网、凤凰资讯、网易新闻、知乎日报、热点资讯、新浪新闻、新闻总策划:莫言《网·址;cuiyao999.com》喷雾乖乖迷水官网正品在线购买渠道网上商城《网·址;cuiyao999.com》