Shader学习一:Shader入门

shader零基础入门文档

Fragment shader 片段着色器

  1. Shaders也是一系列的指令,但是这些指令会对屏幕上的每个像素同时下达。也就是说,你的代码必须根据像素在屏幕上的不同位置执行不同操作。
  2. 你的程序就像一个 function(函数),输入位置信息,输出颜色信息,当它编译完之后会以相当快的速度运行。

shader语言

像素颜色取决于预设的全局变量 gl_FragColor

vec4(四分量浮点向量)

vec3 (三分量浮点向量)

vec2 (二分量浮点向量)

float(单精度浮点型)

int(整型)

bool(布尔型)

有了宏才可以 #define (定义)全局变量和进行一些基础的条件运算(通过使用 #ifdef 和 #endif)

(precision lowp float;)设定了所有的浮点值都是中等精度

(precision mediump float;)设定了所有的浮点值都是中等精度

(precision highp float;)设定了所有的浮点值都是高等精度

Uniforms

因为显卡的架构,所有线程的输入值必须统一(uniform),而且必须设为只读。也就是说,每条线程接收相同的数据,并且是不可改变的数据。

这些输入值叫做 uniform (统一值),它们的数据类型通常为:float, vec2, vec3, vec4, mat2, mat3, mat4, sampler2D and samplerCube。

uniform 值需要数值类型前后一致。且在 shader 的开头,在设定精度之后,就对其进行定义。

#ifdef GL_ES

precision mediump float;

#endif

uniform vec2 u_resolution; // 画布尺寸(宽,高)

uniform vec2 u_mouse; // 鼠标位置(在屏幕上哪个像素)

uniform float u_time; // 时间(加载后的秒数)

猜你喜欢

转载自blog.csdn.net/u011485276/article/details/114285014