通过开放式明暗处理语言 (OSL),您可以使用新的 OSL 贴图(各种 OSL 贴图的统一类别),并且可以使用开发工具创建自己的 OSL 贴图以用于任何渲染器。
开放式明暗处理语言 (OSL) 是比较容易理解的开源明暗处理语言。可以采用多种不同的方式使用此语言。您可以使用 OSL 贴图,这是 3ds Max 内部的 OSL 明暗器执行环境,其工作方式类似于任何常规的内置 3ds Max 贴图。还有一个可以轻松使用的预加载 OSL 贴图类别。此外,还可以使用从 Internet 下载的任何 OSL 贴图。最后,您可以使用我们的开发工具通过 OSL 创建明暗器或贴图。与开发等效于 3ds Max C++ 贴图的功能相比,使用此方法创建自定义贴图要简单得多。
OSL 可在支持常规 3ds Max 明暗处理 API 的任何渲染器(扫描线、vRay、Corona 等)中使用。它也可以在渲染器之外、3ds Max 中需要常规贴图的任何位置(例如在置换修改器中)使用。它还可以在本身支持 OSL 的渲染器(例如 Arnold)中使用。在这些情况下,不使用 OSL 贴图内的执行环境,而是将 OSL 源代码、参数值和明暗器绑定发送到渲染器,由渲染器执行 OSL 代码。每天都会出现更多本身支持 OSL 的渲染器。
只要明暗处理树中的所有明暗器都是 OSL 明暗器,OSL 便会对整个明暗处理树一次性进行即时编译和优化。您可以混合使用 OSL 明暗器和常规明暗器,但优化将会受影响。
在 3ds Max 中,OSL 贴图存在几个限制。
限制 | 描述 |
---|---|
仅支持贴图,不支持材质 |
采用 OSL 编写的明暗器可以有多个返回不同数据类型(例如颜色、浮点值、整数、字符串等)的输出。对此全部支持。 但是,OSL 还支持称为闭合的特殊类型。您可以将闭合视为材质。对此不支持。实际上,这意味着 OSL 贴图只能用于构建程序纹理(贴图),不能用于构建材质。 因此,建议的工作流是采用 OSL 构建程序纹理贴图,但将输出连接到定义明确且与渲染器无关的标准化材质(例如物理材质)。 如果您在网上找到的 OSL 明暗器看上去无法进行任何操作,或看上去没有任何输出,则可能是 OSL 材质。 |
只支持纯数据类型 |
3ds Max 中的 OSL 贴图只支持纯数据类型:颜色、向量、浮点数、整数和字符串。它不支持阵列或结构作为输入。 实际上,一般情况下这不是问题,因为很少有 OSL 明暗器实际使用阵列或结构作为输入。只有参数存在此限制,在 OSL 代码内,阵列和结构仍可正常使用。 |
现在,许多 OSL 贴图将其实际明暗器用于视口显示,从而提高性能并大幅改善视觉表示。要执行此操作,请在“有贴图的真实模式”下运行视口。 在“材质编辑器”中,使用此明暗器的 OSL 贴图将在其参数上方显示通知“视口: 使用的明暗器”。但是,仍使用烘焙的 OSL 贴图将显示“视口: 使用的烘焙纹理”。
请注意,以下 OSL 明暗器当前仍使用烘焙纹理:
UVW
Root
Scene
Values