基于物理的材料属性

Kanzi 默认的基于物理的材质类型带有预处理器定义,您可以使用这些定义修改材质类型,并将属性暴露给使用这些材质类型的材质。请参阅 修改默认材质类型、基于物理的着色器 和 使用智能材质。

本主题列出了您可以在 Kanzi 默认的基于物理的材质类型中设置的预处理器定义。

光源

要设置材质使用的不同类型光源节点的数量,请使用以下预处理器定义:

  • KANZI_SHADER_NUM_DIRECTIONAL_LIGHTS 用于设置材质使用的 Directional Light 节点数量。默认值为 1。

  • KANZI_SHADER_NUM_POINT_LIGHTS 用于设置材质使用的 Point Light 节点数量。默认值为 2。

  • KANZI_SHADER_NUM_SPOT_LIGHTS 用于设置材质使用的 Spot Light 节点数量。默认值为 1。

请参阅 为材质类型设置光源数量。

曝光补偿

曝光补偿通过控制渲染光的总量来模拟相机曝光。

要启用曝光补偿设置,请将 KANZI_SHADER_USE_EXPOSURE 的值设置为 1。

通过这种方式,您将 Exposure 属性暴露给材质,该属性设置曝光补偿。

伽马校正

默认情况下,伽马校正对物理基础材质类型是禁用的。

要启用伽马校正,请将 KANZI_SHADER_USE_GAMMA_CORRECTION 的值设置为 1。

色调映射

色调映射将一组颜色映射到另一组颜色,以近似高动态范围 (HDR) 图像的外观。

要设置材质类型使用的色调映射算法,请将以下预处理器定义之一的值设置为 1:

  • KANZI_SHADER_TONEMAP_ACES 启用了 Krzysztof Narkowicz 的近似 ACES(Academy Color Encoding System)电影色调映射曲线。

  • KANZI_SHADER_TONEMAP_FILMIC 启用了 Jim Hejl 和 Richard Burgess-Dawson 的电影色调映射。

  • KANZI_SHADER_TONEMAP_LINEAR 启用线性色调映射。

  • KANZI_SHADER_TONEMAP_REINHARD 启用 Reinhard 色调映射。

    Kanzi 物理基础材质类型默认情况下使用此色调映射算法。

  • KANZI_SHADER_TONEMAP_UNCHARTED 启用了 John Hable 的 Uncharted 2 电影色调映射。

Alpha 模式

要启用在材质的基础颜色中使用 alpha 通道,请将 KANZI_SHADER_USE_ALPHA 的值设置为 1。

要启用 alpha 遮罩,请将 KANZI_SHADER_USE_ALPHA_CUTOFF 的值设置为 1。

通过这种方式,您将 Alpha Cutoff 属性暴露给材质,该属性设置 alpha 剪裁的阈值。Kanzi 丢弃 alpha 值小于阈值的片段。

此表格列出了不同 alpha 模式的设置。

Alpha 模式

设置 (Settings)

不透明 (Opaque)

  • KANZI_SHADER_USE_ALPHA 为 0。

  • KANZI_SHADER_USE_ALPHA_CUTOFF 到 0

混合

  • KANZI_SHADER_USE_ALPHA 到 1

  • KANZI_SHADER_USE_ALPHA_CUTOFF 到 0

遮罩 (Mask)

  • KANZI_SHADER_USE_ALPHA 为 0。

  • KANZI_SHADER_USE_ALPHA_CUTOFF 到 1

顶点颜色

网格中的每个顶点可以选择性地存储一个颜色值。

要启用顶点颜色的使用,将 KANZI_SHADER_USE_VERTEX_COLOR 的值设置为 1。

基础颜色纹理

以下预处理器定义控制基础颜色纹理的使用:

  • 要启用使用包含材质基础颜色的纹理,请将 KANZI_SHADER_USE_BASECOLOR_TEXTURE 的值设置为 1。

    通过这种方式,您将 Base Color Texture 属性暴露给材质,该属性设置包含材质基础颜色贴图的纹理。基础颜色贴图是一个 RGB 贴图,可以包含电介质材料的漫反射颜色和金属材料的反射率值。使用 Base Color Factor 属性从纹理中过滤值。

  • 要启用在 Base Color Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_BASECOLOR_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用包含材质基础颜色的细节纹理的使用,请将 KANZI_SHADER_USE_BASECOLOR_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Base Color Texture 设置包含材质基础颜色的细节纹理。

    • Detail Base Color Factor 设置材质的细节基础颜色,Kanzi 将其与由 Base Color Factor 属性设置的材质基础颜色进行 alpha 混合。

    • Detail Texture Tiling 设置材质的细节纹理平铺因子。Kanzi 将此值与 UV 相乘,以生成第二组细节 UV,用于所有细节纹理属性。

    • Detail Texture Offset 设置材质的细节纹理偏移。Kanzi 将此值添加到 UV 中,以生成第二组细节 UV,用于所有细节纹理属性。

  • 要启用在 Detail Base Color Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_BASECOLOR_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

法线贴图

以下预处理器定义控制法线贴图的使用:

  • 要启用使用包含材质法线贴图的纹理,请将 KANZI_SHADER_USE_NORMALMAP_TEXTURE 的值设置为 1。

    通过这种方式,您可以向材质公开设置包含材质法线贴图的纹理的 Normal Texture 属性。使用 Normal Scale 属性设置 Normal Texture 的强度。

  • 要启用在 Normal Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_NORMALMAP_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用包含材质法线贴图的细节纹理的使用,请将 KANZI_SHADER_USE_NORMALMAP_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Normal Texture 设置包含材质法线贴图的细节纹理。

    • Detail Normal Scale 设置 Detail Normal Texture 的强度。

    • Detail Texture Tiling 设置材质的细节纹理平铺因子。Kanzi 将此值与 UV 相乘,以生成第二组细节 UV,用于所有细节纹理属性。

    • Detail Texture Offset 设置材质的细节纹理偏移。Kanzi 将此值添加到 UV 中,以生成第二组细节 UV,用于所有细节纹理属性。

  • 要在法线贴图时启用显式双法线的使用,将 KANZI_SHADER_USE_EXPLICIT_BINORMALS 的值设置为 1。当您启用显式双法线的使用时,着色器不会从顶点法线和顶点切线重建顶点双法线。

自发光纹理

以下预处理器定义控制自发光纹理的使用:

  • 要启用使用包含材料发出的光的纹理,请将 KANZI_SHADER_USE_EMISSIVE_TEXTURE 的值设置为 1。

    通过这种方式,您可以向材质公开 Emissive Texture 属性,该属性设置包含从材质发出的光的纹理。使用 Emissive Factor 属性来缩放此纹理中的值。

  • 要启用在 Emissive Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_EMISSIVE_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用包含材料发出的光的细节纹理的使用,将 KANZI_SHADER_USE_EMISSIVE_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Emissive Texture 设置包含从材料发出的光的细节纹理。

    • Detail Emissive Factor 设置 Detail Emissive Texture 发出的光的颜色。您可以使用 Intensity (I) 属性字段来调整此颜色的曝光度。此颜色会影响局部材质渲染,但光不会投射到其他对象上。

    • Detail Texture Tiling 设置材质的细节纹理平铺因子。Kanzi 将此值与 UV 相乘,以生成第二组细节 UV,用于所有细节纹理属性。

    • Detail Texture Offset 设置材质的细节纹理偏移。Kanzi 将此值添加到 UV 中,以生成第二组细节 UV,用于所有细节纹理属性。

  • 要在 Detail Emissive Texture 中启用在纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1 之间进行选择,请将 KANZI_SHADER_USE_EMISSIVE_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

金属粗糙度材料

要启用根据材料的金属度和粗糙度进行调整,请将 KANZI_SHADER_USE_PBR_METALLIC_ROUGHNESS 的值设置为 1。这是 Kanzi 物理基础材质类型的默认设置,并向材质公开这些属性:

  • Roughness Factor 将材料的粗糙度设置在从 0 到 1 的范围内:

    • 要获得光滑、有光泽的表面,请将属性值设置为 0。

    • 对于粗糙、漫反射表面,将属性值设置为 1。

  • Metallic Factor 将材料的金属度设置在 0 到 1 的范围内:

    • 对于电介质材料,将值设置为 0。

    • 对于反射行为完全类似于金属的材质,将值设置为 1。

您可以使用金属度、粗糙度和遮挡贴图来调整金属粗糙度材质的外观。

金属贴图

以下预处理器定义控制金属贴图的使用:

  • 要启用使用包含金属贴图的材质纹理,请将 KANZI_SHADER_USE_METALLIC_TEXTURE 的值设置为 1。

    通过这种方式,您将 Metallic Texture 属性暴露给材质,该属性设置包含金属贴图的纹理。

    Kanzi 从纹理的蓝色通道读取金属度贴图。您可以使用相同的纹理为材质设置遮挡、粗糙度和金属度贴图。

  • 要启用在 Metallic Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_METALLIC_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用使用包含材质金属贴图的细节纹理,请将 KANZI_SHADER_USE_METALLIC_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将 Detail Metallic Texture 属性暴露给材质,该属性设置包含金属贴图的细节纹理。

  • 要启用在 Detail Metallic Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_METALLIC_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

粗糙度贴图

以下预处理器定义控制粗糙度贴图的使用:

  • 要启用使用包含材质粗糙度贴图的纹理,请将 KANZI_SHADER_USE_ROUGHNESS_TEXTURE 的值设置为 1。

    通过这种方式,您将 Roughness Texture 属性暴露给材质,该属性设置包含粗糙度贴图的纹理。

    Kanzi 从纹理的绿色通道读取粗糙度贴图。您可以使用相同的纹理为材质设置遮挡、粗糙度和金属度贴图。

  • 要启用在 Roughness Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_ROUGHNESS_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用使用包含材质粗糙度贴图的细节纹理,请将 KANZI_SHADER_USE_ROUGHNESS_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将 Detail Roughness Texture 属性暴露给材质,该属性设置包含粗糙度贴图的细节纹理。

  • 要启用为 Detail Roughness Texture 在纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1 之间进行选择,请将 KANZI_SHADER_USE_ROUGHNESS_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

遮挡贴图

以下预处理器定义控制遮挡贴图的使用:

  • 要启用使用包含材质遮挡贴图的纹理,请将 KANZI_SHADER_USE_OCCLUSION_TEXTURE 的值设置为 1。

    通过这种方式,您将 Occlusion Texture 属性暴露给材质,该属性设置包含遮挡贴图的纹理。

    Kanzi 从纹理的红色通道读取遮挡贴图。您可以使用相同的纹理为材质设置遮挡、粗糙度和金属度贴图。

  • 要启用在 Occlusion Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_OCCLUSION_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用使用包含材质遮挡贴图的细节纹理,请将 KANZI_SHADER_USE_OCCLUSION_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Occlusion Texture 设置包含遮挡贴图的细节纹理。

    • Detail Occlusion Strength 设置 Detail Occlusion Texture 的强度。

  • 要启用在 Detail Occlusion Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_OCCLUSION_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

镜面光泽材料

Kanzi 支持 KHR_materials_pbrSpecularGlossiness glTF 扩展,该扩展允许根据材料的镜面颜色和光泽度进行调整。

要启用根据材料的镜面颜色和光泽度进行调整,请设置:

  • KANZI_SHADER_USE_PBR_SPECULAR_GLOSSINESS 到 1

  • KANZI_SHADER_USE_PBR_METALLIC_ROUGHNESS 为 0。

通过这种方式,您将这些属性暴露给材质:

  • Diffuse Color Factor 设置材质的漫反射颜色。

  • Glossiness Factor 将材料的光泽度设置在 0 到 1 的范围内:

    • 对于粗糙、漫反射的表面,将属性值设置为 0。

    • 要获得光滑、有光泽的表面,请将属性值设置为 1。

  • Specular Color Factor 设置材质的镜面反射颜色。

您可以使用漫反射颜色、光泽度和镜面反射颜色贴图来调整镜面光泽材料的外观。

漫射颜色 (Diffuse Color)

以下预处理器定义控制漫反射颜色:

  • 要启用使用包含材质漫反射颜色的纹理,请将 KANZI_SHADER_USE_DIFFUSE_TEXTURE 的值设置为 1。

    通过这种方式,您将 Diffuse Color Texture 属性暴露给材质,该属性设置包含漫反射颜色的纹理。使用 Diffuse Color Factor 属性从纹理中过滤值。

  • 要在 Diffuse Color Texture 中启用在纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1 之间进行选择,请将 KANZI_SHADER_USE_DIFFUSE_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用包含材质漫反射颜色的细节纹理的使用,将 KANZI_SHADER_USE_DIFFUSE_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Diffuse Color Texture 设置包含材质漫反射颜色的细节纹理。

    • Detail Diffuse Color Factor 设置材质的细节漫反射颜色,Kanzi 将其与由 Diffuse Color Factor 属性设置的材质漫反射颜色进行 alpha 混合。

  • 要启用在 Detail Diffuse Color Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_DIFFUSE_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

光泽度贴图

以下预处理器定义控制光泽度:

  • 要启用使用包含材质光泽度贴图的纹理,请将 KANZI_SHADER_USE_GLOSSINESS_TEXTURE 的值设置为 1。

    通过这种方式,您将 Glossiness Texture 属性暴露给材质,该属性设置包含光泽度贴图的纹理。

    Kanzi 从纹理的 alpha 通道读取光泽度贴图。使用 Glossiness Factor 属性来缩放纹理的光泽度。

  • 要启用在 Glossiness Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_GLOSSINESS_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用包含材质光泽度贴图的细节纹理的使用,请将 KANZI_SHADER_USE_GLOSSINESS_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您可以向材质公开设置包含光泽度贴图的细节纹理的 Detail Glossiness Texture 属性。使用 Glossiness Factor 和 Glossiness Texture 属性来缩放纹理中的光泽度。

  • 要在 Detail Glossiness Texture 中启用在纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1 之间进行选择,请将 KANZI_SHADER_USE_GLOSSINESS_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

镜面反射颜色 (Specular Color)

以下预处理器定义控制镜面反射颜色:

  • 要启用使用包含材料镜面反射颜色的纹理,请将 KANZI_SHADER_USE_SPECULAR_TEXTURE 的值设置为 1。

    通过这种方式,您可以向材质公开设置包含镜面反射颜色的纹理的 Specular Color Texture 属性。使用 Specular Color Factor 属性从纹理中过滤值。

  • 要启用在 Specular Color Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_SPECULAR_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用使用包含材料镜面反射颜色的细节纹理,请将 KANZI_SHADER_USE_SPECULAR_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Specular Color Texture 设置包含材质高光颜色的细节纹理。

    • Detail Specular Color Factor 设置材质的细节高光颜色,Kanzi 将其与由 Specular Color Factor 属性设置的材质高光颜色进行 alpha 混合。

  • 要启用在 Detail Specular Color Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_SPECULAR_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要控制镜面抗锯齿,请将 KANZI_SHADER_USE_SPECULAR_ANTI_ALIASING 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Specular Anti-Aliasing Strength 设置要应用于材质的镜面抗锯齿效果的强度,范围从 0(无镜面抗锯齿)到 1(完全镜面抗锯齿)。

    • Specular Anti-Aliasing Threshold 为应用于材料的镜面抗锯齿效果设置了上限。

清漆材料

Kanzi 支持 KHR_materials_clearcoat glTF 扩展,该扩展可以在基于物理的金属粗糙度材料上模拟一层透明涂层。这通常用于车辆涂料。

默认情况下,PhysicallyBasedClearCoat 材质类型支持设置材质外层透明涂层的粗糙度。

要为任何基于物理的金属粗糙度材料类型启用清漆,将 KANZI_SHADER_USE_CLEARCOAT 的值设置为 1。

通过这种方式,您将这些属性暴露给材质:

  • Clear Coat Roughness Factor 在0到1的范围内设置清漆的粗糙度:

    • 要获得光滑、有光泽的表面,请将属性值设置为 0。

    • 对于粗糙、漫反射表面,将属性值设置为 1。

  • Clear Coat Strength Factor 设置清漆的强度。

您可以使用 normal、roughness 和 strength 贴图来调整清漆材料的外观。

清漆法线贴图

以下预处理器定义控制清漆法线贴图的使用:

  • 要启用使用包含清漆法线贴图的材质纹理,请将 KANZI_SHADER_USE_CLEARCOAT_NORMALMAP_TEXTURE 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Clear Coat Normal Texture 设置包含材料的清漆法线贴图的纹理。

    • Clear Coat Normal Scale 设置 Clear Coat Normal Texture 的强度。

  • 要启用在 Clear Coat Normal Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_CLEARCOAT_NORMALMAP_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用使用包含材料的清漆法线贴图的细节纹理,请将 KANZI_SHADER_USE_CLEARCOAT_NORMALMAP_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您将这些属性暴露给材质:

    • Detail Clear Coat Normal Texture 设置包含材料清漆法线贴图的细节纹理。

    • Detail Clear Coat Normal Scale 设置 Detail Clear Coat Normal Texture 的强度。

  • 要启用在 Detail Clear Coat Normal Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_CLEARCOAT_NORMALMAP_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

清漆粗糙度贴图

以下预处理器定义控制清漆粗糙度贴图的使用:

  • 要启用使用包含清漆粗糙度贴图的材质纹理,请将 KANZI_SHADER_USE_CLEARCOAT_ROUGHNESS_TEXTURE 的值设置为 1。

    通过这种方式,您将 Clear Coat Roughness Texture 属性暴露给材质,该属性设置包含清漆粗糙度贴图的纹理。

    Kanzi 从纹理的绿色通道读取粗糙度贴图。

    使用 Clear Coat Roughness Factor 属性来缩放纹理的粗糙度。

  • 要启用在 Clear Coat Roughness Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_CLEARCOAT_ROUGHNESS_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用使用包含材料的清漆粗糙度贴图的细节纹理,请将 KANZI_SHADER_USE_CLEARCOAT_ROUGHNESS_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您可以向材质公开 Detail Clear Coat Roughness Texture 属性,该属性设置包含清漆粗糙度贴图的细节纹理。使用 Clear Coat Roughness Factor 和 Clear Coat Roughness Texture 属性来缩放纹理中的粗糙度。

  • 要启用在 Detail Clear Coat Roughness Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_CLEARCOAT_ROUGHNESS_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

清漆强度贴图

以下预处理器定义控制清漆强度贴图的使用:

  • 要启用使用包含材料清漆强度贴图的纹理,请将 KANZI_SHADER_USE_CLEARCOAT_STRENGTH_TEXTURE 的值设置为 1。

    通过这种方式,您将 Clear Coat Strength Texture 属性暴露给材质,该属性设置包含清漆强度贴图的纹理。

    Kanzi 从纹理的红色通道读取强度图。

    使用 Clear Coat Strength Factor 属性从纹理中缩放强度。

  • 要启用在 Clear Coat Strength Texture 中选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_CLEARCOAT_STRENGTH_TEXTURE_COORDINATE_INDEX 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

  • 要启用包含材料的清漆强度贴图的细节纹理的使用,请将 KANZI_SHADER_USE_CLEARCOAT_STRENGTH_TEXTURE_DETAIL 的值设置为 1。

    通过这种方式,您可以向材质公开 Detail Clear Coat Strength Texture 属性,该属性设置包含清漆强度贴图的细节纹理。使用 Clear Coat Strength Factor 和 Clear Coat Strength Texture 属性来缩放纹理中的强度。

  • 要启用在 Detail Clear Coat Strength Texture 之间选择纹理坐标 kzTextureCoordinate0 和 kzTextureCoordinate1,请将 KANZI_SHADER_USE_CLEARCOAT_STRENGTH_TEXTURE_COORDINATE_INDEX_DETAIL 的值设置为您要使用的纹理坐标的语义索引。

    例如,要使用语义索引为 1 的纹理坐标,将值设置为 1。

BRDF 查找表

双向反射分布函数 (BRDF) 查找表是一种纹理,其中包含关于光如何从材料反射的预计算信息。

要启用 BRDF 查找表的使用,请将 KANZI_SHADER_USE_BRDF_LOOKUP_TABLE 的值设置为 1。

通过这种方式,您可以向材质公开 BRDF Lookup Table 属性,该属性可用于设置包含 BRDF 查找表的纹理。

平面反射

要使材质接收平面反射,请将 KANZI_SHADER_RECEIVE_PLANAR_REFLECTION 的值设置为 1。

您可以为一种材质类型启用平面反射或 基于图像的照明,但不能同时启用。

基于图像的照明

基于图像的照明使用立方体贴图纹理来模拟来自环境的光照。请参阅 使用基于图像的照明立方体贴图纹理。

要启用基于图像的照明,请将 KANZI_SHADER_USE_LIGHT_IMAGE_BASED 的值设置为 1。

通过这种方式,您将这些属性暴露给材质以控制环境光:

  • Environment Ambient Texture 设置用于漫反射照明的立方体贴图纹理。

  • Environment Ambient Factor 设置 Environment Ambient Texture 的强度。

  • Environment Reflection Texture 设置用于镜面或反射光照的立方体贴图纹理。

  • Environment Reflection Factor 设置 Environment Reflection Texture 的强度。

要配置 Environment Reflection Texture 的哪个 mipmap 级别对应完全粗糙度,您可以设置 KANZI_SHADER_ROUGHNESS_ONE_LOD_OFFSET 预处理器定义的值。该预处理器定义的值是从最后一个 mipmap 级别起算的 mipmap 级别数。默认值为 3。

请注意,生成 Environment Reflection Texture 时必须使用兼容的粗糙度映射。如果您使用外部工具生成立方体贴图,请确保将完全粗糙度映射到正确的 mipmap 级别。

您可以为材质类型启用基于图像的照明或 平面反射,但不能同时启用两者。

Shadows

要使材质能够接收来自不同类型光源节点的阴影,请将以下预处理器定义的值设置为 1:

  • KANZI_SHADER_RECEIVE_DIRECTIONAL_SHADOW 使材质能够接收方向光阴影。

  • KANZI_SHADER_RECEIVE_POINT_SHADOW 使材质能够接收点光源阴影。

  • KANZI_SHADER_RECEIVE_SPOT_SHADOW 使材质能够接收聚光灯阴影。

蒙皮

默认情况下,PhysicallyBasedSkinned 材质类型支持对最多 64 根骨骼的网格进行蒙皮。

要设置网格中用于蒙皮的骨骼数量,请使用 KANZI_SHADER_SKINNING_BONE_COUNT。

变形

默认情况下,PhysicallyBasedMorph 材质类型支持 3 个目标的变形。

要设置变形的形变目标数量,请使用 KANZI_SHADER_MORPH_TARGET_COUNT。

调试输出

要启用调试输出,请将 KANZI_SHADER_DEBUG_OUTPUT 的值设置为 1。

另请参阅

使用材料类型

使用材料

材质类型和材质

着色器 (Shaders)