DirectX 11 Shader

 
 
 

以下为 DirectX 11 Shader 节点的属性,指定了 MayaUberShader 着色器文件。

要使用该着色器,您必须在 Viewport 2.0 的 DirectX 11 环境中工作,并启用 dx11shader.mll 插件。有关详细信息,请参见将 DirectX 11 与 Viewport 2.0 结合使用

您可以在 Hypershade 创建栏中找到 DirectX 11 Shader。创建着色器后,会自动加载 MayaUberShader.fx 文件。

dx11Shader.mll 插件可使您在 Maya Viewport 2.0 中加载并查看自己的 HLSL 着色器。使用 Hypershade 创建 DirectX 11 shader 时,会自动连接 MayaUberShader.fxo 文件;但是,您也可以改为加载自定义 HLSL 着色器。此外,<maya directory>\presets\HLSL11\examples\ 中提供了其他示例 HLSL 着色器。

已提供 dx11Shader_defaults 预设。您可以使用该预设将参数还原到使用着色器最初编译的值。

提示要覆盖 MayaUberShader.fxo 文件的自动加载,可以转到“窗口 > 设置/首选项 > 首选项 > DX 11 Shader”(Windows > Settings/Preferences > Preferences > DX 11 Shader),然后设置要默认加载的效果文件。
注意以下列出了 MayaUberShader.fx 文件的属性。在“属性编辑器”(Attribute Editor)“着色器”(Shader)部分下存在所有 DirectX 11 Shader 对应的属性。但是,可用选项可能会不同。例如,所有 DirectX 11 Shader 都具有灯光属性,但对灯光数量或类型的选择可能会不同。“参数”(Parameters)部分下的属性特定于 MayaUberShader.fx 文件。

着色器

着色器文件(Shader File)
导航到着色器文件,以便将其指定给 DirectX11 Shader

DirectX11 Shader 采用以下顺序在下列位置搜索 .fx 文件:

  • `workspace -q -rd`
  • `workspace -q -rd` + "/renderData/shaders"
  • `workspace -fre shaders`
  • `getenv("DX11SHADER_ROOT")`
  • `getenv("DX11SHADER_ROOT")` + "/shaders"
  • ${MAYA_LOCATION}/presets/HLSL11/examples

` 表示执行 MEL 或 C 函数来获取所需的值。

注意<maya directory>\presets\HLSL11\examples\ 中提供了 MayaUberShader.fx 文件以及其他示例 HLSL11 着色器。

单击 以重新加载 .fx 文件,然后单击 在默认的文本编辑器中对其进行编辑。

技术(Technique)
这些选项在相同的着色材质内提供不同的着色方法。
注意下面列出了用于 MayaUberShader 的不同技术。不同的着色器具有不同的技术来实现各种效果。
提示您可以使用“通道盒”(Channel Box)或设置“属性总表”(Attribute Spread Sheet)中的“技术”(Technique)值,通过一个步骤为多个 dx11Shader 更改技术。使用整数来设置“属性总表”(Attribute Spread Sheet)中的“技术”(Technique)值。TessellationOFF = 0,TessellationON = 1,以及 WireFrame = 2。该快捷方式仅适用于更改同一 fx 着色器的多个实例。
  • TessellationOFF:这是默认选项,并且仅在工作区显示网格,无需任何细分。

  • TessellationON:该选项使用着色级别细分以提供更平滑的模型,而无需额外的几何体。

  • WireFrame:该选项提供细分网格的线框版本,便于您查看 TessellationON 功能的细分。

灯光 0(Light0)/灯光 1(Light 1)/灯光 2(Light 2)

如果您选择“自动绑定”(Automatic Bind)选项,Maya 会自动将场景中的灯光指定给着色器。如果场景中的灯光少于三个,除非创建新的灯光,否则灯光 1 和/或灯光 2 处于未绑定状态。如果选择了该选项,则 Maya 会指示为“灯光 0”(Light0)/“灯光 1”(Light 1)/“灯光 2”(Light 2)中的每个绑定的灯光。

使用导航图标 可访问已连接灯光形状的“属性编辑器”(Attribute Editor)

您还可以选择“使用着色器设置”(Use Shader Settings)以避免绑定灯光。这样,您可以通过 DirectX 11 Shader 的“属性编辑器”(Attribute Editor)中的“灯光 0”(Light 0)/“灯光 1”(Light 1)/“灯光 2”(Light 2)属性调整灯光属性。

您还可以手动绑定灯光。从下拉列表中选择要将着色器绑定到的场景灯光。

当前,MayaUberShader 支持点光源、聚光灯、环境光或平行光。
重要信息绑定灯光之后,您无法在 dx11Shader 的“属性编辑器”(Attribute Editor)中更改其参数。相反,您必须从灯光的“属性编辑器”(Attribute Editor)进行更改。
注意加载 DirectX 11 Shader 后,Maya 会自动绑定设置为“自动绑定”(Automatic Bind)的灯光。共享相同 Object 属性的所有参数都将被视为定义一个灯光。如果在 Object 属性字符串中找到一个特定的灯光关键字(即 ambient/point/spot/directional),则 Maya 将连接场景中找到的该类型的第一个灯光。完成该操作后,任何未连接的灯光会根据位置/方向参数的兼容性连接到其余场景灯光。

参数

照明

线性空间照明(Linear Space Lighting)
禁用该选项可避免校正纹理中的 Gamma。启用该选项会假定纹理已应用 Gamma,因此将移除该 Gamma 并在稍后重新应用。
阴影(Shadows)
选择该选项可启用阴影投射。
阴影强度(Shadow Strength)
使用该滑块可控制阴影的强度。
阴影偏移(Shadow Bias)

有时,由于阴影贴图中的精度有限或场景比例的差异,实时阴影可能会导致对象出现瑕疵。使用该属性可移除对象上的阴影瑕疵。

双面照明(Double Sided Lighting)
选择该选项可反转双面、透明对象的背面法线以改善其照明。
边缘光最小值(Rim Light Min)/边缘光最大值(Rim Light Max)/边缘光亮度(Rim Light Brightness)
使用这些选项可在场景中模拟边缘光以亮显对象的边。使用“边缘光最小值”(Rim Light Min)“边缘光最大值”(Rim Light Max)可设置从明到暗的衰减。“边缘光最大值”(Rim Light Max)是与衰减开始时边缘的距离。“边缘光最小值”(Rim Light Min)是与衰减结束时边缘的距离。

灯光 0

启用灯光 0(Enable Light 0)
选择该选项可启用着色器中指定的灯光。
注意针对灯光 0、灯光 1 和灯光 2 重复以下参数。
灯光 0 位置(Light 0 Position)
使用该属性可设置灯光的位置。
注意如果灯光未绑定到 Maya 灯光,可以单击鼠标右键 () 手动将现有灯光、摄影机、定位器等连接到该属性。
注意按 7 用于场景照明。
灯光 0 颜色(Light 0 Color)
自定义灯光的颜色。单击样例可在“颜色选择器”(Color Chooser)中更改灯光的颜色或将纹理映射到灯光。
灯光 0 强度(Light 0 Intensity)
使用该属性可设置灯光的亮度。强度值为 0 的灯光不发光。强度值为负数的灯光将从受灯光影响区域的场景中移除灯光。
灯光 0 方向(Light 0 Direction)
使用该属性可设置灯光的方向。
灯光 0 圆锥体角度(Light 0 Cone Angle)
使用该属性可设置聚光灯的圆锥体角度。这是聚光灯光束的边到边的角度(以度为单位)。
灯光 0 半影角度(Light 0 Penumbra Angle)
使用该属性可设置聚光灯的半影角度。这是聚光灯光束的边的角度(以度为单位),在该边上,聚光灯的强度以线性方式下降到零。
灯光 0 衰退(Light 0 Decay)
使用该属性可控制灯光强度随距离而减弱的速度。有关详细信息,请参见衰退速率(Decay Rate)

环境光和放射性

环境光放射性贴图(Ambient Emissive Map)
启用该选项并将文件纹理连接到“环境光放射性贴图”(Ambient Emissive Map),可以应用如光源般明亮的放射性纹理。要停止使用纹理,请禁用“环境光放射性贴图”(Ambient Emissive Map)
环境光天空颜色(Ambient Sky Color)/环境光地面颜色(Ambient Ground Color)
使用这些选项可以通过模拟来自地面或天空的灯光使对象变亮。

漫反射

漫反射贴图(Diffuse Map)/漫反射贴图 Alpha(Diffuse Map Alpha)
选择“漫反射贴图”(Diffuse Map)可将漫反射纹理应用到对象对其进行染色。将纹理连接到“漫反射贴图”(Diffuse Map)属性。选择“漫反射贴图 Alpha”(Diffuse Map Alpha)可将纹理的 Alpha 信息应用到对象的不透明度。
漫反射颜色(Diffuse Color)
您还可以使用“漫反射颜色”(Diffuse Color)将对象染色。
光照贴图(Lightmap Map)
选择“光照贴图”(Lightmap Map)可应用烘焙的阴影贴图。然后,阴影贴图与漫反射结合以创建烘焙阴影。
蒙皮的软化漫反射(Soften Diffuse for Skin)
选择该选项可应用软化漫反射(或混合法线漫反射)。该功能使得对象的漫反射照明更逼真(用于模拟蒙皮)。
软化漫反射遮罩(Soften Diffuse Mask)
使用该选项可将不同数量的软化漫反射应用到对象的不同部分。
软化漫反射(Soften Diffuse)
该选项是混合的法线漫反射。增加该值可创建灯光反弹效果,从而软化蒙皮的外观。

不透明度

不透明度(Opacity)
使用该属性可控制对象的透明度。
不透明度遮罩(Opacity Mask)
使用该属性可应用指定对象区域(完全透明)的纹理。
不透明度遮罩偏移(Opacity Mask Bias)
使用该属性可设置阈值,低于该阈值,不透明遮罩中的像素将变为完全透明状态。例如,如果设置为 0.5,则不透明度遮罩中值小于 0.5 的所有像素将完全不可见。

镜面反射

镜面反射贴图(Specular Map)
选择“镜面反射贴图”(Specular Map)可根据纹理中的值增加或减少对象的镜面反射量。镜面反射贴图中的 RGB 通道控制“镜面反射颜色”(Specular Color),而镜面反射贴图中的 Alpha 通道控制“镜面反射强度”(Specular Power)
镜面反射颜色(Specular Color)
“镜面反射颜色”(Specular Color)可控制镜面反射的亮度和颜色。
镜面反射强度(Specular Power)
“镜面反射强度”(Specular Power)可控制镜面反射高光的形状。
蒙皮的 Kelemen-Szirmaykalos(Kelemen-Szirmaykalos For Skin)
选择该选项可执行 Kelemen-Szirmaykalos 镜面反射计算以更好地模拟人的皮肤。如果该选项处于禁用状态,则 Blinn 着色器将用于镜面反射计算。

法线

法线贴图(Normal map)
选择“法线贴图”(Normal map)可从烘焙到法线贴图中的详细信息模拟凹凸和缩进的照明。
法线高度(Normal Height)
使用“法线高度”(Normal Height)选项可在法线贴图纹理中更改凹凸的高度。

反射

反射立方体贴图(Reflection Cube Map)

选择“反射立方体贴图”(Reflection Cube Map)选项可在场景中包含反射。“反射立方体贴图”(Reflection Cube Map)可使您创建更逼真的预烘焙反射。

提示您可以使用免费的第三方工具生成立方体贴图。
反射强度(Reflection Intensity)
使用该滑块可调整对象上反射的强度。
反射模糊(Reflection Blur)
使用该选项可创建模糊的反射效果。该选项可使您进一步控制要尝试模拟的金属或材质的类型。
菲涅尔反射最小值(Reflection Fresnel Min)/菲涅尔反射最大值(Reflection Fresnel Max)

使用“菲涅尔反射最小值”(Reflection Fresnel Min)“菲涅尔反射最大值”(Reflection Fresnel Max)可以根据面平行于还是垂直于摄影机来调整反射量。

使用“菲涅尔反射最小值”(Reflection Fresnel Min)可将更多反射添加到对象的面(朝向摄影机)。

使用“菲涅尔反射最小值”(Reflection Fresnel Min)可将更多反射添加到对象的面(与摄影机垂直)。

这些选项最适用于曲线型对象。

反射遮罩(Reflection Mask)
使用这些选项可将纹理应用于遮罩区域以防止其接收反射。
反射模糊的镜面反射 Alpha(Spec Alpha for Reflection Blur)

启用该选项可使用镜面反射纹理的 Alpha 通道来确定模糊对象部分所需的反射量。禁用该选项可在对象上各处均匀地模糊反射。

染色反射的镜面反射颜色(Spec Color to Tint Reflection)
启用该选项可使用镜面反射颜色对立方体贴图反射进行染色。如果该选项处于禁用状态,则立方体贴图未染色。

细分和置换

注意您可以采用以下格式将纹理贴图从 Mudbox 导出到 Maya:PNG、JPG、BMP、TIF、TGA、EXR。
置换贴图(Displacement map)

选择“置换贴图”(Displacement map)可使用置换贴图。置换贴图会挤出或缩进网格的顶点。与细分结合使用以生成对象中其他细节时,置换贴图尤其有用。

置换贴图优于法线贴图之处在于:阴影可以拾取置换贴图的新细节。

如果要使用灰度置换贴图,应禁用“切线向量置换”(Tangent Vector Displacement)

切线向量置换(Tangent Vector Displacement)

如果要应用向量置换贴图,请选择该选项。您可以在 Mudbox 中创建向量置换贴图。但是,在 Maya 中使用的低多边形模型必须与 Mudbox 中使用的相同。

选择“置换贴图”(Displacement Map)“切线向量置换”(Tangent Vector Displacement)用于向量置换贴图。使用向量置换贴图时,您通常在向量置换贴图移动顶点之后,还想将法线贴图提供给着色器以提供正确的法线。

注意如果从 Mudbox 输出法线贴图,请选择“切线”(Tangent)作为“坐标空间”(Coordinate Space)。如果从 Mudbox 输出向量置换贴图,请选择“绝对切线”(Absolute Tangent)作为“向量空间”(Vector Space)
置换高度(Displacement Height)
使用该属性可缩放您的置换。
置换偏移(Displacement Offset)

使用该属性可控制置换的基础值。

例如,如果将偏移设置为 0.5,则不会置换灰色部分。偏移为 0 将产生缩进。偏移为 1 会挤出。

同样,如果偏移设置为 0,则不会置换黑色部分。偏移为 0.5 时挤出的量是偏移为 1.0 时的一半。不发生缩进。

置换剪裁偏移(Displacement Clipping Bias)
在极端置换的情况下,Maya 可能会意外剪裁掉面。这可能会出现在带有横向或又长又宽对象的场景中。使用该属性可设置“最大置换”以确定何时从视图中剪裁对象的面。您还可以使用“边界框附加缩放”(Bounding Box Extra Scale)来避免意外剪裁对象。
边界框附加缩放(Bounding Box Extra Scale)
置换已使用时,可以使用该选项来控制边界框以避免意外剪裁对象。
细分范围(Tessellation Range)
设置该属性时,根据对象距离摄影机的远近来控制细分。
注意您可能会发现在调整细分时启用 WireFrameON 最轻松。
细分最小值(Tessellation Minimum)

整个网格中细分的值是恒定的。值为 1 表示无细分。

增加“细分最小值”(Tessellation Minimum)的值可提高分辨率。

平面细分(Flat Tessellation)
选择该选项可将点法线细分(可使对象的边平滑)与“平面细分”(Flat Tessellation)(仅可细分对象,无法使对象平滑)混合。将该值设置为 1 可禁用平滑。

半透明度

半透明(Translucency)
“半透明”(Translucency)功能模拟灯光穿过对象。例如,如果模拟人的蒙皮,蒙皮将变得更红。选择该属性可使用以下选项。
注意使用这些选项可将半透明添加到对象。该选项模拟灯光穿过对象,以赋予它更逼真的外观。
厚度遮罩(Thickness Mask)

“厚度遮罩”(Thickness Mask)是渲染以控制穿过蒙皮特定区域灯光量的纹理。例如,使用薄蒙皮(例如鼻子)的无骨区域会略带红色,因为有大量的半透明穿过。相比之下,厚度纹理中的有骨区域会有较深的颜色。

灯光半透明扭曲(Light Translucent Distortion)

使用该值可设置法线(每像素)影响半透明的程度。

如果设置为 0,则整个对象的半透明度是一致的。

如果设置为大于 0(例如 0.5),半透明效果不再一致,而是基于法线断开和扭曲。结果显得更为自然。

灯光半透明强度(Light Translucent Power)
使用该属性可更改半透明区域的焦点或大小。
灯光半透明缩放(Light Translucent Scale)
使用该选项可调整对象后面的灯光所创建的半透明程度。将滑块调整为 0 时,对象中没有半透明度。
半透明度最小值(Translucent Minimum)
该属性可设置对象始终具有的半透明程度,即使它后面没有灯光。
外部半透明颜色(Outer Translucent Color)/中间半透明颜色(Medium Translucent Color)/内部半透明颜色(Inner Translucent Color)
使用这些选项可更改蒙皮半透明颜色;例如,对于具有不同颜色蒙皮的动物。

UV

您可以将 UV 集绑定到每个纹理贴图。要执行该操作,必须首先将 UV 集绑定到 DirectX 11 Shader。您可以在曲面数据部分下最多绑定 3 个 UV 集。将 UV 集映射到每个适用的 TexCoord 0/1/2。然后,您可以使用该下拉列表来选择要将每个纹理贴图映射到的纹理坐标(即,UV 集)。有关详细信息,请参见将 UV 集指定给与 DX11 MayaUberShader 连接的纹理贴图

注意“属性编辑器”(Attribute Editor)UV 部分特定于 MayaUberShader。但是,“曲面数据”(Surface Data)“默认纹理数据”(Default Texture Data)功能对所有效果着色器通用。

曲面数据

该部分指定几何体的通道,如传递到着色器的法线和切线。单击鼠标右键 () 可查看可用选项。

默认情况下,TexCoord0 映射到 UV 集 map1TexCoord1 映射到 map2,依此类推。如果您使用带有不同名称的 UV 集,可以通过在 TexCoord0/1/2 字段中指定它们以将其绑定到着色器。在 UV 集名称前使用 uv:。有关详细信息,请参见将 UV 集指定给与 DX11 MayaUberShader 连接的纹理贴图

默认纹理数据

当 UV 集已选定时,使用这些选项可以选择“UV 纹理编辑器”(UV Texture Editor)中显示的默认纹理。例如,如果 UV map1 映射到 TexCoord0,且 TexCoord0 映射到“漫反射贴图”(Diffuse Map),则当您在“UV 纹理编辑器”(UV Texture Editor)中选择 UV map1 时,将显示“漫反射贴图”(Diffuse Map)纹理。