【Unity 插件推薦】UnityFurShader 毛髮渲染大師,打造真實動物與絨毛特效!

目錄

前言

 

今天要向大家推薦的是 UnityFurShader一款【開源】、【專為 Unity 引擎設計】的【毛髮】、【絨毛】、【皮毛】渲染著色器。

這個插件能讓開發者在原生 Shader 中以分層方式繪製毛髮質感,加入【光照計算】與【外力調整】,提升材質的【細節】與【立體感】。

 

雖然不是完整的物理模擬系統,但在【靜態】或【半動態】場景中已經能呈現相當不錯的視覺效果。

無論你要做【動物角色的皮毛】、【絨毛玩偶的濃密質感】,或是場景中飄動的絨毛植物,UnityFurShader 都是一個【輕量】、【直觀】的選擇。

UnityFurShader 毛髮渲染大師,打造真實動物與絨毛特效!

 

 

Unity UnityFurShader 插件介紹

 

UnityFurShader 是由 Sorumi 開發的開源著色器,核心原理是透過多層 Pass 技術 在模型表面堆疊毛髮層,營造出立體的【毛髮厚度】與【光影效果】。

它結合了基本的光照模型,包括【環境光】、【漫反射】與【鏡面反射】,讓毛髮在不同光源下呈現自然變化。

 

插件同時提供了屬性控制,例如毛髮【密度】、【細度】與【陰影深度】,開發者能依需求快速調整。

搭配外力 (Force) 模組,毛髮能夠因【全域】或【局部】偏移而展現出簡單的動態效果;最後藉由 Rim Color 邊緣顏色的設計,毛髮在迎光處更具層次感。

需要注意的是,UnityFurShader 僅支援內置渲染管線 (Built-in RP),對於【URP】與【HDRP】並沒有完整支援。

UnityFurShader 插件示意圖

 

功能特色

  • 分層毛髮渲染 (Layered / Multi-pass)
    利用多個 Pass 或多層插值,在模型表面和外沿生成不同深度的毛髮層,創造出毛髮的厚度感與層次感。sorumi.xyz+1
  • 光照模型整合 (Ambient / Diffuse / Specular)
    在每個 fragment 中計算基本的環境光、漫反射和鏡面反射,使毛髮在光照下有明暗變化。sorumi.xyz
  • 屬性控制 (Density, Thinness, Shading)
    可調整毛髮強度 (density)、毛髮的細度 (thinness)、陰影深淺(根部 vs 尖端)等。sorumi.xyz

 

適用場景

  • 【動物】或【生物】的皮毛
    用於表現【狼】、【貓】、【狐】、【熊】等毛皮角色,使其毛髮具【層次感】與【光照細節】。
  • 絨毛 / 布偶 / 虹吸材質
    適合在模型表面需要呈現【蓬鬆】或【柔軟】質感時使用,例如【玩偶公仔】、【毛毯】、【絨毛抱枕】或【布偶服飾】,帶來細膩的觸感表現。
  • 【靜態】或【半靜態】場景物件
    在場景中如果有些【毛髮】或【絨毛】物件不需要非常複雜的動態物理互動,只要有輕微偏移變化效果,就能用這個插件。
【Unity 插件推薦】UnityFurShader 毛髮渲染大師,打造真實動物與絨毛特效!

 

 

Unity UnityFurShader 內建渲染管線

 

支援幾隻著色器

支援幾隻著色器

 

Basic 基本

具有環境光、漫反射和鏡面反射的基本毛髮著色器。

具有環境光、漫反射和鏡面反射的基本毛髮著色器。

 

Shader “Fur/FurBasicShader”

{

   Properties

   {

       _Color ("Color", Color) = (1, 1, 1, 1)

       _Specular ("Specular", Color) = (0, 0, 0, 1)

       _Shininess ("Shininess", Range(0.01, 128.0)) = 8.0

       _MainTex ("Texture", 2D) = "white" { }

       _FurTex ("Fur Pattern", 2D) = "white" { }

       _FurLength ("Fur Length", Range(0.0, 1)) = 0.5

   }

   Category

   {

       Tags { "RenderType" = "Transparent" "IgnoreProjector" = "True" "Queue" = "Transparent" }

       Cull Off

       ZWrite On

       Blend SrcAlpha OneMinusSrcAlpha

       SubShader

       {

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_surface

               #pragma fragment frag_surface

               #define FURSTEP 0.00

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.05

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.10

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.15

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.20

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.25

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.30

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.35

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.40

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.45

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.50

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.55

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.60

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.65

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.70

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.75

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.80

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.85

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.90

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.95

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 1.00

               #include “FurHelper.cginc”

               ENDCG

           }

       }

   }

}

 

Attributes 屬性

新增毛髮屬性:密度、薄度、著色。

新增毛髮屬性:密度、薄度、著色。

 

Shader “Fur/FurAttributesShader”

{

   Properties

   {

       _Color ("Color", Color) = (1, 1, 1, 1)

       _Specular ("Specular", Color) = (1, 1, 1, 1)

       _Shininess ("Shininess", Range(0.01, 256.0)) = 8.0

       _MainTex ("Texture", 2D) = "white" { }

       _FurTex ("Fur Pattern", 2D) = "white" { }

       _FurLength ("Fur Length", Range(0.0, 1)) = 0.5

       _FurDensity ("Fur Density", Range(0, 2)) = 0.11

       _FurThinness ("Fur Thinness", Range(0.01, 10)) = 1

       _FurShading ("Fur Shading", Range(0.0, 1)) = 0.25

   }

   Category

   {

       Tags { "RenderType" = "Transparent" "IgnoreProjector" = “True”"Queue" = "Transparent" }

       Cull Off

       ZWrite On

       Blend SrcAlpha OneMinusSrcAlpha

       SubShader

       {

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_surface

               #pragma fragment frag_surface

               #define FURSTEP 0.00

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.05

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.10

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.15

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.20

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.25

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.30

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.35

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.40

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.45

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.50

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.55

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.60

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.65

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.70

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.75

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.80

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.85

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.90

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.95

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 1.00

               #include “FurHelper.cginc”

               ENDCG

           }

       }

   }

}

 

Force 力

加力:全局力和局部力。

加力:全局力和局部力。

 

Shader “Fur/FurForceShader”

{

   Properties

   {

       _Color ("Color", Color) = (1, 1, 1, 1)

       _Specular ("Specular", Color) = (1, 1, 1, 1)

       _Shininess ("Shininess", Range(0.01, 256.0)) = 8.0

       _MainTex ("Texture", 2D) = "white" { }

       _FurTex ("Fur Pattern", 2D) = "white" { }

       _FurLength ("Fur Length", Range(0.0, 1)) = 0.5

       _FurDensity ("Fur Density", Range(0, 2)) = 0.11

       _FurThinness ("Fur Thinness", Range(0.01, 10)) = 1

       _FurShading ("Fur Shading", Range(0.0, 1)) = 0.25

       _ForceGlobal ("Force Global", Vector) = (0, 0, 0, 0)

       _ForceLocal ("Force Local", Vector) = (0, 0, 0, 0)

   }

   Category

   {

       Tags { "RenderType" = "Transparent" "IgnoreProjector" = "True" "Queue" = "Transparent" }

       Cull Off

       ZWrite On

       Blend SrcAlpha OneMinusSrcAlpha

       SubShader

       {

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_surface

               #pragma fragment frag_surface

               #define FURSTEP 0.00

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.05

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.10

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.15

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.20

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.25

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.30

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.35

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.40

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.45

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.50

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.55

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.60

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.65

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.70

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.75

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.80

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.85

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.90

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.95

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 1.00

               #include “FurHelper.cginc”

               ENDCG

           }

       }

   }

}

 

Rim Color 輪圈顏色

Add rim color 添加邊緣顏色。

Add rim color 添加邊緣顏色。

 

Shader “Fur/FurRimColorShader”

{

   Properties

   {

       _Color ("Color", Color) = (1, 1, 1, 1)

       _Specular ("Specular", Color) = (1, 1, 1, 1)

       _Shininess ("Shininess", Range(0.01, 256.0)) = 8.0

       _MainTex ("Texture", 2D) = "white" { }

       _FurTex ("Fur Pattern", 2D) = "white" { }

       _FurLength ("Fur Length", Range(0.0, 1)) = 0.5

       _FurDensity ("Fur Density", Range(0, 2)) = 0.11

       _FurThinness ("Fur Thinness", Range(0.01, 10)) = 1

       _FurShading ("Fur Shading", Range(0.0, 1)) = 0.25

       _ForceGlobal ("Force Global", Vector) = (0, 0, 0, 0)

       _ForceLocal ("Force Local", Vector) = (0, 0, 0, 0)

       _RimColor ("Rim Color", Color) = (0, 0, 0, 1)

       _RimPower ("Rim Power", Range(0.0, 8.0)) = 6.0

   }

   Category

   {

       Tags { "RenderType" = "Transparent" "IgnoreProjector" = "True" "Queue" = "Transparent" }

       Cull Off

       ZWrite On

       Blend SrcAlpha OneMinusSrcAlpha

       SubShader

       {

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_surface

               #pragma fragment frag_surface

               #define FURSTEP 0.00

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.05

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.10

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.15

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.20

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.25

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.30

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.35

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.40

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.45

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.50

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.55

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.60

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.65

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.70

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.75

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.80

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.85

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.90

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 0.95

               #include “FurHelper.cginc”

               ENDCG

           }

           Pass

           {

               CGPROGRAM

               #pragma vertex vert_base

               #pragma fragment frag_base

               #define FURSTEP 1.00

               #include “FurHelper.cginc”

               ENDCG

           }

       }

   }

}
 

 

Unity UnityFurShader URP

 

下載

Github 網址:UnityFurShader

 

幾個毛髮著色器實現的範例

這是通用渲染管道中毛髮著色器實現的範例。

 

它包括以下功能:

  • 3 種方法(殼/鰭/毛髮多邊形)(Shell / Fin / Fur Polygon)
  • 1 使用幾何著色器(和Fin的細分)的通道
  • Lit / Unlit 點亮/未點亮
  • 使用法線貼圖進行照明計算
  • 邊緣光照
  • 動畫動作

 

Shell 殼

Shell 殼

 

Fin 翅片

Fin 翅片

 

Fur Polygon 毛髮多邊形

 

Compare 比較

Compare 比較

 

Move 移動

Move 移動

 

Move 移動
不解釋XD

 

 

Unity UnityFurShader 網格合併大師相關網站 & 插件下載點

 

UnityFurShader

插件作者部落格:UnityFurShader

Github 網址:UnityFurShader

————————————————

 

更多好用插件:【Unity 好用插件推薦】持續更新,一起讓遊戲開發事半功倍!

 

 

 

本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。

特約作家簡介

X
A
Y
B
JamXu的頭像
JamXu
10年遊戲研發
20年遊戲玩家
30年遊戲人生

經中華網龍遊戲 企劃進入遊戲圈,然後被雷打到去學 程式前後端又學了點 設計帶帶幾個研發團隊,見證了 3D 渲染技術及遊戲引擎互相進步,也見證了研發代理的更迭與博弈遊戲的興起,再毅然研究起 SEO 網路行銷社群廣告投放,深信自研自賣才是最大贏家,期望能為台灣研發重回輝煌時光貢獻一點力量。如果你也有 遊戲夢,歡迎交流認識。


支持贊助 / DONATE

 

亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。

亞洲電玩通AsiaGameMaster - Steam 遊戲鑑賞家
亞洲電玩通AsiaGameMaster - FB 粉絲專頁
亞洲電玩通AsiaGameMaster - IG 粉絲專頁
亞洲電玩通AsiaGameMaster - Twitter
亞洲電玩通AsiaGameMaster - Yoytube 粉絲專頁
亞洲電玩通AsiaGameMaster - Tiktok

BTC

亞洲電玩通AsiaGameMaster - BTC 鏈贊助地址

bc1psp8nnerlepv56nyfha6mqwnp3yr7qqjdw44c6qt5lx5r2urma7fqykxvwj

 

ETH

亞洲電玩通AsiaGameMaster - ETH 鏈贊助地址

0xB2231557bc418201922DD7C2673ec97E67E35F83

 

TRON

tron-qrcode亞洲電玩通AsiaGameMaster - TRON 鏈贊助地址

TAomNj4L6vMJuaJmbWUdmT1uAWYPf9vDjp

延伸閱讀