UnityShaderLab-实现溶解效果

实现思路:

使用一张噪声图,与一个Cut值计算(加或减),将计算后的值赋值给Alpha,然后小于0的片段就被丢弃掉了。

ShaderGraph实现:

ShaderLab实现:

Shader "Dissolve"
{Properties{_BaseColor("Color", Color) = (1, 1, 1, 1)_NoisoScale("NoisoScale", Float) = 40_NoiseStrenth("NoiseStrenth", Float) = 3.07_CutoffHeight("CutoffHeight", Range(-10,10)) = 0.12_EdgeWidth("EdgeWidth", Range(0,0.5)) = -0.03[HDR]_EdgeColor("EdgeColor", Color) = (1, 0.8352941, 0, 0)}SubShader{Tags {"RenderType"="Transparent"}Blend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float Unity_SimpleNoise_RandomValue_float (float2 uv){float angle = dot(uv, float2(12.9898, 78.233));return frac(sin(angle)*43758.5453);}float Unity_SimpleNnoise_Interpolate_float (float a, float b, float t){return (1.0-t)*a + (t*b);}void Remap_float(float In, float2 InMinMax, float2 OutMinMax, out float Out){Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);}void Negate_float(float In, out float Out){Out = -1 * In;}float SimpleNoise_ValueNoise_float (float2 uv){float2 i = floor(uv);float2 f = frac(uv);f = f * f * (3.0 - 2.0 * f);uv = abs(frac(uv) - 0.5);float2 c0 = i + float2(0.0, 0.0);float2 c1 = i + float2(1.0, 0.0);float2 c2 = i + float2(0.0, 1.0);float2 c3 = i + float2(1.0, 1.0);float r0 = Unity_SimpleNoise_RandomValue_float(c0);float r1 = Unity_SimpleNoise_RandomValue_float(c1);float r2 = Unity_SimpleNoise_RandomValue_float(c2);float r3 = Unity_SimpleNoise_RandomValue_float(c3);float bottomOfGrid = Unity_SimpleNnoise_Interpolate_float(r0, r1, f.x);float topOfGrid = Unity_SimpleNnoise_Interpolate_float(r2, r3, f.x);float t = Unity_SimpleNnoise_Interpolate_float(bottomOfGrid, topOfGrid, f.y);return t;}void SimpleNoise_float(float2 UV, float Scale, out float Out){float t = 0.0;float freq = pow(2.0, float(0));float amp = pow(0.5, float(3-0));t += SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;freq = pow(2.0, float(1));amp = pow(0.5, float(3-1));t += SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;freq = pow(2.0, float(2));amp = pow(0.5, float(3-2));t += SimpleNoise_ValueNoise_float(float2(UV.x*Scale/freq, UV.y*Scale/freq))*amp;Out = t;}struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float4 posWS: TEXCOORD1;};float _NoisoScale;float _NoiseStrenth;float _CutoffHeight;float _EdgeWidth;float4 _EdgeColor;float4 _BaseColor;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.posWS = mul(unity_ObjectToWorld, v.vertex);o.uv = v.uv;return o;}fixed4 frag (v2f i) : SV_Target{float outNoise;SimpleNoise_float(i.uv,_NoisoScale,outNoise);float newStrenth;Negate_float(_NoiseStrenth,newStrenth);float finalNoise;Remap_float(outNoise,float2(0,1),float2(newStrenth,_NoiseStrenth),finalNoise);finalNoise = finalNoise + _CutoffHeight;float3 color = step(finalNoise,i.posWS.y + _EdgeWidth) * _EdgeColor; float alpha = step(i.posWS.y,finalNoise);return fixed4(_BaseColor + color.xyz,alpha) ;}ENDCG}}
}

效果:

参考链接:

Dissolve Effect in Unity Shader Graph (youtube.com)

DISSOLVE using Unity Shader Graph (youtube.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/487847.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【24年新算法时间序列预测】黑翅鸢BKA优化Transformer时间序列预测(评估指标全,出图多)

本文采用黑翅鸢优化算法( BKA,2024年新算法)优化Transformer模型的超参数,形成了BKA-Transformer时间序列预测模型,以进一步提升其在时间序列预测中的性能,本文采用Matlab编写了BKA-Transformer时间序列预测模型代码,代…

快速学习selenium基础操作

全篇大概19000字(含代码),建议阅读时间1h 什么是Selenium? Selenium是一系列自动化工具集的统称,官方工具有 Selenium IDE、Selenium WebDriver、Selenium Grid, 主要用于桌面端Web应用程序的自动化。能够通…

互联网、物联网的相关标准

互联网的相关标准 网络通信协议: HTTP(Hypertext Transfer Protocol):用于在网络中传输文本、图像、音频和视频等数据的协议。它基于请求-响应模型,客户端发送请求给服务器,服务器返回响应。HTTPS&a…

Milvus向量数据库06-RAG检索增强

Milvus向量数据库06-RAG检索增强 文章目录 Milvus向量数据库06-RAG检索增强1-学习目标2-参考网址3-执行过程记录1-到底什么是RAGRAG 的基本流程:为什么 RAG 优于传统的基于检索的方法:示例流程: 2-RAG和Elasticsearch对比3-RAG和向量数据库之…

Oracle定位行锁的数据行

背景 今天上午在查询行锁的事后发现v$lock的id1和id2,阻塞的和被阻塞的会话一样,这能说明什么? 既然是被阻塞了,那争用的应该是同一块数据,但是一个事务已经修改了,没提交数据块上还有前镜像的指针&#…

力扣-图论-8【算法学习day.58】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

jenkins安装(jdk1.8已安装)

1. 下载对应jenkins版本 https://mirrors.jenkins.io/war/ 2. 上传至服务器目录并启动 mkdir -p /root/jenkins cd /root/jenkins 上传文件 启动:nohup java -jar jenkins.war --httpPort9090 &> jenkins.log & 访问:http://ip:9090 选…

异步操作、Promise和axios

1.Javascript是单线程的 什么是进程,什么是线程? 进程:进程是操作系统分配资源和调度的基本单位。它是一个程序的实例,包含了运行程序所需的代码和数据以及其它资源。 线程:线程是进程中的实际运行单位,也是…

python基础:(八)文件

目录 一.从文件中读取数据1.1读取整个文件1.2文件路劲1.3逐行读取 二.写入文件 一.从文件中读取数据 各位小伙伴,文件这一块得好好学,多看多敲代码,以后处理数据,写爬虫少不了这个,先从基础(简单的&#x…

基于视觉的3D占用网络汇总

综述文章:https://arxiv.org/pdf/2405.02595 基于视觉的3D占用预测方法的时间线概述: 自动驾驶中基于视觉的3D占用预测的分层结构分类 2023年的方法: TPVFormer, OccDepth, SimpleOccupancy, StereoScene, OccupancyM3D, VoxFormer, OccFormer, OVO, UniOcc, MiLO, Multi-…

IDEA创建Spring Boot项目配置阿里云Spring Initializr Server URL【详细教程-轻松学会】

1.首先打开idea选择新建项目 2.选择Spring Boot框架(就是选择Spring Initializr这个) 3.点击中间界面Server URL后面的三个点更换为阿里云的Server URL Idea中默认的Server URL地址:https://start.spring.io/ 修改为阿里云Server URL地址:https://star…

2024-12-06 Unity Addressables3——资源加载

文章目录 1 引用加载1.1 Addressables 的资源引用类1.2 加载资源1.3 加载场景1.4 释放资源 2 Label 介绍3 动态加载3.1 加载单个资源3.2 加载多个资源 Unity 版本:6000.0.26f1c1Addressables 版本:2.3.1 1 引用加载 1.1 Addressables 的资源引用类 Ass…

详解RabbitMQ在Ubuntu上的安装

​​​​​​​ 目录 Ubuntu 环境安装 安装Erlang 查看Erlang版本 退出命令 ​编辑安装RabbitMQ 确认安装结果 安装RabbitMQ管理界面 启动服务 查看服务状态 通过IP:port访问 添加管理员用户 给用户添加权限 再次访问 Ubuntu 环境安装 安装Erlang RabbitMq需要…

`yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息

文章目录 命令解析:功能说明:示例输出:使用场景: yarn list --pattern element-ui 是一个 Yarn 命令,用于列出项目中符合指定模式( element-ui)的依赖包信息。 命令解析: yarn list…

IO进程 学习笔记

……接上文 fputs(输入字符串) int fputs(const char *s, FILE *stream);功能:向指定文件中输入一串字符参数:s:输入字符串的首地址stream:文件流指针返回值:成功返回输出字符个数失败返回EOF文件指针偏移函…

Ubuntu压缩打包解压

ubuntu压缩打包 上图,压缩当前目录svn 为svn.tar.gaz,解压后再当前解压目录生成svn文件 在Ubuntu中,你可以使用tar命令来创建一个压缩包,或者使用zip命令来创建一个.zip压缩文件。以下是两种常见的压缩方法: 下图&am…

支付宝租赁小程序助力便捷生活新方式

内容概要 支付宝租赁小程序为现代人带来了许多惊喜,它不仅仅是一个简单的租赁平台,更是生活中不可或缺的好帮手。想象一下,无论你缺少什么,从工具到家居用品,只需轻轻一点,便能轻松找到需要的物品。这个小…

springboot413福泰轴承股份有限公司进销存系统(论文+源码)_kaic

摘 要 使用旧方法对福泰轴承股份有限公司进销存系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在福泰轴承股份有限公司进销存系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不…

y3编辑器文档3:物体编辑器

文章目录 一、物体编辑器简介1.1 界面介绍1.2 复用(导入导出)1.3 收藏夹(项目资源管理)1.4 对象池二、单位2.1 数据设置2.2 表现设置2.3 单位势力和掉率设置2.4 技能添加和技能参数修改2.5 商店2.5.1 商店属性设置2.5.2 商店物品设置三、装饰物3.1 属性编辑3.2 碰撞体积四、…

C++作业3(类)

1、思维导图 2、类中存在引用成员情况下有参构造 #include <iostream>using namespace std; class Cy {float &r; public:Cy(float &r):r(r){cout<<"类中存在引用成员情况下有参构造"<<endl;};float set_r(float);void show(); }; float…