GLSL函数记录

发布时间:2026/10/23 4:35:32
GLSL函数记录 1.阈值函数float step(float edge, float x)xedge是0大于等于是1。经常用来代替iffloat edge 0.5; float x 0.3; float result step(edge, x); // will return 0.0 since x edge2.光滑阈值函数smoothInterpolation smoothstep(edge0, edge1, x)xedge0是0edge1是1中间是0-1光滑曲线。// result will be a smooth color interpolation between red and blue vec3 out mix(color1, color2, smoothstep(0.2, 0.8, factor));3.绝对值函数float abs(float x);float number -5.0; float absValue abs(number); // will be 5.04.向上取整ceil()float number 3.5; float ceilVal ceil(number); // will be 4.0 vec3 vector vec3(2.3, 5.8, -4.7); vec3 ceilVec ceil(vector); // will be vec3(3.0, 6.0, -4.0)5.向下取整floor()float val 3.7; float flooredVal floor(val); // will be 3.0 float val -3.7; float flooredVal floor(val); // will be -4.06.截断成整数int()float floatVal 3.7; int intVal int(floatVal); // will be 37.取小数部分fract()float val 3.7; float fractVal fract(val); //fractVal0.78.计算向量长度length()vec3 vec vec3(2.0, 4.0, 4.0); float vecLength length(vec); // will be 6.09.计算向量距离float distance(vec p0, vec p1)vec3 p0 vec3(1.0, 2.0, 2.0); vec3 p1 vec3(4.0, 2.0, 6.0); float dist distance(p0, p1); // will be 5.010.计算与x轴正方向夹角float atan(float y, float x)float dx targetX - positionX; float dy targetY - positionY; float angle atan(dy, dx); // Calculate angle for rotation11.sin周期函数float sin(float angle)float angle uv.x * 2.0 * PI; //一个周期 float angle uv.x * frequency * 2.0 * PI; //frequency 个周期12.向量归一化函数normalize(V)N normalize(V);向量归一化后取normalize.x就是向量和x正方向夹角的cos值normalize.y就是向量和y正方向夹角的sin值。13.点乘可以是两个float也可以是两个向量float dot(float x, float y)float dot(vec2 x, vec2 y)代数意义v1 * v2 v1[0] * v2[0] … v1[n] * v2[n];几何意义①非归一化向量dot表示cos值乘上两个向量的长度v1 * v2 length(v1) * length(v2) * cos(angle between v1 and v2)②归一化向量dot表示cos值v1 * v2 cos(angle between v1 and v2);14.上限和下限值限制函数clampfloat clamp(float value, float minVal, float maxVal)超过maxVal部分都等于maxVal小于minVal部分都等于minValclamp(0.8, 0.0, 1.0); // will be 0.8, since value is between 0.0 and 1.0 clamp(-0.5, 0.0, 1.0); // will be 0.0, since value is less than 0.0 clamp(1.5, 0.0, 1.0); // will be 1.0, since value is greater than 1.015.纹理采样函数vec4 color texture(Name, texCoord);uniform sampler2D Name vec4 color texture(Name, texCoord);16.线性插值函数T mix(T start, T end, T t)注意start是1-tmix(start, end, t) start * (1 - t) end * tvec3 color1 vec3(1.0, 0.0, 0.0); // red color vec3 color2 vec3(0.0, 0.0, 1.0); // blue color float factor 0.5; // interpolation factor // result will be a purple color (halfway between red and blue) vec3 resultColor mix(color1, color2, factor);17.取余。float mod(float x, float y);float result mod(10.0, 3.0); // Result will be 1.0 (10 / 3 has a remainder of 1) float result mod(-10.0, 3.0); // Result will be 2.0 (-10 / 3 has a remainder of 2)18.计算反正切值。atan(y, x)函数用于计算(x, y)二维笛卡尔坐标系中某一点与正x 轴之间的弧度角float dx targetX - positionX; float dy targetY - positionY; float angle atan(dy, dx); // Calculate angle for rotation

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询