soundvision/UnityProject/Assets/ThridParty/AzureKinectExamples/Resources/BlurShader.shader
2019-10-26 22:49:14 +02:00

77 lines
1.5 KiB
Text

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Kinect/BlurShader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_PixOffset ("Pixel Offset", Range(0, 10)) = 3
_PixStep ("Pixel Step", Range(1, 5)) = 2
}
CGINCLUDE
#pragma target 5.0
#include "UnityCG.cginc"
sampler2D _MainTex;
half4 _MainTex_TexelSize;
int _PixOffset;
int _PixStep;
struct v2f_off {
float4 pos : POSITION;
half2 uvc : TEXCOORD0;
};
v2f_off vertOff (appdata_img v)
{
v2f_off o;
o.pos = UnityObjectToClipPos (v.vertex);
//o.uvc = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
o.uvc = v.texcoord.xy;
return o;
}
half4 fragOff (v2f_off i) : COLOR
{
//int rcCount = 2 * _PixOffset + 1;
half2 texUv = i.uvc + half2(_MainTex_TexelSize.x * -_PixOffset, _MainTex_TexelSize.y * -_PixOffset);
half4 newCol = 0;
int pixCount = 0;
for (int iY = -_PixOffset; iY <= _PixOffset; iY += _PixStep)
{
for (int iX = -_PixOffset; iX <= _PixOffset; iX += _PixStep)
{
half4 texCol = tex2D(_MainTex, texUv);
newCol += texCol * 2.0 * texCol.a;
pixCount += 1 + (int)texCol.a;
texUv.x += _MainTex_TexelSize.x * _PixStep;
}
texUv.x = i.uvc.x + (_MainTex_TexelSize.x * -_PixOffset);
texUv.y += _MainTex_TexelSize.y * _PixStep;
}
newCol = newCol / pixCount;
return newCol;
}
ENDCG
SubShader {
ZTest Always Cull Off ZWrite Off
pass {
CGPROGRAM
#pragma vertex vertOff
#pragma fragment fragOff
// #pragma target 3.0
ENDCG
}
}
}