sectator: вся морока с цветами обычно сводится к linear → srgb по
https://en.wikipedia.org/wiki/SRGB#Specification_of_the_transformation вот этой формуле, где на выходе цветовая компонента для текстуры типа rgb8unorm, а на входе — цвет из шейдера.
если встречается hdr → ldr, то там уже десятки формул с кучей подбираемых коэффициентов, но вроде не твой случай. По идее вывод в srgb-текстуру за тебя должен автоматом выполнить преобразование (вроде бы srgb на голых движках уровня директа нельзя было установить в качестве тергета?). Вход в шейдер от 0 до 1 с текстуры rgb8unorm без преобразования — тогда в шейдерах цвет считается линейным.