(DirectX9) преобразование sRGB после смешивания

Недавно я наткнулся на этот пост в блоге Еще один пост о гамма-коррекции, который научил меня доступности флага возможности D3DPMISCCAPS_POSTBLENDSRGBCONVERT.

Это должно обеспечить правильное преобразование sRGB после наложения на DirectX9.

Что я не понимаю, что с этим делать? Я могу запросить у моего устройства Direct3D 9Ex устройство для этой возможности, но как мне включить его, если поддерживается? У меня есть выбор между преобразованием до и после смешивания? Если да, то как?

Спасибо за помощь!

1 ответ

Решение

Это просто информативно; нет способа включить или отключить. Либо аппаратное смешение в пространстве sRGB (POSTBLENDSRGBCONVERT - ЛОЖЬ), либо оно смешивается в линейном пространстве (POSTBLENDSRGBCONVERT - ИСТИНА). Эта шапка просто говорит вам, что делает оборудование; то, как вы справитесь с этим, будет зависеть от конкретного приложения.

Так как в sRGB должно использоваться только старое оборудование (DX10 требует линейного смешивания), вы можете отключить гамма-корректный рендеринг для этих частей. Или, если вы хотите снизить производительность, вы можете выполнить смешивание с целевым объектом, отличным от sRGB (для получения линейного смешивания), а затем скопировать его из целевого объекта в целевой объект sRGB.

Другие вопросы по тегам