๐ ํ์ต ๋ ์ง ์ธ์ฆ(์ฃผ์ ์ ๋ฌด๊ด)
- C++ ์ฝ๋์นดํ
- C++์ Unreal Engine์ผ๋ก 3D ๊ฒ์ ๊ฐ๋ฐ ๊ฐ์ ์๊ฐ
- TA ๊ฐ์ ์๊ฐ
- ์ธ๋ฆฌ์ผ C++ ์ธ๋ฒคํ ๋ฆฌ ์์คํ (๊ฐ์ธ์ )
๋จธํฐ๋ฆฌ์ผ(Materials)๋ ๋ฌผ์ฒด์ ํ๋ฉด์ ์, ์ง๊ฐ ๋ฑ๋ฑ์ ๊ฒฐ์ ํ๋ ์ฌ์ง์ ์๋ฏธํ๋ค.
์ธ๋ฆฌ์ผ์์ Material์ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธํ๋ฉด์ ๋ณผ ์ ์๋ค.

Material Graph๋ ๋ธ๋ฃจํ๋ฆฐํธ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Details ํจ๋์ ์ฌ๋ฌ ์์ฑ๋ค์ด ์ ์๋์ด ์๋๋ฐ, ์ ์ผ ๋์ฌ๊ฒจ๋ด์ผ ํ ๊ฒ์ Blend Mode์ด๋ค.
Blend Mode๋ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ง ์์ง๋ง, ์ฃผ๋ก ๋ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ๋ค.
์ฃผ๋ก ์ฌ์ฉํ๋ Material ๋ ธ๋์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Material ๋ ธ๋์ ๋ชจ๋ ์์ฑ์ float(0 ~ 1) ๊ฐ์ ์ง๋๋ฉฐ, (1, 2, 3, 4) + ๋ง์ฐ์ค ์ขํด๋ฆญ์ผ๋ก ๊ฐ์ ์ ์ํ๋ ๋ ธ๋๋ค์ ์์ฑํ ์ ์๋ค.

ํด๋น ๋
ธ๋๋ค์ ์ด์ฉํด์, ๋ค์๊ณผ ๊ฐ์ด ์ด๋ก์์ผ๋ก ๋ฐ๊ดํ๋ ๋ฌผ์ฒด๋ฅผ ์ ์ํ ์ ์๋ค.
์ด๋ Emissive Color๋ง ๋ค๋ฅธ ๋
ธ๋์ ๋ฌ๋ฆฌ 1์ ์ด๊ณผํ๋ ๊ฐ์ ๋ฃ์ ์ ์๋๋ฐ, ๊ฐ์ด ๋์ ์๋ก ๋ฐ๊ด ์์ค์ด ์ฌ๋ผ๊ฐ๋ค.

์ด๋ฌํ ๊ฐ์ ํํํ๋ ๋ ธ๋๋ค์ ์ฐํด๋ฆญ -> Convert To Parameters๋ฅผ ํด๋ฆญํด์ ๋ณ์๋ก๋ ๊ด๋ฆฌํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ Blend Mode๋ฅผ Translucent (๋ฐํฌ๋ช
)๋ก ์ค์ ํ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์์ฑ(Metalic, Roughness ๋ฑ)์ด ๋นํ์ฑํ๋๋ ๋์ Opacity(ํฌ๋ช
๊ฐ)์ ์ ํ ์ ์๋ค.

Linear Interpolate์ ์ฝ์๋ก, ์ด๋ฆ ๊ทธ๋๋ก ์ ํ ๋ณด๊ฐ์ด๋ผ๋ ๋ป์ด๋ค.
๋ง์ฝ A -> B๋ก ์ ํ ๋ณด๊ฐ์ ํ๊ณ , 0.6์ Alpha๊ฐ ์์ผ๋ฉด, A๋ 40%, B๋ 60%์ ์ํฅ์ ๋ฐ๋๋ก ํ๋ค๋ ์๋ฏธ์ด๋ค.
L + ๋ง์ฐ์ค ์ขํด๋ฆญ์ผ๋ก Lerp ๋
ธ๋๋ฅผ ์์ฑํ ์ ์๊ณ , ํฐ์(A) -> ๋นจ๊ฐ์(B)๋ก 0.8์ ์ ํ ๋ณด๊ฐ์ ํจ์ผ๋ก์จ ์ฃผํฉ์ ๋๋์ ์์์ ๋ผ ์ ์๋ค.

๋ํ Lerp๋ฅผ ์ด์ฉํด์ ๋ค์๊ณผ ๊ฐ์ ์์
๋ ํ ์ ์๋ค.

์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด, ํ
์ค์ฒ์ ํฝ์
์์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก (0, 1)์ ์ ํ ๋ณด๊ฐ์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๋ฐ์ฌ์ ์ ๋๋ฅผ ์กฐ์ ํ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ ์ค์ฒ์์ ํฐ์์ด ์๋ฆฌํ๊ณ ์๋ ๋ถ๋ถ์ 0์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์ด ์ด๋ฅผ Alpha๋ก ๋๊ฒจ์ 0(๋งค๋๋ฌ์ด)์ ๊ฐ๊น์ด ํ๋ฉด์ ํ์ฑํ๊ณ , ๊ฒ์์์ด ์๋ฆฌํ๊ณ ์๋ ๋ถ๋ถ์ 1์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์ 1(๊ฑฐ์น)์ ๊ฐ๊น์ด ํ๋ฉด์ ํ์ฑํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
UV ์ขํ๊ณ๋ 2D ์ด๋ฏธ์ง๋ฅผ 3D ๋ชจ๋ธ์ ์ด์ํ๊ธฐ ์ํ ์ขํ๊ณ์ด๋ค.
์ขํ๊ณ๋ ๊ทธ๋ํฝ API์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง, ์ธ๋ฆฌ์ผ ๊ธฐ์ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ค์ ๋ฐ๋ฅธ๋ค.

์ฌ๊ธฐ์ U, V ๋ํ 0 ~ 1 ์ฌ์ด์ ๊ฐ์ ํํํ๋ฉฐ, U๋ X, V๋ Y์ ๋์๋๋ค.
์ด๋ ์์ ๋ด์ฉ๊ณผ ์ด์ด๋ณด๋ฉด, U๋ ๊ฐ์ด ํด ์๋ก ๋นจ๊ฐ์์ด ๋๊ณ V๋ ๊ฐ์ด ํด ์๋ก ์ด๋ก์์ด ๋๋ค.
UV Mapping์ 3D์ ๋ชจ๋ธ์ 2D ์ด๋ฏธ์ง๋ก ํผ์ณ๋์ ๋, 2D์ด๋ฏธ์ง๊ฐ 3D ๋ชจ๋ธ์ ์ด๋์ ํด๋น๋๋ ์ง๋ฅผ ์ถ์ ํ๊ธฐ ์ํด Vertex๋ฅผ ๋งค์นญํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
๋จธํฐ๋ฆฌ์ผ ๊ทธ๋ํ์์ ์ฐํด๋ฆญ ํ ํ Texture Coordinate๋ฅผ ํด๋ฆญํ๋ฉด ๋
ธ๋๊ฐ ํ์ฑ๋๊ณ ํด๋น ๋
ธ๋๋ก U, V ๊ฐ์ ์กฐ์ ํ ์ ์๋ค.
์ด๋ฅผ Texture Sample ๋
ธ๋์ ์ด์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.

๋ฌผ๋ก , ์ด์ ๊ณผ ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์๋ค. ์๋ํ๋ฉด, Texture Sample์ ๊ธฐ๋ณธ์ ์ผ๋ก U, V๊ฐ ๊ฐ๊ฐ 1๋ก ๋งคํ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ, U, V๋ฅผ 1์ ์ด๊ณผํ๋ ๊ฐ์ ๋ฃ๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น?

์ ์ฌ์ง์ ๋ณด๋ฉด ํํ๊ฐ ๋ค๋ฅธ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์ด๋ GPU๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก Wrap ๋ชจ๋๋ฅผ ํ์ฑํํ๊ธฐ ๋๋ฌธ์ 1์ ์ด๊ณผํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฏธ์ง๋ฅผ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.

GPU ์์ฒด์ ํ์ค์ด๊ธฐ ๋๋ฌธ์ DirectX, OpenGL ๋ฑ๋ฑ ๋ชจ๋ ๊ทธ๋ํฝ API๊ฐ ๋์ผํ ๋ก์ง์ ์ง๋๋ค.
1๋ณด๋ค ์์ ๊ฐ์ ํ๋ค๋ฉด, ๊ทธ๋งํผ ์ด๋ฏธ์ง๊ฐ ์๋ฆฌ๋ ๋ชจ์ต๋ ํ์ธํ ์ ์๋ค.

Panner๋ ํ
์ค์ฒ ์ด๋ฏธ์ง๊ฐ ํน์ ๋ฐฉํฅ์ผ๋ก ์คํฌ๋กค ๋๋๋ก ๋ง๋ค์ด์ฃผ๋ ๋
ธ๋์ด๋ค.
์ค๋ฅธ์ชฝ์ผ๋ก ์คํฌ๋กค ๋๋ ๊ธฐ๋ฅ์ ๊ฐ๋จํ๊ฒ ํํํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.

์ฌ๊ธฐ์ (-1, 0)์ ํ๋๋ฐ ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ง๋๊ฐ์ง? ๋ผ๊ณ ํ ์ ์๋๋ฐ, ์นด๋ฉ๋ผ ์์ ๊ธฐ์ค์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์๋ฅผ ๋ค์ด ๊ธฐ์ฐจ๋ฅผ ํ๊ณ ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฉด ๋ณด์ฌ์ง๋ ํ๊ฒฝ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋๋๋ฏ์ด ์ด๊ฒ ๋ํ ๋์ผํ ๋ก์ง์ผ๋ก ๋ณด๋ฉด ๋๋ค.
๋จธํฐ๋ฆฌ์ผ์ ์ฌ์ฉ๋ง ํด๋ณด์์ง, ์ ์ ๊ตฌํ์ ํด๋ณธ ์ ์ ์์ด์ ์์ํ ๊ฐ๋
๋ค์ด ๋ง์ด ๋์๋ค.
๊ทธ๋๋ ๋ฐฐ์๊ฐ๋ ๊ณผ์ ๋ค์ด ๋งค์ฐ ํฅ๋ฏธ๋ก์ ๊ธฐ ๋๋ฌธ์ ์์ผ๋ก๋ ๊ณ์ํด์ TA ๋ด์ฉ์ ํ์ตํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.