博客 / 詳情

返回

【URP】Unity[內置Shader]粒子非光照ParticlesUnlit

【從UnityURP開始探索遊戲渲染】專欄-直達

作用與原理

ParticlesUnlit是Unity通用渲染管線(URP)中專為粒子系統設計的無光照着色器,核心功能包括:

  • 無光照計算‌:跳過複雜光照模型,僅通過紋理和頂點顏色實現高效渲染,適合火焰、煙霧等特效。
  • 混合模式控制‌:支持Additive(亮度疊加)、Multiply(顏色相乘)等混合方式,適應不同粒子效果需求。
  • 性能優化‌:針對移動設備優化,減少GPU計算負擔。
  • 粒子專用功能‌:支持翻頁動畫(Flipbook)、軟粒子(Soft Particles)和相機淡入淡出(Camera Fading)等特性。

其原理基於頂點/片元着色器架構,通過ShaderLab語言組織渲染流程,利用GPU並行計算處理粒子數據。

發展歷史

  • Unity 5.x時期‌:首次引入標準粒子着色器,區分於通用Standard Shader。
  • 2019年URP發佈‌:重構為URP專用版本,整合計算着色器支持,優化CommandBuffer調度。
  • 2020年至今‌:持續增強功能,如深度紋理交互、Orthographic投影支持等。

具體使用示例

shader
Shader "Universal Render Pipeline/Particles/Unlit"
{
    Properties {
        _BaseMap("Base Texture", 2D) = "white" {}
        [HDR] _BaseColor("Base Color", Color) = (1,1,1,1)
        _BlendMode("Blend Mode", Float) = 0 // 0=Alpha, 1=Additive
    }
    SubShader {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }
        Blend SrcAlpha OneMinusSrcAlpha
        Pass {
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
            // 頂點/片元着色器實現...
            ENDHLSL
        }
    }
}

應用場景:創建火焰粒子時,設置Blend Mode為Additive,使用HDR顏色增強發光效果。

火焰/煙霧效果

  • 材質設置‌:使用透明混合模式(Blending Mode選擇Alpha或Additive),並加載帶有透明度漸變的火焰貼圖。
  • 顏色控制‌:通過Color Mode屬性疊加粒子顏色與材質顏色,例如選擇Additive模式增強亮度。
  • 頂點擾動‌:在Shader中添加噪聲節點擾動頂點座標,模擬火焰動態扭曲。實現示例:創建Transparent材質,Shader選URP/Particles/Unlit,貼圖使用Alpha漸變的火焰紋理,開啓Additive混合。

閃電/能量束效果

  • 拖尾與噪聲‌:啓用Trail和Noise模塊,設置高頻噪聲參數模擬閃電分支。
  • 動態變細‌:勾選Size over Lifetime,曲線設為1到0使末端逐漸消失。
  • 高亮材質‌:使用Unlit Transparent Shader,材質亮度值超過1以觸發Bloom光暈。實現示例:粒子系統啓用Trail,材質Shader設為URP/Particles/Unlit,貼圖為窄漸變條紋。

卡通風格粒子

  • Ramp貼圖‌:通過程序生成漸變紋理控制漫反射顏色分層,實現風格化着色。
  • 硬邊裁剪‌:啓用Alpha Clipping並設置Threshold,實現卡通化硬邊緣。實現示例:使用腳本動態生成Ramp貼圖,Shader中採樣貼圖控制粒子顏色過渡。

消融/溶解效果

  • 頂點裁剪‌:基於頂點Y座標與閾值比較,通過Alpha Clip丟棄像素。
  • 邊緣噪聲‌:疊加Simple Noise擾動裁剪邊界,增強顆粒感。
  • 動態混合‌:使用滑塊控制溶解進度,混合原始顏色與邊緣高光色。實現示例:Shader Graph中連接Position節點Y分量與Step節點,驅動Alpha Clip和顏色混合。

通用配置要點

  • 渲染面‌:根據需求選擇Front Face(默認)或Both(如樹葉)。
  • 性能優化‌:避免過度使用粒子數量,優先通過材質和Shader增強表現力。

以上效果均需結合Particle System組件調整發射參數(如形狀、速度)以實現完整動態。

Shader Graph應用示例

  • 創建節點流程‌:

    • 添加Texture Sample節點讀取粒子貼圖
    • 使用Vertex Color節點混合粒子顏色
    • 通過Blend節點控制混合模式。
  • 關鍵節點配置‌:

    • [Particle Vertex Color] → [Multiply] ← [Texture Sample]

      [Blend] → [Output]

    通過Flipbook節點實現序列幀動畫,配合Time節點控制播放速度。

注意事項

  • 移動端需禁用Soft Particles以提升性能。
  • 正交相機需特殊處理深度比較邏輯。
  • URP版本差異可能導致參數命名變化(如_BaseMap替代_MainTex)

【從UnityURP開始探索遊戲渲染】專欄-直達
(歡迎點贊留言探討,更多人加入進來能更加完善這個探索的過程,🙏)
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.