Войти
ПроектыФорумСобираю команду

iEngine2 DX9/10/11 + PhysX/Havok + PC/XBox (Киев)

Страницы: 1 2 3 4 5 6 7 Следующая »
#0
13:22, 4 янв. 2009

Доброго времени суток!

Ищу компаньонов в разработке компьютерного двига на DX9/10/11 + PhysX/Havok + PC/XBox. Некоторые нарабоки уже есть но одному как-то скучно :)

Цель разработки пока не для коммерческого использования, а для создания полноценного демо репрезентирующей возможности его разработчиков и общий потенциал данного проекта.
Разработка полноценных коммерческих продуктов - дело времени.

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

Сейчас занимаюсь компонентой рендеринга.

Реализовал:
1. Перенёс рендер в собственный поток. Взаимодействие с потоком ренедеринга производится через систему thread safe очередей;
2. Многопоточный стримминг (картинок пока нет);
3. Мегатекстурирование (картинки ниже). Пока применяется текстура размером 2048х2048 пикселей (и это не придел :) ) сохранённая в файле моего собственного формата;
4. Генерация ландшафта на шейдерах 3.0 по карте высот (картинки ниже);

Демка:
  Требования: PS, VS 3.0; двуядерный проц.
  П.С. При выходе выдаст 2 ошибки (потом исправлю).
  Скачать IEngineMegatextureDemo2.zip

Видео с результатом:

Изображение
Изображение

Рендеринг ландшафта 8193х8193 ( количество полигонов без оптимизации: 134 217 728, с оптимизацией: 155 648 ):

Изображение
Изображение
Изображение

Рендеринг ландшафта 2049х2049:

С оптимизацией геометрии (патч 32х32):

Изображение

Без оптимизации геометрии:

Размер патча 16х16:

Изображение

Размер патча 32х32:

Изображение
Изображение
Изображение
Изображение


Рендеринг ландшафта 513х513:

Изображение
Изображение

Симплификация геометрии:

Изображение

Тут виден непосредственно процесс симплификации для патчей с размером 32х32 вертекса;
Изображение

Тут виден рендеринг ландшафта с размером патчей 32х32 вертекса;
Изображение

Тут виден рендеринг ландшафта с размером патчей 16х16 вертекса. Заметен явный прирост производительности но на более удалённом расстоянии - качество ландшафта снижается сильнее чем с патчами 32х32 вертекса; По этому - размерами патчей можно корректировать качество симплификации.

На примере симплифицируется и выводится сцена состоящая из 524 288 полигонов и SkyBox.
Такая производительность достигнута на видеокарте ATI 9600 XT. И это не придел.

Я в тихом шоке:
Изображение
Это реальные результаты для патчей размером 16х16 вертексов но на ATI 3750 HD!!! FPS - просто злейший... >:0 Эту видеокарту симплифицированный ландшафт - явно не напрягает )

Для сравнения:

Изображение

Тут просто стрипами выводится 524 288 поликов с оптимизацией под кеш видео карты.

О плодотворной работе в комманде:
Всё зависит от того где Вы находитесь, что Вам интересно, и как будет удобно работать лично Вам. Мы - люди творческие, а творчество не потерпит никаких доктрин и догматов. Поэтому я за максимально демократический подход. Но раздавать исходники на право и лево, это жестко неприемлемо. Работа очень сложная и серьёзная, сами знаете почему. Насаждение графиков, планов и тд. и тп. не будет – потому что их попросту нету. ) Про себя могу сказать что движком занимаюсь исключительно в свободное от работы время - для меня это хобби, но в принципе я довольно много уделяю ему времени. Путь преодолеет идущий - это мой девиз.
Ещё было бы очень хорошо что бы каждый программист в комманде проводил ревью изменений товарища и предалагал свои идеи по улучшению кода. Тогда точно творчество будет коллективным и хорошие результаты не заставаят себя ждать.

О коде:
Движок состоит из блоков, поэтому всё сводится к реализации интерфейсов, которые потом будут интегрироваться в общий код. К коду есть определённые требования - стандарты. Их должны все без исключений придерживаться чтобы в конечном итоге не получить, как выразился один из местных - "неюзабельное Г.". :) Общий код можно хранить на SVN либо FTP, либо обмениваться по почте. Если человек находится в другом городе - общаться можно по Skype, если в Киеве можно каждую неделю встречаться и корректировать планы.

Наявные модули:
General      - основные константы функции преобразования строк;
Framework - обработка системных сообщений OS;
Core          - пока только загружает ресурсы и визуализирует (кусок кода приведён выше);
Descriptor  - хранит настройки ресурсов (у каждого ресурса свой дескрипор);
RenderManager - управляет визуализацией;
Renderer          - визуализирует с использованием функций DX9;
Effect            - ресурс;
Mesh              - ресурс;
SkinnedMesh - ресурс;
Texture          - ресурс;
Buffer            - ресурс;
GeometryOptimizer - оптимизирует геометрию под аппаратуру;
TerrainGenerator    -  генерирует полигональную стеку по карте высот, проводит оптимизацию геометрии общего плана ( D3DXOptimizeVertices(), D3DXOptimizeFaces() ).

Поскольку творчество коллективное - все находятся в равных условиях. Новые идеи - ОБЯЗАТЕЛЬНЫ !!!

Естественно, готов выслушать любые предложения.

Кому интересна идея совместной разработки двига и написания на нём демо - пишите в личку.


#1
13:39, 4 янв. 2009

Liberty Prime
> PC/[b]XBox[/b]
Как собираешься писать под XBox?

P.S. Все таки скелетная анимация, а не скелетяная :)

#2
13:45, 4 янв. 2009

В XBox - тоже иcпользуется Windows. Поэтому я не думаю что будут существенные проблемы. Насколько я знаю там есть различия в  деспетчерезации памяти и в управлении потоками (каждый поток строго закрепляется за определённым процессором). В остальном всё то-же.

#3
13:48, 4 янв. 2009

Да, анимация действительно скелетная. :)

Извините за орфографию - я программист, а не лингвист. Ошибки за меня исправляет компилятор ! :)

#4
13:52, 4 янв. 2009

сейчас графика делается на dx9 ? если да, то либо сразу погляди как делается в dx10, либо делай только на 10. Ибо велика разница в работе с этими API.

вообще, DirectX вещь подставная. Меняется резко, и не знаешь за что хвататься. =) пока делаешь на 10, выйдет 11... А быстро перейти от одного к другому увы не получается.
#5
13:57, 4 янв. 2009

> Creator Engine DX9/10/11 + PhysX/Havoc + PC/XBox

исправь Havoc на Havok. Плюс, ИМХО, выбери PhysX и забудь про Havok ;)

#6
14:03, 4 янв. 2009

Сейчас - все игровые приставки работают на dx9 ! Короме этого dx10 - немного не оправдал надежд самого Microsoft (забыли про блок программируемой тесселяции и про вычислительные возможности GPU), поэтому его мало кто будет использовать, скорее сразу на dx11 перейдут, включая приставки. dx9 интересен своей простотой +  его поддерживает всё графическое железо. Поэтому именно с него я и решил начать. Что касается воместимости DX9/10/11 - то разница действительно большая, я склоен к созданию максимально гибкого мастабируемого общего интерфейса, думаю в производительности потерь не будет. Разница будет только в загружаемых шейдерах, во всём остальном всё будет одинаковым.

#7
14:20, 4 янв. 2009

Liberty Prime
> Сейчас - все игровые приставки работают на dx9
Все - это XBox 360?
К примеру на PS3 не DirectX, и даже не OpenGL.

#8
14:24, 4 янв. 2009

Liberty Prime
> В XBox - тоже иcпользуется Windows. Поэтому я не думаю что будут существенные проблемы. Насколько я знаю там есть различия в деспетчерезации
> памяти и в управлении потоками (каждый поток строго закрепляется за определённым процессором). В остальном всё то-же.
Проблема в том, что для написания под XBox тебе нужен devkit, который стоит денег и его не дают кому попало.

#9
16:05, 4 янв. 2009

MechaGodzilla

>Проблема в том, что для написания под XBox тебе нужен devkit, который стоит
>денег и его не дают кому попало.

Насколько я знаю такая ситуация с SPS, c XBoх пока досконально не изучал ситуацию с правами и всем остальным. Пока меня интересует реализация своих задумов, совместимость с XBox и демка.

#10
20:33, 4 янв. 2009

serg_usyp
>Liberty Prime
>> Ищу компаньонов в разработке компьютерного двига на DX9/10/11 + ...
>А расскажи, пожалуйста, поподробнее, как ты будешь осуществлять эту совместную
>работу с компаньонами.

Всё зависит от того где он находится, что ему интересно, и как будет удобно работать лично ему. Мы - люди творческие, а творчество не потерпит никаких доктрин и догматов. Поэтому я за максимально демократический подход. Но раздавать исходники на право и лево, это жестко неприемлемо. Работа очень сложная и серьёзная, сами знаете почему. Насаждение графиков, планов и тд. и тп. не будет – потому что их попросту нету. ) Про себя могу сказать что движком занимаюсь исключительно в свободное от работы время - для меня это хобби, но в принципе я довольно много уделяю ему времени. Путь преодолеет идущий - это мой девиз.

Движок состоит из блоков, поэтому всё сводится к реализации интерфейсов, которые потом будут интегрироваться в общий код. К коду есть определённые требования - стандарты. Их должны все без исключений придерживаться чтобы в конечном итоге не получить, как выразился один из местных - "неюзабельное Г.". Общий код можно хранить на SVN либо FTP, либо обмениваться по почте. Если человек находится в другом городе - общаться можно по Skype, если в Киеве можно каждую неделю встречаться и корректировать планы. Поскольку творчество коллективное - все находятся в равных условиях. Новые идеи - ОБЯЗАТЕЛЬНЫ !!!

Естественно, готов выслушать любые предложения.

#11
22:35, 4 янв. 2009

serg_usyp
>А UML у тебя на это есть, желательно версии 2.0 ?
В общем очень уважаю визуальное проектирование. У меня даже был этап проектирования - месяцев 5. Мои UML диаграммы сохранились - но проект очень серьёзно от них отклонился. В общем, между реальным проектом и диаграммами - теперь уже настоящая пропасть. Я давно их не обновлял, и в основном диаграммы рисовал на бумаге от руки и тут же кодил. Причина такого большого разрыва заключается в плохом представлении того что надо сделать и того какие реальные средства для этого есть, в общем DX я не очень хорошо понимал, и архитектура получилась весящей в воздухе. Кроме этого по мере разработки стали появляться всё новые и новые интересные идеи - они тоже одни из причин существенного отклонения. Кроме этого я уже несколько тысяч строк просто выкинул в результате рефакторинга - это третий по счёту проект который я начинаю в VS. В общем шишек я понабивал очень много... Но теперь у меня уже есть представление как и что делать, хотя по прежнему большие куски кода переделываю по многу раз чтобы избавится от ликов, повысить скорость и просто получить эргономичный и эффективный дизайн. По этому все классы пытаюсь делать максимально простыми, удобными и читабельными - принцип самоописывающегося кода. Мои коллеги c основной работы говорят, чем больше комментариев в коде тем хуже код...

>И у тебя он уже настроен?
Нет, пока ещё нет. Пока я работаю сам он мне не нужен. Но SVN вещь удобная и необходимая.

> ИМХО, исходники ядра движка и UML всё равно придётся открывать, иначе потенциальные компаньоны не смогут ознакомиться с тем на каком уровне идёт работа.
:) Как такового ядра пока нету :) Пока только одна компонента отвечающая за отображение - Renderer ну и система работы с дескрипторами ресурсов - которую я сейчас оптимизирую. Скелетная анимация работает c использованием метода fixed-function indexed планирую перевести полностью на шейдеры. Сейчас работаю над ландшафтами. Собственно вкратце всё.
Наявные модули:
General      - основные константы функции преобразования строк;
Framework - обработка системных сообщений;
Core          - пока только загружает ресурсы и визуализирует (кусок кода приведён выше);
Descriptor  - хранит настройки ресурсов (у каждого ресурса свой дескрипор);
RenderManager - управляет визуализацией;
Renderer          - визуализирует с использованием функций DX9;
Effect            - ресурс;
Mesh              - ресурс;
SkinnedMesh - ресурс;
Texture          - ресурс;
Buffer            - ресурс;
GeometryOptimizer - оптимизирует геометрию под аппаратуру;
TerrainGenerator    -  генерирует полигональную стеку по карте высот, проводит оптимизацию геометрии общего плана ( D3DXOptimizeVertices(), D3DXOptimizeFaces() ).

#12
23:48, 4 янв. 2009

serg_usyp
Любой нормальный хостинг на данный момент предоставляет goodies и один из итемов SVN (или CVS кому нравится).
Сетап и конфигурация занимает 2-3 минуты, а 24*7 это уже проблема хостера.
Давно работаю с SVN на dreamhost.com все гладко.

Сорри если оффтоп.

#13
23:49, 4 янв. 2009

serg_usyp

>Ты понимаешь, что без UML, тебе будет очень проблематично с компаньонами
>согласовывать распределение работ?
Да, думаю если компаньёну нужно будет поручить большой фронт работы - то я однозначно согласен. Но если это будет реализация одного интерфеса думаю проблем не должно быть. Хотя представлять интерфейс в виде UML  в  принципе удобно и проффесионально, я считаю.

>И как быстро ты его сможешь настроить?
А как быстро надо !?

>Сможешь ли ты обеспечить его стабильную работу в режиме 24*7 ?
В принципе я ночью не программирую :) Без привлечения внешних серверов можно обеспечить с 8 утра до 23 ночи  * 7. Ну а если привлекать внешние - то 24*7 думаю без проблем организуем.

>А как у тебя дела с переходом в режим рендеринга средствами D3D10 и D3D11 ?
О - это пожалуй краеугольная проблема :) Благо у меня есть калассы Render и классы ресурсов которые необходимо будет переопределить для случая  D3D10 и D3D11.

class IRenderer
{
public:

  virtual bool Create( Texture* )=0; 
  virtual bool Create( Effect*  )=0;
  virtual bool Create( Mesh*    )=0;
  virtual bool Create( Buffer*  )=0; 

  virtual bool SetCommand( Clear*  )=0;
  virtual bool SetCommand( Start*  )=0;
  virtual bool SetCommand( Finish*  )=0;
  virtual bool SetCommand( Present* )=0;

  virtual bool SetParameter( TransformWorld* )=0;
  virtual bool SetParameter( TransformView* )=0; 
  virtual bool SetParameter( vector < Buffer* >*  )=0;

};

#14
0:07, 5 янв. 2009

хы. Странный метод SetCommand ) что он принимает в качестве параметра-то?
другими словами, команды тоже представлены классами?

Страницы: 1 2 3 4 5 6 7 Следующая »
ПроектыФорумСобираю команду

Тема в архиве.