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

shadertoy 游戏《来自星尘》摇杆复刻

正确的做法应该是上 noise 而不是叠加 sin 波,不过如果不想麻烦的话叠波还是一个不错的选择:整体效果如下,已经非常形似

直接上链接:Shader - Shadertoy BETA

float radiusScale = 0.9;
float variation(vec2 v1, vec2 v2, float strength, float speed)
{float v = dot(normalize(v1), normalize(v2));return sin(v * strength - iTime * speed) / 50.0+ sin(v * strength * 3.0 - iTime * speed) / 450.0;
}float paintCircle(vec2 uv, vec2 center, vec2 center2, float rad, float width, float strong, float speed)
{width *= radiusScale;rad *= radiusScale;vec2 diff = center - uv;float len = max(step(center2.y, uv.y) * length(center2 - uv) + step(uv.y, center.y) * length(center - uv), abs(uv.x - center.x));float normal = max(-normalize(diff).y, 0.0) * max(-normalize(diff).y, 0.0);len += variation(diff, vec2(0.0, 1.0), strong, speed) * normal;len -= variation(diff, vec2(1.0, 0.0), strong, speed) * normal;rad -= 0.15 * max((uv.y - 0.55), 0.0);return step(abs(len - rad), width);
}void mainImage(out vec4 fragColor, in vec2 fragCoord)
{vec2 uv = fragCoord.xy / iResolution.xy;uv.y += 0.1;uv.x *= 1.5;uv.x -= 0.25;float color;float radius = 0.24 * radiusScale;float think1 = radius / 13.0;float think2 = think1 / 3.0;vec2 center = vec2(0.5, 0.5);color = max(color, paintCircle(uv, center, vec2(0.5, 0.7), radius, think1, 5.0, 7.2));color += paintCircle(uv, center, vec2(0.5, 0.72), radius + think1 / 2.0, think2, 6.5, 7.8);color = max(color, paintCircle(uv, center, vec2(0.5, 0.74), radius + think1 * 2.0, think2, 6.5, 8.4));color = max(color, paintCircle(uv, center, vec2(0.5, 0.76), radius + think1 * 2.0 + think2 * 4.0, think2, 7.0, 9.0));color = max(color, paintCircle(uv, center, vec2(0.5, 0.78), radius + think1 * 2.0 + think2 * 8.0, think2, 8.0, 10.2));fragColor = vec4(color * vec3(1.5 - uv.y, 1.0, 1.0), 1.0);
}

整体没啥难度,就不上教学了吧,链接里左边效果右边就是代码了,可以自行参考

相关文章:

  • tsc : 无法加载文件 C:\Users\Administrat\AppData\Roaming\npm\tsc.ps 1,因为在此系统上禁止运行脚本
  • vmware安装图形版ubuntu(20.4)
  • 【Golang星辰图】探索网络和HTTP的奇妙世界:使用Go语言打造高性能应用
  • 华为配置WLAN高密业务示例
  • 【数据结构】复杂度详解
  • 这里推荐一款unity3d人物动物控制器详细的等学会再写文章
  • 08 OpenCV 腐蚀和膨胀
  • Aws Ec2服务器设置密码登录
  • [DevOps云实践] 彻底删除AWS云资源
  • 【Docker】若依后端项目搭建
  • MariaDB数据库(二)
  • StarRocks——中信建投统一查询服务平台构建
  • MCU设计--M3内核详解(2)
  • AWTK 开源串口屏开发(11) - 天气预报
  • 电脑不小心格式化了,怎么恢复?
  • 2018一半小结一波
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • ES6核心特性
  • export和import的用法总结
  • Fundebug计费标准解释:事件数是如何定义的?
  • github从入门到放弃(1)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • input实现文字超出省略号功能
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP的类修饰符与访问修饰符
  • Sass Day-01
  • tensorflow学习笔记3——MNIST应用篇
  • uva 10370 Above Average
  • 从setTimeout-setInterval看JS线程
  • 服务器之间,相同帐号,实现免密钥登录
  • 两列自适应布局方案整理
  • 双管齐下,VMware的容器新战略
  • 异步
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • # Java NIO(一)FileChannel
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (42)STM32——LCD显示屏实验笔记
  • (arch)linux 转换文件编码格式
  • (C#)获取字符编码的类
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (数据结构)顺序表的定义
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • **CI中自动类加载的用法总结
  • *上位机的定义
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET 5种线程安全集合
  • .NET Core 版本不支持的问题
  • .net 简单实现MD5