Push Constants란?
- Push Constants는 Shader로 데이터를 전달하는 방법 중 하나이다.
- Vulkan Command Buffer를 사용하여 데이터를 전달하며, 다른 메모리 쓰기나 복사 명령과 비교했을 때 더 간단하고 빠릅니다.
- 특징:
- 모든 Vertex가 동일한 Push Constant 데이터를 공유해야 한다.
- 128바이트로 제한되어 있음 (디바이스마다 추가 용량 제공 가능).

Push Constants의 기본 동작
- Command Buffer에 Push Constants 추가:
vkCmdPushConstants 명령을 사용하여 데이터를 기록한다.
- Draw Call 전 데이터 업데이트: 예를 들어, 물체의 색상, X/Y 오프셋 같은 데이터를 저장 가능.
- 다수의 오브젝트를 동일 데이터로 드로우:
- Push Constants를 업데이트하고 Draw Call을 호출
- Push Constants를 변경하여 새로운 Draw Call을 호출하면 동일한 모델을 다른 위치에 그릴 수 있음.
Push Constants의 주요 단점
- 사이즈 제한: Vulkan 사양은 128바이트만 보장.
- 여러 Shader Stage에서 데이터를 공유해야 하므로 효율적으로 관리해야 한다.
- 예: 64바이트를 Vertex Shader에, 나머지 64바이트를 Fragment Shader에 할당 가능.
- 하지만, 대부분의 경우 Shader Stage 간 공유를 위해 공통 Range를 사용하는 것이 더 간단함.
Push Constants의 한계와 사용 사례
- 장점:
- 간단한 데이터 업데이트.
- 높은 성능 (특히 자주 업데이트되는 데이터에 적합).
- 단점:
- 제한된 메모리 크기 (128바이트).
- 대규모 데이터를 다루거나 많은 모델에 사용할 경우 비효율적.
- 추천 사용 사례:
- Transform Matrix 전달.
- 간단한 색상, 위치 데이터 전달.