![]() |
Теневые карты - Версия для печати +- Xtreme3D Community (https://xtreme3d.ru/forums) +-- Форум Xtreme3D (https://xtreme3d.ru/forums/forumdisplay.php?fid=3) +--- Форум Вопросы и ответы (https://xtreme3d.ru/forums/forumdisplay.php?fid=6) +--- Темы: Теневые карты (/showthread.php?tid=62) Страницы:
1
2
|
Теневые карты - Глеб - 03-07-2022 Думал уже бросать проект из-за тумана на весь экран. Но как-то обратил внимание на то, что при закрытии остальных программ всё нормализуется. Но теперь у меня новый вопрос. Я не силен в программировании и пока что плохо разобрался в движке. Читаю справку на русском. Все равно у меня не получается добавить тени на ландшафт. Ландшафт 8 К разрешения. Тени на плоскости не подходят, так как есть "особенности геометрии". Значение shadow volume не подходит. Только одну модель добавил и фпс упал до 0.011. Остается shadow mapping. Вроде он довольно производительный, но имеет ограничение отдаления от камеры. У меня никак не получается подключить все. Делал как в примерах, но ничего не выходит. Справку тоже читал. Можно поподробнее как это делается по шагам? В справке про "тени в реальном времени" очень кратко, но хорошо описаны первые два варианта, а про теневые карты мало информации для меня. Я думаю там не сложно все, нужно объявить теневую карту, назначить камеру и актёров (от кого падает тень). А вот с BumpShader я не понимаю что делать. Как теневую карту передать в шейдер? И что нужно сделать, чтобы все заработало? Теневые карты - Gecko - 03-09-2022 Делается так: создаем родительский dummycube для всех объектов, которые должны отбрасывать тень (shadowCasters). Создаем камеру для рендеринга теневой карты, потом саму карту: Код: [== Неизвестный ==] Применяем к шейдеру: Код: [== Неизвестный ==] Рендерим теневую карту после Update, но перед ViewerRender (рекомендую при этом скрыть фронтальные объекты, если они есть): Код: [== Неизвестный ==] Но вообще в BumpShader самая простейшая реализация shadow mapping, для уличных сцен я бы ее не рекомендовал - у одной проекции слишком ограниченная площадь покрытия. Поищи пример cascade-shadows.gmk с каскадными тенями в SDK 3.9.0 (который еще для GM8) - там показано, как использовать три проекции (и, соответственно, три карты) разной площади для разных расстояний. Могу этот пример отдельно собрать и выложить. Теневые карты - Gecko - 03-09-2022 Думаю, надо сделать оговорку. Xtreme3d - это двиг родом из нулевых, изначально он создавался, когда еще не было никаких шейдерных теней - в нем старинный рендер (GLScene 1.0), который разрабатывали не мы. Шейдеры, теневые карты и прочие эффекты, прикрученные мной, работают вообще каким-то чудом, т.к. очень много архаичного кода, и сама архитектура движка не создавалась под шейдерный пайплайн. Мы тут все в контексте, поэтому часто говорить об этом не приходится) Короче говоря, тут непросто с нуля понять, как работают подобные эффекты, они были реализованы для тех, кто давно работает с движком и знает что делает. Теневые карты - Глеб - 03-09-2022 Так а чего, на UE4 переходить? У меня 2010 года компьютер, и видеокарта geforce gt 710 Дадите совет? Спасибо за разъяснения) Теневые карты - Gecko - 03-09-2022 Необязательно UE, полно движков сейчас. Мне сложно советовать, я с готовыми движками не так уж часто работаю. Многое зависит от задач, специфики проекта, ЯП, потребности в готовом инструментарии. Unity или Godot старое железо норм потянут, я считаю. Разные там Irrlicht, OGRE тоже никто не отменял (правда я давно не смотрел, что там у них нового), но с ними однозначно труднее будет работать, чем с тем же Unity и аналогами. Теневые карты - Глеб - 03-09-2022 Unity и UE4 у меня после создания ландшафта почему то тормозить начали, не знаю в чем дело, может файл терраина нужно моделью загружать, хотя как потом его текстурить? Готовую нужно, а я пытался 8К в унриал загрузить - не загружается. Может через внешнюю загрузку как-то надо, гамак тоже 8к не читает. Как вообще реалистичный ландшафт в играх делается? Не загружают же огромную текстуру, это ж сколько К нужно. Скорее всего маленькая разноцветная, и цвета заменяют на готовые текстуры и просто устанавливают тайловость и детализацию. Ну и карта высот тоже наверное есть. Из неё то и получают геометрию. Теневые карты - Глеб - 03-09-2022 Кстати возвращаясь к теме вопроса. Я не понимаю что нужно делать с bumpshader, его просто создать нужно функцией и как-то назвать? Зачем тогда это делать. Теневые карты - Gecko - 03-09-2022 Цитата:Как вообще реалистичный ландшафт в играх делается? Не загружают же огромную текстуру, это ж сколько К нужно. Скорее всего маленькая разноцветная, и цвета заменяют на готовые текстуры и просто устанавливают тайловость и детализацию. Ну и карта высот тоже наверное есть. Из неё то и получают геометрию.Шейдер с неск. слоями повторяющихся текстур, а как их смешивать - есть много способов. Triplanar mapping для простых случаев, либо да, из разноцветного splatmap'а считывать индекс текстуры/интерполянт в данной точке. Я в своем движке интерполирую между 4 текстурами в зависимости от 4 каналов splatmap. Видел и более сложные варианты с большим набором тайлов по принципу мегатекстуры, но подробно не изучал. Цитата:Кстати возвращаясь к теме вопроса. Я не понимаю что нужно делать с bumpshader, его просто создать нужно функцией и как-то назвать? Зачем тогда это делать.Я думал, у тебя он уже создается) Делается примерно так: Код: [== Неизвестный ==] Теневые карты - Глеб - 03-10-2022 Ясно. Спасибо) хороший движок у вас) Только единственное если я завершу игру нужно будет где-то написать юзерам чтобы не открывали браузер со вкладками!!! А кому нужно создавать эти шейдеры? Тому кто отбрасывает тень или тот на кого она падает? Теневые карты - Глеб - 03-10-2022 https://drive.google.com/file/d/1VAaKPBUQY2N3A2NtPUSFLopEptMsC7II/view?usp=sharing У меня все равно не получается, если будет время, глянь пожалуйста, что я делаю не так. И прошу проверить еще со вкладками браузера и без них как запускается игра, есть ли туман. |