четверг, 24 февраля 2011 г.

WIP

Пофиксил экспортёр - стал немного быстрее + экспортит объекты, состоящие из нескольких отдельных мешей.

Переписываю класс mesh-а. Изначально это был один общий класс. Сейчас сижу - разделаю. Будет общий интерфейс IMesh через который все виды мешей можжно будет одинаково рендерить, апдейтить. Давно пора было сделать. Например мне нужны некоторые методы для работы со скелетной анимацией (со скелетом И с вершинами) ну и т.п. зачем эти методы внутри статичного меша? Не нужны! Так же прикручу процедурные меши, что будет достаточно просто : ) А процедурные мне очень нужны (геометрические шейдеры не спасут).

Загрузил персонажа Miranda из Mass Effect 2 ^____^



где-то баг в загрузке материала о_О Глаза у миранды чёрные, гхм


ах да, убрал ещё добавление ambient освещения из всех типов лайтов. Было не пр
72;вильно сделано - каждый лайт добавлял свою долю ambient! так, добавив 10 лайтов радиусом 1 мм можно было засветить всю сцену о-О. Добавил новый тип источника света - AmbientLight который не нужно добавлять, который рендерится автоматом в зависимости от настроек сцены. Теперь освещение правильное.

понедельник, 14 февраля 2011 г.

Итоги работы

Так, что же я на этом С++ смог наваять на данный момент:

Графический двиг:

статическая библиоткека, реализовано:

1. система плагинов
2. мультирендер
3. менеджер ресурсов (правда пока всёравно в общем потоке работает Про потоки С++ хочу больше узнать, прежде чем юзать)
4. Виртуальная файловая система - поддержка ZIP архивов, обычных файлов с HDD, свой формат PAK файлов.
5. Скелетная анимация
6. Большой ландшафт. Макисмальный тестированный размер - 8*8 километров (с шагом сетки в 1 метр)
7. Рендеринг с отложенным освещением (не путать с полностью отложенным рендерингом!)
8. рендеринг травы - есть менеджер, занимающийся апдейтом, генерацией и рендерингом травы. Она отделена от основоного алгоритма рендеринга с целью оптимизации в следствие специфичности самой травы. Инфа о траве весит крайне мало. В памяти распаковываются только нужные инстансы травы, рендеринг в несколько DIP-ов идёт с использованием хардварного инстансинга. Мжно бьло бы сделать 1 DIP, но в таком случае Map/Unmap буферов будет каждый кадр.
9. Рендеринг растительности - все растения кроме травы. Свои методы анимации, свои методы отрисовки и шейдинга. Поа не прикрутил импосторы - провожу оптимизацию рендеринга того, что есть.
10. NormalMapping - тяжёлые параллаксы не люблю. Позже сделаю а пока и нормалмаппинга хватит.
11. EnvironmentMapping - накладываемс отражения из кубической карты, которая грузится с файла или же рендерится динамически.
12. ShadowMapping для spot light-ов. Сглаживание пока только PCF с настраиваемым ядром фильтра.
13. PSSM - каскадные тени для аутдора. Также юзаю PCF 4*4 Все тени рисуются в одну общую текстуру.
14. HDR - в нём реализован bloom, адаптация глаза, blue shift
15. Система убер-шейдеров
16. потом допишу, может что забыл )

Тулзы:

1. Экспортёры мешей, треков анимации (При экспорте меша можно точно указать какие данные экспортить а какие нет)
2. Эксплорер PAK файлов - так как формат мой собственный - нечем было просматривать "архивы". Пришлось написать "эксплорер" для PAK файлов. Написан на C#

Игровой движок:

только начал! Прикрутил физику к сущностям. Всё ))



пока всё : ( Мда, не густо..

суббота, 12 февраля 2011 г.

WIP PSSM

Вот, решил прикрутить PSSM - с ним всяко лучше сцена смотрится.

Кликабельно!!