티스토리 뷰

Game/MMD

Color bug with DirectX Tool Kit

newpolaris 2017. 10. 31. 18:15

PNG 파일인데 색이 잘못 읽힌다

그림판 정도로 다시 읽어서 저장하면 정상 색이 나온다

왠만한 뷰어도 다 정상으로 나온다

이런 경우가 2건인데 모두 일본 MMD 에서 쓰이는 파일이다.

녹색이 되버린 머리

표시되어야 할 색

https://stackoverflow.com/questions/39634189/load-texture-as-rgb-not-srgb-in-directx11-using-wic

이미지 자체에 gamma가 설정되어있는지 확인해보았다.

The WIC metadata for a PNG file contains the sRGB chunk (/sRGB/RenderingIntent is true)

if (memcmp(&containerFormat, &GUID_ContainerFormatPng, sizeof(GUID)) == 0)
{
   // Check for sRGB chunk
   if (SUCCEEDED(metareader->GetMetadataByName(L"/sRGB/RenderingIntent", &value)) && value.vt == VT_UI1)
   {
       sRGB = true;
   }
}

흠. 탄다.

결론을 말하면, 이미지 자체에 sRGB 가 표시되어있는 경우 DirectX Tool Kit은 gamma 2.2를 적용하여 로드한다.

근대 linear color 를 안쓰거나, 나처럼 기존의 다른 이미지들 때문에 끈 경우

진해져서 망한다.

sRGB 마크를 못보고 diffuse 색과 color mapping을 얼마나 본건지;

UINT loadFlag = sRGB ? DirectX::WIC_LOADER_FORCE_SRGB : DirectX::WIC_LOADER_DEFAULT;

위에걸 아래와 같이 무시하게 바꾸면 된다.

UINT loadFlag = sRGB ? DirectX::WIC_LOADER_FORCE_SRGB : DirectX::WIC_LOADER_IGNORE_SRGB;
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크