Unity Shader 使用 Noise 图 制作Shader 溶解效果

体积渲染(4)——噪声贴图+OnRenderImage实现体积云 1、噪声贴图 之前的shader需要CPU一刻不停地计算噪声值,但如果用噪声贴图,那么噪声值就已经是提前计算好的,可以直接使用,节约性能。 由于它是有rgb值的,所以我们可以使用它的不同通道去生成不同的噪声 导入设置 不产生Mipmap 勾选 override for pc…因为我们想使用噪声图片上原始的值,所以要勾选,这样会在上面所示的平台中都使用MAX SIZE2048,即不压缩这张噪声图片。 Format设置为RGBA 32 bit 2、动态添加shader 给相机添加clouds脚本 usi 阅读详情

从原理到实践,完整剖析如何在 Unity URP 中
通过 Noise 纹理驱动逐像素溶解,并添加边缘发光特效。

什么是溶解效果?

溶解(Dissolve)是游戏中极为常见的视觉效果:角色死亡时身体"烧碎"消失、传送门开启时材质"腐蚀"消融、 技能施放时魔法光芒从内向外"蔓延"。这些效果看起来复杂,本质上只是一个优雅的 Shader 技巧—— 用一张 Noise 纹理控制像素的剔除阈值。

本文将从核心原理出发,逐步构建一个完整的溶解 Shader,最终实现可实时调节进度、带边缘火焰发光的溶解效果。

认识 Noise 图

Noise 图(噪声纹理)本质上是一张灰度图,每个像素值在 0 到 1 之间随机分布,但具有空间连续性—— 相邻像素的值变化是平滑渐进的,而非完全随机跳变。这种特性使得溶解效果显得自然、有机。

常用 Noise 类型对比

💡

在 Unity 中,你可以使用 Shader Graph 的 Noise 节点直接生成 Noise,也可以预烘焙一张 Noise 贴图放入材质球。 预烘焙贴图方案性能更好,适合移动端;Shader Graph 方案更灵活,适合动态变化效果。

// 原理示意:Noise 图灰度值 → 溶解阈值比较

核心原理:clip() 函数

溶解效果的核心只有一行代码。在 Fragment Shader 中,我们采样 Noise 图得到一个灰度值, 将其与一个从外部传入的 _Threshold(进度参数,0~1)比较:

clip( noiseValue - _Threshold )// noiseValue < _Threshold → 该像素被丢弃(透明) // noiseValue ≥ _Threshold → 该像素正常渲染

clip(x) 是 HLSL 的内置函数: 当传入值 小于 0 时,该像素被完全丢弃,不参与后续渲染(相当于透明)。

Shader 代码实现

1基础溶解 Shader(Built-in 管线)

先从最简版本开始。创建一个新的 Shader,命名为 Dissolve.shader:

Shader "Custom/Dissolve"
{
    Properties
    {
        _MainTex   ("主纹理", 2D)     = "white" {}
        _NoiseTex  ("Noise 纹理", 2D)  = "white" {}
        _Threshold ("溶解进度", Range(0,1)) = 0.0
    }

    SubShader
    {
        Tags { "RenderType"="TransparentCutout"
               "Queue"="AlphaTest" }
        Cull Off   // 双面渲染,防止穿帮

        Pass
        {
            CGPROGRAM
            #pragma vertex   vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            sampler2D _NoiseTex;
            float     _Threshold;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv     : TEXCOORD0;
            };

            struct v2f
            {
                float4 pos : SV_POSITION;
                float2 uv  : TEXCOORD0;
            };

            v2f vert(appdata v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv  = v.uv;
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                // 1. 采样 Noise 图(只需 R 通道)
                float noise = tex2D(_NoiseTex, i.uv).r;

                // 2. 核心:当 noise < threshold 时丢弃该像素
                clip(noise - _Threshold);

                // 3. 正常采样主纹理输出
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }
    }
}

注意 RenderType 设为 TransparentCutout、 Queue 设为 AlphaTest, 这确保使用了 clip() 的物体能正确写入深度缓冲,避免半透明排序问题。

2添加边缘发光效果

基础溶解太平淡了。现实中的溶解往往伴随边缘的灼烧、发光。 实现思路:检测 "刚好在溶解边界附近" 的像素,给它们叠加一个高亮颜色。

Properties
{
    _MainTex    ("主纹理",     2D)             = "white" {}
    _NoiseTex   ("Noise 纹理",  2D)             = "white" {}
    _Threshold  ("溶解进度",   Range(0,1))       = 0.0
    _EdgeWidth  ("边缘宽度",   Range(0,0.2))     = 0.05
    _EdgeColor  ("边缘颜色",   Color)           = (1, 0.4, 0.1, 1)
    _EdgeGlow   ("发光强度",   Range(0,8))       = 3.0
}

// ── Fragment Shader ──────────────────────────
fixed4 frag(v2f i) : SV_Target
{
    float noise = tex2D(_NoiseTex, i.uv).r;

    // 基础 clip:噪声值低于阈值的像素被剔除
    clip(noise - _Threshold);

    // 计算当前像素距离溶解边界的"距离"
    // 当 noise 处于 [_Threshold, _Threshold+_EdgeWidth] 区间时为边缘
    float edgeFactor = saturate((noise - _Threshold) / _EdgeWidth);

    // 采样主纹理
    fixed4 mainCol = tex2D(_MainTex, i.uv);

    // 边缘颜色:edgeFactor=0 时完全是边缘色,=1 时完全是主纹理色
    // pow(1-edgeFactor, 2) 使边缘更锐利
    float  edgeMask = pow(1.0 - edgeFactor, 2.0);
    fixed4 glowCol  = _EdgeColor * _EdgeGlow * edgeMask;

    // 叠加:基础颜色 + 边缘发光
    fixed4 finalCol = mainCol + glowCol;
    return finalCol;
}

3边缘宽度与颜色渐变原理

URP 版本适配

如果你使用的是 Unity 的 Universal Render Pipeline(URP), 需要将 Shader 改写为 HLSLPROGRAM 块并引用 URP 的核心库:

Shader "Custom/URP_Dissolve"
{
    Properties { /* 同上 */ }

    SubShader
    {
        Tags
        {
            "RenderType"      = "TransparentCutout"
            "RenderPipeline"  = "UniversalPipeline"  // ← URP 必须
            "Queue"           = "AlphaTest"
        }

        Pass
        {
            Name "ForwardLit"
            Tags { "LightMode" = "UniversalForward" }

            HLSLPROGRAM
            #pragma vertex   vert
            #pragma fragment frag

            // 引用 URP 核心库(替代 UnityCG.cginc)
            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

            TEXTURE2D(_MainTex);   SAMPLER(sampler_MainTex);
            TEXTURE2D(_NoiseTex);  SAMPLER(sampler_NoiseTex);

            CBUFFER_START(UnityPerMaterial)
                float4  _MainTex_ST;
                float   _Threshold;
                float   _EdgeWidth;
                float4  _EdgeColor;
                float   _EdgeGlow;
            CBUFFER_END

            struct Attributes
            {
                float4 positionOS : POSITION;
                float2 uv         : TEXCOORD0;
            };

            struct Varyings
            {
                float4 positionHCS : SV_POSITION;
                float2 uv          : TEXCOORD0;
            };

            Varyings vert(Attributes IN)
            {
                Varyings OUT;
                OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);
                OUT.uv = TRANSFORM_TEX(IN.uv, _MainTex);
                return OUT;
            }

            half4 frag(Varyings IN) : SV_Target
            {
                float noise = SAMPLE_TEXTURE2D(_NoiseTex, sampler_NoiseTex, IN.uv).r;
                clip(noise - _Threshold);

                float edgeFactor = saturate((noise - _Threshold) / _EdgeWidth);
                half4 mainCol    = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, IN.uv);
                half4 glowCol    = _EdgeColor * _EdgeGlow * pow(1 - edgeFactor, 2);
                return mainCol + glowCol;
            }
            ENDHLSL
        }
    }
}

📌

URP 的核心变化:① 使用 HLSLPROGRAM / ENDHLSL; ② 用 TEXTURE2D / SAMPLER / SAMPLE_TEXTURE2D 代替 tex2D; ③ 所有材质参数放入 CBUFFER 以支持 SRP Batcher 合批优化。

C# 脚本控制动画

通过 C# 脚本在运行时动态更新 _Threshold,即可实现溶解动画:

using UnityEngine;
using System.Collections;

public class DissolveController : MonoBehaviour
{
    [Header("溶解设置")]
    public float  dissolveDuration = 2.0f;  // 溶解总时长(秒)
    public bool   autoDissolveOnStart = false;

    private Material    _mat;
    private static readonly int _ThresholdID
        = Shader.PropertyToID("_Threshold");  // 缓存 ID,避免字符串查找

    void Awake()
    {
        // GetComponent 获取 Renderer 并克隆材质(避免修改共享材质)
        var rend = GetComponent<Renderer>();
        _mat = rend.material;  // .material 自动克隆
    }

    void Start()
    {
        if (autoDissolveOnStart)
            StartCoroutine(DissolveRoutine(0f, 1f));
    }

    /// <summary>外部调用:开始溶解消失</summary>
    public void Dissolve() => StartCoroutine(DissolveRoutine(0f, 1f));

    /// <summary>外部调用:溶解恢复出现</summary>
    public void Appear()   => StartCoroutine(DissolveRoutine(1f, 0f));

    private IEnumerator DissolveRoutine(float from, float to)
    {
        float elapsed = 0f;
        while (elapsed < dissolveDuration)
        {
            elapsed += Time.deltaTime;
            float t = Mathf.Clamp01(elapsed / dissolveDuration);

            // 用 SmoothStep 让动画有缓入缓出感
            float smooth = Mathf.SmoothStep(from, to, t);
            _mat.SetFloat(_ThresholdID, smooth);

            yield return null;  // 等待下一帧
        }
        _mat.SetFloat(_ThresholdID, to);

        // 完全溶解后可选择隐藏 GameObject
        if (to >= 1f) gameObject.SetActive(false);
    }
}

进阶变体与技巧

方向性溶解

不使用 Noise 图,而是用 顶点的世界坐标 Y 值 作为溶解参数,实现"从下往上"或"从上往下"的方向性溶解—— 常用于魔法传送、角色出场效果。

// Vertex Shader 传递世界坐标 Y
Varyings vert(Attributes IN)
{
    Varyings OUT;
    float3 worldPos = TransformObjectToWorld(IN.positionOS.xyz);
    OUT.worldY = worldPos.y;  // 传入世界 Y
    OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);
    return OUT;
}

// Fragment Shader 中用 worldY 代替 Noise
half4 frag(Varyings IN) : SV_Target
{
    // 将世界 Y 映射到 [0,1](需根据模型高度调整 _MinY/_MaxY)
    float normalizedY = saturate((IN.worldY - _MinY) / (_MaxY - _MinY));

    // 叠加 Noise 增加不规则感
    float noise    = SAMPLE_TEXTURE2D(_NoiseTex, sampler_NoiseTex, IN.uv).r;
    float combined = normalizedY + noise * 0.3;  // Noise 起辅助扰动作用

    clip(combined - _Threshold);
    // ... 边缘光逻辑同前
}

多层 Noise 叠加(更丰富的边缘细节)

// 对同一张 Noise 图以不同频率采样 3 次,叠加 fBm
float2 uv0 = IN.uv;
float2 uv1 = IN.uv * 2.1 + float2(0.13, 0.27);  // 偏移避免重复感
float2 uv2 = IN.uv * 4.3 + float2(0.51, 0.89);

float n0 = SAMPLE_TEXTURE2D(_NoiseTex, sampler_NoiseTex, uv0).r;
float n1 = SAMPLE_TEXTURE2D(_NoiseTex, sampler_NoiseTex, uv1).r;
float n2 = SAMPLE_TEXTURE2D(_NoiseTex, sampler_NoiseTex, uv2).r;

// 权重叠加:低频主导形态,高频增加细节
float noise = n0 * 0.6 + n1 * 0.3 + n2 * 0.1;

💡

在移动端,每次额外的纹理采样都有性能开销。对于移动端项目,建议将 fBm 预烘焙到一张贴图, 而不是在 Shader 运行时计算多次采样。

性能优化小结

在实际项目中需要注意以下几点:

使用 GPU Instancing 批量渲染 预烘焙 Noise 图避免运行时计算 移动端关闭 Bloom 替代边缘发光 合理压缩 Noise 贴图格式(ETC2/BC4) SRP Batcher 需要 CBUFFER 包装参数 LOD 远距离关闭边缘效果

小结

Unity Shader 溶解效果的核心思路极为简洁:Noise 图提供每像素的随机阈值,clip() 函数根据阈值剔除像素, edgeFactor 在溶解边界附近叠加发光颜色。 整个实现只需不到 20 行核心代码,却能产生极具视觉冲击力的效果。

掌握这个基础之后,你可以进一步扩展:结合粒子系统在溶解边缘发射火花,或者用 Shader Graph 的可视化节点 实现相同效果,或者将 Noise 与顶点动画结合制作更复杂的形变溶解。

在Unity中实现溶解效果 在Shader中,你需要定义一些变量来控制溶解效果。溶解程度(一个介于0(未溶解)和1(完全溶解)之间的值)。溶解纹理(可选,用于定义溶解的图案)。溶解颜色(可选,用于定义溶解区域的颜色)。 阅读详情

相关推荐

Unity噪声图生成(编辑器扩展)

unity噪声图

qq_45498613的博客 2431

GLSL 学习笔记 - 001.Noise 的程序化生成

使用VSCode基于GLSL的Noise程序化生成算法总结;

m0_54122551的博客 756

Unity 使用Shader Graph实现物体的溶解效果

前言 啊咧咧,从大学毕业开始,有一段时间没有更新过博客了,很怀念当初边学习边写博客的时光。今天打开博客网站看着各位大神通过文字来分享自己的技术心得,也手痒了,决定也来一篇! 说完上面的话,感觉自己像是大佬一样。嘿嘿,然而本篇文章还是一个小白文,就是Shader Graph的入门知识,一个简单的物体溶解效果,意在帮助新手了解Shader Graph这个工具。效果如下图,如果你感兴趣,可以看看后面的实现方式,然后来试试吧! 注:本项目Unity版本为2021.1.12f1c1 正文 1,配置环境 为了使用Sh

xinzhilinger的博客 6390

开启创意之旅:免费、开源的噪波贴图(noise texture)生成网站——noisecreater.com详细介绍

在当今数字创意领域,噪波贴图(Noise Texture)是游戏渲染、游戏开发、美术设计以及影视制作等行业不可或缺的艺术素材之一。为了满足广大创作者的需求,本网站应运而生,成为一款免费、开源的噪波贴图生成工具网。本文将全面介绍该网站的独特功能和优势,助您在创作过程中脱颖而出。

m0_54122551的博客 5746

使用Unity的Shader Graph来制作3D物体溶解出现与消失效果

Shader Graph unity为用户提供的图像化Shader编写工具,可以让对图形学不那么了解的人也可以轻松做出很棒的效果,降低了Shader制作的入门难度。 环境配置 Shader Graph目前只能在HDRP和LWRP渲染管线中使用,首先我们要新建一个HDRP渲染管线: 之后打开ProjectSettings-Graphics,将刚刚新建的HDRP管线设为渲染管线: 这样我们就完成了环境的配置,接下来就可以进行Shader Graph的使用了。 消融效果制作 我们先来看看制作完成的效果图:

qq_37755462的博客 2517

Unity溶解效果实现:Shader编程与噪声纹理应用详解

在实时渲染与游戏开发中,着色器编程是实现高级视觉效果的核心技术。其原理是通过GPU对每个像素进行并行计算,控制颜色、透明度等属性的输出。这项技术的价值在于能够创造出丰富、动态的视觉表现,极大地增强游戏的沉浸感和艺术表现力。溶解效果作为一种典型的像素级控制应用,广泛应用于角色消失、场景转换、技能特效等场景。它通过采样噪声纹理,并与动态阈值进行比较,决定像素的丢弃与否,从而模拟物体逐渐消散的过程。本文以Unity引擎为例,深入解析了如何编写片元着色器,利用噪声纹理生成随机边缘,并添加动态光效来提升视觉层次。通过

weixin_34080571的博客 1322

Shader Graph制作2D Sprite溶解

一、制作原理 通过Gradient Noise节点(Perlin噪点)减去从0~1的小数,噪点随被减数的增加黑斑会越来越大最后全部减为0。将纹理进行Step处理(更加锐利)再与原本纹理相乘得到消除效果。 二、制作流程 上述所说最后得到的是黑色底图。但是溶解应该是纹理透明,因此要控制这两个输出。 AlphaClipThreshold是低于输入值的将显示透明。Alpha是当前的Alpha值。因...

姬垚的博客 3493

Unity Shader Example 27 (Noise)

Shader "TestNoise" { Properties { _DissolveDirectTex ("Dissolve Direct Texture", 2D) = "white" {} _NoiseWidth("Noise Width", Range(0, 2)) = 1 _NoisePow("Noise Pow", Range(0, 2)) = 1 _Percen

aa20274270的博客 799

【Unity ShaderGraph】| 快速制作一个实用的 模型溶解效果

本文将使用ShaderGraph制作一个模型溶解的效果,可以直接拿到项目中使用。 对ShaderGraph还不了解的小伙伴可以参考这篇文章:【Unity ShaderGraph】| Shader Graph入门介绍 | 简介 | 配置环境 | 窗口介绍 | 简单案例 下面就开始看一下具体的制作流程,然后自己动手制作一个吧!

努力前行,总会成为自己心中的那道光 1万+

Ubuntu 20.04 环境下Autoware.universe 与 Carla 0.9.13 联合仿真

安装内容: ROS Galactic Autoware.universe based on ROS Galactic Carla 0.9.13 UnrealEngine 4.26 Openplanner (additional files: op-bridge/op-agent/scenariorunner/map data)

mhl1107的博客 1799

异步bus交互(一)— 两级DFF同步器

异步bus交互(一)— 两级DFF同步器 跨时钟域处理 & 亚稳态处理 1.问题产生 现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会工作在另一个时钟频率下,而普通的信号又会工作在另外的时钟频率下。这3个不同时钟频率下工作的信号往往需要相互沟通和传递信号。 不同时钟域下的信号传递就涉及到跨时钟域信号处理,因为相互之间的频率、相位不一样,如果不做处理或者

qq_44816673的博客 5120

Unity 之 ShaderGraph 实现超级炫酷的溶解效果入门级教程

入门级制作教程,有手就行。虽然效果很炫酷,但实现起来很简单。一句代码都不写,制作一次,无限复用。

陈言必行 -- Unity游戏开发领域优质博主 1万+

Android开发实战:5分钟搞定全屏沉浸式状态栏(附完整代码示例)

本文提供了Android开发中实现全屏沉浸式状态栏的完整实战指南。通过对比主题配置、动态代码设置和Window标志位三种方法,详细讲解了如何隐藏状态栏并处理布局适配。文章还涵盖了刘海屏、手势导航等高级适配场景,并附有可直接使用的工具类代码,帮助开发者快速提升应用视觉体验。

weixin_29197699的博客 359

Unity Shader - 入门级 - 火烧 2D 旗帜 的溶解效果

unity shader - 实现入门级 2D 图片火烧溶解效果

Jave.Lin 的学习笔记 2331

Halcon图片拼接避坑指南:特征点匹配常见问题与解决方案

本文深入解析Halcon图片拼接中特征点匹配的常见问题与解决方案,涵盖特征点提取、匹配优化及变换模型选择等关键环节。针对工业视觉检测中的拼接错位、重影等问题,提供参数调优、图像预处理和算法选择等实战技巧,帮助开发者高效避坑并提升拼接精度。

weixin_28694169的博客 198

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?这是一个让许多开发者都感到困扰的问题。本文将介绍如何使用FPGA设计和实现...

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?MIPI DSI(移动产业处理器接口 - 显示串行接口)是一种用于在移动设备中传输视频数据的标准接口,它是目前大部分智能手机和平板电脑所采用的显示接口。首先,我们需要实现MIPI DSI的物理层接口。在实现MIPI DSI接口后,我们还需要编写驱动程序来控制MIPI DSI显示屏显示图像。这里只是提供了MIPI DSI接口的物理层代码示例,完整的MIPI DSI接口实现需要包括控制器和驱动程序等更多内容。

uote_e的博客 1997

用 Unity Shader Graph 打造游戏溶解消散特效,开启炫酷视觉之旅

在众多精彩的游戏世界里,怪物与物体溶解消散的特效屡见不鲜,早已成为常见的视觉表现手法。要是把这种特效巧妙运用到场景转场中,那将会给玩家带来前所未有的沉浸式体验。最近,粉丝群里就有小伙伴提出这样的需求,希望能了解如何实现炫酷的世界溶解变化。今天这篇博客,就带大家深入探索在 Unity 中,基于 Shader Graph 打造以世界坐标为中心点的溶解特效。

m0_57836225的博客 1883

innovus中如何设置cts参数

上面是设置cts的一般设置,如果需要对某些skew group或者某些clock tree设置不一样的参数,如需要对clk1这个clock设置不一样的inverter,可以使用。需要查询已经设置过的ccopt参数,可以使用get_ccopt_property去查询,方法和set_ccopt_property一致。言归正传,cts的设置命令是set_ccopt_property,获取命令是get_ccopt_property。另外,set_ccopt_property提供一套命令查询方法。

芯冰乐 544

Unity Shader Graph溶解效果入门案例

Unity Shader Graph溶解效果入门案例

weixin_42565127的博客 1016

【嘉立创EDA】从AD21导入pcb边界到嘉立创EDA专业版

有许多前期工程由AD进行完成,在后续update的过程中,由于开模等原因限制,部分pcb外型需要继续沿用,本文将此过程记录,以供有需要的读者参考。

l64481000的博客 4520

加权均值向量算法(INFO)详解:从数学原理到智能算法

本文系统介绍了加权均值向量算法(INFO)的理论基础、数学模型与实现应用。该算法基于加权均值数学概念,通过MeanRule规则平衡探索与开发能力,具有结构新颖、参数合理的特点。核心内容包括:1) 算法理论基础,阐述加权均值数学定义与小波函数权重计算;2) 算法原理,详细解析更新规则、向量组合和局部搜索三阶段数学模型;3) 实现方法,提供MATLAB代码关键参数解析;4) 改进方向,介绍INFO-KELM混合模型等变体;5) 应用案例,涵盖函数优化、工程设计与机器学习领域。

qq_42212808的博客 234

【Unity Shader】 溶解效果实战教程

本文实现的溶解效果通过噪声纹理灰度值与阈值比较,clip 丢弃低于阈值的像素,边缘处用 lerp 混合发光色带。支持方向溶解、双色边缘等变体,配合 HDR + Bloom 实现燃烧感。

Fresh_Free的博客 670

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Unity Shader Graph 制作Dissolve溶解效果

遵循国际惯例先看效果: 模型使用了Asset Store资源商店里下载的模型Robot Kyle,创建一个新的PBR Graph,命名为dissolve,双击进入shader graph编辑器,修改Main Preview预览窗口,使用Custom Mesh预览,选择Robot模型: 首先创建MainTexture属性,以便在Inspector面板添加贴图: 创建SampleTexture2D节点,将其Texture设为MainTexture属性,...

当代野生程序猿 3169

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Unity三种物体溶解方法

Unity三种物体溶解方法

卓仔的博客 3475

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Unity新手学习Shader之路---溶解效果

然后我这里搞了一个t用来自动变换比对的值让他可以循环执行更加方便看到效果,dissolve因为我们是用了sin,sin有些值是小于0的所以这里乘0.5再加0.5保持它的值是在(0,1)的。因为我们是通过丢弃像素的方式去做一个溶解的效果所以这个本质上是透明度测试的方法去执行的,有疑问的可以查看这篇透明度测试的文章。通过ShaderLab语言去写一个溶解的效果是比较简单的,他的原理就是依靠discard来进行像素的丢弃从而达成“溶解”的效果。接下来我们就实现最核心的部分,下面的这个代码就是可以直接粘贴运行的。

weixin_48195035的博客 1054

3个很不错的Unity Shader插件

3个很不错的Unity Shader插件SphereDissolve 球形溶解介绍图例链接VerticalDissolve 超卡通的溶解效果介绍图例链接TexturePanner 纹理平移器介绍图例Shader链接 SphereDissolve 球形溶解 介绍 这个球形溶解只是描述这个溶解的方向性是以球形行进的,这样一来,就能幻化出 N 多种奇妙应用场景。 使用 Unity 2017.4.8f1 开发。 此着色器的工作方式与典型的溶解着色器类似,尽管有两个大区别: 它利用3D Noise代替纹理,这意味着

天富儿的博客 4848
上一篇: Unity Shader 极坐标特效 从数学原理到实战案例
下一篇: Unity Shader 用 Ramp 贴图实现薄膜干涉效果
mxwin
博客等级 码龄19年 22粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值