(DirectX9) преобразование sRGB после смешивания
Недавно я наткнулся на этот пост в блоге Еще один пост о гамма-коррекции, который научил меня доступности флага возможности D3DPMISCCAPS_POSTBLENDSRGBCONVERT.
Это должно обеспечить правильное преобразование sRGB после наложения на DirectX9.
Что я не понимаю, что с этим делать? Я могу запросить у моего устройства Direct3D 9Ex устройство для этой возможности, но как мне включить его, если поддерживается? У меня есть выбор между преобразованием до и после смешивания? Если да, то как?
Спасибо за помощь!
1 ответ
Это просто информативно; нет способа включить или отключить. Либо аппаратное смешение в пространстве sRGB (POSTBLENDSRGBCONVERT - ЛОЖЬ), либо оно смешивается в линейном пространстве (POSTBLENDSRGBCONVERT - ИСТИНА). Эта шапка просто говорит вам, что делает оборудование; то, как вы справитесь с этим, будет зависеть от конкретного приложения.
Так как в sRGB должно использоваться только старое оборудование (DX10 требует линейного смешивания), вы можете отключить гамма-корректный рендеринг для этих частей. Или, если вы хотите снизить производительность, вы можете выполнить смешивание с целевым объектом, отличным от sRGB (для получения линейного смешивания), а затем скопировать его из целевого объекта в целевой объект sRGB.