Files
FueraDeEscala/Assets/Game Kit Controller/Shaders/Camera Effects/Underwater Shader Effect.shader
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

93 lines
3.0 KiB
Plaintext

Shader "Custom/Underwater Shader Effect" {
// simple masked blur shader.
// MainTex is used by unity to input camera image
// Amount is the amount of blur
// Mask is an image that uses brightness of pixel
// to determine how much of the blur is applied to pixel
// white = no blur, black = full blur, values inbetween = mix
// written by christian franz, you have permission to use as you
// see fit.
Properties
{
_MainTex ("Texture", 2D) = "white" {} // bit input from Unity
_Amount ("Amount", Range(1, 100)) = 7 // how much blurring
_Mask("Mask", 2D) = "white" {} // blend mask, white = no blur, black = full blur
_TintColor ("Tint Color", Color) = (1.0, 0.6, 0.6, 1.0)
}
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f {
float2 uv : TEXCOORD0;
float2 muv : TEXCOORD1;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
sampler2D _Mask;
float _Amount;
// implicit defines
float4 _MainTex_ST, _Mask_ST, _MainTex_TexelSize;
float4 _TintColor;
v2f vert (appdata v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.muv = TRANSFORM_TEX(v.uv, _Mask);
return o;
}
fixed4 frag (v2f i) : SV_Target {
fixed4 col = fixed4(0, 0, 0, 1.0);
// sum all pixels from -Amount to Amount
// horizontally
for (int index = -_Amount; index <= _Amount; index++) {
float2 uv = i.uv + float2(index * _MainTex_TexelSize.x, 0);
col += tex2D(_MainTex, uv);
}
// vertically
for (int index = -_Amount; index <= _Amount; index++) {
float2 uv = i.uv + float2(0, index * _MainTex_TexelSize.y);
col += tex2D(_MainTex, uv);
}
// now divide by the number of samples. Samples is 2 * 2 * amount + 1: Amount = 1: -1, 0, 1 = 3 samples * 2 (horizontally, vertically)
col /= (_Amount * 4 + 2);
// now sample the original value
float4 orig = tex2D(_MainTex, i.uv);
float4 mask = tex2D(_Mask, i.muv);
float unblurred = mask.r ;
float blurred = (1.0 - unblurred);
col = col * blurred + orig * unblurred + _TintColor;
return col;
}
ENDCG
}
}
}