OpenGL ES _ 着色器_片断着色器详解

2018-09-14 14:35:25 浏览数 (1)

学习是一件开心的额事情

本节学习目标
  • 输入值和输出值
  • 如何渲染多个输出缓冲区
输入值和输出值

片段着色器内置变量

输入值:片段着色器接受顶点管线最终输出的迭代值,这些值包括片段的位置,已解析的主颜色和辅助颜色,一系列的纹理坐标以及片段的雾坐标距离。

下面这个表格,将是对这些变量的详细介绍

|变量|类型|描述| |---| |gl_FragCoord|vec4|片断的位置,包含z成分,它表示固定功能所计算的深度值,只读| |glFrontFacing|bool|只读,指定这个片段是否属于一个正面图元| |gl_Color|vec4|片段着色器的主色| |gl_SecondColor|vec4|片段的辅助颜色| |gl_TexCoord[n]|vec4|片段的第n纹理坐标| |gl_FogFragCoord|float|片段的雾坐标|要么指定为视觉空间中的图元的z坐标,或者差值雾坐标| |gl_PointCoord|vec2|一个点块纹理的片断位置在[0.0,0.1]|范围中,如果当前图元并不是点块纹理或者点块纹理被禁用|

特殊的输出值 在片段着色器中,特殊的输入值经过组合,产生片断的最终值. gl_FragColor 是片断的最终颜色。 gl_FragDepth 片断的深度值 gl_FragData 允许把数据写入到额外的缓冲区中

如何渲染多个缓冲区

片段着色器可以使用gl_FragData 数组,把值同时输出到多个缓冲区,在数组元素gl_FragData[n] 中写入一个值将导致这个颜色被写入到缓冲区中一个适当的片段中,这个片段位于传递给glDrawBuffers()函数的数组的第n个元素中,片断着色器把值写入到gl_FragColor 或者gl_FragData 中,但是不能同时写入到两者中.

总结

基本的GLSL 内容,就这些了,接下来,就真正开始实践这些内容了,OpenGL 的概念部分,我会陆续发布,请持续关注!

0 人点赞