WIP News

Что сделал:

[+] Небо Нишиты (как в крайзисе) — динамическая смена времени суток. Можно задавать время восхода, заката солнца а также скорость его движения по небу : ) Ну и собсно начальное время суток. Задаётся в любой удобной форме. Юзаю «часы/минуты/секунды». Очень удобно получилось : )

[*] LOD ландшафт. Оптимизировал макисмально (на сколько смог). Ландшафт размером 4096*4096 метров (с шагом сетки = 1 метр) занимает 128 мб видео памяти это против 1.5 гб на предыдущем алгоритме : ) Тоесть стриммить геометрию собсно и не нужно т.к. мне ландшафт больше 2*2 км собсно и не нужен. (а это 32 метра видео памяти). LOD-ы сделал индексными буферами (может потом прикручу GCM но пока всё устраивает) с вырожденными треугольниками. Т.е. ни каких дибильных «юбок». Всё красиво и правильно стыкуется прореженными швами. Не доделал только блендинг текстур : ) Просто на траву отвлёкся. А так ни чего сложного. Максимум 5 текстурных слоёв будет (+маска).

[*] Рендеринг травы почти готов уже. на ландшафте 4096*4096 у меня может быть максимум 201+ миллион кустов травы : ) Все данные для этого занимают 16 метров всего-то. Осталось то, кстати, всего ни чего — тупо найти КРАСИВУЮ текстуру травы, а желательно несколько. У меня может быть максимум 4 вида травы на ландшафте. Да ещё и геометрию надо для неё намутить, хм. А вообще «трава» рендерится. Только вместо неё кубики : )

Освещение же у травы попиксельное — честное : )) (а какбы совсем пофиг! У меня же отложенное освещение ; )

Отскринюсь когда будет готов «лес».

UPD: всёравно выкладывал скрин на гамедьев, а, ладно, запостю. Ни чего интересного. Для количества )

0
0

Начал писать ландшафт.

Начал писать ландшафт. Сначала хотел сделать стримминг и прочую хрень но подумав пришёл к выводу, что мне МЕГООГРОМНЫЕ ЛАНДШАФТЫ нафик не нужны (по крайней мере в первой игре если она когда-нибудь вообще реализуется). Максимальный размер ландшафта в движке установлен как 4096*4096 а минимальный 64*64. Ландшафт любого из дозволенных размеров располагается целиком в видео памяти, что я себе ТЕПЕРЬ могу позволить, так как раньше у меня ландшафт 4096*4096 занимал примерно 1 ГБ видеопамяти! Теперь же такой ландшафт занимает 128 мегабайт : ) И это очень радует. Наврядли мне понадобится вообще ландшафт больше 2048*2048, который, кстати, весит вообще 32 мегабайта : ))

Ещё, правда, много работы по ландшафту.

Хотел сделать скрин но так лениво стало отрубать HDR : DD А «на улице» сильная засветка так как у меня там ни неба ни чего, короче, влом : )

«помещение» и ландшафт начинаются с координаты 0.0.0, поэтому на ниже приведённом скрине ландшафт воткнулся в «комнату». Ну какбы отскринил наверно для себя т.к. там ничо интересного пока нет : )

по-позже, как сделаю небо — запостю сюда же скрин outdoor-а )

upd: по немногочисленным просьбам поставил нормальный лайт а не кучу не пойми чего не пойми где

upd: поставил анизотропную фильтрацию текстур вместо линейной и MIP-уровни в тектсурах сгенерил. На дальнем плане чуток по-лучше стало.

если чо — картинки кликабельны )

кстати для сравнения: эта же самая сцена но с выключенным HDR эффектом:

0
0

Трындец.

Почти с самого начала работы над С++ движком (как только решил на С++ перейти с C#) у меня были постоянные проблемы, постоянно что-то отваливалось и еэто «что-то» сильно мешало работать.

Но, УРА, я нашёл причину бага ) Закомментил весь проект, потом раскомментил, и ещё несколько раз закомментил -пытался локализовать баг — ххренушки. Нашёлся в самом неожиданном для меня месте, в загрузке уровня о_О Классический FAIL — вышел за пределы массива.

Теперь всё работает стабильно, можно НАКОНЕЦТО продолжить добавлять фичи в движжок )

по порядку буду добавлять:

1. огромный ландшафт
2. динамическое небо (light scattering)
3. рендеринг густой лесной растительности (деревья, трава)
4. системы частиц
5. GUI

Ща надо хотябы начать ландшафт а то как-то стрёмно идти спать : )

0
0

Новый год же!111

Это какбэ последняя запись в блоге в этом году ) Сейчас надо вырубать компьютер, идти пить и веселиться, к чёрту ЗОЖ!! : ))

Всём, кто прочитает — успешной реализации и комериализации всех ваших проектов, крепкого здоровья и настроя на новые победы в новом году.

С Новым Годом, «мои невероятные друзья»(с) xD! Ура!!

0
0

Добавил тени и скиннинг.

Теперь в движке тени кастятся от лайтов. На кадр максимум 4 источника света могут отбрасывать тень.

На скринах ниже та хрень прпосреди сцены, она заскинена и движется в динамике, хоть на статичном скрине этого и не видно. Потом человечка поставлю


0
0

GOD DAMN YOU, MAX SCRIPT!!!! SHIT!!!

Сцуко, нахрен разработчиков 3DS MAX в биореакторы, блеать!!!111одинодин

Весь день угрохал на скелетную анимацию. НЕ РАБОТАЛА И ВСЁ! И не понятно в чём дело! Ведь я прекрасно знаю как делать скелетку! О_О <-- это какраз больше всего и бесит! И, хвала великому Ктулху, я СДЕЛАЛ ЭТО : D В чём фишка была — ? Неет, вот нихрена, не я на этот раз накосячил! Экспортёр у меня написан на MAXscript-е. Вначале была такая логика работы: прохожусь по всем объектам сцены, если класс объекта == «кость» то в массив костей добавляем, если объект — проверяем, есть ли у него скиннинг. Если есть скиннинг, то этот объект экспортим (ну там ещё куча проверок и т.п.) всё это в таком цикле: for obj in objects do
{
БЛА БЛА БЛА
}

всё работало отлично на шарпе.

А вот когда начал портировать на С++, я какбы всё оптимизирую, в том числе и экспортёры. Переписал с нуля и собсно привнёс новую логику работы:

for obj in selection do
{
БЛА БЛА БЛА
}

тоесть экспортить так можно будет ВЫДЕЛЕННЫЙ объект и ВЫДЕЛЕННЫЕ кости, это удобно ведь!

Вот и всё, в ЭТОМ и проблема! for obj in selection do — в таком цикле ПОЧЕМУТО совершенно другие индекы у костей! В следствие чего и иерархия костей экспортится КРИВАЯ, из за чего и в движке жепЪ.

Почему так? — х.з. Я специально в цикле for obj in objects do вывел все объекты сцены и не был удивлён — вывелись все и только те, которые я выбирал при экспорте. Тоесть в количестве объектов внутри objects и selection разницы нет ни какой. Тогда ПОЧЕМУ индексы у костей в selection не верные? Для меня лично загадка.

Ффф, вынос мозга.

0
0

Освещение.

Ух, провозился с ним 2 дня! Однако результ ат доставляет : ) Внизу скрин, на котором 48 лайтов. Рендерится вся сцена с 800+ FPS. Ни когда ранее в одном кадре не делал столько лайтов : ) На скрине комната на полу которой лайты, хоть этого и не видно (комнаты). Демка с лайтами, диффузом и т.п. будет в течение 3 дней.

update:

доделал финальный пасс. Там есть диффуз : )

апдейт: сделал блики + normalMapping

0
0

Light pre-pass renderer

Какбэ начал прикручивать Light pre-pass renderer : ) Офигенная штука и главное избавлена от сурового ИМХО недостатка DS — проблемы с количеством материалов + невозможность юзать MSAA.

Как обычно — смотреть неначто! Но запостю : )

следующая будет демка. По-интереснее : )

0
0