DXGI_FORMAT의 공식 문서에서는 _SRGB 열거 postfix가있는 형식 만 sRGB 색 공간에 있음을 알 수 있습니다. 이 접미사가없는 다른 형식이 모두 선형 공간에 있다고 생각했습니다. 하지만 DirectXTex 라이브러리에서 형식 변환 기능의 아주 이상한 동작을 발견했습니다. (http://directxtex.codeplex.com/에서 다운로드 할 수 있습니다.)DXGI_FORMAT의 정확한 색상 공간은 무엇입니까?
처음 엔 NVIDIA Photoshop DDS 플러그인을 사용하여 텍스처 파일을 DXGI_FORMAT_R32G32B32A32_FLOAT로 내 보냅니다. 그런 다음이 파일을 LoadFromDDSFile() 함수로로드하고 Convert() 함수를 사용하여 형식을 DXGI_FORMAT_R16G16B16A16_UNORM으로 변환합니다. (이 두 기능은 모두 DirectXTex 라이브러리에서 제공합니다.)
짐작 하시겠습니까? 이미지를 DXGI_FORMAT_R16G16B16A16_UNORM으로 변환하면 모든 픽셀의 밝기도 변경되어 전체 이미지가 이전보다 밝아집니다.
이미지가 DXGI_FORMAT_R16G16B16A16_UNORM 형식으로 변환 된 후 수동으로 픽셀 값을 sRGB 공간에서 선형 공간으로 변환하는 경우 결과 픽셀 값은 입력과 동일합니다. 따라서 DirectXTex 라이브러리는 DXGI_FORMAT_R32G32B32A32_FLOAT를 선형 색상 공간의 형식으로 처리하고 DXGI_FORMAT_R16G16B16A16_UNORM을 sRGB 색상 공간의 형식으로 처리 한 다음 선형 공간에서 sRGB 공간으로 변환하는 색상 공간을 처리했다고 가정합니다. (Convert() 함수가 색상 공간을 변환하는 이유를 알아 내려했지만 WIC에서 구현되었으므로 소스 코드가 없습니다.)
DirectXTex 라이브러리에 버그가 있습니까? 또는 DXGI_FORMATs의 실제 표준입니까? 일부 특수 DXGI_FORMAT에 다른 색상 공간이있는 경우, 그 색상 스펙을 찾을 수있는 곳을 말해주십시오.
도움이 될 것입니다. 감사!
답변 해 주셔서 감사합니다. 정말 도움이되었습니다. 하지만 여전히 한 가지 질문이 있습니다. 정수 RGB 값은 일반적으로 감마 압축이며 _SRGB를 사용하는 DXGI 형식은 고정 감마 0.5입니다. 그럼이 둘의 차이점은 무엇입니까? 그들의 감마가 평등합니까? 또는 _SRGB는 하드웨어로 값을 변환해야한다는 의미일까요? 고맙습니다! – SeaStar
안녕하세요 SeaStar, sRGB는 더 복잡한 형식의 감마입니다.이 숫자는 하나의 숫자가 아닙니다. DXGI 형식은 정수이지만 _SRGB 접미어가없는 고정 된 감마를 가지고 있다고 말하면서 * 아마 * 0.5입니다. _SRGB 접미사가있는 형식은 sRGB가되어야하므로 복잡한 감마가 있습니다. More info : "다른 대부분의 RGB 색상 공간과 달리 sRGB 감마는 단일 숫자 값으로 표현 될 수 없습니다." http://en.wikipedia.org/wiki/SRGB 희망이 도움이됩니다! –
이전 주석에 잘못된 단어를 입력했는데 "_SRGB로 된 DXGI 형식은 ** 고정 감마가 아니라 **."라고 말하고 싶습니다. 그리고 오늘 더 많은 연구를했습니다. – SeaStar