Я загружаю текстуры с помощью CreateWICTextureFromMemoryEx
от DirectXTK. Все, что я загружаю, преобразуется в sRGB
, Есть ли способ заставить WIC создавать RGB
поверхность вместо?
Или, может быть, есть способ конвертировать уже загруженную текстуру из sRGB
в RGB
? Вернуться в D3DX раньше было D3DX11_FILTER_SRGB
флаг для этого (из того, что я понимаю), но это не устарело.
Любая помощь будет очень ценится, спасибо!
Набор инструментов DirectX загрузчик использует DXGI_FORMAT_*_SRGB
при загрузке изображений WIC по нескольким причинам:
Метаданные WIC для файла PNG содержат блок sRGB (/sRGB/RenderingIntent
правда)
Метаданные WIC для JPG указывают на sRGB (/app1/ifd/exif/{ushort=40961}
это 1)
Метаданные WIC для TIFF указывают sRGB (/ifd/exif/{ushort=40961}
это 1)
Если вы передадите ‘true’ как forceSRGB параметр для версии Ex функции
Таким образом, изображение, скорее всего, находится в цветовом пространстве sRGB. Следовательно DXGI_FORMAT_*_SRGB
указывает на то, что показания из этой текстуры должны подвергаться де-гамме, чтобы получить их в линейном цветовом пространстве. Я предполагаю, что вы не используете гамма-корректный рендеринг здесь?
Гамма-корректный рендеринг достигается с помощью
DXGI_FORMAT_*_SRGB
или формат обратного буфера HDR (10: 10: 10: 2, 16: 16: 16: 16). Вам также нужно использовать линейные цвета дляClear
, Увидеть DeviceResources, Гамма-корректный рендеринг, Важность линейности, а также Линейно-космическое освещение (т.е. гамма) для деталей.
Быстрый и легкий обходной путь, если вы управляете файлом текстуры, будет использовать texconv в DirectXTex библиотека для преобразования исходного изображения в DDS
, Вы можете использовать различные переключатели, такие как -srgbi
или же -srgbo
чтобы заставить поведение SRGB вы после.
Обратите внимание, что я также добавляю опцию, позволяющую игнорировать метаданные sRGB при использовании WICTextureLoader для будущего выпуска Набор инструментов DirectX. Лучше всего использовать линейный рендеринг, но иногда приятно иметь возможность избежать
DXGI_FORMAT_*_SRGB
Формат используется.
Других решений пока нет …