unity urp 实现泰森多边形Voronoi扰动
泰森多边形又叫冯洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是一组由连接两邻点线段的垂直平分线组成的连续多边形。一个泰森多边形内的任一点到构成该多边形的控制点的距离小于到其他多边形控制点的距离。
-摘自百度百科
这里提供了一个简单的方式实现,那就是用ase,设置节点,然后查看源码,把代码扒出来即可。
既省时又省力,接下来看我怎么实现的:
首先,连连看:
我们可以实时的看到生成 的效果,方便又好用,果然可视化才是未来。
连入uv,Angle可以通过值去修改生成的noise的结果。
Scale可以修改结果的密度,上图是缩放5,我们看一下50的效果:
在输出端,我们可以使用三种结果,一种是生成的黑白图,就是Out节点的输出:
这是一种有过渡的黑白图,有明显的多边形结构。
还有一种就是上面的ID颜色。
最后一种就是UV
感觉uv可以做那种凸起的感觉。
它还可以修改计算方法,以及生成的结果的过渡的效果修改,如果你需要的密度点的话,这些就无所谓了。
上面是Method修改成Caustic以后的效果,明显和之前的不一样了。这个效果是不是特别像水面上面的那种波光粼粼的效果,可以用这种叠在水面上面,增加水面的效果。
那么,下面到重头戏了,如果我只需要这部分代码怎么办。
那么我们就先吧Voronoi节点调整好,调出自己需要的效果,然后打开代码。
float2 voronoihash6( float2 p )
{p = float2( dot( p, float2( 127.1, 311.7 ) ), dot( p, float2( 269.5, 183.3 ) ) );return frac( sin( p ) *43758.5453);
}float voronoi6( float2 v, float time, inout float2 id, inout float2 mr, float smoothness )
{float2 n = floor( v );float2 f = frac( v );float F1 = 8.0;float F2 = 8.0; float2 mg = 0;for ( int j = -1; j <= 1; j++ ){for ( int i = -1; i <= 1; i++ ){float2 g = float2( i, j );float2 o = voronoihash6( n + g );o = ( sin( time + o * 6.2831 ) * 0.5 + 0.5 ); float2 r = f - g - o;float d = 0.5 * dot( r, r );if( d<F1 ) {F2 = F1;F1 = d; mg = g; mr = r; id = o;} else if( d<F2 ) {F2 = d;}}}return F1;
}
经过你的努力翻找,你会在代码中找到它生成的voronoi函数,复制出来用即可。
如果不知道传入什么值
float time6 = _Angle;
float2 texCoord12 = IN.ase_texcoord3.xy * float2( 1,1 ) + float2( 0,0 );
float2 coords6 = texCoord12 * _Scale;
float2 id6 = 0;
float2 uv6 = 0;
float voroi6 = voronoi6( coords6, time6, id6, uv6, 0 );
float3 temp_cast_0 = (( voroi6 + 0.0 )).xxx;
你继续翻找,会找到相关调用的地方。可以看到,它支持5个参数,第一个是uv,直接和你设置的scale的值相乘了,第二个值传入了扰动值,第3个是id,这个是inout的,代表着函数运行以后,你声明的id也将会被修改掉,uv也是同理,它们的声明也是为了获取运算后的结果。并且这个还支持了光滑度,默认是0,感觉这个可以勉强作为mipmap使用。比如你不想使用noise贴图,想自己生成,这种是没有mipmap的,我们可以用这个实现一种mipmap的效果。
unity urp 实现泰森多边形Voronoi扰动相关推荐
- [Unity/URP学习]风格化水体渲染(一)
风格化水体的实现内容 文章目录 风格化水体的实现内容 风格化水体实现过程 1.水体颜色 1.1风格化水体颜色渐变 1.2水体深浅区域 1.2.1开启深度纹理 1.2.2深度纹理采样 1.3水体透明度 ...
- system volume information是什么文件_如何扩展Unity URP的后处理Volume组件
Unity在更新到Unity2019.4之后,大家或许已经发现,在使用URP(通用渲染管线)的情况下,Unity原来的Post Processing插件好像不起效了.原来Unity在Unity2019 ...
- Unity URP入门实战
导读 本文讲述 如何从应用层面使用URP 如何在代码层面为URP增加更多的渲染特性 如果拓展URP的后处理效果 URP管线特性 光源数量: 直线光外加4个其他光源 内置管线的多Pass Forward ...
- Unity URP DOTS Pathfinding+Animation 10000个单位
Unity URP DOTS Pathfinding+Animation 10000个单位 头发不知道掉了多少,猪脑过载
- Unity URP DOTS Animator
Unity URP DOTS 50000人 害怕 50000人同时在做不同的动画! 录制的原因大概又掉了5fps左右,在1060上最低18fps左右,3080最低50fps左右 emmm,如果阴影用胶 ...
- Unity URP DOTS Pathfinding+Local avoidance
Unity URP DOTS Pathfinding+Local avoidance RVO2的效果还是蛮好的
- Unity URP 曲面细分
Unity URP 曲面细分 我终于变得不像我 文章目录 Unity URP 曲面细分 1 曲面细分与镶嵌 1.1 外壳着色器 Hull Shader 1.2 镶嵌器阶段 Tessellator 1. ...
- unity urp测试_测试Unity
unity urp测试 It's been a fair while since we wrote a post about testing Unity, so we'd like to update ...
- python 泰森多边形边界_泰森多边形voronoi以及delaunay基本知识,python实现代码待补充...
泰森多边形(Voronoi图)生成算法 一.文档目的 本文描述了在geomodel模块中,生成泰森多边形所使用的算法. 二.概述 GIS和地理分析中经常采用泰森多边形进行快速插值,和分析地理实体的影响 ...
最新文章
- 实操指南 | Resource Queue如何实现对AnalyticDB PostgreSQL的资源管理?
- mingw + msys 上编译 ffmpeg
- 网易容器云平台的微服务化实践
- Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例
- Hadoop未授权访问漏洞记录(影响版本:全版本,端口号:50070)
- 简单编程代码表白_用简单代码实现抖音表白神器
- mysql注入原理_Mysql报错注入原理分析
- 用标准C语言初始化线性表,C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作...
- cesium 基于在vue框架写功能
- Flask:an ImportError was raised问题解决
- 淘宝无线端一键直达微博自助生成工具
- MySQL数据分析-(13)表操作补充:索引
- Java poi读取Excel表格中公式的计算值
- 字符编码(ASCII,Unicode和UTF-8) 和 大小端
- 读提交和可重复读区别
- 关于xftp和xshell 软件评估期已过的解决办法
- 《Linux那些事儿之我是USB》我是U盘(1)小城故事
- PS3111开卡量产成功教程,PS3111+ASM235CM双头板子体验,DIY固态U盘小记+PS3111开卡工具
- 数字选择控件TimeDragPicker
- Android扫描条形码与二维码
热门文章
- Saturn Java作业SpringBoot方式开发打包
- 如何利用U盘进行重装win10系统(2020.11亲测可行)
- QT network
- python连接sql server2008教程_Python连接SQL Server数据库
- 如何处理印象笔记安装后图标不显示的情况
- 设置命令提示符显示符行数
- 基于STM32的CAN转USB模块的PCB设计
- C#源码 +sqlserver包含库存管理、销售管理
- 安科瑞无线物联网智能电表ADW300指导性技术要求-Susie 周
- debian/ubuntu 设置环境变量 (1)