Crystallize ты считай во флоатах, как обычно. Но монохром.
А потом как лайтмапу на диск сохранять - уже пиши вместо RGB 24-битное значение интенсивности. И потом в шейдере его смешивай с реальными источниками.
Вот у Хумуса даже демка была: http://humus.name/3D/ModernLightMapping.zip
Хотя что в ней модернового, так с незапамятных времён делают.
глобалку на отдельную страничку. Ну или в соседний канал, как в UE.
Цитата:
ncuxonaT писал: В lights.rad записана яркость чего?
абстрактных чисел. Оно мало того что нефизичное, так еще и внутри компилятора умножается на какой-то от балды подобранный множитель.
Причём он свой в халфе и свой в ку3. Кстати, я тут выяснил любопытную вещь. В сталкере были ареа-лайты, но без PTPFF. Неудивительно что их так никто и не юзал.
Добавлено 11-01-2021 в 00:38:
Цитата:
ncuxonaT писал: В кластер пихаются все непересекающиеся источники?
кластеры там скорее для оптимизации. Да вон же сорцы в комплекте и там код генерации этих кластеров. Оно там просто флажочки накапливает за какой пиксель лайтмапы отвечают какие источники.
Добавлено 11-01-2021 в 00:39:
Да и как я уже говорил, во всех подобных технологиях суть очень проста, а больше всего времени отнимает разная подготовительная возня.
Дядя Миша писал: абстрактных чисел. Оно мало того что нефизичное, так еще и внутри компилятора умножается на какой-то от балды подобранный множитель.
В голде там множитель 0.1, но он такой маленький видимо просто чтобы скомпенсировать дикое усиление яркости вызванное Valve weird divider = x^3/10. А в сорсе дивайдера нет и множитель уже адекватный 100*100, чтобы при квадратичной затухании, на 100 юнитов под лампой, т.е. на полу, свет примерно равнялся тому что маппер выставил в настройках лайта(текслайта)
Crystallize писал: но он такой маленький видимо просто чтобы скомпенсировать дикое усиление яркости вызванное Valve weird divider = x^3/10.
Это только для точечных и направленных источников. Ареалайты не домножаются.
Цитата:
ncuxonaT писал: Но яркость в итоге зависит от площади?
естественно зависит.
Цитата:
ncuxonaT писал: Если я хочу заменить ареалайт одним или несколькими спотлайтами, как высчитать их яркость?
что значит "хочу" ? Можно подумать есть какой-то другой способ симулировать ареалайты. Ареалайт, это грубоговоря такой же направленный источник но с хитростью. Он использует PTPFF. Из-за чего свет исходит не из одной точки, а оказывается равномерно размазанным по всей площади, т.е. именно то, что нам и надо.
Яркость их поидее вычислять никак не надо. В ку3 яркость каждого такого источника умножается на 3 и на 0.25, но это повторюсь от балды подобранные значения. А саму яркость делить на кол-во источников не надо, они же не точечные. PTPFF сам это сделает. Но ему нужно иметь доступ к геометрии, а саму поверхность желательно нарезать на небольшие квадратики.
Crystallize писал: Как найти люксели вокруг люкселя samp->light[k]?
ну этож условно двухмерный массив. Посдвигай по ядру, выбери которое тебе больше нравится. Я так понимаю, ты просто хочешь найти 8 люкселей вокруг заданного?
C++ Source Code:
1
-1, -1
2
0, -1
3
1, -1
4
-1, 0
5
1, 0
6
-1, 1
7
0, 1
8
1, 1
Это оффсеты для текущего x, y. Но смотри, чтобы не выйти за границы массива. И не пиши результ в тот же массив.