Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
具有下列属性的对象:
|
-
DeveloperError : options.textureScale 大于 0.0 并且小于等于 1.0。
-
DeveloperError : options.pixelFormat 必须是一种颜色格式。
-
DeveloperError : 当options.pixelDatatype是FLOAT,这个WEBGL实现必须支持 OES_texture_float 扩展,检查context.floatingPointTexture。
// 改变颜色的简单阶段
var fs =
'uniform sampler2D colorTexture;\n' +
'varying vec2 v_textureCoordinates;\n' +
'uniform float scale;\n' +
'uniform vec3 offset;\n' +
'void main() {\n' +
' vec4 color = texture2D(colorTexture, v_textureCoordinates);\n' +
' gl_FragColor = vec4(color.rgb * scale + offset, 1.0);\n' +
'}\n';
scene.postProcessStages.add(new Cesium.PostProcessStage({
fragmentShader : fs,
uniforms : {
scale : 1.1,
offset : function() {
return new Cesium.Cartesian3(0.1, 0.2, 0.3);
}
}
}));
// 改变所选颜色的简单阶段。
// 如果czm_selected返回true,则当前片元属于所选数组中的几何图形。
var fs =
'uniform sampler2D colorTexture;\n' +
'varying vec2 v_textureCoordinates;\n' +
'uniform vec4 highlight;\n' +
'void main() {\n' +
' vec4 color = texture2D(colorTexture, v_textureCoordinates);\n' +
' if (czm_selected()) {\n' +
' vec3 highlighted = highlight.a * highlight.rgb + (1.0 - highlight.a) * color.rgb;\n' +
' gl_FragColor = vec4(highlighted, 1.0);\n' +
' } else { \n' +
' gl_FragColor = color;\n' +
' }\n' +
'}\n';
var stage = scene.postProcessStages.add(new Cesium.PostProcessStage({
fragmentShader : fs,
uniforms : {
highlight : function() {
return new Cesium.Color(1.0, 0.0, 0.0, 0.5);
}
}
}));
stage.selected = [cesium3DTileFeature];
成员变量
着色器必须包含一个统一的声明,用于colorTexture
,depthTexture
,或者两者都有。
The shader must contain a vec2
varying declaration for v_textureCoordinates
for sampling
the texture uniforms.
着色器必须包含一个vec2
针对采样纹理uniforms的v_textureCoordinates
的 varying 声明。
PostProcessStageComposite
中的其他阶段引用。
BoundingRectangle
。默认的边界矩形将禁用裁剪测试。
在片段着色器中,使用czm_selected
来决定是否将后期处理阶段应用到该片元。 例如:
if (czm_selected(v_textureCoordinates)) {
// apply post-process stage
} else {
gl_FragColor = texture2D(colorTexture, v_textureCordinates);
}
对象属性值可以是常量,也可以是函数。在执行后处理阶段之前,将在每一帧调用该函数。
常量值也可以是图像的URI、数据URI或可以用作纹理的HTML元素,如HTMLImageElement或HTMLCanvasElement。
If this post-process stage is part of a PostProcessStageComposite
that does not execute in series, the constant value can also be
the name of another stage in a composite. This will set the uniform to the output texture the stage with that name.
如果此后期处理阶段是未连续执行的 PostProcessStageComposite
的一部分,则常量值也可以是复合中另一个阶段的名称。这会将具有该名称的阶段的uniform设置为输出纹理。
内置方法
一旦对象被销毁,它将不能在使用; 调用除
isDestroyed
之外的任何函数都会导致DeveloperError
异常。
因此,将返回值(undefined
)赋给对象,如示例所示。
-
DeveloperError : 对象已经被销毁。