ShaderLab syntax: Blending
Blending은 투명한 물체를 만들기 위해 사용됩니다.
그래픽들이 표현될 때 모든 쉐이더가 실행되고 모든 텍스쳐가 적용되어진 후에 픽셀은 스크린에 쓰여집니다. 그들이 이미 있는 것과 어떻게 결합되는지는Blend 명령에 의해 조절됩니다.
Syntax
:Blend Off: 블렌딩 기능 취소 :Blend SrcFactor DstFactor: 블렌딩을 구성 & 활성화. 생성된 색상은 _SrcFactor_를 곱합니다. 스크린에 이미 있던 색상은 _DstFactor_ 에 의해 곱해지고 두 개는 함께 더해집니다.
Properties
모든 다음의 속성들은SrcFactor와DstFactor 둘 다를 위해서 유효합니다. _Source_ 는 계산되어지는 색상을 의미하고 _Destination_ 는 이미 스크린에 있는 색상을 의미합니다.
_One_ | 1의 값 – 소스 또는 데스티네이션 색상이 온전히 오게 합니다. |
_Zero_ | 0의 값 – 소스 또는데스티네이션 값을 삭제하게 합니다. |
_SrcColor_ | 이 스테이지의 값은 소스 색상 값에 의해 곱해집니다. |
_SrcAlpha_ | 이 스테이지의 값은 소스 알파 값에 의해 곱해집니다. |
_DstColor_ | 이 스테이지의 값은 프레임 버퍼 소스 색상 값에 의해 곱해집니다. |
_DstAlpha_ | 이 스테이지의 값은 프레임 버퍼 소스 알파 값에 의해 곱해집니다. |
_OneMinusSrcColor_ | 이 스테이지의 값은 (1 – 소스 색상)에 의해 곱해집니다. |
_OneMinusSrcAlpha_ | 이 스테이지의 값은 (1 – 소스 알파)에 의해 곱해집니다. |
_OneMinusDstColor_ | 이 스테이지의 값은 (1 – 데스티네이션 색상)에 의해 곱해집니다. |
_OneMinusDstAlpha_ | 이 스테이지의 값은 (1 – 데스티네이션 알파)에 의해 곱해집니다. |
Details
아래는 가장 흔한 블렌드 타입입니다:
Blend SrcAlpha OneMinusSrcAlpha // Alpha blending Blend One One // Additive Blend One OneMinusDstColor // Soft Additive Blend DstColor Zero // Multiplicative Blend DstColor SrcColor // 2x Multiplicative
Example
이것은 스크린에 이미 무엇이 있던 하나의 텍스쳐를 추가하는 쉐이더의 작은 예입니다:
Shader "Simple Additive" { Properties { _MainTex ("Texture to blend", 2D) = "black" {} } SubShader { Tags { "Queue" = "Transparent" } Pass { Blend One One SetTexture [_MainTex] { combine texture } } } }
조금 더 복잡한 것, Glass. 이것은 두 번의 패스를 하는 쉐이더 입니다:
- 첫 번째 패스는 조명과 알파 블렌드가 된 텍스쳐를 스크린에 표현합니다. 알파 채널은 투명도를 결정합니다.
- 두 번째 패스는 첨가하는 투명도를 사용해서 알파 블레드가 된 윈도우위에 반사cubemap을 표현합니다.
Shader "Glass" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB) Transparency (A)", 2D) = "white" {} _Reflections ("Base (RGB) Gloss (A)", Cube) = "skybox" { TexGen CubeReflect } } SubShader { Tags { "Queue" = "Transparent" } Pass { Blend SrcAlpha OneMinusSrcAlpha Material { Diffuse [_Color] } Lighting On SetTexture [_MainTex] { combine texture * primary double, texture * primary } } Pass { Blend One One Material { Diffuse [_Color] } Lighting On SetTexture [_Reflections] { combine texture Matrix [_Reflection] } } } }
- 출처: 유니티코리아위키 (CC BY-NC-SA 2.0)