SetPass Call
GPU에 머티리얼과 셰이더 상태를 적용하는 명령 호출
Unity는 화면에 무언가를 그릴 때
- Material/Shader 상태를 설정
- 실제 메시를 GPU로 전달해서 렌더링
이 두 단계로 렌더링을 합니다.
이 중 ①번이 바로 SetPass Call
“셰이더 상태 바꿔줘!” 라고 GPU에게 전달
- Draw Call: “이거 그려줘!”
- SetPass Call: “그리기 전에 붓 바꾸고, 물감 새로 섞어!”
SetPass Call은 GPU에 셰이더, 텍스처, 머티리얼 등 그래픽 상태를 바꾸는 명령
Draw Call은 실제 메시를 그리는 명령
SetPass Call이 많으면 GPU 상태 변경이 자주 일어나 느려짐
머티리얼 공유, 인스턴싱, 배칭 등으로 SetPass 줄이기
SetPass Call이 성능에 민감할까?
- 셰이더 상태 변경은 GPU 입장에서 꽤 무거운 작업입니다.
- 한 프레임에 수백~수천 개의 오브젝트가 있다면, 각각이 다른 머티리얼/셰이더를 쓴다면 매번 SetPass Call이 발생합니다.
- 이때 동일 셰이더/머티리얼을 공유하는 오브젝트끼리 묶으면 SetPass Call 1회로 여러 Draw Call을 할 수 있어 성능이 훨씬 좋아집니다.
// A, B, C라는 오브젝트가 있다
// A, B는 같은 머티리얼
// C는 다른 머티리얼
// 결과:
SetPass Call 1 → A 렌더링
→ B 렌더링 (같은 상태 유지)
SetPass Call 2 → C 렌더링 (상태 바꿔야 함)
'그래픽스 > 최적화' 카테고리의 다른 글
Static 항목 (1) | 2025.06.26 |
---|---|
[최적화] unity static batching _ 유니티 정적배칭 (1) | 2025.06.26 |
[최적화]유니티 Statistics창 (0) | 2025.06.26 |
Unity 렌더링 최적화의 기본 공식 (1) | 2025.06.17 |
Unity 6 Fantasy Kingdom 그래픽스 최적화 (2) | 2025.06.17 |