Ответ 1
Это сложный вопрос, но из того, что я смог вытащить (в основном из этой ветки электронной почты), похоже, что текущее поведение заключается в том, чтобы гамма-коррекция изображений линейного цветового пространства (таких как PNG) они загружены. Такие вещи, как JPEG, загружаются без какого-либо преобразования, потому что они уже гамма-скорректированы. (Источник: https://www.khronos.org/webgl/public-mailing-list/archives/1009/msg00013.html) Это будет означать, что текстуры могут быть переданы в WebGL в нелинейном пространстве, что может быть проблематично. Я не уверен, изменилось ли это с конца 2010 года.
В другом месте в этой теме было очень ясно, что желаемое поведение должно заключаться в том, что все входные и выходные данные из WebGL должны быть в линейном цветовом пространстве. то, что происходит дальше, выходит за рамки спецификации WebGL (именно поэтому в нем ничего не сказано).
Извините, если это не дает авторитетного ответа на ваш вопрос, я просто копаю, что могу по этому вопросу. Что касается вопроса о том, нужно ли вам делать коррекцию в шейдере, я бы сказал, что ответом будет "нет", поскольку предполагается, что вывод WebGL будет линейным, и попытка самокоррекции может привести к для двойного преобразования цветового пространства.