пятница, 20 апреля 2012 г.

SGS - Synthetic Engine.

SGS Project.


С недавних пор началась разработка проекта SGS. Рабочее название проекта "Synthetic Engine". Вообще SGS - это аббревиатура расшифровующаяся как Synthetic Graphics System, или же Synthetic Game Studio. В основе программного комплекса лежит Microsoft DirectX11 API. В силу того, что проект создавался одним человеком, да еще на чистом энтузиазме, процесс разработки продвигается не очень быстро, однако кое - какие результаты уже получены. В этой статье я буду стараться периодически освещать состояние проекта, делиться получеными результатами. Приглашаются так-же все желающие поучавствовать в обсуждении вопросов связяных с творческим процессом создания графического движка.  И так, на сегодняшний день уже реализовано не мало. Архитектура программы изначально затачивается для реализации в дальнейшем трех систем рендерринга, Forward, Deffered, Raytracing. Физика - Nvidia PhysX библиотеки. В качестве неба было принято решение пока использовать SkyBox, ввиду его относительной простоты и понятности.


Реализована система материалов, позволяющая создавать базовые материалы такие как Lambert:

Blinn + Phong:


Normal + Specular + Masked


Metall


Metall + Normal



Self Shadowed Parallax



Рендерринг текста и Terrain generator.


Недавно были добавлены Parallel Split Shadow Maps, основаные на алгоритме описаном разработчиками компьютерной игры Battlefield3.



Так-же была разработана система постпроцессов. Пока реализовано следующее:

Bloom:


DOF:



SSAO:




Хотя SSAO пока еще требует хорошей доработки, это планируется в ближайшее время.
Так-же планируется написать свой редактор уровней, но он пока еще находится в зародыше.

 
 

Это заготовка, в которой пока доступны только элементарные функции по редактированию моделей. Как только ядро движка будет более-менее готово, работа над редактором возобновится. В качестве задатков на тулсеты уже поддерживаются некие функции по вспомагательной визуализации, такие как

визуализация тангенциального пространства:


Bounding Sphere & Bounding Box




Axis:



3 комментария:

  1. Неплохо выглядит) Как ландшафт генерируете? Ещё интересно, где модели находите (особенно понравилась сцена в качестве примера для SSAO, где несколько зданий и дерево), мне что-то не попадались в свободном доступе симпатичные outdoor сцены.

    ОтветитьУдалить
    Ответы
    1. Сорри за поздний ответ. Ландшафт генерю по карте высот, кусками по N элементов. Потом через Frustum Culling отсеиваю те лоды что не видно камере.
      Модели сцены выискиваю в инете. Они слишком тяжелые в принципе, и не предназначены для рантайм обработки, однако есть более менее сносные варианты).

      Удалить
  2. Извиняюсь, но я не знаю куда ещё могу написать свой вопрос. Пишу свой очень простой 3д редактор с помощью XNA. Получаемые модели состоят из точек и линий, т.е. дан массив точек [x,y,z] и массив линий в котором находятся индексы, соединяемых точек. Проблема в том, что я не знаю как можно получить индекс точки при нажатии мыши по форме, чтобы в последствии менять её положение в пространстве)Я думаю надо как то узнать x,y координаты точки на плоскости после 3д преобразования.. может есть какие-нибудь методы в XNA или вообще можно по другому сделать. Может вы касались этого у себя в статьях (я искал, но не мог найти), то подскажите тему, если нет, то буду рад ответу)

    ОтветитьУдалить

Physically Based Rendering