Material Property Block
- 현재 같은 Mesh를 사용하는경우 Instancing을 통해 같은 Batch로 모아서 그리는 과정에서 특정 한 객체의 Material만 변경해야 할 경우를 처리하기 위해 Material Property Block을 도입하게 되었다.
Material Property Block 동작 원리
- 현재 배치되어있는 Instance Batch는 유지하되, 현재 Material Property Block이 활성화된 시점 동안에만 잠시 다른 Batch로 빼서 따로 그리는 방식이다.
- 현재 Instance Batch를 실시간으로 변경해주는 것보다 활성화된 시점에만 잠시 빼서 따로 그리는 방식이 효율적이라 생각이 들어 해당 방식으로 적용하였다.
- 해당 객체의 Material Property Block이 활성화되는 시점에 원본 Material Property Data를 복사하여 기본값으로 설정한 후, 이후에 변경한 Materail Property의 값은 해당 객체에 설정된 Material Property Block Data 기준으로 그리게 된다.
- Material Property Block 활성화 해제를 할 경우 기존에 있던 Instance Batch에서 다시 그리게 된다.
Material Property Block 활용 예시
- 특정 상황이 아닌 이상 몬스터, 보스, 플레이어 각각의 객체에 기본적인 데이터가 적용된 Material 기준으로 그리되, 피격이나 타격 등 해당 객체만 Material Property를 변경해야 할 경우 Material Property Block을 활성화하여 다르게 그리는 경우에 활용 한다.
적용 영상
'DirectX 11' 카테고리의 다른 글
[DirectX 11] Color Grading & LookUpTable Texture (0) | 2022.06.23 |
---|---|
[DirectX 11] HDRI Sky Light & Sky Cube Baking (0) | 2022.05.25 |
[DirectX 11] Rim Lighting (0) | 2022.04.25 |
[DirectX 11] Vertex Texture Fetch Skinning Animation Instancing (0) | 2022.04.21 |
[DirectX 11] Hierarchical Z-Buffer Occlusion Culling (0) | 2022.04.04 |