[DirectX 11] Color Grading & LookUpTable Texture

2022. 6. 23. 01:24·Graphics

Color Grading

- 후처리 방식중 하나이며, 전체적인 스크린상의 RGB값을 활용하여 미리 계산해둔 다른 테이블의 RGB로 변환시키는 작업이다.

- 영화측에서는 거의 필수적으로 사용한다고 하며, 다른 테이블을 참조해서 변환한다는 것 자체는 간단하지만 생각보다 효과적인 결과물을 볼 수 있다.

 

Color Grading을 적용하게된 계기

- 현재 진행중인 프로젝트에서 외부에 있을때와 내부에 있는 경우는 IBL을 영역별로 나누어 분위기를 조성하였지만, 게임 흐름상 보스존에 입장한다거나 공간에 대한 변화가 있을때 추가적인 효과를 주기 위해 추가하게 되었다.

- 처음엔 단일 Color Grading을 적용하려고 생각하였으나 교수님이 피드백으로 보통 게임에서 상황이나 구역별로 영역을 지정하여 가중치를 주어 블랜딩하여 자연스럽게 전환되는 효과를 주로 사용한다고 하셔서 블랜딩을 하여 전환하는 방향으로 작업을 하게 되었다.

- 현재 프로젝트에선 보스 등장과 내부와 외부의 변화에 따른 ColorGrading을 바꾸어 서서히 변하는 효과를 주어 사용하고있다.

 

Color Grading을 위한 LookUpTable Volume Texture

Offset을 이용한 LookUpTable 2D Texture를 사용시 문제점

- 결국 최종 출력된 픽셀들의 색상값을 기반으로 테이블을 참조하려면 LUT 2D Texture 블록 단위로 Offset을 주어 처리하여도 될 것이라 생각하였지만, 막상 적용하면 특정 부분에서 이상한 색상이 출력되는 것을 볼 수 있게 되는데, 그 이유는 해당 블록단위로 Offset을 주어 넘길경우 해당 블록의 시작지점과 끝지점의 색상 보간이되어 의도한 색상을 가져와서 출력 할 수가 없게된다.

LookUpTable 2D Texture를 3D Volume Texture로 변환하여 사용

- 결국 정확한 테이블의 픽셀값을 가져오려면 2D Texture를 블록단위로 3D Volume Texture를 만들어 사용하면 문제가 해결되는데, 변환해주는 툴이 없어 자체적으로 변환하여 3D Volume Texture를 생성하는 기능을 툴에 적용시켰다.

- 보통 16 pixel 혹은 32 pixel 단위의 LUT를 활용하는데, 성능상 이슈도 있고 큰 차이가 없기에 현재 프로젝트에선 16 pixel의 LUT를 활용하여 적용하고 있다.

 

Color Grading 적용 원리

 

적용 영상

ColorGrading LUT Texture 적용 화면

 

ColorGrading LUT Texture 적용 영상

 

저작자표시 비영리 변경금지

'Graphics' 카테고리의 다른 글

Texture Block Compression  (0) 2025.04.15
[DirectX 11] Dissolve Effect  (0) 2022.06.27
[DirectX 11] HDRI Sky Light & Sky Cube Baking  (0) 2022.05.25
[DirectX 11] Material Property Block  (0) 2022.05.22
[DirectX 11] Rim Lighting  (0) 2022.04.25
'Graphics' 카테고리의 다른 글
  • Texture Block Compression
  • [DirectX 11] Dissolve Effect
  • [DirectX 11] HDRI Sky Light & Sky Cube Baking
  • [DirectX 11] Material Property Block
KyuHwang
KyuHwang
  • KyuHwang
    DirectX Engine
    KyuHwang
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • C++ (4)
      • CS (0)
      • Graphics (32)
      • DLL (2)
      • Shader (7)
      • Project (4)
      • ETC (1)
  • 블로그 메뉴

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

    • YouTube
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
KyuHwang
[DirectX 11] Color Grading & LookUpTable Texture
상단으로

티스토리툴바