基于物理的材料属性¶
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) |
|
混合 |
|
遮罩 (Mask) |
|
顶点颜色¶
网格中的每个顶点可以选择性地存储一个颜色值。
要启用顶点颜色的使用,将 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。