郭先生发现在开始学习three.js着色器材质时,我们经常会无从下手,辛苦写下的着色器,也会因莫名的报错而手足无措。原因是着色器材质它涉及到另一种语言–GLSL,只有懂了这个语言,我们才能更好的写出着色器材质,利用好的我们的GPU。这篇说一说glsl内置函数。

1. 和角度相关的函数

下面是一个和角度相关的函数,他们的用法我们度熟悉。

函数 参数 描述
sin(x) 弧度 正弦函数
cos(x) 弧度 余弦函数
tan(x) 弧度 正切函数
asin(x) 弧度 反正弦函数
acos(x) 弧度 反余弦函数
atan(x) 弧度 反正切函数
radians(x) 角度 角度转换为弧度
degrees(x) 弧度 弧度转换为角度

2. 数学函数

这类主要是对指数对数幂函数的操作

函数 描述
pow(x,y) x的y次方。如果x小于0,结果是未定义的。同样,如果x=0并且y<=0,结果也是未定义的。
exp(x) e的x次方
log(x) 计算满足x等于e的y次方的y的值。如果x的值小于0,结果是未定义的。
exp2(x) 计算2的x次方
log2(x) 计算满足x等于2的y次方的y的值。如果x的值小于0,结果是未定义的。
sqrt(x) 计算x的开方。如果x小于0,结果是未定义的。
inversesqrt(x) 计算x的开方之一的值,如果x小于等于0,结果是未定义的。

3. 常用函数

这里是常用函数,和js中的内置函数很像,需要牢记。

函数 描述
abs(x) 返回x的绝对值
sign(x) 如果x>0,返回1.0;如果x=0,返回0,如果x<0,返回-1.0
floor(x) 返回小于等于x的最大整数值
ceil(x) 返回大于等于x的最小整数值
fract(x) 返回x-floor(x),即返回x的小数部分
mod(x, y) 返回x和y的模
min(x, y) 返回x和y的值较小的那个值。
max(x, y) 返回x和y的值较大的那个值。
clamp(x, minVal, maxVal) 将x值钳于minVal和maxVal之间,意思就是当x<minVal时返回minVal,当x>maxVal时返回maxVal,当x在minVal和maxVal之间时,返回x
mix(x, y, a) 返回线性混合的x和y,如:x*(1−a)+y*a
step(edge, x) 如果x < edge,返回0.0,否则返回1.0
smoothstep(edge0, edge1, x) 如果x <= edge0,返回0.0 ;如果x >= edge1 返回1.0;如果edge0 < x < edge1,则执行0~1之间的平滑埃尔米特差值。如果edge0 >= edge1,结果是未定义的。

4. 几何函数

这是与长度、距离、向量等相关的函数

length(x) 返回向量x的长度
distance(p0,p1) 计算向量p0,p1之间的距离
dot 向量x,y之间的点积
cross(x, y) 向量x,y之间的叉积
normalize(x) 标准化向量,返回一个方向和x相同但长度为1的向量
faceforward(N, I, Nref) 如果Nref和I的点积小于0,返回N;否则,返回-N;
reflect(I, N) 返回反射向量
refract(I, N, eta) 返回折射向量

经常用的函数差不多就是这些。还需要我们在实践中反复练习,才能使用的得心应手。

转载请注明地址:郭先生的博客

最新文章

  1. Win10 UI入门RelativePanel(2)
  2. Linux常用网络命令
  3. mysql数据库及oracle数据库的定时备份
  4. PHP String 函数
  5. Top 12 Best Free Network Monitoring Tools (12种免费网络监控工具)
  6. leetcode shttps://oj.leetcode.com/problems/surrounded-regions/
  7. perl5 附录一 函数集(未定稿)
  8. Android供TextView添加多个点击文字
  9. PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
  10. LINUX打开文件
  11. jar包执行报ClassNotFoundException
  12. js .map方法
  13. Git使用—第二讲
  14. Caused by: java.io.FileNotFoundException: class path resource [spring/springmvc.xml] cannot be opene
  15. stund客户端使用结果说明
  16. 本地开发spark代码上传spark集群服务并运行
  17. python执行系统命令后获取返回值
  18. IllegalArgumentException: requirement failed: Corrupt index found
  19. &quot; 初窥 &quot; nginx
  20. c++计算器后续(4)

热门文章

  1. day41 几个琐碎知识点
  2. 数据可视化之DAX篇(三) 认识DAX中的表函数和值函数
  3. shaderlab - 9chapter-阴影
  4. Python Ethical Hacking - Bypass HTTPS(1)
  5. T3 难题 题解
  6. 在 vue 中使用 WebSocket
  7. javascript : 点击按钮,把某标签中的内容复制到剪贴板
  8. html命名规则
  9. 本周六 Apache DolphinScheduler &amp; Doris 将联合线上 Meetup
  10. [jvm] -- 类加载器及双亲委派模板篇