片段着色器是否在屏幕外运行?

时间:2018-10-25 09:29:52

标签: javascript glsl webgl shader fragment-shader

我使用的是webgl 1.0。

我想知道,如果我设置的顶点不在-1〜1范围内,片段着色器是否在屏幕外(也就是帧缓冲区)运行。

[示例] 如果我设置如下。 绘制类型:gl.LINES 顶点:[-100000,-100000,100000,100000] <--- 1点2点制

我认为设置时显示结果是相同的 顶点:[-1,-1,1,1] (两个结果都是从左下到右上显示1条直线。)

我想知道第一个示例是由于大量正在运行的片段着色器而导致的性能降低。

1 个答案:

答案 0 :(得分:3)

否,片段着色器仅处理视图体积中的片段。其他片段被剪切。

PrimitivesVertex post-processing阶段被剪切。

Clipping规则应用于剪辑空间坐标(gl_Position):

-.w <= .x, .y, .z <= .w

片段处理在Rasterization之后进行。
另请参见Rendering Pipeline Overview