ImageData:mapPixel (Українська)
Перетворює зображення, викликаючи функцію для кожного пікселя.
Це функція вищого порядку. Вона приймає іншу функцію як параметр і викликає її для кожного пікселя в ImageData.
Передана функція отримує шість параметрів для кожного пікселя по черзі. Параметри — це числа, які відповідають координатам X та Y, а також червоному, зеленому, синьому та альфа-компоненту. Ця функція має повернути нові червоний, зелений, синій та альфа-компонент для цього пікселя.
function pixelFunction(x, y, r, g, b, a)
-- шаблон функції для перетворення пікселів
-- розрухайте нові значення для r, g, b і a
-- ...
return r, g, b, a
end
В версіях до 11.0 компоненти кольору були в діапазоні від 0 до 255, а не від 0 до 1.
Contents
Функція
Вигляд
ImageData:mapPixel( pixelFunction, x, y, width, height )
Аргументи
function pixelFunction
- Функція, яка буде викликана для кожного пікселя.
number x (0)
- Координата X лівого верхнього кута області на об'єкті ImageData, для якого буде викликана функція.
number y (0)
- Координата Y лівого верхнього кута області на об'єкті ImageData, для якого буде викликана функція.
number width (ImageData:getWidth())
- Ширина області на об'єкті ImageData, для якого буде викликана функція.
number height (ImageData:getHeight())
- Висота області на об'єкті ImageData, для якого буде викликана функція.
Повертає
Нічого.
Приклади
Зробити зображення яскравішим
function brighten( x, y, r, g, b, a )
r = math.min(r * 3, 1)
g = math.min(g * 3, 1)
b = math.min(b * 3, 1)
return r,g,b,a
end
imageData:mapPixel( brighten )
Додати кольорові смужки на зображення
function stripey( x, y, r, g, b, a )
r = math.min(r * math.sin(x*100)*2, 1)
g = math.min(g * math.cos(x*150)*2, 1)
b = math.min(b * math.sin(x*50)*2, 1)
return r,g,b,a
end
imageData:mapPixel( stripey )
джерело: http://khason.net/blog/hlsl-pixel-shader-effects-tutorial/ (посилання зараз не працює, див. архівну версію на archive.org.)
Див. також
Іншими мовами
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