用户定义的 GLSL 着色器也与
Model
一起使用
为 Cesium3DTileset
。
如果使用纹理 uniform,则必须进行额外的资源管理:
-
必须每帧调用
update
函数。当 自定义着色器传递给Model
或Cesium3DTileset
,此步骤会自动处理 -
CustomShader#destroy
当自定义着色器为 不再需要正确清理 GPU 资源。应用 负责调用该方法。
See the Custom Shader Guide for more detailed documentation.
Name | Type | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
object |
具有以下选项的对象
|
Example:
const customShader = new CustomShader({
uniforms: {
u_colorIndex: {
type: Cesium.UniformType.FLOAT,
value: 1.0
},
u_normalMap: {
type: Cesium.UniformType.SAMPLER_2D,
value: new Cesium.TextureUniform({
url: "http://example.com/normal.png"
})
}
},
varyings: {
v_selectedColor: Cesium.VaryingType.VEC3
},
vertexShaderText: `
void vertexMain(VertexInput vsInput, inout czm_modelVertexOutput vsOutput) {
v_selectedColor = mix(vsInput.attributes.color_0, vsInput.attributes.color_1, u_colorIndex);
vsOutput.positionMC += 0.1 * vsInput.attributes.normal;
}
`,
fragmentShaderText: `
void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {
material.normal = texture(u_normalMap, fsInput.attributes.texCoord_0);
material.diffuse = v_selectedColor;
}
`
});
Experimental
此功能使用的是 3D Tiles 规范的一部分,该规范并非最终版本,并且可能会在没有 Cesium 标准弃用政策的情况下进行更改。
Members
用户定义的片段着色器的 GLSL 代码
readonly lightingModel : LightingModel
使用自定义着色器时要使用的照明模型。
这由
CustomShaderPipelineStage
使用
readonly mode : CustomShaderMode
一个值,用于确定自定义着色器如何与整体
片段着色器。它由
CustomShaderPipelineStage
使用
readonly translucencyMode : CustomShaderTranslucencyMode
半透明模式,用于确定如何应用自定义着色器。如果值为
CustomShaderTransulcencyMode.OPAQUE 或 CustomShaderTransulcencyMode.TRANSLUCENT,自定义着色器
将覆盖模型材质的设置。如果值为 CustomShaderTransulcencyMode.INHERIT,则
自定义着色器将渲染为 Opaque 或 Translucent,具体取决于图元的材质设置。
-
Default Value:
CustomShaderTranslucencyMode.INHERIT
readonly uniforms : Object.<string, UniformSpecifier>
用户声明的额外制服。
readonly varyings : Object.<string, VaryingType>
用户声明的其他变化。
这由
CustomShaderPipelineStage
使用
顶点着色器的用户定义 GLSL 代码
Methods
更新着色器中声明的 uniform 的值
Name | Type | Description |
---|---|---|
uniformName |
string | 制服的 GLSL 名称。这必须与构造函数中声明的 uniform 之一匹配 |
value |
boolean | number | Cartesian2 | Cartesian3 | Cartesian4 | Matrix2 | Matrix3 | Matrix4 | string | Resource | TextureUniform | uniform 的新值。 |