Archives 2010

Новый год же!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

Update

[+] Добавлен инпут джойстика, мыши, клавы
[+] Добавлены 100500 врапперов всевозможных ресурсов GAPI
[+] Добавил класс “сцена” и менеджер сцен (так как сцен может у меня рендериться несколько одновременно)
[+] Собсно наконец-то сделал базовый рендер и отрисовал чёртов кубик : )
[+] Добавил сценеграф, материалы, лайты, тесты видимости

Вот он, мой первый ацкий кубик на С++

0
0

Экспортёр

Переделываю экспортёр для 3DS MAX8. Теперь он у меня экспортит не только меши со скелеткой : ) Можно экспортировать любую нужную инфу, всё работает бысро и правильно. Пофиксил баги с миррором в TBN и множество других старых недочётов. Всё вроде как путём. Завтра (ух ё, уже сегодня) если будет время таки доделаю рендеринг моделей, наконец скрины выложу (да хоть для себя самого : ))

0
0

Шрифты в движке

[+] подключил к проекту freetype
[+] сделал генерацию текстурных шрифтов
[*] окончательно допилил лог, файловую систему.
[+] поел пельменей
[+] добавил врапперы текстуры и вершинного буфера, свои классы потоков.

На очереди загрузка и рендеринг объектов с дефолтным шейдером и сценеграф трансформаций.

Вот пример – кусок текстуры шрифта, сгенеренный в рантайме моим движком, используя мего библиотеку freetype

Кстати, большое спасибо Andrey, Sergio, FDsagizi, Wolshebnik за помощь в раскуривании С++ и графике!!

0
0

WIP news

Да пошёл он в жопу этот C#. К чертям блин! Заипал совсем. Кроссплатформенности нет, сцуко, тянет НЕРЕАЛЬНОГО размера фреймворки, тупит на массивных вычислениях и главное – тысяча дроидов, ОПЯТЬ жопа с компилляцией убер-шейдеров!! Арррр. Опять если много шейдеров компилить, то чем больше компилится тем КРИВЕЕ они компилятся. Если после компилляции каждого шейдера вызывать ещё какие-нибудь функции компилера, например препроцессинг убер-шейдера БЕЗ последующей компилляции то ещё несколько шейдеров компилятся нормально а потом опять задница.
Да, блин, конечно, это не вина КОНКРЕТНО C#, это вина кривого SlimDX (я не просто уверен, я знаю что я НЕ накосячил на этот раз). Но блин. Ну нету ни какой другой альтернативы для C#! MDX помер давно, XNA – гори в аду. ПРОСТО обёртки над DX11 нету – вот в этом и проблема C#, под него нихрена нету кто бы что не говорил (по сравнению с С/С++). Да и пошло оно всё лесом! Буду писать только на С++.

Собсно теперь C# так сказать “движок” – в топку. Пусть себе пылится. Может немного позже отдам кому-нибудь, пусть мучаются ))

1. Добавил свою виртуальную файловую систему
2. Написал content provider для ZIP архивов. Можно читать/писать файлы в ZIP архивах впринципе даже не зная, что работа идёт собсно с архивом. У каждого провайдера контента общий интерфейс, который и используется юзером.

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

IZipFileContentProvider prov(_text(“C:\Users\L\Desktop\TextNEW.zip”));

IFile* file2 = prov.getFileSystem()->GetRootFolder()->NewFile(_text(“OLOLOTEST.txt”));
IDataStream* stmWrite = file2->OpenWrite(FM_OPEN_OR_CREATE);
char data[] = {‘1’, ‘2’, ‘7’, ‘8’, ‘8’, ‘A’, ‘A’, 0};

stmWrite->Write(data, 7);
file2->Close();

вот собсно и всё ) Не нравится?? о_О А мне пофиг! : D Мне нравится.

Пофиксил работу со строками. Теперь движок полностью поддерживает юникод. Multi-byte character set не стал юзать Да и вообще это НАСТРОЙКА в студии. Полагаться только на настройки – FAIL, когда речь идёт о кроссплатформенности ИМХО.

Кстати посмотрел “пилу 7” только что – таки доставила. По сравнению со скайлайном – куда лучше.

p.s. http://news.softodrom.ru/ap/b8078.shtml ^____^

0
0