当前位置: 首页 > news >正文

shader 案例学习笔记之smoothstep函数

参考:smoothstep

用来生成0-1的平滑过渡值

smoothstep函数源码实现: 

float smoothstep(float t1, float t2, float x) {
  // Scale, bias and saturate x to 0..1 range
  x = clamp((x - t1) / (t2 - t1), 0.0, 1.0); 
  // Evaluate polynomial
  return x * x * (3 - 2 * x);
}

先理解clamp函数:

用于将一个值限制在给定的范围之内。其语法为clamp(x, minVal, maxVal),它接受三个参数:

  • x:要被限制的值。
  • minVal:范围的最小值。
  • maxVal:范围的最大值。
#ifdef GL_ES
precision mediump float;
#endif

uniform vec2 u_resolution;
uniform float u_time;

void main(){


  vec2 st = gl_FragCoord.xy/u_resolution.xy;
  st.x *= u_resolution.x/u_resolution.y;

  float maxValue = abs(sin(u_time)) * 0.5;

  float f = clamp(st.y, 0.0, maxValue);

  gl_FragColor = vec4(f,f,f, 1.0); 
}
  •  float maxValue = abs(sin(u_time));
    • sin(u_time)返回[-1,1]的值,abs(sin(u_time)) 取绝对值将该值限制在了[0,1],再乘以0.5返回[0,0.5]
  • float f = clamp(st.y, 0.0, maxValue);

    • maxValue的区间为[0,0.5]

    • clamp(st.y, 0.0, maxValue)将屏幕的Y值限制在[0,0.5]之间

x = clamp((x - t1) / (t2 - t1), 0.0, 1.0);

  • x的值被限制在0-1之间。
绘制圆环:
#ifdef GL_ES
precision mediump float;
#endif

uniform vec2 u_resolution;

void main(){


  vec2 st = gl_FragCoord.xy/u_resolution.xy;
  st -=0.5;
  st.x *= u_resolution.x/u_resolution.y;

  float r = length(st);
  float r1 = smoothstep(0.2,0.3 ,r );
  float r2 = smoothstep(0.3,0.4 ,r );
  float color = r1- r2;

  gl_FragColor = vec4(vec3(color),1.0);
}

r1-r2的函数图像 

绘制结果 

相关文章:

  • csdn上传md,图片转存失败
  • git解决同时编辑一个文件的冲突
  • [建模已更新]2024数学建模国赛高教社杯A题:“板凳龙” 闹元宵 思路代码文章助攻手把手保姆级
  • MybatisX-Generator自动代码生成插件
  • 简单比较 http https http2,我们要如何把http升级为https
  • 旋转轴唇形密封圈的特点和优点
  • java重点学习-RabbitMQ+Kafka
  • 解决Mybatis mappe同时传递 List 和其他参数报错
  • 学期计划大二上
  • 利士策分享,克服生活中的困难:走好勇攀高峰的每一步
  • kitti数据点云velo坐标转像素坐标与点云深度值计算方法与教程(代码实现)
  • 【AIGC】探索超凡记忆:SuperMemory,你的私人智能书签助手!
  • MySQL——视图(三)应用实例——视图的应用
  • 声学气膜:专利守护与创新力量,不容侵权—轻空间
  • 华为OD机试真题 - 抢7游戏(Python/JS/C/C++ 2024 D卷 100分)
  • 间隙锁对数据库并发性能的影响
  • 扑捉一只耿鬼(HTML文件)
  • blender云渲染来了,blender云渲染教程!
  • Java面试题总结-基础和框架-面试题一
  • 微课录制技巧|高效录制微课的方法,如何高效录制微课?
  • 1至4月全国铁路发送旅客14.6亿人次,创同期历史新高
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象
  • 中哥两国元首共同见证签署《中华人民共和国政府与哥伦比亚共和国政府关于共同推进丝绸之路经济带和21世纪海上丝绸之路建设的合作规划》
  • 习近平会见哥伦比亚总统佩特罗
  • 独行侠以1.8%概率获得状元签,NBA原来真的有剧本?
  • 新华时评:中美经贸会谈为全球经济纾压增信