Мне интересно, как реализуют рендеринг реалистичных теней в песочницах типа

Minecraft с включенными шейдерами на реалистичные тени, конечно же.

У нас есть свет от солнца + свет от блоков (факелы, печки и т. д.). И если солнце одно, то блоков то может быть дофига. Даже если принять, что свет любого блока угасает до 0 на расстоянии 16 блоков (так в оригинальной системе освещения майнкрафта так устроено), то всё равно ничто не мешает игроку, например, разместить 100 факелов в пределах куба 16х16х16 и тени от них должны как-то рендериться.

Но я знаю только вариант рендеринга теней, где рендерится специальная текстура с глубинами с точкой зрения из каждого источника света. А потом когда идёт основной проход рендера, то во фрагментном шейдере мы бежим по всем текстурам от источников света и определяем яркость освещения в конкретной точке.

Это работает для одного или нескольких источников освещения. Но если у нас 100 источников освещения, то мы банально не сможем забиндить 100 текстур в шейдер основного прохода рендера, упрёмся в лимиты OpenGL (а Minecraft использует OpenGL).

Как эта проблема обходится в модах на реалистичные тени?

7 ответов

22 просмотра

хм оригинальный оптифайн так не умел (он умел только в простые шадовмапы от солнца без каскадов), а чё за моды?

KivApple- Автор вопроса
usernameak
хм оригинальный оптифайн так не умел (он умел толь...

всм не умел? типа реалистичные тени только от солнца? а от факелов обычные майнкрафтовские?

Используют теневые атласы

попробуй поставить 100 факелов. всё сдохнет если там будут рисоваться тени от каждого. А по лимитам, есть много вариантов. вместо кучи отдельных текстур использовать массив. Или один большой атлас. Ну и на крайний случай forward rendering - разделить на отдельные проходы и сложить результат.

выкидывают обычно освещение 0-15 в рендере, и все на этом

feedable
выкидывают обычно освещение 0-15 в рендере, и все ...

тоесть остается оно только в логике игры

Похожие вопросы

Обсуждают сегодня

День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Что за японодичь? Мне хоть m68k, хоть 8080, 8088, на любом можно что-то создать
Егор
5
и да, кто сказал что у эпла именно такой isa?
Boris Vinogradov
5
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
ну так тогда какой эплы юзают набор инструкций, и тогда считаються ли они армами вообще?
Shvabrikk Nya
4
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
насколько реально, что при задействовании хардварного курсора фреимбуфер начнёт сильно искажать выводимую инфу? а то уже и понять то не могу сон это был или явь
Mixail Frolov
3
Карта сайта