๋ฌผ์ฒด๋ฅผ ๋ฐํฌ๋ช ํ๊ฒ ๋ง๋ค์ด ๋ณด์.
Shader "UnityShaderTutorial/basic_translucent" {
Properties {
_Color ("Main Color", COLOR) = (1,1,1,0.5)
_MainTex("Texture", 2D) = "white" {}
}
SubShader {
Tags { "Queue" = "Transparent" }
Pass {
Blend SrcAlpha OneMinusSrcAlpha
SetTexture [_MainTex] {
constantColor[_Color]
Combine texture, constant
}
}
}
} ์ค๋ธ์ ํธ๋ฅผ ๋ฐํฌ๋ช
ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋ Blend command๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒน์น๋ ์ค๋ธ์ ํธ์ ์์๊ฐ์ ์ด๋ป๊ฒ ํํํด์ผํ ์ง ๋ช
์ํด ์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Blend๋ ๋นํ์ฑํ ์ํ๊ฐ ๋๊ณ ํ์ฌ ์ค๋ธ์ ํธ ๋ค์ ์๋ ๋ชจ๋ ์์์ ๋ฎ์ด์์์ ธ ๋ณด์ด์ง ์๊ฒ ๋๋ค.
๋ฌผ์ฒด์ RGB๊ฐ์ ๊ทธ๋๋ก ๋๊ณ ์ํ๊ฐ๋ง์ ์์ ํ์ฌ ํํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Blend command์ ์ธ์๋ Alpha ์ข
๋ฅ๊ฐ ๋๋ค.
์์ ์ฝ๋์์ Blend command์ ์ธ์๋ SrcFactor, DstFactor ๋ ๊ฐ์ด๋ฉฐ, SrcFactor์๋ ํด๋น ์ค๋ธ์ ํธ์ ์ํ๊ฐ์ด, DstFactor '1 - ํด๋น ์ค๋ธ์ ํธ์ ์ํ๊ฐ'์ด ๋ค์ด๊ฐ๋ค.
SetTexture Block์์ ์ค๋ธ์ ํธ์ ์ํ๊ฐ์ ํ
์ค์ณ์ ์ ์ฉํ๋ ์ผ์ ํ๋ค. constantColor command๋ constant ์์์ ์ ์ํ๊ณ combine command์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค. combine command์ ์ธ์ ์๋ฏธ๋ 'texture์ constant์ ์ํ๊ฐ์ ์ ์ฉํ๋ค.' ์ด๋ค.
Combine texture * constant ๋ํ ๋น์ทํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง, constant์ RGB๊ฐ์ด texture์ ์ ์ฉ๋๋ค๋ ๊ฒ์ด ์ฐจ์ด์ ์ด๋ค.
์์ ์ฝ๋์์ Tags command๋ ํด๋น ์ค๋ธ์ ํธ์ ๋ ๋๋ง ์์๋ฅผ "Transparent"๋ก ๋ณ๊ฒฝํ๋ค. ํด๋น ํ๊ทธ์ ๊ฐ์ Unity์์ ์ง์ ํ ๊ฐ์ด๋ฉฐ, Tags command๋ฅผ ์ฌ์ฉํ์ง ์์์ ๊ฒฝ์ฐ ๋ ๋๋ง ์์๊ฐ ๊ฐ์ ๋ค๋ฅธ ์ค๋ธ์ ํธ๋ค์ด ํด๋น ์ค๋ธ์ ํธ ์์ ๊ทธ๋ ค์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค.
SubShader๋ Tags๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, SubShader์ Tags๋ rendering engine์ ๋ ๋๋งํ ๋ฐฉ๋ฒ๊ณผ ์๊ธฐ๋ฅผ ์๋ ค์ค๋๋ค. Tags์ ๋ฌธ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
Tags { "TagName1" = "Value1" "TagName2" = "Value2" }๊ธฐ๋ณธ์ ์ผ๋ก ํค-๊ฐ pair์ด๋ฉฐ, ๋ ๋๋ง ์์์ SubShader์ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๊ทธ๋ค์ด ์๋ค. ๋ด์ฅ ํ๊ทธ ์ด์ธ์ ์์ ์ด ํ๊ทธ๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ์๋ ์๋ค. Unity built-in ํ๊ทธ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- Rendering Order - Queue tag
ํด๋น ์ค๋ธ์ ํธ๊ฐ ๊ทธ๋ ค์ง๋ ์์๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค. ๋ฏธ๋ฆฌ ์ ์๋ render queue๋ ๋ค์๊ณผ ๊ฐ๋ค.
Background : ๋ค๋ฅธ ๊ฒ๋ค๋ณด๋ค ๋จผ์ ๋ ๋๋งํ๋ค. ๋ณดํต ๋ฐฐ๊ฒฝ์ ์์นํ๋ ์ค๋ธ์ ํธ๋ค์ ์ด ๊ฐ์ ์ฌ์ฉํ๋ค.
Geometry(default) : ๋ถํฌ๋ช
ํ ์ค๋ธ์ ํธ๋ค, ๊ธฐ๋ณธ ๋ฌผ์ฒด๋ค์ด ์ด ๊ฐ์ ์ฌ์ฉํ๋ค.
AlphaTest : ์ํํ
์คํธ๋ฅผ ํ ๋ถํฌ๋ช
์ค๋ธ์ ํธ๋ค์ด ์ด ๊ฐ์ ์ฌ์ฉํ๋ค. solid ์ค๋ธ์ ํธ๊ฐ ๊ทธ๋ ค์ง ํ alpha-tested ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ถ๋ฆฌ๋์ด ์๋ค.
Transparent : ์ ๋ฆฌ๋ ํํฐํด ์ดํํธ ๊ฐ์ ๋ฐํฌ๋ช
์ค๋ธ์ ํธ๋ค์ด ์ด ๊ฐ์ ์ฌ์ฉํ๋ค.
Overlay : ๋ ์ฆ ํ๋ ์ด์ ๊ฐ์ overlay ์ดํํธ๋ค์ด ์ด ๊ฐ์ ์ฌ์ฉํ๋ค.
๊ฐ๊ฐ์ queue๋ค์ ๋ชจ๋ ์ ์ํ ์ธ๋ฑ์ค๋ก ํํ๋๊ธฐ ๋๋ฌธ์ ๊ฐ ํค์๋์ ์ ์๋ฅผ ๋ํด ๋ ๋๋ง ์์๋ฅผ ์กฐ์ ํ ์ ์๋ค.
Unity render engine์ "Geometry+500"๊น์ง๋ฅผ ๋ถํฌ๋ช ์ค๋ธ์ ํธ๋ก ๊ฐ์ฃผํ์ฌ ์ต์์ ์ฑ๋ฅ์ ๋ด๋๋ก ๊ทธ๋ฆฌ๊ธฐ ์์๋ฅผ ์ต์ ํํ๋ค. ๋ ๋์ queue๋ ํฌ๋ช ์ค๋ธ์ ํธ๋ก ๊ฐ์ฃผํ์ฌ ๊ฑฐ๋ฆฌ๋ณ๋ก ์ ๋ ฌํ์ฌ ๊ทธ๋ฆฐ๋ค.
- Rendering Type tag
ํด๋น ์ค๋ธ์ ํธ๋ฅผ ๋ฏธ๋ฆฌ ์ ์๋ ์ฌ๋ฌ ๊ทธ๋ฃน์ผ๋ก ๋ถ๋ฆฌํ์ฌ Shader Replacement ๋๋ ์นด๋ฉ๋ผ์ depth texture๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- DisableBatching tag
ํด๋น ์ค๋ธ์ ํธ๊ฐ Draw Call Batching์ ํฌํจ๋์ง ์๊ฒ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
"True", "False"(default), "LODFading"(LOD Fade๊ฐ ํ์ฑํ ๋ ๊ฒฝ์ฐ batching ์ฌ์ฉ ์ ํจ, ์ฃผ๋ก ๋๋ฌด์์ ์ฌ์ฉ)์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
- ForceNoShadowCasting tag
ํด๋น ์ค๋ธ์ ํธ๊ฐ ๊ทธ๋ฆผ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ ๋ ์ฌ์ฉํ๋ค.
- IgnoreProjector tag
ํด๋น ์ค๋ธ์ ํธ๊ฐ Projector์ ์ํฅ์ ๋ฐ์ง ์๊ฒ ํ๊ธฐ์ํด ์ฌ์ฉํ๋ค. ์ฃผ๋ก ๋ฐํฌ๋ช ์ค๋ธ์ ํธ์ ์ฌ์ฉํ๋ค.
- CanUseSpriteAtlas tag
์ํ๋ผ์ค๋ฅผ ์์ฑํ ๋ shader์ ์ํฅ์ ๋ฐ์ง ์๊ฒ ํ๊ธฐ์ํด ์ฌ์ฉํ๋ค. ์์ธํ ๊ฒ์ Sprite Packer ์ฐธ์กฐ.
- PreviewType tag
์ธ์คํํฐ์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ถ๋ถ์ material์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์ฒด๋ก ํํ๋์ง๋ง, "Plane" ๋๋ "Skybox"๋ก ์ค์ ํ ์ ์๋ค.