Shader 数据

glsl常会数据类型

float

浮点数 float a = 1.0;

int

整数 int a = 1;

bool

布尔值 bool show = false;

vec2

向量2 vec2 foo = vec2(1.0, 2.0); vec2 error = vec2(); // -> 错误 vec2 bar = vec2(0.0); // -> vec2(0.0, 0.0); vec2 foo = vec2(1.0, 2.0); 修改 foo.x = 1.0; foo.y = 2.0; foo *= 2.0; // -> vec2(2.0, 4.0); 创建 vec3 foo = vec3(1.0, 2.0, 3.0); vec2 bar = foo.xy; // foo.yx or foo.zx ...

vec3

向量3 vec3 foo = vec3(0.0); vec3 bar = vec3(1.0, 2.0, 3.0); 修改 01 vec3 bar = vec3(1.0, 2.0, 3.0); // rgb == xyz bar.z = 4.0; 修改 02 vec3 purpleColor = vec3(0.0); // rgb == xyz purpleColor.r = 0.5; purpleColor.b = 1.0; 从vec2创建vec3 vec2 foo = vec2(1.0, 2.0); vec3 bar = vec3(foo, 3.0); or vec3 bar = vec3(foo.x, foo.y, 3.0); or vec3 bar = vec3(foo.r, foo.g, 3.0);

vec4

向量4 vec4 foo = vec4(1.0, 2.0, 3.0, 4.0); float bar = foo.w; // 第四个属性用 w 或者 a 都可以

function

函数 **需要返回数据** float loremIpsum() { float a = 1.0; float b = 2.0; return a + b; } **不需要返回数据** void loremIpsum() { float a = 1.0; float b = 2.0; } **传参** float loremIpsum(float a, float b) { return a + b; } // float result = loremIpsum(1.0, 2.0); // 执行 void main() { float result = loremIpsum(); ... }

许多内置的经典函数

sin cos max min pow exp mod clamp

也有非常实用的功能

cross dot mix step smoothstep length distance reflect refract normalize

变量介绍

gl_Position

gl_Position 1. 已经存在 2. 我们需要分配它。 3. 将包含屏幕上顶点的位置

uniforms

片段着色器

precision 精度

>> 让我们来决定一个浮点数有多精确 - highp > Highp可能会影响性能,在某些设备上可能无法工作 - mediump > 我们通常用medium - lowp > Lowp会因为缺乏精确度而产生bug >> 强制性的




### 我们向着色器发送了很多数据 ### Vertices coordinates > 顶点坐标 ### Mesh transformation > 网格的转换 ### Information about the camera 相机信息 ### Colors 颜色 ### Textures 纹理 ### Lights 灯 ### Fog 雾 ...
【END】

本文链接:

版权声明:本博客所有文章除声明转载外,均采用 BY-NC-SA 3.0 许可协议。转载请注明来自 GhostCat。

阅读 91 | 发布于 2021-08-05
暂无评论