PostProcessStage

new Cesium.PostProcessStage (options)

在场景渲染的纹理或上一个后期处理阶段的输出上运行一个后期处理阶段。
Name Type Description
options Object An object with the following properties:
Name Type Default Description
fragmentShader String 要使用的片段着色器。默认的 sampler2D 制服是 colorTexture depthTexture 。颜色纹理是渲染场景或上一阶段的输出。深度纹理是渲染场景的输出。着色器应包含一个或两个制服。还有一个名为 v_textureCoordinates vec2 ,可用于对纹理进行采样。
uniforms Object 可选 一个对象,其属性将用于设置着色器统一。这些属性可以是常数值或函数。常量值也可以是用作纹理的URI,数据URI或HTML元素。
textureScale Number 1.0 可选 用于缩放纹理尺寸的(0.0,1.0]范围内的数字。缩放比例为1.0会将此后处理阶段呈现为视口大小的纹理。
forcePowerOfTwo Boolean false 可选 是否强制纹理尺寸均等于2的幂。 2的幂将是最小维度中2的下一个幂。
sampleMode PostProcessStageSampleMode PostProcessStageSampleMode.NEAREST 可选 如何对输入的颜色纹理进行采样。
pixelFormat PixelFormat PixelFormat.RGBA 可选 输出纹理的彩色像素格式。
pixelDatatype PixelDatatype PixelDatatype.UNSIGNED_BYTE 可选 输出纹理的像素数据类型。
clearColor Color Color.BLACK 可选 用于清除输出纹理的颜色。
scissorRectangle BoundingRectangle 可选 用于剪刀测试的矩形。
name String 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
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);
        }
    }
}));
// 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.
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];
See:

Members

清除输出纹理的颜色。
准备好后是否执行此后处理阶段。

readonly forcePowerOfTwo : Number

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

readonly fragmentShader : String

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

着色器必须包含 colorTexture depthTexture ,或两者。

着色器必须包含 vec2 可变声明,用于 v_textureCoordinates 进行采样质地均匀。

readonly name : String

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

readonly ready : Boolean

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

在片段着色器中,使用 czm_selected 确定是否应用后处理进入那个片段。例如: 如果(czm_selected(v_textureCoordinates)){ //应用后处理阶段}其他{ gl_FragColor = texture2D(colorTexture,v_textureCordinates);}

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;否则返回false。否则为假。

如果该对象被破坏,则不应使用。调用除 isDestroyed 将导致 DeveloperError 异常。

Returns:
真正 该物体是否被破坏;除此以外,
See: