cocos Shader & Glsl 入门(三)
#四丶着色器
顶点着色器(Vertex Shader)
顶点着色器的功能是根据输入的顶点数据和Uniform数据(如果有),来填写当前顶点 内置的输出变量 ,并将一些有用数据传递给下一阶段。
一个核心的顶点着色器模板如下:layout(location = 0) in vec2 position;
out gl_PerVertex { vec4 gl_Position;};
void main(){
gl_Position = vec4(position,0.0f,1.0f);}
- layout(location = 0) 代表了值对应流水线创建时顶点输入布局中 索引为0 的顶点属性
- in 代表是输入变量
- vec2表示该变量类型是二维向量,它需要与顶点输入布局中的格式(Float2)对应
- position是输入变量的名称,它可以是任意的
- out gl_PerVertex { vec4 gl_Position; }; 是顶点着色器中固定输出定义
- gl_Position = vec4(position,0.0f,1.0f);就是根据输入的顶点位置,填充顶点着色器实际的顶点数据输出
片段着色器(Fragment Shader)
片段着色器的功能是根据前一阶段的输入数据和Uniform数据(如果有),写入到渲染目标的颜色附件上。
一个核心的片段着色器模板如下:layout(location = 0) out vec4 fragColor;void main(){
fragColor = vec4(1,1,1,1);}
- layout(location = 0) out 表明该片段将输出到 渲染目标 索引为0的颜色附件 上,一个渲染目标往往至少包含一个颜色附件,交换链的渲染目标上就只有一个四通道的颜色附件 。
- vec4代表着颜色附件具有四个颜色通道,例如RGBA8888
- fragColor 是输出变量的名称,它可以是任意的
- fragColor = vec4(1,1,1,1)说明了最终的片段为不透明的白色(R=1,G=1,B=1,A=1)
