黎明的剔透里伸出了你沁清的暧昧

Graphics|EngineDev|GameDev|2D&3D Art

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  60 随笔 :: 1 文章 :: 18 评论 :: 0 Trackbacks

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

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

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

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

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

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

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

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

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

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

整个shader流程:



posted on 2011-11-18 20:10 情绝格调(fresmaster) 阅读(445) 评论(0)  编辑 收藏 引用 所属分类: Graphics

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理