GLSL教程 图形管线 片段处理器

来源:互联网 发布:python for遍历字符串 编辑:程序博客网 时间:2024/05/22 13:59

片段处理器负责运行片段着色器。顶点着色器负责的操作包括:

  • 为每个像素计算颜色和纹理坐标
  • 纹理应用(应用纹理)
  • 雾计算
  • 计算法线(如果你想对每个像素应用光照)

本单元的输入为之前阶段计算得到的插值如顶点位置,颜色和法线等。

顶点着色器会为每个顶点计算这些值。现在我们在处理图元中的片段,因此需要插值。

和顶点处理器一样,当你编写了一个片段着色器,它将替代对应的所有固定功能。因此让片段着色器执行纹理操作,然后将雾操作留给固定功能管线是不可能的。程序员必须编写应用需要的所有效果。

片段处理器对单个片段进行处理,因此对于旁边的片段一无所知。与顶点着色器类似,片段着色器能够访问OpenGL状态,因此它能够访问在OpenGL应用程序中指定的的雾颜色。

注意:片段着色器不能够修改之前计算得到的像素坐标。回忆一下,在顶点处理器中,我们使用模型视图和投影矩阵来变换顶点。视口变换应用于此之后,但是片段处理器之前。片段着色器能够访问屏幕像素的位置但是不能改变它。

片段着色器有两个输出选项:

  • 丢弃片段,因此什么也不输出
  • 当需要渲染到多个目标上时,计算gl_FragColor(片段的最终颜色)或者gl_FragData。

注意:片段着色器不能访问帧缓冲区。这意味着像混合这样的操作只能应用于片段着色器之后。

———————————————————————————————————————————————————————————————

本文英文原文为《GLSL Tutorial – Fragment Processor 》 。

如果文中有一些地方翻译得不符合您的阅读习惯,您可以选择直接阅读英文原文,或者把您的翻译建议发给我,我一定会认真对待您的建议。

原创粉丝点击