티스토리 뷰
Unity3D Chromakey Shader Code - 유니티 크로마키 쉐이더 코드 공유
개발을 하다보면 배경을 지우고 특정 이미지만 남기고 싶은 경우가 생깁니다.
유니티에서 지원하는 쉐이더 기능에 크로마키 코드를 작성하여 원하는 색의 배경을 지울 수 있습니다.

유니티에서 쉐이더 파일을 생성한 후 아래 코드를 작성해주시면 됩니다.
Shader "Unlit/chromakey"
{
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_MaskCol ("Mask Color", Color) = (0.0, 0.0, 1.0, 1.0) //지우고 싶은 RGB 값 설정
_Sensitivity ("Threshold Sensitivity", Range(0,1)) = 0.4
_Smooth ("Smoothing", Range(0,1)) = 0
}
SubShader {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
LOD 100
ZTest Always Cull Back ZWrite On Lighting Off Fog { Mode off }
CGPROGRAM
#pragma surface surf Lambert alpha
struct Input {
float2 uv_MainTex;
};
sampler2D _MainTex;
float4 _MaskCol;
float _Sensitivity;
float _Smooth;
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
float maskY = 0.2989 * _MaskCol.r + 0.5866 * _MaskCol.g + 0.1145 * _MaskCol.b;
float maskCr = 0.7132 * (_MaskCol.r - maskY);
float maskCb = 0.5647 * (_MaskCol.b - maskY);
float Y = 0.2989 * c.r + 0.5866 * c.g + 0.1145 * c.b;
float Cr = 0.7132 * (c.r - Y);
float Cb = 0.5647 * (c.b - Y);
float blendValue = smoothstep(_Sensitivity, _Sensitivity + _Smooth, distance(float2(Cr, Cb), float2(maskCr, maskCb)));
o.Alpha = 1.0 * blendValue;
o.Emission = c.rgb * blendValue;
}
ENDCG
}
FallBack "Diffuse"
}
코드 작성후 적용할 오브젝트의 Material에 적용 해주시면됩니다.

감사합니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- next useEffect
- 코틀린
- 깃랩에서 깃허브로
- room error
- 깃랩 잔디 옮기기
- 안드로이드 스튜디오 해시키
- next.js ssr deploy
- 카카오 해시키
- github mirror
- nextjs ssr deploy
- next.js useEffect
- 안드로이드 해시키
- rn oss
- 라이브러리 라이센스
- amplify build error
- react native oss
- Android Studio
- amplify next.js
- react.js useEffect
- rn 오픈소스 라이센스
- 깃허브에서 깃랩으로
- non-zero exit code detected
- kotlin
- kakao api notworking
- Build failed because of webpack errors
- 깃허브 잔디 옮기기
- 안드로이드 스튜디오
- react native 오픈소스 라이선스
- 커밋 이메일 변경
- gitlab mirror
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함
