Files
aibis-dream/Assets/Shader/HuoshanScreenGlitch.shader
T

75 lines
2.5 KiB
Plaintext

Shader "AibisDream/HuoshanScreenGlitch"
{
// 只暴露 6 个宏观旋钮 + 5 个基调,内部十几个系数全部从它们推导。
// 想加新参数前先想清楚:上一版 40 个属性根本没法调。
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
_Color("Tint", Color) = (1,1,1,1)
[Header(Drive)]
_GlitchIntensity("Glitch Intensity (driven by Yarn)", Range(0, 1)) = 0
_Rage("Rage (driven by Yarn, phosphor to red)", Range(0, 1)) = 0
_Speed("Signal Refresh Speed", Range(0.05, 4)) = 1
[Header(Main Knobs)]
_Scale("Scale (screen too small then raise this)", Range(0.25, 6)) = 1.6
_ColorDamage("Color Damage (hue drift and fringing)", Range(0, 2)) = 1
_Warp("Warp (tear and vertical roll)", Range(0, 2)) = 1
_Chaos("Chaos (signal dropout rate)", Range(0, 1)) = 0.5
_Grit("Grit (static and scanlines)", Range(0, 2)) = 1
_SurgeRate("Surge Rate (emotional pacing)", Range(0.05, 3)) = 0.5
[Header(Tone)]
_PhosphorColor("Phosphor Color (screen self color)", Color) = (0.72, 1, 0.82, 1)
_RageColor("Rage Phosphor (LOG3 attack)", Color) = (1, 0.188, 0.302, 1)
_Emissive("Emissive Gain (above 1 feeds Bloom)", Range(0.5, 3)) = 1.5
_Ghost("Ghost Image", Range(0, 1)) = 0.35
_BloomBoost("Recover Bloom Boost", Range(0, 3)) = 0.6
_Vignette("Vignette", Range(0, 1)) = 0.28
}
SubShader
{
Tags
{
"Queue" = "Transparent"
"RenderType" = "Transparent"
"RenderPipeline" = "UniversalPipeline"
"IgnoreProjector" = "True"
"CanUseSpriteAtlas" = "True"
}
Cull Off
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
Name "HuoshanScreenGlitch"
Tags { "LightMode" = "Universal2D" }
HLSLPROGRAM
#pragma vertex HuoshanScreenGlitchVert
#pragma fragment HuoshanScreenGlitchFrag
#pragma target 3.0
#include "HuoshanScreenGlitch.hlsl"
ENDHLSL
}
Pass
{
Name "HuoshanScreenGlitchUnlit"
Tags { "LightMode" = "SRPDefaultUnlit" }
HLSLPROGRAM
#pragma vertex HuoshanScreenGlitchVert
#pragma fragment HuoshanScreenGlitchFrag
#pragma target 3.0
#include "HuoshanScreenGlitch.hlsl"
ENDHLSL
}
}
FallBack "Sprites/Default"
}