vec4 v=vec4(1.0,2.0,3.0,1.0);float x = v.x;//1.0float x1 = v.r;//1.0float x2 = v[0];//1.0 vec3 xyz = v.xyz;//vec3(1.0,2.0,3.0) vec3 xyz1 = vec(v[0],v[1],v[2]);//vec3(1.0,2.0,3.0) vec3 rgb = v.rgb;//vec3(1.0,2.0,3.0) vec2 xyzw = v.xyzw;//ve...
vec3 v = vec3(1.0, 2.0, 3.0); // 三维向量 vec4 color = vec4(1.0, 0.0, 0.0, 1.0); // 四维向量 2.向量加法: vec3 result = vec3(1.0, 2.0, 3.0) + vec3(4.0, 5.0, 6.0); 3.向量减法: vec3 result = vec3(4.0, 5.0, 6.0) - vec3(1.0, 2.0, 3.0); 4.标量与向量相乘: vec...
vec3(float) // 构造每个分量都为 float 的三维向量 vec4(mat2) // vec4.x = mat2[0][0], vec4.y = mat2[1][0], vec4.z = mat2[0][1], vec4.w = mat2[1][1] bvec4(int, int, float, float) // vec4.x = bool(int), vec4.y = bool(int), vec4.z = bool(float),...
vec3 viewVec=normalize(-ecPosition); 根据 入射光线向量 计算反射光线向量 vec3 reflectVec=reflect(-lightVec, tnorm); 假设漫反射光线强度随入射光线与法线夹角呈余弦分布, 则漫反射光照强度可以近似为 floatdiffuse=max(dot(lightVec, tnorm),0.0); 假设镜面反射光线强度随反射光线与观察方向夹角呈余弦分布, ...
共有vec2、vec3、vec4,ivec2、ivec3、ivec4、bvec2、bvec3和bvec4九种类型,数组代表维数、i表示int类型、b表示bool类型。需要注意的是,GLSL中的向量表示竖向量,所以与矩阵相乘进行变换时,矩阵在前,向量在后(与DirectX正好相反)。向量在GPU中由硬件支持运算,比CPU快的多。
vec3v3=vec3(1.0);// 定义一个全为1.0的三维向量 GLSL允许定义一维数组,但是数组长度应为常量: floatmyFloats[3]=float[3](1.0,2.0,3.0); 还可以使用结构体,增加代码可读性: structMyFloatType{floatx;};MyFloatType num; #运算 在GLSL中,对向量访问的支持有多种方式,比较自由: ...
然而,随着复杂性的加剧,它可能会在视觉上变得混乱。为了缓解这种情况,应该减少时间偏移的频率。 vec3 palette( float t) { vec3 a = vec3(0.5,0.5,0.5); vec3 b = vec3(0.5,0.5,0.5); vec3 c = vec3(1.0,1.0,1.…
vec3myVec3= vec3(1.0,0.0,0.5); // myVec3= {1.0,0.0,0.5}vec3temp = vec3(myVec3); // temp = myVec3vec2myVec2= vec2(myVec3); // myVec2= {myVec3.x, myVec3.y}myVec4= vec4(myVec2, temp,0.0); // myVec4= {myVec2.x, myVec2.y, temp,0.0} ...
floatfloor(float x)vec2floor(vec2 x)vec3floor(vec3 x)vec4floor(vec4 x) 其中,x 是输入值。对于输入值 x,返回不大于 x 的最大整数。 ceil ceil 函数用于取上整(取顶),返回不小于输入值的最小整数。函数的原型如下: 代码语言:javascript