Unity cookbook 6
- 2. ์์ด๋(Shader)๋?
Shade(์์กฐใ์์)์ด๋ ๋ป์ ๋์ฌ์ธ โ-erโ๋ฅผ ๋ถ์ฌ โ์์ ๋๋, ์์กฐ, ๋ช
์์ ์ฃผ๋ ์ฃผ์ฒดโ ๋ผ๊ณ ํด์ํ ์ ์์ต๋๋ค.
๊ฒ์์ ํํ๋๋ ์๋ฆ๋ค์ด ๊ทธ๋ํฝ ๋๋ ์ฌ๋ฌ ํ๋ฉด ํจ๊ณผ๋ฅผ ์ ๋ฉด์ ์ผ๋ก ๋ค๋ฃจ๋ ์ญํ ์ ์ํํ๊ณ
์์ง๊ตฌ๋ ํ ๊ทธ๋ํฝ์ ๊ฒ์๋ Shader ๋ผ๋ ํ์ด๋ฐ์ด์
์ผ๋ก ํ์ฅํ๋ฏ์ด ๊ฒ์์ ์๊ฐํจ๊ณผ๋ฅผ ์น์ฅํ ์ ์์ต๋๋ค.
ํ์ง๋ง, ๊ทธ๋ ๊ฒ ๊ฐ๋จํ ์์
์ด ์๋๋ฏ๋ก ์ํ ๋๋ ์ฌ๋ฌ ๊ทธ๋ํฝ ๊ฐ๋
์์๋ฅผ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
( 1 / 13 )
SHADER !
- 3. ๊ฒ์ ์์์์ ๋น #1
์ ๋ํฐ์์ ํ๋ฒํ๊ฒ ์ฐ์ด๋ ๊ตฌ(Sphere)๋ฅผ ๋ด
์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฐ์ผ ๋๋ ๋ชฐ๋์ง๋ง, ์์ธํ ๋ณด๋ฉด ๊ฐ์ฒด์ ์ง๋ ๋ช
์์ ๋ณด์ค ์ ์์ต๋๋ค.
๋ฌผ๋ก ์ด๋์ ๊ฐ ๋น์ ๋ฐ์ ๋น๋๋ ์์ญ๊ณผ ๊ทธ๋ฆผ์๊ฐ ์ง๋ ์์ญ์ผ๋ก ๊ฐ์ฒด ์์ฒด์ ์์์ด ์ง๋๋ค.
์ด๋ ๊ธฐ๋ณธ ๊ฐ์ฒด์ธ โDirectional Lightโ์ ์ํฅ์ ๋ฐ๋๋ฐ ์ ๋ํฐ ์์์์ โํ์โ ์
๋๋ค.
( 2 / 13 )
# ๊ตฌ(Shpere)์ ๋ช
์
์ ์ผ ๋ฐ์ ์์ญ
์ ์ผ ์ด๋์ด ์์ญ
- 4. ๊ฒ์ ์์์์ ๋น #2
๋ด๋ฆฌ์ฌ๋ ํ์์ ์๋ก ์ฌ๋ ค ๋ชจ๋ ์ฌ๋ฌผ์ด ๋น์ ๋ฐ์ง ์๋๋ก ํด๋ณด์์ต๋๋ค.
์ง๊ธ์ โPoint Lightโ๋ก ์ฃผ๋ณ ๊ฐ์ฒด๊ฐ ๋ณด์ด๊ฒ ํ์ง๋ง ์ค์ ๋ก๋ ์๋ฌด๊ฒ๋ ์๋ณด์ด๋ ์ด๋ ์
๋๋ค.
๋ฒกํฐ ํ ์ค๊ธฐ๋ก ๋ชจ๋ ์์์ ๊ณ์ฐํ๋ค๊ณ ์๊ฐํ๊ณ ๊ณ์ธ์. ์ ์ ํ ๋ค๋ฃฐ ์์ ์
๋๋ค.
์ด์ ๋น์ ๋ํด์ ์์ธํ๊ฒ โDirectional Lightโ ์ธ์ ์ฌ๋ฌ๊ฐ์ง ๋ผ์ดํธ ์ข
๋ฅ๋ฅผ ์ดํด๋ด
์๋ค.
( 3 / 13 )
- 5. ๊ฒ์ ์์์์ ๋น #3
โDirectional Lightโ๋ ๊ฒ์ ๋ด์ ํ์์ ์๋ฏธํฉ๋๋ค. ๋ชจ๋ ๊ฐ์ฒด์ ์ํฅ์ ๋ฐ๊ณ ์ฌ์ง์ด ํ๋๊น์ง ์ํฅ์ ๋ฐ๋ ๋ผ์ดํธ์
๋๋ค.
โPointlightโ๋ ๊ตฌ์ฒดํ ๋ผ์ดํธ์ด๋ฉฐ, ์ฃผ๋ณ์ ๊ณต๊ฐ์ ๋ฐํ ๋ ์์ฃผ ์ฐ์
๋๋ค.
โSpotlightโ๋ ์๋ฟ ๋ชจ์ ๋ผ์ดํธ์ด๋ฉฐ, ์์ ๋ฑ์ด๋ ๋ฌด๋์์์ ์ฃผ์ธ๊ณต์ ๋ฐํ ๋ ์์ฃผ ์ฐ์
๋๋ค.
๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ง ๋ผ์ดํธ๋ ์กด์ฌํ์ง๋ง ์ฌ์ฉ์ด ๊น๋ค๋กญ๊ณ ํ๋ฆฌ ๋ฒ์ ์์๋ ์ฌ์ฉํ ์ ์์ผ๋ ์๋ตํ๊ฒ ์ต๋๋ค.
( 4 / 13 )
# Directional Light # Pointlight # Spotlight
- 6. ๊ฒ์ ์์์์ ๋น #4
์์์ ์ค๋ช
ํ ๋ช
์ ํํ์ ๋ํด์ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ด
์๋ค.
3D ๋ฌผ์ฒด์ Polygon ํํ์ โVertexโ 3๊ฐ๊ฐ ๋ชจ์ฌ ์ด๋ฃจ๋๋ฐ ์ด โVertexโ ํ๋ ํ๋๋ง๋ค ๋ฒ์ ๋ฒกํฐ๊ฐ ์กด์ฌํฉ๋๋ค.
์ด๋ โVertexโ์ ์ง๋ฉด๊ณผ ์์ง์ธ ๋ฒกํฐ๋ฅผ ๋ปํ๋ฉฐ โDirectional Lightโ ๋ฒกํฐ์ ๋ด์ ์ ํ์ฌ 0 ~ 1 ๊ฐ๋ค์ ๊ตฌํ์ฌ
0์ ๊ฐ๊น์ธ์๋ก ์ด๋์ ์ง๋ Vertex๋ฅผ, 1์ ๊ฐ๊น์ธ์๋ก ๋ฐ์์ง๋ Vertex๋ฅผ ์น ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ 3๊ฐ์ Vertex ์์์ GPU์์์ Blending(ํผํฉ) ๋์ด ๊ทธ๋ผ๋ฐ์ด์
์ผ๋ก ํํ, ๋ช
์์ด ๋ง๋ค์ด์ง๋๋ค.
( 5 / 13 )
Normal Vector
Sun
Vector (Sun)
34ห (0.2)
25ห (0.17)
85ห (0.9)
RESULT:
#1 (โ) #2 (โ)
#3 (โ)
- 7. ๊ฒ์ ์์์์ ๋น #5
์, ๋ฌผ๋ก ๋ช
์์ ํํํ๋ ๊ธฐ์ ์ ํ๋ ๋ ์์ต๋๋ค.
Vertex ๋ฟ๋ง ์๋๋ผ ํฝ์
ํ๋ ํ๋์๋ ์ง๊ตํ๋ ๋ฒ์ (Normal) ๋ฒกํฐ๊ฐ ์๊ฑฐ๋ ์
์ด ๊ธฐ์ ์ ๋ด์ ๊ฐ์ ๊ตฌํด Vertex๊ฐ ์๋ ํฝ์
์์ฒด์ ๋ช
์์ ์กฐ์ ํด๋ฒ๋ฆฝ๋๋ค.
ํจ์ฌ ๋ถ๋๋ฝ๊ณ ๊ตฌ์ฒด์ ์ธ ๋ช
์์ ๋ง๋ค์ด ๋ฒ๋ฆฌ์ง๋ง ๊ทธ๋งํผ ๋น์ฉ์ ๋ง์ด ์ก์๋จน๋ ๊ฒ์ด ๋จ์ ์
๋๋ค.
( 6 / 13 )
Normal Vector
RESULT:
#1 (โ) #2 (โ)
#3 (โ)
x1000๋ฐฐ ํ๋
- 8. ๊ฒ์ ์์์์ ๋น #6
๋ฐฉ๊ธ ๋ณด์ ๋ ๊ธฐ์ ์ โDiffuseโ๋ผ๋ ์์ด๋ ํ
ํฌ๋์
๋๋ค. ํ์ ๋น์ด ๋ฌผ์ฒด์ ๋ฟ์ผ๋ฉด ๋น์ด ์ฐ๋ํ์ฌ ์ฃผ๋ณ์ ๋ฐํ๋ค๋ ๊ฐ๋
์ด์ฃ .
๊ทธ๋ฆฌ๊ณ ํ๋ ๋ค๋ฅธ ๊ธฐ์ ์ด ์๋๋ฐ ๋ฐ๋ก โSpecularโ ์ด๋ผ๋ ์์ด๋ ํ
ํฌ๋์
๋๋ค.
์ด๋ ์ ๊ตฌ๋ฅผ ์ณ๋ค๋ณด๋ฉด ๋ฐ๋ก ์ ์ ์์ต๋๋ค. ๋น์ด ํฌ์ฌ์ฒด๋ก๋ถํฐ ๋ฐ์ฌ๋์ด ์ฐ๋ฆฌ ๋์ผ๋ก ๋ค์ด์ค๋ ๋น์ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ปํฉ๋๋ค.
๊ฝค๋ ๋ฐ์ง๊ฑฐ๋ฆฌ๋ ๊ฐ์ท์ด๋, ๋๋์ ๋ฑ ์ฌ๋ฌ ๋ฌผ์ฒด์์ ๋ฐ๊ฒฌํ ์ ์๋ ํํ ํ
ํฌ๋์
๋๋ค.
( 7 / 13 )
์ ๋ฐ์ฌ ๋ ๋ฐ์ฌ
Specular
- 9. ๊ฒ์ ์์์์ ๋น #7
์ด๋ ๊ฒ ๋ ๊ฐ์ง ํํ๋ง์ผ๋ก Material(์ฌ์ง) ํํ์ ์์ ์์ฌ๋ก ํํํ ์ ์๋ ๊ฒ์ด์ฃ . ์ ์ผ ๋ง์ด ์ฐ์ด๊ธฐ๋ ํ๊ณ ์.
๊ทธ๋ฆฌ๊ณ ๊ณ ๋ง๊ฒ๋ ์ด๋ฐ ์์ด๋๋ ์ ๋ํฐ ์์ฒด์ ์ผ๋ก ์ง์ํ์ฌ ๋ง์๋๋ก ์ต์
์กฐ์ ์ ํ ์ ์์ต๋๋ค.
โAlbedoโ์์ ํ
์ค์ณ๋ฅผ ๋ฃ์ผ๋ฉด ๋งตํ์ด ๋๋ ์๊ฐ Diffuse๊ฐ ๋ฐ๋ํ์ฌ ๋ช
์์ด ์๊ธฐ๊ณ ,
โSpecularโ๋ ์์ฒด์ ์ธ ์กฐ์ ๋ฐ๊ฐ ์์ด์ ๋๋๊ทธ ๋ช ๋ฒ์ผ๋ก ๊ดํ์ ๋ผ ์ ์๋ ์ข์ ๊ธฐ๋ฅ์ด์ฃ .
๋ฌผ๋ก ์ด ๊ธฐ๋ฅ๋ค์ ๊ฐ์ฒด ์ปดํฌ๋ํธ๋ก ์กด์ฌํ๋ โMaterialโ์์ ํ์ค ์ ์์ต๋๋ค. ์์ด๋์ ๊ณต์๊ด๊ณ๋๊น์.
( 8 / 13 )
# Diffuse # Specular # Diffuse + Specular
+ =
# ์์ด๋ ์กฐ์ ์ต์
- 10. ๊ฒ์ ์์์์ ๋น #8
๋ง์ง๋ง์ผ๋ก โNormal Mapโ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ์ผ์ข
์ ๋ ์์์ผ๋ก ๋ถ๋ฆฌ๋ ํ
ํฌ๋์ธ๋ฐ
์ด๋ โAlbedoโ์์ ํ
์คํธ๋ฅผ ์์ฐ๋ฏ์ด โNormal Mapโ๋ ํ
์ค์ณ๋ฅผ ๋ฐ๊ณ ๊ฐ์ฒด์ ์์ฐ๋ ์ญํ ์ ์ํํฉ๋๋ค.
๊ทผ๋ฐ ํ
์ค์ณ๊ฐ ํธ๋ฅด๋ฉ๋ฉ ํ์ง ์๋์? ์๊น ๊ฐ์ฒด์ ํฝ์
๋ง๋ค ๋ด์ ๊ฐ ๊ตฌํด์ ์์ ํํํ๋ ๊ฒ์ ๋ณด์
จ๋์?
๋ง์ต๋๋ค. ์ ์์์ง๋ ๋์์ ๊ฐ์ฒด ํฝ์
์ Normal Vecter๋ฅผ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ Offset Texture ์
๋๋ค.
๋ฌผ๋ก ๋ณ๊ฒฝ ์ ๋ณด๋ R(x์ถ), G(y์ถ), B(z์ถ)์ผ๋ก ํํ๋์ด ์ ๋ฐ ์์์ ํ
์ค์ณ๊ฐ ๋์ต๋๋ค.
( 9 / 13 )
# Normal Map
- 11. ๊ฒ์ ์์์์ ๋น #9
์ดํด๋ฅผ ๋๊ธฐ ์ํ์ฌ ์ ๋ํฐ์์ ์ง์ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
Plane Object๋ฅผ ์ด์ฉํ์ฌ A4์ฉ์ง๊ฐ์ ํ
์ค์ณ๋ฅผ ๋ฃ๊ณ , ๊ตฌ๊ธ๋ง์ ํตํ์ฌ ์ข
์ด ์ง๊ฐ์ Normap Map์ ๊ตฌํฉ๋๋ค.
์ดํ ์ข
์ด ๊ฐ์ฒด์ Material Component์์ โNormal Mapโ์ ํ
์ค์ณ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ํํํ๊ฒ ๋์์๋ ํฝ์
๊ณผ ํฝ์
์ Normal Vecter ๋ค์ด Normal Map์ ํตํด Normal Vecter ๋ฒกํฐ๊ฐ ํ๊ฒ ๋๊ณ
Diffuse ์์ด๋ ๋ด์ ๊ณผ์ ์์ ์ข
์ด๊ฐ ๊ตฌ๊ฒจ์ง ์์์ ๋ง๋ค์ด๋ฒ๋ฆฝ๋๋ค.
( 10 / 13 )
ADD# BEFORE # AFTER
- 12. UV?
๋จธ๋ฆฌ ์ํ ์ด๋ก ์ผ๋ก ์ ์ ์ด ๊ฒธ ๋ค๋ฅธ ๊ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ ๋ํฐ ์์์์ ๊ฐ์ฒด๋ฅผ โAlbedoโ๋ฅผ ํตํด ํ
์ค์ณ๋ฅผ ์์ธ ๋ ๋ง๋ฒ ๋ณด๋ฐ๋ฆฌ ์์ฐ๋ฏ์ด ์์์ง๋ ๊ฒ์ด ์๋๋๋ค.
ํ์ธํธ(Texture)๋ฅผ ๋ค๊ณ ์๊ณ , ์ค๊ณ๋(UV)๋ฅผ ๋ณด๋ฉด์ ์ ํํ๊ฒ ์น ํ๋ ๊ฒ์ด์ฃ .
์์ธํ ํํ์ด์ง๋ง UV ์๋ฆฌ๋ 3D ๋ชจ๋ธ์ ์กฐ๊ฐ๋ด์ด 2D ์ขํ๋ก ๊ฐ์ฃฝ์ ํผ์ณ ์ค๊ณ๋๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ์ด์ฃ .
๊ทธ๋ฆฌ๊ณ โUVโ๋ผ๋ ํํ์ โXYโ์ ํท๊ฐ๋ฆฌ์ง ์๋๋ก ๋จ์ํ ์ ๋ ๊ฒ ํํ ๋ ๊ฒ์
๋๋ค.
( 11 / 13 )
- 13. ์ ๊ณผ ์ ๊ณผ ๋ฉด #1
์์ด๋๋ ๋จ์ํ ํฝ์
์ ๋ช
์๋ง ์กฐ์ ํ ์ ์๋ ๊ฒ์ด ์๋๋๋ค.
3D ๋ฌผ์ฒด ์์์์ ์ (Vertex), ์ (Edge), ๋ฉด(Polygon)์ ์กฐ์๋ ๊ฐ๋ฅํฉ๋๋ค.
์ ๋ํฐ์์์ โTerrainโ ๊ฐ์ฒด๋ ๋ถ์ผ๋ก ์งํ์ ์กฐ์ ํ ๋ ๋ฉด์ ๋ถ์ด์๋ ์๋ง์ Vertex๋ฅผ ์ด์ฉํด ์งํ์ ๋ง๋ค์ฃ .
๋ํ DX11๋ก ๋์ด์ค๋ฉด์ ํํํ๋ ์งํ์ ์ค์ ๋ก ์
์ฒด๊ฐ ์๊ฒ Mesh ์์ฒด๋ฅผ ๋ณํํ๊ธฐ๋ ํฉ๋๋ค.
( 12 / 13 )
# ํฐ๋ ์ธ(Terrain) # DX11 Tessellation
- 14. ์ ๊ณผ ์ ๊ณผ ๋ฉด #2
์ค์ ๋ก ์ฌ๋์ ์์ฃผ ๊ฐ๊น์ด์์ ๋ณผ ๋๋ ๋ชจ๊ณต๊น์ง ๋๋ ทํ๊ฒ ๋ณผ ์ ์์ง๋ง
์์ฃผ ๋จผ ๊ฑฐ๋ฆฌ์์ ๋ณด๊ฒ๋๋ฉด ํ์ฒด์กฐ์ฐจ ์์๋ณด๊ธฐ ํ๋ค๊ฒ ๋ฉ๋๋ค.
์ด๋ ์ ๋ํฐ์์๋ ์ ์ฉ๋์ด ์๋๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ ์๋ก ํด๋น ๊ฐ์ฒด์ ํด๋ฆฌ๊ณค์ด ๊ฐ์๋์ด ์ต์ ํ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๋ํ LOD ๊ธฐ๋ฅ ๋ํ ์์ด๋ ๋ด๋ถ ์ฝ๋์์ ์ซ์๋ง ๋ณ๊ฒฝํ๋ฉด ์ฝ๊ฒ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
( 13 / 13 )
# LOD (Level Of Detail) # ์์ด๋ ์ฝ๋์ LOD ์๋ ์กฐ์