프로젝트

일반

사용자정보

통계
| 개정판:

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
}