HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=5297)
Отправлено ncuxonaT 09-07-2020 в 12:09:
Цитата:
Дядя Миша писал:
1. Можно, как я уже сказал найти пиковое значение света для всех страниц атласа, сохранить его, ну например в ворлдспавн, предварительно умножив на него все значения света. Это в некотором смысле даст такой же эффект, как и BestFitNormals - сдвигаем значения диапазона, оставляя его границы нетронутыми. А потом просто умножить в шейдере каждый пиксель лайтмапы на это значение и получим почти HDR.
И получится адовый бандинг. Будет пиковое значение, например, 10 - вместо 256 градаций получим 25.
Цитата:
Дядя Миша писал:
2. Сохранить лайтмапы в RGBe как в сорсе. Четвертый байт отводится под экспоненту. Минус в том, что скорее всего этот формат не имеет никакой аппаратной поддержки, его не сожмёшь в DXT и он занимает больше места, а я бы может четвертый байт хотел под тени заюзать.
Можно хранить как RGBA и сжимать в DXT5. А вообще есть всякие непривычные форматы типа GL_RGB10_A2, GL_RGB9_E5 и GL_R11F_G11F_B10F. Сжать их не выйдет, конечно.
Отправлено FiEctro 09-07-2020 в 12:18:
Цитата:
Дядя Миша писал:

Лайтмапа считается в вещественных числах, а записывается в картинку 24 бита, очевидно, каждый канал может хранить максимум 0-255. А во флоате там могут быть любые значения, источники света-то суммируются.
А чому сразу не считать лайтмапу в нужных пределах?__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 09-07-2020 в 12:25:
FiEctro разверни свою мысль
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 09-07-2020 в 12:52:
Ну зачем рендерить с большим цветовым диапазоном, чтобы потом его обрезать? Почему нельзя отрендерить сразу в нужном качестве?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 09-07-2020 в 13:16:
Какой еще световой диапазон? 
Ты на карту поставил лампочку и задал ей яркость 300. Очевидно 300 уже не влезает в границы байта. Но за счёт формулы затухания до сурфейса доходят меньшие значения. Но не от одной лампочки, а от разных. Они складываются. Где-то обязательно будет больше 255. Ты никак на этот процесс не повлияешь. Можно привязать эти настройки к физически корректным формулам, но проблема никуда не исчезнет.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 09-07-2020 в 13:28:
Дядя Миша
Почему тогда в других рейтрейсерах при запекании в лайтмапу этой проблемы нет?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 09-07-2020 в 15:26:
FiEctro нет какой именно проблемы? Которую ты сам себе придумал?
Добавлено 09-07-2020 в 18:26:
Цитата:
ncuxonaT писал:
Будет пиковое значение, например, 10
Попробуй еще раз прочитать то, что я написал.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ncuxonaT 09-07-2020 в 15:49:
Цитата:
Дядя Миша писал:
Попробуй еще раз прочитать то, что я написал.
Попробовал, ничего не изменилось. Может, по-другому напишешь? Или на картинках покажешь.
Отправлено Дядя Миша 09-07-2020 в 16:05:
ncuxonaT если пиковое значение не превысило 255, зачем его записывать?
Прикрутил рейтрейсер, гауссом пока не гладил.
Считалось это две минуты с половой на одном потоке, долговато конечно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 09-07-2020 в 16:06:
Дядя Миша
Там скраю карты шов?
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено ncuxonaT 09-07-2020 в 16:26:
Цитата:
Дядя Миша писал:
ncuxonaT если пиковое значение не превысило 255, зачем его записывать?
Я же говорю про нормализованный диапазон 0-1. Хочешь в целых числах - пожалуйста. Если пиковое значение 2550, на лайтмапе будет адовый бандинг.
Цитата:
Дядя Миша писал:
Прикрутил рейтрейсер, гауссом пока не гладил.
Считалось это две минуты с половой на одном потоке, долговато конечно.
Какое разрешение лайтмапы? Радиосити нет, только небо? Сколько лучей на небо?
Добавлено 09-07-2020 в 19:26:
FiEctro вот тема про лампочки, на каком скрине бензиновые разводы? https://csm.dev/threads/radius-osve...alf-life.38602/
Отправлено Дядя Миша 09-07-2020 в 16:37:
Цитата:
thambs писал:
Там скраю карты шов?
там конец карты.
Цитата:
ncuxonaT писал:
Я же говорю про нормализованный диапазон 0-1. Хочешь в целых числах - пожалуйста. Если пиковое значение 2550, на лайтмапе будет адовый бандинг.
Ты слушаешь только себя. Отучайся. Разжую подробно, еще раз.
1. Анализиурем все люксели всех страниц атласа для конкретной карты.
Находим пиковое значение. Если пик ниже 255, ставим множитель в 1.0.
2. делим все люксели на наш пик, если он более 255. Здесь приходится полагаться на практику, крайний пик навряд ли превысит 1.2 - 1.5. Просто из дизайнерского опыта, никто не будет ставить рядом сотни лампочек.
3. Здесь есть потенциальная проблема, что некоторые слишком тёмные люксели могут потенциально стать ниже 1 1 1 и соответственно превратиться в 0 0 0. Можно их принудительно ограничить на 1 1 1, хотя это и не совсем корректно.
4. При рендеринге умножаем лайтмапу обратно на наш множитель. Фокус тут в том, что дальше мы умножаем её на диффузку, поэтому итоговое значение не превысит 0-255, даже при рендеринге в RGBA8.
В чём смысл этой затеи - более эффективное использование диапазона RGB24. Я ж почему и сказал, что это чем-то похоже на BFN, там ведь тоже весь трюк сводится примерно к тому же самому.
Цитата:
ncuxonaT писал:
Какое разрешение лайтмапы?
386х386.
Цитата:
ncuxonaT писал:
Радиосити нет, только небо?
нету, разве я писал, что прикрутил радиосити?
Цитата:
ncuxonaT писал:
Сколько лучей на небо?
148 тысяч прямых и наверное около миллиона вторичных пополусфере, но это неточно, надо счётчик прикрутить.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ncuxonaT 09-07-2020 в 17:14:
Ох, ладно, по пойдем по порядку
Цитата:
Дядя Миша писал:
Здесь приходится полагаться на практику, крайний пик навряд ли превысит 1.2 - 1.5.
Это очень странное допущение. Например, рядом с ярким источником пик может быть и 10, и 20.
Цитата:
Дядя Миша писал:
3. Здесь есть потенциальная проблема, что некоторые слишком тёмные люксели могут потенциально стать ниже 1 1 1 и соответственно превратиться в 0 0 0.
Потенциальная проблема в том, что диапазон, который сейчас записывается в 0-255, будет ужат, например, в 0-100, а потом разжат обратно, и вместо плавного перехода вылезут ступеньки.

Цитата:
Дядя Миша писал:
4. При рендеринге умножаем лайтмапу обратно на наш множитель. Фокус тут в том, что дальше мы умножаем её на диффузку, поэтому итоговое значение не превысит 0-255, даже при рендеринге в RGBA8.
Точно имел в виду то, что написал? Лайтмапа (200 200 200) * множитель 2 * диффузка (200 200 200) = (314 314 314)
Цитата:
Дядя Миша писал:
Я ж почему и сказал, что это чем-то похоже на BFN, там ведь тоже весь трюк сводится примерно к тому же самому.
BFN работает только потому что нормали - единичные вектора.
Цитата:
Дядя Миша писал:
148 тысяч прямых и наверное около миллиона вторичных пополусфере
Как много. А что такое вторичные по полусфере?
Отправлено Дядя Миша 09-07-2020 в 21:14:
Цитата:
ncuxonaT писал:
диапазон, который сейчас записывается в 0-255, будет ужат, например, в 0-100
Ты не читаешь, что я пишу. Ты слушаешь только себя. Вот откуда ты взял, что я собираюсь ужимать диапазон до 0-100? Бесполезный разговор, я не буду больше ничего объяснять.
Цитата:
ncuxonaT писал:
Лайтмапа (200 200 200) * множитель 2 * диффузка (200 200 200) = (314 314 314)
Откуда ты эти числа выковырял?
В особенности множитель.
Цитата:
ncuxonaT писал:
BFN работает только потому что нормали - единичные вектора.
не забудь рассказать это Крайтеку, они оценят.
Цитата:
ncuxonaT писал:
А что такое вторичные по полусфере?
Опять придуряешься? Индирект от солнца собрать.
148 тысяч трасс, это кстати немного. Рейтрейсер на них тратит 0.3 секунды. Дерево дольше строится.
Добавлено 09-07-2020 в 22:20:
Вот статистика по рейтрейсеру (время его работы включает так же и сам процесс освещения, но думаю этим можно прнебречь, т.к. основное время уходит именно на трассировку)
Цитата:
137502 total traces
EmitDirectLight: time: 0.304986 secs
Это чисто прямой свет. 1 люксель = 1 трасса. 137 тысяч лучей
Цитата:
19250687 total traces
EmitDirectLight: time: 49.967801 secs
Включил индирект, выпуск лучей по полусфере. 19 миллионов лучей
Цитата:
49861097 total traces
EmitDirectLight: time: 96.683332 secs
Индирект + sun spread. 49 миллионов лучей.
Все замеры проводились в однопоточном режиме. Рейтрейсер, напомню, вальвовский, переделанный обратно с SSE2 на FPU. Я потестил оригинал и скорость его работы была в пределах халфовского BSP-дерева почему-то. Т.е. достойно, но ожидалось явно большее. Тогда я его переписал обратно на FPU, исправил несколько ошибок и делений на ноль (вроде как SSE2 к подобным вещам относится индиффиррентно) и ВНЕЗАПНО получил прирост скорости более чем в 10 раз.
Добавлено 09-07-2020 в 22:25:
Кстати обратите внимание. Наш Психопат уже тогда спрашивал "что значит по полусфере". То есть он просто издевается или нарочно наши слова к сведению не принимает. Слушает только себя, как я и говорил. Нам такие товарищи точно не нужны. Пусть отдохнёт в бане некоторое время.
Добавлено 09-07-2020 в 23:03:
Смотрю вот в исходники q3map2 фейк на фейке. Все эти девиансы, джиттеры и прочее, в конечном итоге сводятся к тому, чтобы нагенерить параметрических лампочек. Но есть один важный аспект - когда я буду дублировать этот лайтмаппер на GPU в реалтайме, работать с такими фейковыми лампочками будет куда быстрее и удобнее, нежели с честными формулами. Плюс оно еще и со всеми кваками совместимо по получившемуся освещению. Попробую солнышек нагенерить, дурацкое дело нехитрое.
Добавлено 10-07-2020 в 00:14:
То что слева - интерпретировало deviance как sunspred и честно выпускало лучи по полусфере. А skyLight в свою очередь, отправился в diffuse_light. 49 миллионов трасс, считалось 2 минуты 30 секунд в одном потоке.
То что справа - методы из ку3\q3map2, через слэш, потому что первым это всё же придумал Кармак, а потом эту идею развили и углубили. 18 фековых солнц. Два с половиной миллиона трасс, считалось 5 секунд в одном потоке.


__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 10-07-2020 в 03:04:
Мораль не совсем очевидна. Т.е. параметрические лампочки вместо честных формул это хорошо (по крайней мере в контексте прицела на GPU) а параметрические солнца вместо трейсов до скайдома это плохо?
Цитата:
Дядя Миша писал:
То что слева - интерпретировало deviance как sunspred и честно выпускало лучи по полусфере. А skyLight в свою очередь, отправился в diffuse_light. 49 миллионов трасс, считалось 2 минуты 30 секунд в одном потоке.
То что справа - методы из ку3\q3map2, через слэш, потому что первым это всё же придумал Кармак, а потом эту идею развили и углубили. 18 фековых солнц. Два с половиной миллиона трасс, считалось 5 секунд в одном потоке.
Я сначала смотрел на правую картинку как на более совершенную потому что там тень выделяет кривизну под холмиком, а теперь уже и не знаю.
Добавлено 10-07-2020 в 09:36:
Цитата:
Ни на каком, там либо все каналы одинаковые, либо есть только один, поэтому эффект не проявляется.
Добавлено 10-07-2020 в 10:04:
Цитата:
Дядя Миша писал:
Кстати обратите внимание. Наш Психопат уже тогда спрашивал "что значит по полусфере". То есть он просто издевается или нарочно наши слова к сведению не принимает.
Да это смахивает на культуру какого-нибудь Хабра: сразу начинать задавать кучу вопросов докладчику, просто по привычке.