着色器

着色器是用于在图像内创建合适的亮度和色彩级别,从而产生特殊效果或进行后处理的程序。Kanzi 中的着色器基于 OpenGL ES 2.0 着色语言。

Kanzi 中的各种材质类型随附定义着色算法的着色器。着色器由顶点着色器 (.vert.glsl) 和片段着色器 (.frag.glsl) 组成。

Kanzi Studio 工程中,着色器方案作为文件存储在计算机硬盘驱动器中。将着色器添加到 Kanzi Studio 工程的 <KanziWorkspace>/Projects/<ProjectName>/Shaders 目录时,Kanzi Studio 自动在素材库 (Library) > 资源文件 (Resource Files) > 着色器 (Shaders) 中显示它们。

您可以在 <KanziInstallation>/Studio/Asset Library/MaterialTypes 中找到 Kanzi 随附的着色器:

Kanzi 随附以下着色器:

类型 (Type) 着色器 (Shader) 描述 (Description)
Common ColorTexture 显色彩色的纹理数据。
DefaultBlit 位块传送渲染通道 (Blit Render Pass) 使用的默认着色器。请参阅渲染
FontDefault 渲染文本字体。着色器将图形纹理与字体颜色组合在一起,并显示输出。您可以将其用于 3D 文本块 (Text Block 3D)2D 文本块 (Text Block 2D) 节点。请参阅使用文本块 (Text Block) 节点
MaskTexture 显示一种纹理遮罩另一种纹理的纹理数据。
SweepTextures 显示从一种纹理迁移到另一种纹理的纹理数据。
Textured (纹理化) 显示纹理数据。请参阅纹理创建纹理材质
FragmentPhong FragmentPhong 实现 Blinn-Phong 着色模型。默认情况下,渲染器支持一个方向光、一个聚光灯和两个点光源。着色器计算每个片段的光源。
FragmentPhongCube 显示根据视图 vector 和表面法线的反射计算的环境贴图反射,并将结果与 Phong 着色相结合。
FragmentPhongSkinned 显示蒙皮网格数据。请参阅使用蒙皮网格
FragmentPhongTextured 显示可用于 3D 节点的纹理数据。请参阅纹理创建纹理材质
FragmentPhongTexturedSkinned 组合 FragmentPhongSkinnedFragmentPhongTextured 着色器。
FragmentPhongTexturedCube 组合 FragmentPhongCubeFragmentPhongTextured 着色器。
FragmentPhongTexturedNormalMap 根据网格几何形状计算表面法线,并使用其他法线图将其变形。NormalMapStrength 属性控制法线的变形方式。
FragmentPhongTexturedCubeNormalMap FragmentPhongTexturedNormalMap 着色器与根据视图 vector 和表面法线的反射计算的环境贴图反射组合到一起。
VertexPhong VertexPhong 实现 Blinn-Phong 着色模型。默认情况下,渲染器支持一个方向光、一个聚光灯和两个点光源。着色器计算每个顶点的光源。
VertexPhongCube 显示根据视图 vector 和表面法线的反射计算的环境贴图反射,并将结果与 Phong 着色相结合。
VertexPhongMorph 启用变形。请参阅使用变形 (Morph) 资源
VertexPhongSkinned 显示蒙皮网格数据。着色器根据多个变换和权重变换顶点,并将结果与 Phong 着色组合到一起。
如果您在第三方内容创建工具中定义了矩阵调色板和权重,则它们是网格特性的组成部分。
着色器与网格数据中不包含蒙皮数据(矩阵调色板和权重)的几何形状不兼容。
请参阅使用蒙皮网格
VertexPhongTextured 显示可用于 3D 节点的纹理数据。请参阅纹理创建纹理材质
VertexPhongTexturedCube 组合 VertexPhongCubeVertexPhongTextured 着色器。
VertexPhongTexturedMorph 组合 VertexPhongMorphVertexPhongTextured 着色器。
VertexPhongTexturedSkinned 组合 VertexPhongSkinnedVertexPhongTextured 着色器。
   

您还可以编写您自己的着色器。请参阅编辑着色器

Kanzi 中您还可以使用二进制着色器。二进制着色器是指应用程序将硬件制造商提供的编译器传递到设备 GPU 之前,使用这些编辑器预编译的着色器程序。这样,您就可以定位设备以更快加载您的应用程序。请参阅使用二进制着色器

另请参阅

着色器最佳实践

使用二进制着色器

优化片段着色器

减少着色器切换

编辑着色器

材质类型和材质

使用光源节点