Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Рендер как в Minecraft-е - кто нибудь знает основные "секреты"?

Рендер как в Minecraft-е - кто нибудь знает основные "секреты"?

Страницы: 1 2 399 100 Следующая »
=A=L=X=Постоялецwww5 мая 20120:08#0
Погуглил и главным образом только отсылки к движку Cube 2 бесплатному из того что можно сказать "разговор по существу".
Но пока не хотелось бы с головой уходить в изучение исходников - а так сказать порассуждать над основами.

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

Che@terПостоялецwww5 мая 20120:26#1
Может задебажить игру в PerfStudio/прочих? Включить вайрфрейм и всех делов :)
А вообще в майнкрафте не такое уж и большое количество видимых кубиков, инстансинг зарулит...


Програмно каждый кубик может быть или открытым(хотябы одна сторона в воздухе) или закрытым. Тоесть обрабатывается некая 3д плоскость, а не все кубики. А тут уже можно заюзать индор техники.

ConductorПостоялецwww5 мая 20120:40#2
Недавно пробовал рендерить большую территорию, состоящую из кубиков:
Изображение
40 FPS на GeForce 310M
Здесь порядка 5 миллионов кубиков, которые разделены на чанки (отдельные меши из 64x64x32 32x32x64 кубов). При обновлении чанка генерируется меш, который состоит только из видимых сторон кубов.

Правка: 5 мая 2012 0:45

JarroПостоялецwww5 мая 20120:41#3
там вапще всё разбито по chunk'ам, если не знаете - вроде как весь мир разбивается на 16x16x128 кубиков, чанков. В сети ландшафт загружается чанками.

Правка: 5 мая 2012 0:42

=A=L=X=Постоялецwww5 мая 20127:24#4
Che@ter
> А вообще в майнкрафте не такое уж и большое количество видимых кубиков,
> инстансинг зарулит...

А чего там инстансить то? Куб же очень простая фигура, более того в подавляющем большинстве видны только одна-две-три грани. Разве есть смысл "инстансить" грани?

=A=L=X=Постоялецwww5 мая 20127:27#5
Хорошо, допустим видюхи умеют сотни миллионы маленьких трисов в секунды, в это верится.
А вот как быть с филлрейтом? Довольно легко напридумывать ситуаций когда филлрейт забьёт растеризатору печенку вконец.
Например поле из множества плоских слоёв с пустыми слоями между ними и вот мы в центре композиции смотрим наверх там или вниз.
Очевидно полезно рендерить от ближних чанков к дальним включив z-buffer, но как то поэффективней можно?
HybernaculumПостоялецwww5 мая 20127:31#6
=A=L=X=
> но как то поэффективней можно?
Конечно, просто не нужно рисовать то что не видно,
раньше так во всех играх делали, а теперь разленились.
=A=L=X=Постоялецwww5 мая 20127:51#7
Hybernaculum
> Конечно, просто не нужно рисовать то что не видно,
> раньше так во всех играх делали, а теперь разленились.

Воистину так, это отличный совет. Теперь вопрос - как это реализовать в условиях майнкрафта, когда потенциально любая конфигурация кубов может быть и самое плохое - они могут быть динамически перестроены в рантайме.
Я сколько ни думаю в сторону PVS для такого массива кубов - толкового что то ничего не приходит. Либо чудовищные структуры по размеру превышающие сам лабиринт, непонятно как вычисляемые, особенно для случая рантайма, либо одно из двух.
Если например в том же же сценарии из множества плоскостей что я описал в каждой плоскости сделать дырочку вдоль одной линии - охохо...

TorpedO.vrnПостоялецwww5 мая 20128:58#9
думаю, в майнкрафте освещение интересно сделано - свет всегда четко проникает в шахты.
FROLПостоялецwww5 мая 201212:12#10
Может поможет http://www.sea-of-memes.com/LetsCode1/LetsCode1.html
Igor'
Зачетная ссылка

Правка: 5 мая 2012 12:14

=A=L=X=Постоялецwww5 мая 201212:23#11
Igor'
> http://codeflow.org/entries/2010/dec/09/minecraft-like-rendering-…
> -in-opengl-4/

Да, ссылка зачётная но и большая, вечером подробнее почитаю.

> Может поможет http://www.sea-of-memes.com/LetsCode1/LetsCode1.html

Вот сразу от себя уже странное из выстраданного вижу - тут предлагается батчи составлять по текстурам. Однако вспоминая крохотные и одинаковые размером текстурки майнкрафта сдаётся мне намного более оптимальный способ - сделать атлас из квадратных текстур и батч строить один просто манипулируя текстурными координатами. Разве не? Просто после встречи такого подхода как то сомнение возникает в практичности изложенных вещей.

ArchiDevilПостоялецwww5 мая 201217:25#12
У меня так:
+ Показать

Собираю меш по чанкам 16x16x256.

Правка: 5 мая 2012 17:26

=A=L=X=Постоялецwww5 мая 201218:18#13
Jarro
> 16x16x128
Conductor
> 32x32x64 кубов
ArchiDevil
> меш по чанкам 16x16x256.

Скажите пожалуйста - почему все (и, кстати, единственные "все" кто вообще что-то своё делал) вы удлиняете размер меша в одном каком то пространственном направлении в разы???
В чём профит?

susagePПостоялецwww5 мая 201218:44#14
удлиняют так как по Y обычно информации мало.
Страницы: 1 2 399 100 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр