PostProcessStage

new Cesium.PostProcessStage (options)

对场景渲染的纹理或前一个后处理阶段的输出运行后处理阶段。
Name Type Description
options Object 具有以下属性的对象:
姓名 类型 默认 描述
fragmentShader 细绳 要使用的片段着色器。默认的 sampler2D 制服是 colorTexture depthTexture 。颜色纹理是渲染场景或前一阶段的输出。深度纹理是渲染场景的输出。着色器应包含一个或两个制服。还有一个名为 v_textureCoordinates vec2 变量,可用于对纹理进行采样。
uniforms 目的 可选 一个对象,其属性将用于设置着色器制服。属性可以是常数值或函数。常量值也可以是用作纹理的 URI、数据 URI 或 HTML 元素。
textureScale 数字 1.0 可选 范围 (0.0, 1.0] 中的数字,用于缩放纹理尺寸。比例为 1.0 将将此后期处理阶段渲染为视口大小的纹理。
forcePowerOfTwo 布尔值 false 可选 是否强制纹理尺寸为两个相等的幂。二的幂将是最小维度的二的下一个幂。
sampleMode PostProcessStageSampleMode PostProcessStageSampleMode.NEAREST 可选 如何对输入颜色纹理进行采样。
pixelFormat 像素格式 PixelFormat.RGBA 可选 输出纹理的颜色像素格式。
pixelDatatype 像素数据类型 PixelDatatype.UNSIGNED_BYTE 可选 输出纹理的像素数据类型。
clearColor 颜色 Color.BLACK 可选 要清除输出纹理的颜色。
scissorRectangle 边界矩形 可选 用于剪刀测试的矩形。
name 细绳 createGuid() 可选 此后处理阶段的唯一名称,供组合中的其他阶段参考。如果未提供名称,将生成 GUID。
Throws:
  • DeveloperError : options.textureScale 必须大于 0.0 且小于或等于 1.0。
  • DeveloperError : options.pixelFormat 必须是颜色格式。
  • DeveloperError : 当 options.pixelDatatype 为 FLOAT 时,此 WebGL 实现必须支持 OES_texture_float 扩展。检查 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 forcePowerOfTwo : Number

是否强制输出纹理尺寸为等于 2 的幂。二的幂将是最小维度的二的下一个幂。

readonly fragmentShader : String

执行此后期处理阶段时使用的片段着色器。

着色器必须包含 colorTexture depthTexture 或两者的采样器统一声明。

着色器必须包含 v_textureCoordinates vec2 变化声明,用于对纹理制服进行采样。

readonly name : String

此后期处理阶段的唯一名称,供 PostProcessStageComposite 中的其他阶段参考。
输出纹理的像素数据类型。
输出纹理的颜色像素格式。

readonly ready : Boolean

确定此后处理阶段是否已准备好执行。只有在 ready PostProcessStage#enabled 都为 true 时才会执行阶段。舞台在等待纹理加载时不会准备好。
如何对输入颜色纹理进行采样。
用于剪刀测试的 BoundingRectangle 。默认边界矩形将禁用剪刀测试。
为应用后处理而选择的特征。

在片段着色器中,使用 czm_selected 来确定是否将后处理阶段应用于该片段。例如: if (czm_selected(v_textureCoordinates)) {//apply post-process stage } else { gl_FragColor = texture2D(colorTexture, v_textureCoordinates); }

readonly textureScale : Number

范围 (0.0, 1.0] 中的一个数字,用于缩放输出纹理尺寸。1.0 的比例将将此后期处理阶段渲染为视口大小的纹理。

readonly uniforms : Object

一个对象,其属性用于设置片段着色器的制服。

对象属性值可以是常量或函数。在执行后处理阶段之前,每个帧都会调用该函数。

常量值也可以是图像的 URI、数据 URI 或可用作纹理的 HTML 元素,例如 HTMLImageElement 或 HTMLCanvasElement。

如果此后处理阶段是不按顺序执行的 PostProcessStageComposite 的一部分,则常量值也可以是组合中另一个阶段的名称。这会将制服设置为具有该名称的舞台的输出纹理。

Methods

销毁此对象持有的 WebGL 资源。销毁一个对象允许确定性地释放 WebGL 资源,而不是依赖垃圾收集器来销毁这个对象。

一旦一个对象被销毁,它就不应该被使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。因此,如示例中所做的那样,将返回值 ( undefined ) 分配给对象。

Throws:
See:

isDestroyed () Boolean

如果此对象被销毁,则返回 true;否则为假。

如果这个对象被破坏了,它就不应该被使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。

Returns:
如果此对象被销毁,则为 true ;否则, false
See: