AMM1AK
если весь уровень закэшировать то можно и его осветить, хотя сомневась что это можно на вебгл сделать
Андрей5000
Что значит закешировать? Нарендерить в контрольных точках маленьких кубомап и для каждого объекта выбирать ближайшую?
AMM1AK
Интерполировать по барицентрическим координатам в треугольнике построенном на ближайших контрольных точках.
XProger
А, то есть, для каждой вершины выбирается ближайшая кубомапа, а внутри треугольника уже интерполяция?
Если так, то где происходит выбор наиболее подходящей кубомапы для конкретной вершины? На cpu и индекс кубомапы записывается в атрибут вершины, а в шейдере происходит выборка из массива кубомап по этомуиндексу? Или сразу в вершинном шейдере как-то определяется ближайшая кубомапа?
AMM1AK
Нет, ambient cube считается для каждой актуальной клетки уровня, по позиции игрока находятся 3 ближайших и интерполируются, как я уже выше описал. Получившиеся 6 цветов идут в фрагментный шейдер и они общие для DIP'a.
собсна в юнити так работают лайтпробы) только их надо вручную расставлять
E-Cone
Жень, а можешь ответить на вторую часть вопроса? На какой стадии и где определяется, какой лайтпроб нужен для конкретной вершины? И ещё, лайтпробы только для фейкового gi используются или ещё для чего?
AMM1AK, в юньке вроде как для целого объекта вычисляется центр баундинг бокса и для него идет проверка, какие ближайшие лайтпробы на него влияют. В новой версии появились световые объемы - что-то более сложное для обработки длинных объектов
E-Cone
Аа, ну понятно:) спасибо)
В оригинальной PSX версии были синие кристаллы сохранения и была у них одна любопытная особенность - фейковое отражение, которое достигалось путём чтения прямо из front buffer'а (пока заполняется back), благо сонька архитектурно позволяла делать это со скоростью света.
Ночью реализовал расчёт отражения для кристаллов и у себя. Т.к. фетчить буфер кадра на современном железе неоправданно дорого, решил сделать более честное отражение при помощи карт окружения. Для каждого такого кристалла при старте игры запекается CubeMap 128х128. В будущем, планирую закрепить за ним небольшой источник голубого света.
Как они теперь выглядят показано на видео и скриншоте:
XProger
Круто! А как копаешься в psx версии? Через ida? Там насколько я помню mips архитектура. Ресурсы там хранятся также как и в pc версии?
Андрей5000
Формат карт и ресурсов частично отличается, в одном из предыдущих сообщений описывал разницу (палитры, звук и пр.), HEX редактор помог.
А как оно работает в оригинале не трудно догадаться:
XProger
> Для каждого такого кристалла при старте игры запекается CubeMap 128х128.
А зачем на старте?
Кажется, в кубическую карту можно рисовать тогда, когда нужно рисовать сам кристалл. Тогда можно реализовать отражение динамического окружения в нём - Лары, монстров и т. д.
Panzerschrek[CN]
Можно всё, но не нужно :)
Будет ли версия Nude Rider?