PostProcessStage

在场景渲染的纹理或上一个后期处理阶段的输出上运行后期处理阶段。
new PostProcessStage(options)
Parameters:
options (Object) 一个
Name Description
options.fragmentShader
String
要使用的片段明暗器。默认sampler2D结构为colorTexturedepthTexture。颜色纹理是渲染场景或上一阶段的输出。深度纹理是渲染场景的输出。该明暗器应包含一个或两个结构。还有一个名为v_textureCoordinatesvec2变量,可用于对纹理进行采样。
options.uniforms
Object
其属性将用于设置明暗器结构的对象。属性可以是常量值或函数。常量值也可以是用作纹理的uri、data uri或html元素。
options.textureScale
Number
default 1.0
范围(0.0,1.0]中用于缩放纹理尺寸的数字。比例为1.0将使此后期处理阶段呈现为视区大小的纹理。
options.forcePowerOfTwo
Boolean
default false
是否强制纹理尺寸为二的等幂。二次方的幂将是最小尺寸的二次方的下一次幂。
options.sampleMode
PostProcessStageSampleMode
default PostProcessStageSampleMode.NEAREST
如何对输入的颜色纹理进行采样。
options.pixelFormat
PixelFormat
default PixelFormat.RGBA
输出纹理的颜色像素格式。
options.pixelDatatype
PixelDatatype
default PixelDatatype.UNSIGNED_BYTE
输出纹理的像素数据类型。
options.clearColor
Color
default Color.BLACK
要清除输出纹理的颜色。
options.scissorRectangle
BoundingRectangle
用于剪刀测试的矩形。
options.name
String
default createGuid()
此后处理阶段的唯一名称,供复合中其他阶段参考。如果未提供名称,将生成一个GUID。
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 bmgl.PostProcessStage({
    fragmentShader : fs,
    uniforms : {
        scale : 1.1,
        offset : function() {
            return new bmgl.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 bmgl.PostProcessStage({
    fragmentShader : fs,
    uniforms : {
        highlight : function() {
            return new bmgl.Color(1.0, 0.0, 0.0, 0.5);
        }
    }
}));
stage.selected = [bm3DTileFeature];
Throws
  • DeveloperError : Options.TextureScale必须大于0.0且小于或等于1.0。
  • DeveloperError : Options.PixelFormat必须是颜色格式。
  • DeveloperError : 当options.pixeldatatype为float时,此WebGL实现必须支持OES纹理float扩展。检查context.floatingpointtexture。
See:

Members

(readonly) clearColor : Color

要清除输出纹理的颜色。

enabled : Boolean

准备好后是否执行此后期处理阶段。

(readonly) forcePowerOfTwo : Number

是否强制输出纹理尺寸都为二的等幂。二次方的幂将是最小尺寸的二次方的下一次幂。

(readonly) fragmentShader : String

执行此后期处理阶段时要使用的片段明暗器。

材质球必须包含colorTexturedepthTexture或两者的采样器统一声明。

材质球必须包含vec2用于v_textureCoordinates采样纹理结构的变化声明。

(readonly) name : String

此后处理阶段的唯一名称,供APostProcessStageComposite中的其他阶段参考。

(readonly) pixelDatatype : PixelDatatype

输出纹理的像素数据类型。

(readonly) pixelFormat : PixelFormat

输出纹理的颜色像素格式。

(readonly) ready : Boolean

确定此后处理阶段是否准备好执行。阶段仅在readyPostProcessStage#enabled都是true时执行。在等待加载纹理时,阶段将不准备就绪。

(readonly) sampleMode : PostProcessStageSampleMode

如何对输入的颜色纹理进行采样。

(readonly) scissorRectangle : BoundingRectangle

BoundingRectangle用于剪刀测试。默认的边界矩形将禁用剪刀测试。

selected : Array

为应用后期处理选择的功能。

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

(readonly) textureScale : Number

范围(0.0,1.0]中用于缩放输出纹理尺寸的数字。比例为1.0将使此后期处理阶段呈现为视区大小的纹理。

(readonly) uniforms : Object

其属性用于设置片段明暗器的一致性的对象。

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

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

如果此后处理阶段是不连续执行的PostProcessStageComposite的一部分,则常量值也可以是复合中另一个阶段的名称。这将为具有该名称的阶段的输出纹理设置统一。

Methods

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

一旦对象被破坏,就不应使用它;调用除isDestroyed以外的任何函数都将导致DeveloperError异常。因此,将返回值(undefined)赋给对象,如示例中所述。

Throws
See:
isDestroyed() → {Boolean}
如果此对象被破坏,则返回true;否则返回false。

如果此对象被破坏,则不应使用它;调用除isDestroyed以外的任何函数都将导致DeveloperError异常。

See: