// 魔法光晕 Shader(叠加发光) // 挂在比光球稍大的 Sphere 上,Additive 叠加,模拟没有 Bloom 也能发光的光晕 Shader "Custom/MagicGlow" { Properties { _GlowColor ("光晕颜色", Color) = (1.0, 0.5, 0.2, 0.6) _GlowPower("光晕强度", Range(0.5, 5.0)) = 2.0 } SubShader { Tags { "RenderType"="Transparent" "Queue"="Transparent" "IgnoreProjector"="True" } LOD 100 ZWrite Off Cull Off Blend SrcAlpha One // Additive 叠加,越叠越亮 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; }; struct v2f { float4 vertex : SV_POSITION; float3 worldNormal : TEXCOORD0; float3 worldViewDir : TEXCOORD1; }; float4 _GlowColor; float _GlowPower; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldViewDir = normalize(WorldSpaceViewDir(v.vertex)); return o; } fixed4 frag (v2f i) : SV_Target { float3 n = normalize(i.worldNormal); float3 v = normalize(i.worldViewDir); // 边缘亮、中心透明 → 柔和半球光晕 float rim = pow(1.0 - saturate(dot(n, v)), _GlowPower); return float4(_GlowColor.rgb, rim * _GlowColor.a); } ENDCG } } }