着色器是用于在图像内创建合适的亮度和色彩级别,从而产生特殊效果或进行后处理的程序。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 | 组合 FragmentPhongSkinned 和 FragmentPhongTextured 着色器。 | |
FragmentPhongTexturedCube | 组合 FragmentPhongCube 和 FragmentPhongTextured 着色器。 | |
FragmentPhongTexturedNormalMap | 根据网格几何形状计算表面法线,并使用其他法线图将其变形。NormalMapStrength 属性控制法线的变形方式。 | |
FragmentPhongTexturedCubeNormalMap | 将 FragmentPhongTexturedNormalMap 着色器与根据视图 vector 和表面法线的反射计算的环境贴图反射组合到一起。 | |
VertexPhong | VertexPhong | 实现 Blinn-Phong 着色模型。默认情况下,渲染器支持一个方向光、一个聚光灯和两个点光源。着色器计算每个顶点的光源。 |
VertexPhongCube | 显示根据视图 vector 和表面法线的反射计算的环境贴图反射,并将结果与 Phong 着色相结合。 | |
VertexPhongMorph | 启用变形。请参阅使用变形 (Morph) 资源。 | |
VertexPhongSkinned | 显示蒙皮网格数据。着色器根据多个变换和权重变换顶点,并将结果与 Phong 着色组合到一起。 如果您在第三方内容创建工具中定义了矩阵调色板和权重,则它们是网格特性的组成部分。 着色器与网格数据中不包含蒙皮数据(矩阵调色板和权重)的几何形状不兼容。 请参阅使用蒙皮网格。 |
|
VertexPhongTextured | 显示可用于 3D 节点的纹理数据。请参阅纹理和创建纹理材质。 | |
VertexPhongTexturedCube | 组合 VertexPhongCube 和 VertexPhongTextured 着色器。 | |
VertexPhongTexturedMorph | 组合 VertexPhongMorph 和 VertexPhongTextured 着色器。 | |
VertexPhongTexturedSkinned | 组合 VertexPhongSkinned 和 VertexPhongTextured 着色器。 | |
您还可以编写您自己的着色器。请参阅编辑着色器。
在 Kanzi 中您还可以使用二进制着色器。二进制着色器是指应用程序将硬件制造商提供的编译器传递到设备 GPU 之前,使用这些编辑器预编译的着色器程序。这样,您就可以定位设备以更快加载您的应用程序。请参阅使用二进制着色器。