Spec-Zone.ru › LÖVE

love.graphics.isGammaCorrect

Доступно начиная с LÖVE 0.10.0
Эта функция не поддерживается в более ранних версиях.

Определяет, поддерживается ли и включено ли гамма-корректное рендеринг. Его можно включить, установив t.gammacorrect = true в love.conf.

Не все устройства поддерживают гамма-корректное рендеринг; в этом случае оно будет автоматически отключено, и эта функция вернёт false. Оно поддерживается на настольных системах с графическими картами, способными использовать OpenGL 3/DirectX 10, и на устройствах iOS, способных использовать OpenGL ES 3.

Функция

Синопсис

gammacorrect = love.graphics.isGammaCorrect( )

Аргументы

Нет.

Возвращаемое значение

boolean gammacorrect
True, если гамма-корректное рендеринг поддерживается и было включено в love.conf, иначе false.

Примечания

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

  • Цвета, передаваемые в love.graphics.setColor, love.graphics.clear и Shader:sendColor, автоматически преобразуются из sRGB в линейное RGB.
  • Цвета, заданные в SpriteBatches, тексте с цветами по символам, ParticleSystems, точках с цветами по точкам, стандартных Meshes и пользовательских Meshes, использующих атрибут "VertexColor", автоматически преобразуются из sRGB в линейное RGB при отрисовке этих объектов.
  • Изображения автоматически преобразуют свои цвета из sRGB в линейное RGB при их отрисовке (и при получении пикселей в Shader), если флаг linear = true не установлен при создании Изображения.
  • Все отрисовываемые на экране элементы будут смешиваться в линейном RGB, а затем результат будет преобразован в sRGB для отображения.
  • Canvases, использующие формат CanvasFormat "normal" или "srgb", будут смешивать контент в линейном RGB, а результат будет храниться в канвасе в sRGB при отрисовке в него. Когда сам Canvas отрисовывается, его цвета пикселей преобразуются из sRGB в линейное RGB аналогичным образом, как изображения. Хранение данных пикселей канваса как sRGB обеспечивает лучшую точность (меньше полос) для более тёмных цветов по сравнению с "rgba8".

Поскольку большинство преобразований выполняются автоматически, ваш код не должен беспокоиться о преобразованиях цветов sRGB и линейного RGB при включенном гамма-корректном рендеринге, за исключением нескольких случаев:

  • Если используется Mesh с пользовательскими атрибутами вершин, и один из атрибутов предназначен для использования в качестве цвета в Shader, а атрибут не называется "VertexColor".
  • Если используется Shader с переменными uniform/extern или другими переменными, предназначенными для использования в качестве цветов, и Shader:sendColor не используется.

В обоих случаях, love.math.gammaToLinear может использоваться для преобразования значений цвета в линейное RGB в Lua-коде, или функции gammaCorrectColor (или unGammaCorrectColor при необходимости) шейдеров могут использоваться в коде шейдеров. Эти функции шейдера только выполняют преобразования, если гамма-корректный рендеринг фактически включен. Если это так, то препроцессорная макро-замена LOVE_GAMMA_CORRECT будет установлена.

Подробнее о гамма-корректном рендеринге можно узнать здесь, здесь и здесь.

См. также

  • love.graphics
  • Файлы конфигурации
  • love.math.gammaToLinear
  • love.math.linearToGamma
  • Shader:sendColor


© 2006–2020 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3.
https://love2d.org/wiki/love.graphics.isGammaCorrect

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API