vec3 c = a * s;// vec3(10.0, 20.0, 30.0) mat3 m2 = s * m;// = mat3(10.0) mat3 m3 = m * s;// = mat3(10.0) 3.vec(向量)与vec(向量): 两向量间的运算首先要保证操作数的阶数都相同.否则不能计算.例如: vec3*vec2 vec4+vec3 等等都是不行的. 它们的计算方式是两操作数在...
#iChannel0"https://img-baofun.zhhainiao.com/pcwallpaper_ugc_mobile/static/2ddf8479959f1f3d9f52d0d561d281fe.jpg"voidmainImage(out vec4 fragColor,invec2 fragCoord){vec2 uv=fragCoord/iResolution.xy;floatN=2.0;uv*=N;uv=fract(uv);fragColor=texture2D(iChannel0,uv);} smoothstep smoothstep...
float|int|void:与C语言对应的浮点数、整型与空类型vec2|vec3|vec4:N维浮点数向量mat2|mat3|mat4:NxN浮点数矩阵sampler2D|samplerCube:2D纹理与立方体纹理 GLSL的类型定义与C语言没有太大的差别: vec3v3=vec3(1.0);// 定义一个全为1.0的三维向量 ...
在标量数据类型的构造函数中,支持传入 vec 类型这种非标量的数据,比如 传入一个 vec3 的变量,那么会把 vec3 变量的第一个值作为输出传给 float 值。 mat mat 变量类型和 vec 有点类似,只是 vec 保存的是一纬的,比如 vec2、vec3、vec4分别就是保存 2 个、3 个或者 4 个 float 类型的变量。但是 mat ...
共有vec2、vec3、vec4,ivec2、ivec3、ivec4、bvec2、bvec3和bvec4九种类型,数组代表维数、i表示int类型、b表示bool类型。需要注意的是,GLSL中的向量表示竖向量,所以与矩阵相乘进行变换时,矩阵在前,向量在后(与DirectX正好相反)。向量在GPU中由硬件支持运算,比CPU快的多。
(vec2) AuxSize: 辅助缓冲区的宽度和高度(以像素为单位),应该替换为渲染过程中辅助目标的次序,仅在后处理着色器有效。 (matrix4x4) ModelViewMat:模型视图矩阵,仅在核心着色器有效。 (matrix4x4) ProjMat:投影矩阵 (matrix4x4) TextureMat:用于变换物品UV来显示物品闪烁效果,仅在核心着色器有效。 (vec2) ...
gl_TexCoord[] vec4 包含纹理坐标数组的插值只读输入 gl_FogFragCoord float 包含雾坐标的插值只读输入 gl_FragCoord vec4 只读输入,窗口的x,y,z和1/w gl_FrontFacing bool 只读输入,如果是窗口正面图元的一部分,则这个值为true gl_PointCoord vec2 点精灵的二维空间坐标范围在(0.0, 0.0)到(1.0, 1.0)之间,...
GLSL vec类型 GLSL是强类型语言;必须进行显式的强制类型转换,不存在隐式的类型转换 int b = int(2.0); int a = 2; float c = float(a); vec类型的初始化与赋值 vec2 a = vec2(1.0,2.0); vec2 b = vec2(3.0,4.0); vec4 = vec4(a,b);//c = vec4(1.0,2.0,3.0,4.0);...
float/vec2/vec3/vec4包含 1,2,3,4 个浮点型向量 sampler2D表示 2D 纹理 samplerCube表示立方体纹理 mat[2..3]表示 2x2 和 3x3 的矩阵 mat4表示 4x4 的矩阵 标量 构造标量的方式和 C 语言一致: floatfloatValue=1.0;boolbooleanValue=false;
uv = (p - vec2(0.33,0.15)) / (vec2(1.3, 1.) - vec2(0.33,0.15)); uv = clamp( uv, 0.0, 1.0 ); // 控制彩虹猫图像的偏移, floor很重要 float ofx = floor( mod( iGlobalTime*10.0*2.0, 6.0 ) ); // 单只彩虹猫的纹理大小 (uv offset) ...