字符串常量列表
字符串值支持的操作
OctaneRender® 将字符串视为不透明值,并且仅支持有限的操作集:
赋值(string b = a;)
检查相等性(a == b, a != b)
在函数和着色器中使用字符串作为参数
OctaneRender® 不支持 OSL 定义的任何标准字符串函数。
字符串变量类型
OctaneRender® 区分三种类型的字符串变量:
文件名:这些是传递给图像采样函数(如 texture())的字符串。
枚举值:这些是传递给接受明确定义的可能值集的函数的字符串,如 raytype() 或 noise()。
其他字符串:不用于上述任何用途的字符串,或用于多种类型的枚举。
Octane OSL 编译器使用静态代码分析来确定它如何使用每个字符串变量。如果变量既用作枚举值又用作文件名,则会引发编译器错误。
使用字符串作为着色器输入
OctaneRender® 使用不同的控件表示上述三种字符串类型:
文件名始终显示为文件输入,任何元数据都会被忽略。
枚举值默认由枚举输入引脚表示。
其他字符串值默认由枚举输入引脚表示。
Texture() 调用中的字符串文字
如果纹理调用的参数是常量字符串,编译器会生成文件名输入并使用文字值作为默认值。这会加载包含文件名的 OSL 代码,并确保在将场景导出到 [ORBX](javascript:void(0);.md)® 时打包任何引用的文件。
要了解有关使用 [开放着色器语言](javascript:void(0);.md) 编程的更多信息,请参阅 Octane OSL 指南。
