๋๋ก์ฐ์ฝ ๊ณ์ฐ๋ฐฉ์
๋๋ก์ฐ์ฝ์ด ๋ง์์ง์๋ก Frame Rate๊ฐ ๊ธ๊ฒฉํ ๋จ์ด์ ธ ์ต์ ํ์ ์ต์ฐ์ ๊ณ ๋ ค์ฌํญ์ ๋๋ค.
Drawcall์ ๋ทฐํฌํธ์์ ์ถ๋ ฅ๋๋ ๊ฒ๋ง ํด๋น๋ฉ๋๋ค. ์ฆ, ๋ ๋ฒจ์ ๋ฐฐ์น๋์ด์์ง๋ง ์นด๋ฉ๋ผ ์์ญ ๋ฐ์ ์์ด์ ๋ทฐํฌํธ์ ๋์ค์ง ์์ผ๋ฉด Drawcall๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ฐ์ Static Mesh, ๊ฐ์ Material์ ์ถ๊ฐ์ ์ธ Drawcall์ด ๋ฐ์ํ์ง ์์ต๋๋ค. Material Instance๋ ๋ถ๋ชจ๊ฐ ๊ฐ์๋ ๋ค๋ฅธ Material์ ๋๋ค. ๋ง์ฝ Static Mesh 2๊ฐ๋ฅผ ๋ฐฐ์นํ์ ๋, Mesh๋ ๊ฐ๊ณ Material์ด ๋ค๋ฅผ ๊ฒฝ์ฐ Drawcall์ 3์ ๋๋ค.
Emitter ํ๋ ๋น ์์ธ์์ด ์ถ๊ฐ์ ์ผ๋ก Drawcall์ 2์ฉ ์ฆ๊ฐํฉ๋๋ค.
์ฆ ์์ ๋๊ฐ์ Emitter 2๊ฐ๊ฐ ์์ด๋ 1๊ฐ์ฒ๋ผ ์ทจ๊ธ๋์ง ์๊ณ ๊ฐ๊ฐ ์ถ๊ฐ์ ์ธ Drawcall์ด ๋ฐ์ํฉ๋๋ค.
flowchart TD subgraph "Static Mesh Drawcall ๊ท์น" A["Static Mesh A<br/>Material M1"] --> B{๊ฐ์ Mesh?} C["Static Mesh A<br/>Material M1"] --> B B -->|YES| D{๊ฐ์ Material?} D -->|YES| E["โ Drawcall +0<br/>(์ธ์คํด์ฑ)"] D -->|NO| F["โ Drawcall +1<br/>(๊ฐ๊ฐ ๋ณ๋)"] end subgraph "Material Instance ์ฃผ์์ฌํญ" G["Material Master"] --> H["MI_Instance_A"] G --> I["MI_Instance_B"] H -.->|"๊ฐ์ ๋ถ๋ชจ์ฌ๋<br/>๋ค๋ฅธ Material"| J["โ Drawcall ์ฆ๊ฐ"] I -.-> J end subgraph "Emitter Drawcall ๊ท์น" K["Emitter 1"] --> L["โ Drawcall +2"] M["Emitter 2<br/>(์์ ๋์ผ)"] --> N["โ Drawcall +2"] O["Emitter 3<br/>(์์ ๋์ผ)"] --> P["โ Drawcall +2"] L -.->|"๋ณํฉ ์๋จ<br/>๊ฐ๊ฐ ๋ ๋ฆฝ์ "| Q["์ด Drawcall +6"] N -.-> Q P -.-> Q end style E fill:#90EE90,stroke:#333,stroke-width:2px style F fill:#FFB6C1,stroke:#333,stroke-width:2px style J fill:#FFB6C1,stroke:#333,stroke-width:2px style L fill:#FFB6C1,stroke:#333,stroke-width:2px style N fill:#FFB6C1,stroke:#333,stroke-width:2px style P fill:#FFB6C1,stroke:#333,stroke-width:2px style Q fill:#FF6B6B,stroke:#333,stroke-width:2px
Tip
stat RHIDrawcall์ ํ ๋น๋(DrawPrimitive calls)์ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค.
๋๋ก์ฐ์ฝ ๋ฌธ์ ์
์ธ๋ฆฌ์ผ ์์ง์ ๋ ๋๋ง ๊ณผ์ ์ CPU๊ฐ ์ ์์ ํ๊ณ ๋๊ฒจ์ฃผ๋ฉด GPU ํ์์ ํ๋ ๋ฐฉ์์ผ๋ก ์งํ๋ฉ๋๋ค.
์ด ๋ CPU๊ฐ ์ฒ๋ฆฌํ ์์ค๊ฐ ๋ง์ผ๋ฉด GPU๋ CPU์์ ์ด ๋๋ ๋๊น์ง ์ ํ์ํ(๋๊ฐ์ํ) ๋น ์ง๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆด ํฝ์ ์ด ๋ง๋ค๋ฉด ์ฝ์ ์๋์ ์ผ๋ก ๋ฎ์ ๊ฒฝ์ฐ์๋ ์ถฉ๋ถํ ์ผ์ด๋ ์ ์์ต๋๋ค.
- ํ๋กํ์ผ๋ง ๊ด์ ์์ Drawcall์ด ๋์ผ๋ฉด 80-90ํผ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค.
- Drawcall์ ํ๋์จ์ด์ฝ์๊ณผ API๋ง๊ณค ๊ฐ์ ์ ์ฌ์ง๊ฐ ์์ต๋๋ค.
- Cash Memory๋ ํ๋กํ์ผ๋ง์์ ๋งค์ฐ ๋ฒ์ฉ์ ์
๋๋ค.
- ์ด๋ฒ์ ๋ณด๋ผ Call์ ๋ด์ฉ์ ์ ์ฅํด๋๋ ๊ฒ๋ Cash Memory์ ํ๋์ ํํ์ ๋๋ค.