__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
сурфейсы на которые ляжет один блок лайтмапы. Там где разноцветные треугольнички - дело плохо, прямо как в параное.
Собсно, наложение двухмерной лайтмапы на трёхмерную геометрию это и есть самый важный момент любого лайтмаппера. Свет посчитать-то тьху, по стандартным формулам, трассу ускорить вообщем-то тоже реально.
Но вот грамотно спроецировать полигоны на плоскость - задача не из лёгких.
Если мы конечно не собираемся следовать порочному принципу один треугольник = одна лайтмапа. Это и швы и изыбточность самих лайтмап, ничего хорошего. В идеале бы конечно наложить всю карту на одну лайтмапу, но так всё равно не получится по куче причин.
Дядя Миша
А какие способы знаешь по оптимизации трассы?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: А какие способы знаешь по оптимизации трассы?
Самый лучший способ - избегать рекурсии. Трасса по дереву обычно рекурсивна и это рубит всю производительность. Ну вот тот рейтрейсер из сорса нерекурсивный, видать потому и такой шустрый.
Какие еще способы? предрассчитать в геометрии всё, что можно предрассчитать, ну это и так понятно. Быстрые тесты для отсечения по ббоксу. Но главное - избегать рекурсии.
Добавлено 11-07-2020 в 20:08:
Потихоньку рефакторю лайтмаппер, заворачиваю сущности в классы.
Лайтмаппер уже вполне работоспособен, но надо правильно расставить эти грёбанные точки. На 80% результат работы зависит именно от того, насколько они удачно станут. Ну и еще на 20 от интерполяции и размытия лайтмапы, ну то в посл. очередь, т.к. иначе я вообще перестану понимать что происходит.
Так, ну чтожы, лайтмапы я построил, выглядят уже неплохо, невалидных точек исчезающе мало. Но есть чёрные пятна. Пятна, как нетрудно догадаться, берутся из неправильной нормали, например точка находится точно на стыке треугольников. В халфе приходилось заниматься преборазованием из одного текстурного пространства в другое, чтобы найти interface normal, к счастье мне всё это не потребуется. Достаточно построить глобальный triangle neighbors. Кстати из-за этих же нормалей и швы кое-где проглядывают, но тут конечно надо следить. Одно дело - черное пятно и совсем другое - шов между двумя сурфейсами.
Дело в том, что в карту должны попасть именно корректно сглаженные нормали, иначе на спекуляре тоже швы будут.
FiEctro писал: Почему тогда в других рейтрейсерах при запекании в лайтмапу этой проблемы нет?
ну может они сразу во флоат или халф-флоат пишут?
Добавлено 12-07-2020 в 20:42:
Цитата:
FiEctro писал: А чому сразу не считать лайтмапу в нужных пределах?
Цвета поедут ещё хуже чем сейчас наверное. Там ещё и лайтмапа пересчитывается в гамму 0.5 и обратно. Ты же фактически предлагаешь считать по технологиям уровня Сеги Мегадрайв где 255+1=0. Я думаю "сразу в нужной точности" ты получишь на ровном месте скачки яркости как минимум по 16 значений.
Немножко скриншотов:
На финальной картинке ничего не видно, но мне надо добиться идеала на голой лайтмапе. Буду строить соседей для треугольников, искать шареную нормаль, она как раз от всех этих пятен и швов помогает. Гораздо лучше чем все эти чистилки и замазывалки.
Добавлено 12-07-2020 в 20:04:
Легенда:
синие поверхности - это те, которым в материале указано использовать повертексное освещение.
Зелёные квадратики - это инвалидные точки, которые так и не смогли найти валидное положение. Прошу заметить, что кваки обычно хаатычно дёргают позицию во все стороны, проверяя солидность лифа, а я этого еще не делал.
Не, сглаживание нормалей не помогает, а почему, потому что возможна дублицированная геометрия - в ку3 CSG-то не было, к примеру. У меня он допустим есть, но отключаемый. И получается, балка идёт до угла, в углу такой прикладок, 45 градусов. И вот на его краю, соответственно нипочём не сгладишь - там же под ним нет ребра, просто плоскость. Да и мелкие треугольники, там тоже ничего хорошего. Трипланарная проекция идёт лесом, с ней кашы не сваришь. LSCM слишком сложный в реализации и тяжелый в работе. Но есть и более другие варианты.
Добавлено 14-07-2020 в 13:40:
Кстати, напомните, что вы там просили, какую возможность оставить?
Запекать лайтмапу прямо в блендере? Технически это возможно, но выглядеть будет дико, потому что в блендере одни лайтформулы, а у меня в компиляторе совершенно другие. Хотя если речь идёт о запекании лайтмапы для всего уровня, то да, это может представлять некоторый интерес, но опять таки - блендер не нагенерит информации для реалтайм лайтинга.
Добавлено 14-07-2020 в 13:44:
Впрочем с моей текущей системой материалов у движка нет единой концепции рендеринга - реалтайм\предрассчитанное. Наоборот предполагается, что её выберет сам пользователь. Кому-то важен реалтайм, а кому-то по душе мягкий свет запечённого освещения. Но кстати возможность переключения между лайтмапами и реалтаймом - это тоже на совести пользователя. В движке нет никакого мультирендеринга, там абстрактный конвейер, с возможностью переключения на лету между разными патчами. Сами патчи, тоже разуумется пользователь пишет - в скрипте, в шейдерах. Можно вообще сделать чисто повертексное освещение, такую стилизацию.