Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
An object with the following properties:
|
Throws:
-
DeveloperError : options.textureScale must be greater than 0.0 and less than or equal to 1.0.
-
DeveloperError : options.pixelFormat must be a color format.
-
DeveloperError : When options.pixelDatatype is FLOAT, this WebGL implementation must support the OES_texture_float extension. Check context.floatingPointTexture.
Examples:
// Simple stage to change the color
const fs =`
uniform sampler2D colorTexture;
varying vec2 v_textureCoordinates;
uniform float scale;
uniform vec3 offset;
void main() {
vec4 color = texture2D(colorTexture, v_textureCoordinates);
gl_FragColor = vec4(color.rgb * scale + offset, 1.0);
}`;
scene.postProcessStages.add(new Cesium.PostProcessStage({
fragmentShader : fs,
uniforms : {
scale : 1.1,
offset : function() {
return new Cesium.Cartesian3(0.1, 0.2, 0.3);
}
}
}));
// Simple stage to change the color of what is selected.
// If czm_selected returns true, the current fragment belongs to geometry in the selected array.
const fs =`
uniform sampler2D colorTexture;
varying vec2 v_textureCoordinates;
uniform vec4 highlight;
void main() {
vec4 color = texture2D(colorTexture, v_textureCoordinates);
if (czm_selected()) {
vec3 highlighted = highlight.a * highlight.rgb + (1.0 - highlight.a) * color.rgb;
gl_FragColor = vec4(highlighted, 1.0);
} else {
gl_FragColor = color;
}
}`;
const 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];
See:
Members
readonly clearColor : Color
The shader must contain a sampler uniform declaration for colorTexture
, depthTexture
,
or both.
The shader must contain a vec2
varying declaration for v_textureCoordinates
for sampling
the texture uniforms.
PostProcessStageComposite
.
readonly pixelDatatype : PixelDatatype
readonly pixelFormat : PixelFormat
ready
and PostProcessStage#enabled
are true
. A stage will not be ready while it is waiting on textures
to load.
readonly sampleMode : PostProcessStageSampleMode
readonly scissorRectangle : BoundingRectangle
BoundingRectangle
to use for the scissor test. A default bounding rectangle will disable the scissor test.
In the fragment shader, use czm_selected
to determine whether or not to apply the post-process
stage to that fragment. For example:
if (czm_selected(v_textureCoordinates)) {
// apply post-process stage
} else {
gl_FragColor = texture2D(colorTexture, v_textureCoordinates);
}
The object property values can be either a constant or a function. The function will be called each frame before the post-process stage is executed.
A constant value can also be a URI to an image, a data URI, or an HTML element that can be used as a texture, such as HTMLImageElement or 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.
Methods
Once an object is destroyed, it should not be used; calling any function other than
isDestroyed
will result in a DeveloperError
exception. Therefore,
assign the return value (undefined
) to the object as done in the example.
Throws:
-
DeveloperError : This object was destroyed, i.e., destroy() was called.
If this object was destroyed, it should not be used; calling any function other than
isDestroyed
will result in a DeveloperError
exception.
Returns:
true
if this object was destroyed; otherwise, false
.