๐ฎ GAME & DEV/ํ๋ก๊ทธ๋๋ฐ
2017 ์ธ๋ฆฌ์ผ ์๋ฐ ํ๋ฆฌ๋ฏธ์
Blue Sky!
2017. 10. 31. 15:06
์๋ ๋ด์ฉ์ ํ์ฌ ์ปจ๋ฒ๋ฐ์ค ์ ๋ฆฌ๊ธ์ ํํ ๋ด์ฉ.
์ธ๋ฆฌ์ผ ์์ง 4 ์
ฐ์ด๋, ๋ ๊น์ด ์ดํดํ๊ธฐ
์
ฐ์ด๋
- ์ธ๋ฆฌ์ผ์ ์
ฐ์ด๋๋ USH(Unreal Shader Headers)์ USF(Unreal Shader Files)๋ก ๊ตฌ์ฑ๋จ
- HLSL ์ฝ๋๋ก ์์ฑ๋๋ USF๋ FShaderType์ผ๋ก ๊ด๋ฆฌ๋จ
- Global / Material / MeshMaterial 3๊ฐ์ง ํ์
์ด ์กด์ฌํจ
- FShaderType์ด ์ปดํ์ผ๋์ด FShader ์
ฐ์ด๋ ์ธ์คํด์ค๊ฐ ๋จ
- ๋ฉ์ํน์ฑ์ VertexFactory๋ฅผ ํตํด ์์ฑ๋๋๋ฐ, ํ์ฌ๋ ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ง ์์
๋จธํฐ๋ฆฌ์ผ
- Material์ ๊ฐ ๋
ธ๋๋ค์ด ๋ฒ์ญ๋๋ฉด์ ๋
๋ฆฝ๋ usf ์ฝ๋๋ก ์ปดํ์ผ๋จ
- ์ปค์คํ
๋
ธ๋๋ HLSL์ฝ๋๋ฅผ ์ง์ ์์ฑํ ์ ์๋ ๋
ธ๋์ง๋ง, ์ฝ๋์ต์ ํ๊ฐ ์ํ๋์ง ๋ชปํ๋ฏ๋ก ๊ฐ๊ธ์ ์์ฐ๋๊ฒ ์ข์
UE4 Shader Plugin
์
ฐ์ด๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก GlobalShader๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๋ ์ค์ด(?)
์์ฝํ์๋ฉด ์ธ๋ฆฌ์ผ ์
ฐ์ด๋ ๊ฐ๋ฐ ๋ฌธ์์ ๋ด์ฉ์ด ๋๋ค.
๋ชจ๋ฐ์ผ ์คํ์๋ ์ํธ ์ปจํ
์ธ ์ ์ ๋ฐ ์ต์ ํ
- ์ํธ ๋ฆฌ์์ค ๋ค์ด์ดํธ ๋ฐฉ๋ฒ๋ค์ ์๊ฐ. ๋ปํ๋ค
- ๋ชจ๋ฐ์ผ์์ ๋๋์ค์ผ์ดํ ์ฌ์ฉ์ ์ปดํฌ๋ํธ ์ฌ์ด์ฆ๋ฅผ ๋ง์ด ์ค์
- ๋๋์ค์ผ์ดํ ํ
์ค์ณ ์๋ฅผ 3๊ฐ ์ดํ๋ก ํด์ผ GLES 2.0 ๋๋ฐ์ด์ค์์ ์ ๋๋ก ๋์๊ฐ
- ์คํํฑ ๋ฉ์๋ค์ HLOD๋ฅผ ์ ์ฉํจ
๊ผญ ์์๋์ด์ผ ํ ์ธ๋ฆฌ์ผ ์์ง 4 ๋ชจ๋ฐ์ผ ๊ธฐ๋ฅ A-Z
์ฑ๋ฅ ๊ฐ์ ํ๊ธฐ
- ์
ฐ์ด๋ ์บ์ ์ฌ์ฉํ๊ธฐ -> ์
ฐ์ด๋ ํ์น๋ฅผ ์ค์ (์ฒซ ํ๋ ์ด์๋ ์ด์ฉ ์ ์๋ค)
- ๋ชจ๋ฐ์ผ ์์จ์์ MMO๋ผ๋ฉด Precomputed visibility volume์ ์ฌ์ฉํ๋๊ฒ ๋
- ๋จธํฐ๋ฆฌ์ผ์์ Static Switch ์ฐ๋ฉด ํจํค์ง์ ๋จธํฐ๋ฆฌ์ผ ์ข
๋ฅ๊ฐ ๋์ด๋๋ ๋จ์ฉ ๊ธ์ง
- Material instance ์ต๋ํ ํ์ฉํ๊ธฐ
- ๋์ LOD์๋ Material baking์ผ๋ก GPU์ฐ์ฐ ์ค์ด๊ธฐ
Slate UI ์ต์ ํ
- 2D UI๋ค์ ๋ฐฐ์นํ๋ก์ธ์ฑ๋จ
- ๋์ผ ๋จธํฐ๋ฆฌ์ผ์ ์ต๋ํ ํ์ฉ
- ๋์ผ Layer ID์ ๋ฐฐ์นํ๊ธฐ
- Invalidation Pannel๋ก ์บ์ ์ต๋ํํ๊ธฐ
์ธ๋ฆฌ์ผ ์์ง 4 ์ต์ ํ์ ํผํฌ๋จผ์ค ์
๋ฐ์ดํธ
Shader Library
- ์ค๋ณต๋ ์
ฐ์ด๋๋ค (๋จธํฐ๋ฆฌ์ผ ๋
ธ๋๋ค), ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ณต ๋ก๋ฉ๋์ง๋ ์์ง๋ง ๋์คํฌ์ ์ค๋ณต๋์ด ํจํค์ง๋จ
- Shader library๋ ๋จธํฐ๋ฆฌ์ผ ๋
ธ๋๋ฅผ usf์ฝ๋๋ก ๋ฐ๋ก ๋ฒ์ญํ๋ ๋์ ์
ฐ์ด๋ ํ์ผ key๋ก ๋งคํ์์ผ๋
- ๊ทธ ํ ๋จธํฐ๋ฆฌ์ผ ์ฌ์ฉ์ ๋งค์นญ๋๋ key์ usf๋ฅผ ์ปดํ์ผ & ๋ก๋ฉ
- ์ ์ฒด usfํ์ผ ์ฌ์ด์ฆ๊ฐ 1/5 ์์ค์ผ๋ก ์ค์ด๋ฆ
- DLC์ ์ฌ์ฉ๋๋ ๋จธํฐ๋ฆฌ์ผ์๋ ์ง์ ๋ถ๊ฐ
- 4.18๋ถํฐ ๋น๋๊ธฐ ์
ฐ์ด๋ ๋ก๋ฉ์ด ์ง์๋จ
LLM (Low Level Memory Tracker)
- ๊ฒ์์์ ํ ๋นํ๋ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํธ๋ํน
- ์ค์ฝํ ํ๊ทธ๋ฅผ ๋ถ์ด๋ฉด ์ค์ฝํ ๋ด ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํ๊น
cpp
{
LLM_SCOPE(LLMTag::Material)
}
- ํ๊ทธ๋ฅผ ๋ถ์ด์ง ์์๋ Untaged ๋ฉ๋ชจ๋ฆฌ๋ก ํธ๋ํน์ ๋จ
- -LLM ์ต์
์ผ๋ก ๊ฒ์ ์คํ, stat llmfull ์ฝ์ ๋ช
๋ น์ผ๋ก ์ ๋ณด๋ฅผ ๋ณผ ์ ์์
- -LLMCSV ์ต์
์ผ๋ก ์คํํ๋ฉด ๋งค ํ๋ ์ ๋ฉ๋ชจ๋ฆฌ ํธ๋ํน ์ ๋ณด๋ฅผ csvํ์ผ๋ก ๋คํ๋ ์ค
PGO (Profile Guided Optimization)
- ์ปดํ์ผ ์ต์ ํ ๊ธฐ๋ฒ
- ๋ค์์ ๊ณผ์ ์ผ๋ก ์ต์ ํ๊ฐ ์งํ๋จ
- PGO๊ด๋ จ ์ฝ๋๋ฅผ ์ฝ์
ํ ์ปดํ์ผ
- ํ๋ ์ด -> ํ๋ ์ด ๊ธฐ๋ก DB๊ฐ ์์ฑ๋จ
- DB๋ฅผ ๋ถ์ํด ์ฝ๋๋ฅผ ์ต์ ํ
- ๋ค์ ์ปดํ์ผ
- ๋๋ต์ ์ธ ๊ธฐ๋ฅ๋ค
- inline ์ต์ ํ
- ๋ ์ง์คํฐ ์ต์ ํ
- ๋ถ๊ธฐ๋ฌธ ์ต์ ํ
- size / speed trade-off ํจ์๋ณ ์ต์ ํ
- function layout ์ต์ ํ
๋คํธ์ํน ์ต์ ํ
- ์ํฝ์ PNBR ๊ฐ๋ฐํ๋ฉด์ ๋๊ท๋ชจ ๋ฉํฐํ๋ ์ด์ด ๊ฒ์ ์ฒ์ ๋ง๋ค์ด๋ด
- Network relevance view mode ์ฌ์ฉํด์ ๋๋ฒ๊น
- replication ์ฝ๋์ ์ต์ ํ ํ ์์๋ค์ด ๋ง์๋ค
- serialization ์ฝ๋์ TArray ๋์ ํ ๋น ํ๋ ๋ถ๋ถ๋ค TInlineAllocator ์ฌ์ฉ์ผ๋ก ๋์ ํ ๋น ์ต์ํ
- ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ง์ค์ธ ์๋ธ๋ ๋ฒจ์ ์๋ธ๋ ๋ฒจ๋น RPCํ ๋ฒ ๋ณด๋ด๋ ๊ฑธ ์๋ธ๋ ๋ฒจ ๋ฐฐ์ด์ ๋ณด๋ด๋๋ก ๋ณ๊ฒฝ
- ํ์ ๋
- replicate ๋๋ ๊ตฌ์กฐ์ฒด๋ค Bit Field๋ก ๋ค์ด์ดํธ
- ๊ทธ์ธ ์ด๊ฒ์ ๊ฒ..
- ์์ฃผ ์ฐ์ด๋ ์กํฐ/์ปดํฌ๋ํธ๋ค (StaticMeshComponent, SceneComponent, Character ๋ฑ๋ฑ) ๋ค์ด์ดํธ
- ์ด๋ฐ๊ฒ๋ค์ด ๋ชจ๋ 4.18/.19 ๋ฆด๋ฆฌ์ฆ์ ๋ค์ด์ฌ ์์
์ธ๋ฆฌ์ผ ์์ง 4 ์
๋ฐ์ดํธ์ ๋ก๋๋งต
4.18 ๋ฆด๋ฆฌ์ฆ ๋
ธํธ์ ๋ด์ฉ์ ์ฅํฉํ๊ฒ ์ค๋ช