์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๊ทธ๋ํฝ์ค
- ์ญํ
- Shader
- ๋ฒกํฐ
- ์ง๋ธ๋ฌ์ฌ
- opengles
- zbrush
- CG
- ๊ฒ์๊ฐ๋ฐ
- ๊ฒ์์์ง
- ๊ฒ์์ํ
- ๋ํ์
- 3d
- opengl
- Modeling
- ๋ฆฌ๊น
- ๊ฒ์
- ์ค๋ง์ผ๊ฒ์ดํธ์ฅํํ
- ๊ทธ๋ํฝ์คAPI
- ๋ธ๋๋
- Unity
- ์ ๋ํฐ
- ์ปดํจํฐ๊ทธ๋ํฝ์ค
- ์์
- game
- rendering
- Blender
- ๋ชจ๋ธ๋ง
- ์ค๋ง์ผ๊ฒ์ดํธ
- smilegate
- Today
- Total
๐ฅํธ์์์ GamLog
[UNITY] ์์ธ์ ์ก : ์์ด๋ ๊ธฐ์ด ๋ณธ๋ฌธ
์ ๋ํฐ ๊ณต์ ์ ํ๋ธ์ ์์ด๋ ๊ธฐ์ด ๋ด์ฉ์ ๋ณด๋ฉฐ ๊ณต๋ถ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด์๋ค.
ํด๋น ๊ธ์ 0:00 ~ 36:00 (RenderingLoop) ๊น์ง์ ๋ด์ฉ์ ๋ด๊ณ ์๋ค.
๐ช ๋ชฉ์ฐจ
- ์์ด๋์ ์ ์
- Graphics Api๋?
- Buffer
- Rendering Loop
์์ด๋์ ์ ์

: ๋จผ์ ์ฃผ์ ์ด์ธ ์์ด๋์ ์ ์์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค. ์ด ๋ถ๋ถ์ chat GPT๋ฅผ ํตํด ๊ตฌํ ์ ์๋ค.
Shader(์
ฐ์ด๋)๋ ์ปดํจํฐ ๊ทธ๋ํฝ์ค์์ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ๋ฌผ์ฒด์ ํ๋ฉด์ ๊ทธ๋ฆด ๋ ์์, ๋น, ๊ทธ๋ฆผ์, ๋ฐ์ฌ ๋ฑ ๋ค์ํ ์๊ฐ์ ํจ๊ณผ๋ฅผ ์์ฑํ๊ณ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์์ด๋๋ ์ฃผ๋ก ๊ทธ๋ํฝ ์นด๋(GPU)์์ ์คํ๋๋ฉฐ, 3D ๋ชจ๋ธ์ ๋ ๋๋ง ๊ณผ์ ์์ ํ์ํ ๊ณ์ฐ์ ์ํํ๋ค.
๋ฌผ์ฒด๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆด ๋, ๊ฐ ํฝ์
์ ์ด๋ค ์์์ ์ ์ฉํ ์ง, ์ด๋ป๊ฒ ์กฐ๋ช
ํจ๊ณผ๋ฅผ ์๋ฎฌ๋ ์ด์
ํ ์ง, ๊ทธ๋ฆผ์์ ๋ฐ์ฌ ํจ๊ณผ๋ฅผ ์ด๋ป๊ฒ ํํํ ์ง ๋ฑ์ ๊ฒฐ์ ํ๋ ๋ฐ ์์ด๋๊ฐ ์ฌ์ฉ๋๋ค. ์์ด๋๋ ํฌ๊ฒ ๋๋ ๋ณด์๋ฉด ์๋์ ๊ฐ๋ค.
Vertex Shader (๋ฒํ
์ค ์์ด๋):
์ด ์์ด๋๋ 3D ๋ชจ๋ธ์ ๋ฒํ
์ค(๊ผญ์ง์ )๋ฅผ ๋ณํํ๊ณ , ๋ณํํ์ฌ ํ๋ฉด์ ๋ฐฐ์นํ๋ ์ญํ ์ ํ๋ค. ๋ชจ๋ธ์ ํฌ๊ธฐ, ํ์ , ์ด๋ ๋ฑ์ ์กฐ์ ํ๋ ๋ฑ์ ์์
์ ์ํํ๋ค.
Fragment Shader (ํ๋๊ทธ๋จผํธ ์์ด๋):
์ด ์์ด๋๋ ๋ฒํ
์ค ์์ด๋๋ก๋ถํฐ ์ป์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํฝ์
์ ์์์ ๊ฒฐ์ ํ๋ค. ์กฐ๋ช
, ๊ทธ๋ฆผ์, ๋ฐ์ฌ ๋ฑ์ ์๊ฐ์ ํจ๊ณผ๋ฅผ ๊ณ์ฐํ๊ณ ํฝ์
์ ์ต์ข
์์์ ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ค.
Geometry Shader (์ง์ค๋ฉํธ๋ฆฌ ์์ด๋):
์ด ์์ด๋๋ ๋ฒํ
์ค์ ํ๋๊ทธ๋จผํธ ์ฌ์ด์ ๊ธฐํํ์ ๋ณํ์ ์ฒ๋ฆฌํ๋ค. ๊ธฐํํ์ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ญ์ , ์์ ํ๊ฑฐ๋ ๋ณต์กํ ํํ์ ๋ฌผ์ฒด๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ ์ ์๋ค.
Compute Shader (์ปดํจํธ ์์ด๋):
์ด ์์ด๋๋ ๋ณ๋ ฌ ๊ณ์ฐ์ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์ผ๋ฐ์ ์ธ ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ด์ธ์๋ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์
, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ์ ์์
์ ํ์ฉ๋๋ค.
Unity์ ๊ฐ์ ๊ฒ์ ์์ง์์๋ ์์ด๋๋ฅผ ์๊ฐ์ ํจ๊ณผ๋ฅผ ์กฐ์ ํ๊ณ ์ปจํธ๋กคํ๋ ๋ฐ ์ฌ์ฉํ๋ค. ๊ฐ๋ฐ์๋ ShaderLab ๋ฑ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ด๋๋ฅผ ์ ์ํ๊ณ , ์ด๋ฅผ ๋ฌผ์ฒด์ ์ฌ์ง(Material)์ ์ฐ๊ฒฐํ์ฌ ์ํ๋ ์๊ฐ์ ํจ๊ณผ๋ฅผ ๊ตฌํํ ์ ์๋ค.
๊ทธ๋ผ ์ฐ๋ฆฌ๋ ๋์ฒด ์ด๋ป๊ฒ shader๋ฅผ ๊ฐ๊ณ ๊ฐ ํ๋ซํผ์์์ ์๊ฐ์ ํจ๊ณผ๋ฅผ ๊ตฌํํ ์ ์๋ ๊ฑธ๊น?
์ฐ๋ฆฌ๊ฐ ์์ด๋ ์ฝ๋ ๋๋ ์ธ์คํํฐ๋ฅผ ํตํด ์ ๋ํฐ์ ๊ทธ๋ํฝ์ ๋ณํ์ํจ๋ค. -> ์ ๋ํฐ๋ ํด๋น ํ๋ซํผ์ ๊ทธ๋ํฝ์ค Api์์ ์คํ๊ฐ๋ฅํ ํ์์ผ๋ก ์ปดํ์ผ ํ๋ค. -> ์ด๋ ๊ฒ ์ปดํ์ผ๋ ์ฝ๋๋ ๊ทธ๋ํฝ ์นด๋์์ ์คํ๋๊ณ ์๊ฐ์ ํจ๊ณผ๋ฅผ ์์ฑํ๋ค.
Graphics Api๋?

: ์ ๋ํฐ์์๋ ์๋๋ก์ด๋, ๋งฅ, ios, PC ๋ฑโฆ ๋ฉํฐ ํ๋ซํผ์ ์ง์ํ๊ณ ์๋ค.
https://docs.unity3d.com/kr/2021.3/Manual/GraphicsAPIs.html [ ์ ๋ํฐ ๊ณต์๋ฌธ์ ์ฐธ๊ณ ]
๊ฐ์๋ ๋ค์ํ๊ทธ๋ํฝ ์นด๋๋ฅผ์ฌ์ํ๊ณ ์๋๋ฐ ๊ฐ๋ฐ์๋ ์ด ์ฌ๋ฌ ๊ทธ๋ํฝ ์นฉ์
์ ๋์ํ๋ค๋ ๊ฒ์ ์ด๋ ค์ด ์ผ์ด๋ค.
์ ๋ํฐ๋ ์ด๋ฅผ ์ํด OpenGL, ๋ค์ด๋ ํธX ๋ฑ Graphics Api๋ฅผ ์ง์ํ์ฌ ๋ฉํฐ ํ๋ซํผ์ ๋์ํ ์ ์๋๋ก ํ๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ Graphics Api์ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๊ทธ๋ํฝ ์นด๋์ ๋ง์ด ์ ๊ฒฝ์ฐ์ง ์๊ณ ๊ฐ๋ฐํ ์ ์๋ค.
*๋ณดํต์ Auto Graphics Api๋ฅผ ์ฌ์ฉํ์ง๋ง ์ด ์ฒดํฌ๋ฐ์ค๋ฅผ ํด์ ํ๋ฉด ์ํ๋ Graphics Api๋ฅผ ์ฌ์ฉํ ์ ์๋ค.

Data to Mesh
: Gpu๋ ์ด๋ป๊ฒ?
์ฌ๊ธฐ๊น์ง๋ ์ฐ๋ฆฌ๊ฐ ์์ด๋๋ฅผ ํตํด ๊ตฌํํ ๊ทธ๋ํฝ์ ๊ฐ ์ปดํจํฐ์์ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ ๋ํด ์์๋ณด์๋ค.

์ด์ ๋ ๊ทธ๋ํฝ ๊ตฌํ์ ์์ด์ ๋ ๋ํ
์ผํ ๋ถ๋ถ์ ์์๋ณด๋ ค๊ณ ํ๋ค.
3D ๋ชจ๋ธ๋ง์ ๊ฒฐ๊ตญ ์ -> ์ -> ๋ฉด ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๊ณ ๊ฒฐ๊ตญ์ ์ค์ ์์ ๊ฐ ๊ฐ๋งํผ ๋จ์ด์ ธ์๋ ์ ์ ๋ค์ ์งํฉ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋ฐ์ดํฐ์ ์งํฉ์ด ์ฐ๋ฆฌ์๊ฒ Mesh๋ก ๋ณด์ฌ์ง๊ธฐ๊น์ง์ ๊ณผ์ ์ ์์ ๋ณผ ํ์๊ฐ ์๋ค.
Mesh๋ ํํ๊ฐ ์๋ ๊ฒ์ผ๋ก ์ธ์ง๋์ง๋ง ๊ฒฐ๊ตญ ๊ทธ๋ํฝ ์นด๋์์๋ ๋ฐ์ดํฐ๋ก ์ด๋ฃจ์ด์ ธ์๋๋ฐ,
Mesh๋ฅผ GPU๊ฐ ์ฝ๊ณ ํํํ๋ [Buffer] ๊ณผ์ ์ ์๋ ์ด๋ฏธ์ง์ ๊ฐ๋ค.

ํด๋น ๊ฐ์๋ฅผ ๋ณด๋ฉฐ ์ ๋ฆฌํด๋ณธ ๋ด์ฉ์ด๋ค. ์ดํดํ๋๋ก ์ ๋ฆฌํ ๊ฒ์ด๋ผ ์ฉ์ด์ฌ์ฉ์ด ์ ์ ํ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง
๊ฐ ๊ณผ์ ๊ณผ ์์๋ฅผ ๊ฐ๋ตํ๊ฒ๋๋ง ์ ๋ฆฌํด๋ณด์๋ค.
Rendering Loop
1๏ธโฃUpdate

: ์ฝํ
์ธ ๊ตฌํ์ ์ํ ๋ชจ๋ ๋ก์ง์ ์
๋ฐ์ดํธ
ex) ๋ก์ง, ์ ๋๋ฉ์ด์
๋ฑ,, ๋ชจ๋ ์
๋ ฅ๊ฐ
2๏ธโฃCull

: ๋ฌผ์ฒด๋ฅผ ๋ ๋๋ง ํ๋๋ฐ ๋ถํ์ํ ๋ถ๋ถ์ ์ ๊ฑฐํ๊ณ View Frustum์ด๋ผ๋ ๊ฐ์์ ๊ณต๊ฐ์ ํ์ฉํด ํ๋ฉด์ ๋ณด์ด๋ ์์ญ์ ์ ์ํ ๋ค ํ์ํ ๋ถ๋ถ๋ง ๋ ๋๋ง ํ ์ ์๋๋ก ํด ์ฑ๋ฅ์ ๊ฐ์ ์ํต๋๋ค.
- Frustum Culling
- Occulusion Culling
3๏ธโฃScene Render

: ์ค๋ธ์ ํธ๋ค์ Vertext Shader -> Fragment Shader ๊ณผ์ ์ ๊ฑฐ์ณ ๋ ๋๋ง ํ๋ค.
์ค๋ธ์ ํธ๊ฐ ์ฌ๋ฌ๊ฐ๋ผ๋ฉด Draw Call์ ํตํด ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ๊ฐ Draw Call์ GPU์์ ์ฒ๋ฆฌ๋ ๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํด ์ฑ๋ฅ์ ํ๊ฐ ์ผ์ด๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ ๊ฐ๋ฅํ ๋ชจ์์ ํ๋์ ๋๋ก์ฐ ์ฝ๋ก ๊ทธ๋ฆฌ๋๋ก ํ๋ ๋ฑ ์ต์ํ์ ๋๋ก์ฐ ์ฝ๋ก ํจ์จ์ ์ธ ๋ ๋๋ง์ ํ ์ ์๋๋ก ๋
ธ๋ ฅํด์ผํ๋ค.
4๏ธโฃ Post Processing

5๏ธโฃ Double ( or Triple ) Buffer

: ์ค๋ธ์ ํธ๋ฅผ ํ๋ํ๋ ๊ทธ๋ฆด ๋๋ง๋ค ํ๋ฉด์ ๋ฐ๋ก ์ด์ฃผ๋ ๊ฒ์ด ์๋๋ผ, Back Buffer์์ ์ค๋ธ์ ํธ ํ๋ํ๋๋ฅผ ๋จผ์ ๊ทธ๋ฆฐ ๋ค ํ ํ๋ ์์ด ๋๋๋ฉด Front Buffer๋ก ์ฌ๋ ค์ค๋ค.