1. ์ต์ ํ
๋์ ๋ ๋๋ง ๋ถํ์ CPU ๋ณ๋ชฉ ํ์์ ๊ฒ์์ ํ๋ ์ ์๋๋ฅผ ๋จ์ด๋จ๋ฆฌ๊ณ ๊ฒ์ ํ๋ ์ด์ ์ํฅ์ ์ค ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ต์ ํ๋ ํ์์ด๋ค. ํนํ ์ต์ ํ๋ ํ ๋ฒ์ ๋๋๋ ์์ ์ด ์๋๊ธฐ ๋๋ฌธ์ ์์ , ํ ์คํธ, ๊ฐ์ ์ ๋ฐ๋ณต์ด ์ค์ํ๋ค.
2. ๋ ๋๋ง ์ต์ ํ
๋ ๋๋ง(rendering)์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์ด์ฉํด 2D ๋๋ 3D ๋ชจ๋ธ์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ํ๋ก์ธ์ค์ด๋ค.
- Culling
- LOD
- Nanite
- Shader Complexity View๋ฅผ ํตํด ๋จธํฐ๋ฆฌ์ผ ๋ณต์ก๋ ํ์ธ
- ํ์ํ์ง ์์ ๊ทธ๋ฆผ์ ์ ๊ฑฐ ๋ฐ ์ค์๊ฐ ๊ทธ๋ฆผ์ ์ต์ํ
1) Culling
๋ ๋๋ง ์ต์ ํ ๊ธฐ๋ฒ ์ค ๊ฐ์ฅ ๋ํ๋๋ Culling์ ๋ํด ์์๋ณด์. Culling์ ๊ตณ์ด ๋ ๋๋ง ํ์ง ์์๋ ๋๋ค๊ณ ํ๋จ๋ ์ค๋ธ์ ํธ๋ค์ ์ ์ธํ๋ ๊ฒ์ ๋งํ๋ค.
์ธ๋ฆฌ์ผ์์์ Culling์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
- Distance Culling
- ์กํฐ์ ํ๋ ์ด์ด ์นด๋ฉ๋ผ ์ฌ์ด์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ์ค๋ธ์ ํธ๋ฅผ Culling ์ํค๋ ๋ฐฉ์์ด๋ค
- LOD์ Cull Distance Volume์ ์ฌ์ฉํด์ ๊ฐ๋ฅํ๋ค.
- View Frustum Culling
- ์นด๋ฉ๋ผ ์ ๋์ฒด(View Frustum)์์ ๋ฒ์ด๋ ์์ญ์ ์๋ ์ค๋ธ์ ํธ๋ฅผ Culling ์ํค๋ ๋ฐฉ์์ด๋ค.
- ์ธ๋ฆฌ์ผ ์์ง์์ ๊ธฐ๋ณธ ์ง์ํ๋ค.
- Precomputed Visibility
- ์์ง์ด์ง ์๋ ์กํฐ๋ค์ ๋์์ผ๋ก Shadow Casting Surface ์์ Visibility State ์ ๋ณด๋ฅผ ์ ์ฅํด ๋๋ ๋ฐฉ์์ด๋ค.
- ๋ผ์ดํ ๋น๋ ๋์ค์ visibility ์ ๋ณด๋ฅผ ์คํ๋ผ์ธ์์ ์์ฑํ๋ฉฐ, ํฌ์ง ์์ ๋ ๋ฒจ๊ณผ ์ ์ฌ์, ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ ์ ํฉํ๋ค.
- Dynamic Occlusion
- ์ค์๊ฐ์ผ๋ก ๋ฌผ์ฒด๋ฅผ ๊ฐ๋ฆฌ๋ ์ค๋ธ์ ํธ(Occluder)์ ๊ฐ๋ ค์ง๋ ์ค๋ธ์ ํธ(Occludee)๋ฅผ ํ๋จํด์ Occludee๋ฅผ Culling ์ํค๋ ๋ฐฉ์์ด๋ค.

2) Occlusion Culling
Occlusion Culling์ ์นด๋ฉ๋ผ์ ๋ณด์ด์ง ์๋ ๋ฌผ์ฒด๋ฅผ ๋ ๋๋ง ํ์ง ์๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
- Hierarchical Z-Buffer Occlusion Culling ๋ฐฉ์์ ์ฌ์ฉํ์ฌ, ํ๋ฉด์ Z ๋ฒํผ๋ก ๋๋๊ณ ๊ฐ ํฝ์ ์ ๊ฐ๋ ค์ง ๋ฌผ์ฒด๋ฅผ ๊ฐ์ง ํ ๊ฐ๋ ค์ง ๋ฌผ์ฒด๋ฅผ ๋ ๋๋ง ํ์ด๋ธ๋ผ์ธ์์ ์ ์ธํ๋ค.
- ๋ฌผ์ฒด์ ๋ฐ์ด๋ ์ค์ ์ด ์ค์ํ๋ค. ์ด ์ค์ ์ด ๋ถ์ ํํ๋ฉด ํ๋ฆฌ๋ทฐ์์ ์ค๋ธ์ ํธ๊ฐ ๋ณด์ด์ง ์๊ฑฐ๋ ์ฑ๋ฅ์ด ๋๋น ์ง๋ ๋ฑ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
- ํ๋ก์ ํธ ์ธํ ์์ Occlusion Culling ํ์ฑํ ์ค์ ์ ํ ์ ์๋ค.
Occlusion Culling์ ์ ์ , ๋์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์๋ค.
- Static Occlusion
- ์ ์ ์ธ ํ๊ฒฝ
- Precomputed Visibility Volumes๋ฅผ ํ์ฉํด, ๋ฏธ๋ฆฌ ๊ณ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ๋ฆผ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
- Dynamic Occlusion
- ์ค์๊ฐ์ผ๋ก ๋ณํ๋ ๋์ ์ธ ํ๊ฒฝ
- ์นด๋ฉ๋ผ์ ์ค๋ธ์ ํธ์ ์๋์ ์ธ ์์น์ ์์ง์์ ๊ธฐ์ค์ผ๋ก ๋งค ํ๋ ์๋ง๋ค Z-Buffer์ Occlusion Queries๋ฅผ ๊ณ์ฐํ๋ค.
3) LOD(Level of Detail)
LOD๋ ๋ฉ๋ฆฌ ์๋ ์ค๋ธ์ ํธ๋ ์ ํด์๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ , ๊ฐ๊น์ด ์๋ ์ค๋ธ์ ํธ๋ ๊ณ ํด์๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ๊ธฐ์ ์ด๋ค.
- ์ง์ LOD ๋ฉ์๋ฅผ ๋ง๋ค์ด๋ ๋์ง๋ง, ์ธ๋ฆฌ์ผ์์ ์ ๊ณตํ๋ ์๋ LOD ์์ฑ์ ํตํด์๋ ๊ฝค ๊ด์ฐฎ๊ฒ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- Nanite๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์ด๋ฏธ ์๋์ผ๋ก LOD ์ค์ ํ ๊ฒ๊ณผ ๊ฐ์์ ์ถ๊ฐ LOD ์ค์ ์ ํ์ํ์ง ์๋ค.
- Distance Culling ๋ฐฉ์์ ํตํด ์์ ๋ ๋๋ง์ ํ์ง ์๋ ๋ฐฉ๋ฒ๋ ์๋ค. Min/Max ๊ฐ์ ์กฐ์ ํด์ ์นด๋ฉ๋ผ์์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ์ค๋ธ์ ํธ๋ฅผ ๋ณด์ฌ์ค์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค.

4) Nanite
๋๋์ดํธ๋ ์ธ๋ฆฌ์ผ ์์ง 5์ ๊ฐ์ํ ์ง์ค๋ฉํธ๋ฆฌ ์์คํ ์ผ๋ก ์๋ก์ด ๋ด๋ถ ๋ฉ์ ํฌ๋งท๊ณผ ๋ ๋๋ง ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ํฝ์ ์ค์ผ์ผ์ ๋ํ ์ผ๊ณผ ๋ฐฉ๋ํ ์์ ์ค๋ธ์ ํธ๋ฅผ ๋ ๋๋งํ๋ค.
- ํ์ดํด ๋ฉ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
- LOD, ๋ ธ๋ง๋งต์ด ํ์ ์๋ค.
- ํด๋ฌ์คํฐ ๋จ์๋ก ๋ ๋๋ง์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ Culling ์ฑ๋ฅ์ด ์ข๋ค.
๋๋์ดํธ๊ฐ ๋ง๋ฅ์ธ ๊ฒ ๊ฐ์ง๋ง, ์ ์ฝ์ด ์กด์ฌํ๋ค.
- ๋ถํฌ๋ช ํ ๋จธํฐ๋ฆฌ์ผ๋ง ๊ฐ๋ฅํ๋ค.
- Skeletal Mesh, WPO(์๋ ํฌ์ง์ ) , Deformation ๋ฑ ๋ฒํ ์ค์ ๋ํ ์ฐ์ฐ์ด ๋ค์ด๊ฐ๋ฉด ์๋๋ค.
- ์ธ์คํด์ค์ ๋ฒํ ์ค ํ์ธํ ์ ์๋๋ค.
- ํญ์ ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๋ค.
์๋ ์ ํ๋ธ์์ ์์ธํ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
https://www.youtube.com/watch?v=e-XFHcD7ibA
3. CPU ์ต์ ํ
1) ๋ธ๋ฃจํ๋ฆฐํธ์์ C++ ์ ํ
๋ธ๋ฃจํ๋ฆฐํธ๋ ๊ฐํธํ์ง๋ง C++์ ๋นํด ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค. ๋ง์ฝ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ฌ์ฉํ๋๋ผ๋ Tick ์ฌ์ฉ์ ํผํ๊ณ ์ฑ๋ฅ์ด ์ค์ํ์ง ์์ ๊ธฐ๋ฅ ๊ตฌํ๋ง ํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
2) Tick ์ด๋ฒคํธ ์ต์ํ
๋งค ํ๋ ์ ํธ์ถ๋๋ Tick ์ด๋ฒคํธ๋ ๋ง์ผ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋ค. ๊ฐ๋ฅํ ํ์ํ ๊ฒฝ์ฐ์๋ง Tick์ ํ์ฑํํ๊ณ Timer๋ ์ด๋ฒคํธ๋ก ๋์ฒดํ์ฌ ์ฌ์ฉํ๋ค.
3) ์ค๋ธ์ ํธ ํ๋ง
๋ฐ๋ณต์ ์ผ๋ก ์์ฑ, ์ญ์ ๋๋ ์ค๋ธ์ ํธ๋ ํ๋ง ๊ธฐ๋ฒ์ ํตํด ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค.
4) AI
AI ์บ๋ฆญํฐ์ Behavior Tree๋ ๊ฒฝ๋ก ํ์์ ์ฑ๋ฅ์ ์ํฅ์ ์ค๋ค. Nav Mesh๋ฅผ ์ ์ค์ ํ๊ณ , AI ์บ๋ฆญํฐ์ ์ ๋ฐ์ดํธ ๋น๋๋ฅผ ๋ฎ์ถ๋ ๊ฒ์ด ์ข๋ค.
4. ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
1) Garbage Collection
์ธ๋ฆฌ์ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ํํ๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์๋ชปํ๋ฉด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค. ํฐ ๋ฐ์ดํฐ๋ ํ์ํ ๋๋ง ๋ก๋ํ๊ณ , ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ ๋ช ์์ ์ผ๋ก ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข๋ค.
2) ํ ์ค์ฒ ๋ฐ ๋ฉ์
์ฌ์ฉํ์ง ์๋ ํ ์ค์ฒ๋ ์ ๊ฑฐํ๊ณ , ๊ฐ๋ฅํ ์์ถ๋ ํฌ๋งท์ ์ฌ์ฉํ์ฌ ๋ฉ์์ ํด๋ฆฌ๊ณค ์๋ฅผ ์ต์ ํํ๋ ๊ฒ์ด ์ข๋ค. Nanite๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ด๋ค.
5. ํ๋กํ์ผ๋ง
์ธ๋ฆฌ์ผ ์์ง ๋ด์ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ค ๋ถ๋ถ์ด ๊ฐ์ฅ ๋ง์ ์์์ ์ฌ์ฉํ๋์ง ๋ถ์ํ๊ณ , ์ต์ ํํ ๋ถ๋ถ์ ์ฐพ์ ์ ์๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ฝ์ ๋ช ๋ น์ ํตํด ํ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์๋ ๋ช ๋ น์ด๋ฅผ ์ฝ์์ ์ ๋ ฅํ๋ฉด ๊ฐ ๋ถ๋ถ์ ์ฑ๋ฅ์ ํ์ธํ ์ ์๋ค.
stat fps
stat unit
stat gpu
๋ค์์ผ๋ก ํ๋กํ์ผ๋ง ํด์ ํ์ฉํ์ฌ ๋ฌด์์ด ๋น ๋ฅด๊ณ , ๋ฌด์์ด ๋๋ฆฌ๊ณ , ์ด๋ ๋ถ๋ถ์ธ์ง ์์ธํ ๋ถ์ํ ์ ์๋ค. ์ฌ๋ฌ ๊ฐ์ง ํด์ด ์์ง๋ง ๋ํ์ ์ผ๋ก Insights๊ฐ ์๋ค.

ํ๋กํ์ผ๋ง ํด์ ํ์ฉํ๋ฉด ๋ณ๋ชฉ ํ์์ ํ์ธํ๊ณ ์ต์ ํ ๋ฐฉํฅ์ ์ค์ ํ ์ ์๋ค.
์ฐธ๊ณ
https://www.unrealengine.com/ko/tech-blog/an-in-depth-look-at-unreal-engine-4-20-s-proxy-lod-tool
https://delightlane.tistory.com/21
[UE4] ์ปฌ๋ง(Culling)
๊ฐ์ ๊ฒ์์๋ ์๋ง์ ์ค๋ธ์ ํธ๋ค์ด ๋ฐฐ์น๋ฉ๋๋ค. ํ์ง๋ง ๊ทธ ๋ฐฐ์น๋ ์ค๋ธ์ ํธ๋ค์ด ๋ ๊ทธ๋ ค์ง ํ์๋ ์์ ๊ฒ์ ๋๋ค. ์ ํ ๋ ธ์ถ๋์ง ์๋ ์ค๋ธ์ ํธ๊น์ง ๋งค๋ฒ ๊ณ์ฐํ์ฌ ๊ทธ๋ฆฌ๋ ๊ฑด ๋ญ๋น์ด๊ธฐ ๋๋ฌธ์
delightlane.tistory.com
https://choi-dan-di.github.io/unreal/optimization-profiling/
[Unreal Engine] ์ธ๋ฆฌ์ผ ์์ง ์ต์ ํ - 1. ํ๋กํ์ผ๋ง
์ธ๋ฆฌ์ผ ์์ง์ ์ต์ ํ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ
choi-dan-di.github.io