love.math.gammaToLinear (Українська)
Доступне починаючи з LÖVE 0.9.1 |
Ця функція недоступна в попередніх версіях. |
Перетворює колір з гамма-простору (sRGB) в лінійний простір (RGB). Це корисно, якщо ви при відображенні об'єктів використовуєте корекцію гами і вам потрібно обчислювати кольори в лінійному RGB-просторі в тих рідких випадках, коли LÖVE не виконує перетворення автоматично.
Почитати більше про відображення з корекцією гами можна (англійською) тут, тут, and тут.
В версіях до 11.0 значення кольорів приймалися в діапазоні від 0 до 255, а не від 0 до 1.
Корекція гами — це складна тема, і в різних кольорових просторах легко заплутатися. Якщо ви не впевнені, чи вам потрібна ця функція, краще її не використовувати. |
Contents
Функція
Вигляд
lr, lg, lb = love.math.gammaToLinear( r, g, b )
Аргументи
number r
- Червоний канал кольору sRGB, який буде перетворено.
number g
- Зелений канал кольору sRGB, який буде перетворено.
number b
- Синій канал кольору sRGB, який буде перетворено.
Повертає
number lr
- Червоний канал кольору в лінійному RGB-просторі після перетворення.
number lg
- Зелений канал кольору в лінійному RGB-просторі після перетворення
number lb
- Синій канал кольору в лінійному RGB-просторі після перетворення
Примітки
Значення альфа-каналу можна передати четвертим аргументом, однак він не буде змінений, тому що альфа-компоненти кольорів завжди лінійні.
Функція
Вигляд
lr, lg, lb = love.math.gammaToLinear( color )
Аргументи
table color
- Масив з червоним, зеленим та синім каналами sRGB-кольору, який буде перетворено.
Повертає
number lr
- Червоний канал кольору в лінійному RGB-просторі після перетворення.
number lg
- Зелений канал кольору в лінійному RGB-просторі після перетворення
number lb
- Синій канал кольору в лінійному RGB-просторі після перетворення
Функція
Вигляд
lc = love.math.gammaToLinear( c )
Аргументи
number c
- Значення кольорового аналу в sRGB-просторі, який буде перетворено.
Повертає
number lc
- Значення кольорового каналу в лінійному RGB-просторі.
Приклади
Попередньо помножити альфа-компоненти на RGB-компоненти в лінійному RGB-просторі
local function PremultiplyLinearPixel(x, y, r, g, b, a)
r = r * a
g = g * a
b = b * a
return r, g, b, a
end
local function PremultiplyGammaPixel(x, y, r, g, b, a)
r, g, b = love.math.gammaToLinear(r, g, b)
r = r * a
g = g * a
b = b * a
r, g, b = love.math.linearToGamma(r, g, b)
return r, g, b, a
end
-- Завантажує зображення і виконує попереднє множення його RGB-значень на альфа-канал,
-- для використання разом з режимом змішування кольорів ('alpha', 'premultiplied').
-- Множення правильно враховує кольоровий простір зображення.
function NewPremultipliedImage(filepath, flags)
local imagedata = love.image.newImageData(filepath)
local mapfunction = (flags and flags.linear) and PremultiplyLinearPixel or PremultiplyGammaPixel
imagedata:mapPixel(mapfunction)
return love.graphics.newImage(imagedata, flags)
end
image = NewPremultipliedImage("pig.png")
Див. також
Іншими мовами
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info