Я загружаю текстуры с использованием CreateWICTextureFromMemoryEx
от DirectXTK. Все, что я загружаю, преобразуется в sRGB
. Есть ли способ заставить WIC создать вместо этого RGB
?Загрузить текстуру как RGB не sRGB в DirectX11 с помощью WIC
Возможно, есть способ конвертировать уже загруженную текстуру от sRGB
до RGB
? Назад в D3DX там был D3DX11_FILTER_SRGB
флаг для этого (из того, что я понимаю), но это не устарело.
Любая помощь будет очень признательна, спасибо!
В настоящий момент я немного поражен, так как я просто читал ваши образцы dx11! Спасибо, что нашли время ответить! Я переношу dx9 рендерера в dx11, и я столкнулся с проблемами sRGB. Мой backbuffer и текстуры - sRGB. Все нормально, пока я не начну умножать текстуру с цветом вершин.Я не могу найти информацию - драйвер преобразует вершинные цвета в sRGB? Возникает ли альфа-канал? Я получаю результаты, которые выглядят корректно, только если я преобразовываю цвет вершин (вместе с альфа-каналом) в sRGB в шейдере, затем умножаюсь на выбранный цвет и возвращаю результат. Это не кажется правильным ... – Konstanty
Я думаю, мой вопрос должен читать: «Если моя текстура sRGB и backbuffer - это sRGB, как мне умножить цвет, выбранный из текстуры, с цветом, переданным в вершине, чтобы получить правильное альфа-смешение «так как это был корень исходной проблемы. Я пытался переместить весь рендеринг в линейное пространство, о котором я знаком. – Konstanty
Когда вы производите выборку из текстуры с форматом sRGB, сэмплер должен делиться так, чтобы ваш шейдер работал со всем линейным цветовым пространством. Затем вы записываете свои линейные значения цвета, а в представлении целевой рендеринга sRGB применяется гамма, чтобы вернуть его в цветовое пространство sRGB для рендеринга. Вершинные (и четкие) цвета затем будут указаны в линейном цветовом пространстве. –