t1 / TFDContents / Assets / VLC for Unity / Misc / BackgroundKeyShader.shader @ 11
이력 | 보기 | 이력해설 | 다운로드 (1.4 KB)
1 |
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' |
---|---|
2 |
|
3 |
Shader "Custom/BackgroundKeyShader" { |
4 |
Properties { |
5 |
_MainTex ("Base (RGB)", 2D) = "white" {} |
6 |
_ColorKey ("Color Key", Color) = (0,0,0,1) |
7 |
_ColorSensitivity ("Color Sensitivity", Float) = 0.6 |
8 |
} |
9 |
SubShader { |
10 |
Pass { |
11 |
Tags { "RenderType"="Opaque" } |
12 |
LOD 200 |
13 |
|
14 |
CGPROGRAM |
15 |
|
16 |
#pragma vertex VertexShaderFunction |
17 |
#pragma fragment FragmentShaderFunction |
18 |
|
19 |
#include "UnityCG.cginc" |
20 |
|
21 |
struct VertexData{ |
22 |
float4 position : POSITION; |
23 |
float2 uvs : TEXCOORD0; |
24 |
}; |
25 |
|
26 |
struct VertexToFragment { |
27 |
float4 position : SV_POSITION; |
28 |
float2 uvs : TEXCOORD0; |
29 |
}; |
30 |
|
31 |
VertexToFragment VertexShaderFunction(VertexData input) { |
32 |
VertexToFragment result; |
33 |
result.position = UnityObjectToClipPos (input.position); |
34 |
result.uvs = input.uvs; |
35 |
return result; |
36 |
} |
37 |
|
38 |
sampler2D _MainTex; |
39 |
float3 _ColorKey; |
40 |
float _ColorSensitivity; |
41 |
|
42 |
float4 FragmentShaderFunction(VertexToFragment input) : SV_Target { |
43 |
float4 color = tex2D(_MainTex, input.uvs); |
44 |
|
45 |
float R = abs(color.r - _ColorKey.r); |
46 |
float G = abs(color.g - _ColorKey.g); |
47 |
float B = abs(color.b - _ColorKey.b); |
48 |
|
49 |
if (R < _ColorSensitivity && G < _ColorSensitivity && B < _ColorSensitivity){ |
50 |
return float4(0.0f, 0.0f, 0.0f, 0.0f); |
51 |
} |
52 |
|
53 |
return color; |
54 |
} |
55 |
ENDCG |
56 |
} |
57 |
} |
58 |
} |