64 lines
2.6 KiB
Plaintext
64 lines
2.6 KiB
Plaintext
// WLWeaponGlow.shader — 무기 위에 덧그리는 흰 빛(가산 · 테두리 강조) (#912 · 2026-10-17)
|
|
// PD 「모으기 이펙트가 재생될 때 망치가 점차 하얗게 빛날 수 있게」 — 해머 각성(WLHammerQuake)이 망치 메시를 복제한 자식에 이 재질을 씌우고
|
|
// 세기 _Glow(0~1) · 색 _GlowColor(HDR · 1 넘으면 블룸)를 렌더러별 프로퍼티 블록으로 쓴다. 몸통 덮기 _Fill · 테두리 _RimPower · 겉껍질 _Inflate(월드 m) = 재질 값.
|
|
// 모바일: 조명 · 텍스처 없는 단일 패스 · 그림자 없음.
|
|
Shader "WL/WeaponGlow"
|
|
{
|
|
Properties
|
|
{
|
|
[HDR] _GlowColor ("Glow Color (HDR)", Color) = (2, 2, 2, 1)
|
|
_Glow ("Glow (0~1 · 프로퍼티 블록)", Range(0, 1)) = 0
|
|
_Fill ("Body Fill (몸통 덮기)", Range(0, 1)) = 0.6
|
|
_RimPower ("Rim Power (테두리)", Range(0.5, 8)) = 2
|
|
_Inflate ("Shell Inflate (월드 m)", Range(0, 0.05)) = 0.004
|
|
}
|
|
SubShader
|
|
{
|
|
Tags { "RenderPipeline" = "UniversalPipeline" "RenderType" = "Transparent" "Queue" = "Transparent" "IgnoreProjector" = "True" }
|
|
Pass
|
|
{
|
|
Name "WLWeaponGlow"
|
|
Blend SrcAlpha One
|
|
ZWrite Off
|
|
ZTest LEqual
|
|
Cull Back
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
CBUFFER_START(UnityPerMaterial)
|
|
half4 _GlowColor;
|
|
half _Glow;
|
|
half _Fill;
|
|
half _RimPower;
|
|
float _Inflate;
|
|
CBUFFER_END
|
|
|
|
struct Attributes { float4 positionOS : POSITION; float3 normalOS : NORMAL; };
|
|
struct Varyings { float4 positionCS : SV_POSITION; float3 normalWS : TEXCOORD0; float3 viewWS : TEXCOORD1; };
|
|
|
|
Varyings vert(Attributes v)
|
|
{
|
|
Varyings o;
|
|
float3 n = TransformObjectToWorldNormal(v.normalOS);
|
|
float3 p = TransformObjectToWorld(v.positionOS.xyz) + n * _Inflate;
|
|
o.positionCS = TransformWorldToHClip(p);
|
|
o.normalWS = n;
|
|
o.viewWS = GetWorldSpaceViewDir(p);
|
|
return o;
|
|
}
|
|
|
|
half4 frag(Varyings i) : SV_Target
|
|
{
|
|
half ndv = saturate(dot(normalize(i.normalWS), normalize(i.viewWS)));
|
|
half rim = pow(1.0h - ndv, _RimPower);
|
|
half a = saturate(_Glow) * saturate(_Fill + rim);
|
|
return half4(_GlowColor.rgb, a);
|
|
}
|
|
ENDHLSL
|
|
}
|
|
}
|
|
}
|