当前位置: 首页 > 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);
}

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

相关文章:

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

正确的做法应该是上 noise 而不是叠加 sin 波,不过如果不想麻烦的话叠波还是一个不错的选择:整体效果如下,已经非常形似 直接上链接:Shader - Shadertoy BETA float radiusScale 0.9; float variation(vec2 v1, vec2 v2, float …...

获取PDF中的布局信息——如何获取段落

PDF解析是极其复杂的问题。不可能靠一个工具解决全部问题,尤其是五花八门,格式不统一的PDF文件。除非有钞能力。如果没有那就看看可以分为哪些问题。 提取文本内容,提取表格内容,提取图片。我认为这些应该是分开做的事情。python有…...

Laya2.13.3在Web条件下使用键盘控制相机移动

需求:在Laya开发时,常常没法移动相机来观察场内的环境,故制作一个移动相机的脚本来是实现此功能,目前先使用键盘后续会添加鼠标控制移动旋转等功能。 onEnable(){this.camera new Laya.Camera(0, 0.1, 100);this._tempVector3 n…...

centos系统服务器在Jenkins执行playwright UI自动化测试框架

centos系统服务器在Jenkins执行playwright UI自动化测试框架 1. centos7.9系统中安装playwright环境报错 playwright/driver/node: /lib64/libc.so.6: version `GLIBC_2.25 not found经过查找资料,playwright 仅支持Ubuntu系统,其他的Linux服务器系统不支持,为此采用docke…...

boost.redis崩溃的解决方法

使用boost.redis的协程一定要co_spawn在strand对象中。 正确的用法: boost::asio::co_spawn(boost::dasio::make_strand(ioc),XXXCoroutine(),boost::asio::detached ); 错误的用法: boost::asio::co_spawn(ioc,XXXCoroutine(),boost::asio::detache…...

蓝桥杯——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和,但是这里的l和r的范围为1e12,明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点,可以按照等差数列对序列进行分块。如上图,在求前10个…...

嵌入式基础知识-信号量,PV原语与前趋图

本篇来介绍信号量与PV原语的一些知识,并介绍其在前趋图上的应用分析。本篇的知识属于操作系统部分的通用知识,在嵌入式软件开发中,同样会用到这些知识。 1 信号量 信号量是最早出现的用来解决进程同步与互斥问题的机制(可以把信…...

代码遗产:探索祖传代码的历史、挑战与现代融合艺术

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…...

Vue3:用vite创建Vue3项目

一、简介 vite是新一代前端构建工具,官网地址:https://vitejs.cn vite的优势如下: 轻量快速的热重载(HMR),能实现极速的服务启动。对 TypeScript、JSX、CSS 等支持开箱即用。真正的按需编译,不…...

STM32 (2)

1.stm32编程模型 将C语言程序烧录到芯片中会存储在单片机的flsah存储器中,给芯片上电后,Flash中的程序会逐条进入到CPU中去执行,进而CPU去控制各种模块(即外设)去实现各种功能。 2.寄存器和寄存器编程 CPU通过控制其…...

docker部署nginx+反向代理配置/代理宿主机网段服务器

1、安装docker,并运行 2、拉取nginx镜像 docker pull nginx3、运行nginx容器,将文件拷贝至本地,并将nginx容器删除 #运行nginx容器 docker run -id --name mynginx -p 8080:80 nginx#将配置文件从容器内拷贝至本地 docker cp 容器ID:/et…...

初识Hive

官网地址为: Design - Apache Hive - Apache Software Foundation 一、架构 先来看下官网给的图: 图上显示了Hive的主要组件及其与Hadoop的交互。Hive的主要组件有: UI: 用户向系统提交查询和其他操作的用户界面。截至2011年&…...

Google发布Genie硬杠Sora:通过大量无监督视频训练最终生成可交互虚拟世界

前言 Sora 问世才不到两个星期,谷歌的世界模型也来了,能力看似更强大:它生成的虚拟世界自主可控 第一部分 首个基础世界模型Genie 1.1 Genie是什么 Genie是第一个以无监督方式从未标记的互联网视频中训练的生成式交互环境(the first gener…...

全球首台!未磁科技256通道无液氦脑磁图仪及芯片化原子磁力计正式发布

2024年2月3日,由北京未磁科技有限公司牵头的国家重点研发计划诊疗装备与生物医用材料重点专项“新型无液氦脑磁图系统研发”项目2023年度总结会暨2024年推进会顺利召开。会上发布了项目取得的重大成果——全球首台256通道无液氦脑磁图仪Marvel MEG Pro。此项重磅成果…...

openssl3.2 - exp - 内存操作(建立,写入,读取)配置

文章目录 openssl3.2 - exp - 内存操作(建立,写入,读取)配置概述笔记调试细节运行效果测试工程实现main.cppCMyOsslConfig.hCMyOsslConfig.cppEND openssl3.2 - exp - 内存操作(建立,写入,读取)配置 概述 我的应用的配置文件是落地加密的, 无法直接用openssl配置接口载入读取…...

前端食堂技术周刊第 114 期:Interop 2024、TS 5.4 RC、2 月登陆浏览器的新功能、JSR、AI SDK 3.0

美味值:🌟🌟🌟🌟🌟 口味:凉拌鸡架 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...

#QT(信号与槽)

1.IDE:QTCreator 2.实验:自动添加槽函数,手动添加槽函数 3.记录 (1)自动添加 a.拖拽widget.ui,放置push-button组件,并且自动生成槽函数 b.发现widget.cpp和widget.h中出现添加的槽函数,注意w…...

go 设置滚动日志

方案 通过 log/slog 实现结构化日志生成,这是go1.21中推出的新特性;通过 lumberjack 实现日志文件分割。 示例 package mainimport ("gopkg.in/natefinch/lumberjack.v2""log/slog""os""path/filepath" )fun…...

Rollup入门学习:前端开发的构建利器

在前端开发领域,构建工具对于优化项目结构和提升代码效率扮演着至关重要的角色。Rollup作为一款轻量级且功能强大的JavaScript模块打包器,近年来备受开发者青睐。本文将带你走进Rollup的世界,帮助你快速入门并掌握其核心用法。 一、Rollup简介…...

游戏寻路之A*算法(GUI演示)

一、A*算法介绍 A*算法是一种路径搜索算法,用于在图形网络中找到最短路径。它结合了Dijkstra算法和启发式搜索的思想,通过综合利用已知的最短路径和估计的最短路径来优化搜索过程。在游戏自动寻路得到广泛应用。 二、A*算法的基本思想 在图形网络中选择一个起点和终点。维护…...

不止于检测:如何用FastAPI和VUE3给你的YOLO行人识别系统加上数据大屏、模型管理和AI聊天?

从算法Demo到商业级系统:基于FastAPI与VUE3的智能检测平台架构实战 当你的YOLO模型能在测试集上跑出漂亮指标时,下一个问题自然浮现:如何让这个算法真正产生业务价值?我们见过太多优秀的检测模型被困在Jupyter Notebook里&#xf…...

AI 编程上下文管理新范式(非常详细),Spec 机制从入门到精通,收藏这一篇就够了!

最近围绕 Spec 的讨论明显变多。比较有代表性的声音大致有两类:一类更关注 Spec 和代码之间的边界,另一类更关注 Spec 在真实项目协作中的工程价值。这两类观察并不冲突,放在一起看,刚好能把问题看得更完整。 本质上都在回答同一…...

I2C总线原理与嵌入式系统应用实践

1. I2C总线基础解析I2C(Inter-Integrated Circuit)总线是Philips半导体(现NXP)在1982年推出的双线制串行通信协议。作为一名电子工程师,我在多个嵌入式项目中都深度使用过这种总线。它的精妙之处在于仅用两根线&#x…...

**基于Python与BCI接口的脑机交互编程实践:从信号采集到实时控制的全流程实

基于Python与BCI接口的脑机交互编程实践:从信号采集到实时控制的全流程实现 在人工智能与神经科学融合加速发展的今天,脑机接口(Brain-Computer Interface, BCI) 正逐渐从实验室走向实用化场景。本文将带你深入一个完整的 Python驱…...

CSS 嵌套:编写更优雅的样式代码

CSS 嵌套:编写更优雅的样式代码让 CSS 结构更清晰,层次更分明,代码更易维护。一、CSS 嵌套的优势 作为一名把代码当散文写的 UI 匠人,我对代码的可读性和结构有着近乎偏执的要求。CSS 嵌套让我们能够按照 HTML 的层次结构来组织样…...

告别硬编码:用SqlSugar Expression动态构建多条件Left Join查询(附分页技巧)

告别硬编码:用SqlSugar Expression动态构建多条件Left Join查询(附分页技巧) 在后台管理系统开发中,数据列表查询是最常见的需求之一。面对复杂的多表关联、动态筛选条件和分页需求,很多开发者会陷入字符串拼接SQL的泥…...

中文分词避坑指南:Jieba与统计分词法的性能对比与优化技巧

中文分词避坑指南:Jieba与统计分词法的深度对比与实战优化 在自然语言处理领域,中文分词一直是基础却充满挑战的环节。不同于英文等以空格分隔单词的语言,中文文本的连续字符流特性使得准确划分词语边界成为NLP预处理的关键难题。本文将深入剖…...

夸克网盘自动化助手:彻底告别手动转存的智能管理方案

夸克网盘自动化助手:彻底告别手动转存的智能管理方案 【免费下载链接】quark_auto_save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark_auto_save 还在为每天重复的夸克网盘转存操作而…...

Scratch 3.0二次开发实战:从零构建自定义插件

1. 为什么需要自定义Scratch插件? Scratch作为全球最受欢迎的少儿编程工具,其模块化积木设计让编程学习变得直观有趣。但你可能遇到过这种情况:想做一个天气预报项目,却发现内置积木无法获取实时天气数据;或者想开发一…...

PowerToys Image Resizer:三步解决全场景图片批量处理难题

PowerToys Image Resizer:三步解决全场景图片批量处理难题 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/Power…...