[DirectX 11] Material Property Block

2022. 5. 22. 05:19·Graphics

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을 활성화하여 다르게 그리는 경우에 활용 한다.

 

Material Proprerty Block 활성화 여부에 따른 Draw Call 상태

 

적용 영상

Material Property Block 적용 영상

 

저작자표시 비영리 변경금지 (새창열림)

'Graphics' 카테고리의 다른 글

[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
'Graphics' 카테고리의 다른 글
  • [DirectX 11] Color Grading & LookUpTable Texture
  • [DirectX 11] HDRI Sky Light & Sky Cube Baking
  • [DirectX 11] Rim Lighting
  • [DirectX 11] Vertex Texture Fetch Skinning Animation Instancing
KyuHwang
KyuHwang
  • KyuHwang
    DirectX Engine
    KyuHwang
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • C++ (4)
      • CS (0)
      • Graphics (32)
      • DLL (2)
      • Shader (7)
      • Project (4)
      • ETC (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • YouTube
  • 공지사항

  • 인기 글

  • 태그

    Explicit Linking
    dll
    Shader Macro
    Shader Resource 관리
    Hash Code
    Implicit Linking
    nvtt
    DLL Interface
    Alpha Blending
    Shader Reflection
    C ++
    animation constraint
    Project
    Directx11
    texture block compression
    Define Macro
    mobile format
    animation retargeting
    hlsl
    RunTime Compile Shader
    bc format
    shader
    rigging chain
    DirectX 2D
    Win API
    Order Independent Transparency
    std::is_base_of
    Return Type Operator
    Define Function
    std::enable_if
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
KyuHwang
[DirectX 11] Material Property Block
상단으로

티스토리툴바