forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   SimpleGraphicsEngine 0.1b (http://forum.boolean.name/showthread.php?t=9373)

mr.DIMAS 07.10.2009 23:16

SimpleGraphicsEngine 0.1b
 
:crazy:Решил замутить свой графический движок на ДиректХ 9. Мутил 6 дней - и вот что получилось:
1) Полная поддержка шейдеров до 3 модели включительно
2) Простая классовая структура
3) Двиг прост в обращении ( чтобы нарисовать кубик надо всего 7 коротеньких строк кода )
4) Нормальная камера ( на самом деле :-D ) на кватернионах
5) Пока загружает только *.х модельки но вскоре добавлю и 3ds и B3D
6) Простое использование шойдеров ( Загрузка -> Установка переменных -> Рисование )
7) Есть более расширенные настройки практически всего что есть в двиге

Дема.
В сцене самолет блицевский :-D и кубик + бамп на всех объектах с правильным освещением
Управление ну уж очень казуальным вышло :-D - WASD
AD поворот :4to:

В общем ногами не бейте.

Вот аттач( кому надо могу исходники скинуть :-D )

NitE 07.10.2009 23:18

Ответ: SimpleGraphicsEngine 0.1b
 
да, я-бы глянул исходники ))
кстати на широком формате демка выглядит жутковато

mr.DIMAS 07.10.2009 23:32

Re: SimpleGraphicsEngine 0.1b
 
Вложений: 1
блин не учел что у некоторых широкие экраны ( fuck ) ладно щас исходники выложу
вотс ( основной файл Main.cpp - т.е дема )
Core.SetFullscreenMode(0);
меняешь на
Core.SetFullscreenMode(1);
получешь оконный режим

ViNT 08.10.2009 00:02

Ответ: SimpleGraphicsEngine 0.1b
 
А что значит "Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна."?

Android 08.10.2009 00:05

Ответ: SimpleGraphicsEngine 0.1b
 
Не запускается, кидает ошибку.

impersonalis 08.10.2009 00:12

Ответ: SimpleGraphicsEngine 0.1b
 
нет редистов?

mr.DIMAS 08.10.2009 00:12

Re: SimpleGraphicsEngine 0.1b
 
пипец, почему?
to ViNT попробуй запустить исходники

ABTOMAT 08.10.2009 00:19

Ответ: SimpleGraphicsEngine 0.1b
 
:wild: Неужели так трудно сделать нормальное фрилучное управление?
Это же блин несколько строк кода (если у тебя и правда простой в обращении двиг, как написано в первом посте)
Увидел бамп, самолёт и сплющенный куб.
Для начала неплохо, но игру на этом пока не сделаешь :-D

impersonalis 08.10.2009 00:23

Ответ: SimpleGraphicsEngine 0.1b
 
Цитата:

Увидел бамп, самолёт и сплющенный куб.

Дали курит в сторонке

ViNT 08.10.2009 00:32

Ответ: SimpleGraphicsEngine 0.1b
 
Цитата:

Сообщение от impersonalis (Сообщение 120955)
нет редистов?

Да, ни студия, ни что-то подобное у меня не установлено, видимо по этому и вылетает (потом уже обратил внимание на маленький размер приложения).

Но я поражаюсь майкрософту - зачем обзывать ошибки так, чтобы потом было не разобраться, что они значат...

mr.DIMAS 08.10.2009 09:16

Re: SimpleGraphicsEngine 0.1b
 
да управление можно сделать быстро, но иногда происходит маза с неправильным перемножением кватернионов. ну впрочем эт моя проблема :)
2 АВТОМАТ а че ты хотел за 6 дней? Я буду еще много всякого добавлять. Или ты хочешь сказать что Хорс тоже писали неделю? :-)
Я вот не врубаю почему ни кто не глянул исходники? мож вы боитесь что там супер вирус :-) :-) :-) :-) :-) :-) :-)
2 ViNT соберу в кучу все длл'ки и соберу заново архив

Knightmare 08.10.2009 14:14

Ответ: SimpleGraphicsEngine 0.1b
 
Посмотрел код. Рекомендую теперь сделать Ctrl+A потом Ctrl+Del и начинать заново. Из очевидного что бросилось в глаза сразу:
1) Камера не унаследована от ентити, просто отдельный класс - бред
2) Функции управления объектами (перемещение и т.п.) не имеющие ничего общего с реальностью
3) Кругом лишняя нагрузка на процессор. На более менее приличной сцене твой двиг погибнет из-за этого
4) С текстурами вообще ничо не ясно. Но функция установки фильтрации убила (во-первых, всегда ставятся значения на 0 уровень, во-вторых, анизотропка ставится неверно).
5) Вся работа с шейдерами - тонюсенькая обертка вокруг стандартных ID3DXEffect
6) Сильная зависимость от D3DX, в идеале лучше не использовать ничего кроме шейдеров с нее.
7) Материалы типа есть, но по факту их нет
8) Увидев дефайн:
Цитата:

#define ADIN 1
Скатился под стол
9) Для загрузки Х моделей опять же юзается D3DX, поэтому о легкой загрузке других форматов забудь сразу, для этого тебе придется переписать двиг.
10) Общий стиль кода - смахивает на копипаст с разных мест. Блин, не может один человек писать используя десяток стилей (альтернативно одаренных оставим в стороне).
11) В общем и целом - это не двиг, а некая обертка над ДХ
12) Сильная зависимость от GAPI. У нас это явилось причиной невозможности портирования движка на другие платформы.
В общем работай, может чо и выйдет удобоваримое в итоге. Пока кода немного проще привести все в порядок, дальше будет хуже.
Ну и по траблам с необходимостью редиста для запуска - мать вашу, научитесь уже проект настраивать для начала, потом пишите двиги. В данном конкретном случае достаточно переключить тип рантайм библиотеки на статичную, вместо используемой DLL.

mr.DIMAS 08.10.2009 17:05

Re: SimpleGraphicsEngine 0.1b
 
Учитесь как надо отписываться! Спасибо за точное высказывание проблем. однако ctrl-a и Del я юзать не буду )). насчет ADIN эт у меня в голове после Упячки и Отаке.ру осталось.
Насчет копипаста них*я! все писал сам и куски кода брал из своих старых проектов
А зах камера должна наследоваться от ентити ?
насчет нагрузки на проц - я просто торопился и на оптимизацию пока Х положил. Но обязательно буду оптимизировать! Начну пожалуй с матриц которые в цикле рассчитываются ))) имо это есть предел тупости
11 пункт - гыыы смотри как двиг называется SimpleGraphicsEngine (простейший графический движок )
а вот с 12-ым пунктом мне вообще пох! я для винды пишу двиг а не для UNIX систем

Загрузка других форматов как раз при такой структуре будет удобной. Единственное на чем запарка будет очень долгая и нудная это на оптимизации

Knightmare 08.10.2009 17:15

Ответ: SimpleGraphicsEngine 0.1b
 
В любом случае, надо вырабатывать стиль кода нормальный (отдельные места в коде радуют, но в целом каша из разных стилей). Камера наследуется от ентити затем чтобы был единый интерфейс ко всем сущностям сцены (камера ведь такая же сущность, она так же перемещается и т.п., просто она несет свои функции дополнительно).
Цитата:

11 пункт - гыыы смотри как двиг называется SimpleGraphicsEngine (простейший графический движок )
Тем не менее. Движок это движок, а ты пока обернул часть ДХ функционала. Практической пользы это не несет.
Цитата:

а вот с 12-ым пунктом мне вообще пох! я для винды пишу двиг а не для UNIX систем
Я не говорил про никс системы. Если быть объективным - нахрен там движки не нужны никому. Однако со временем появится желание запилить ДХ11, а может на мобильные платформы портануть, а может на консольки. А нихрена и не выйдет без тотального переписывания кода.
В общем и целом - для начала выбрось D3DX меши, делай свои сюрфейсы, меши, загрузчики свои напиши для каких-нить форматов (если возьмешься за B3D очень НЕ рекомендую брать спецификацию на русском из Blitz Et Cetera, там сплошняком ошибки и неточности, лучше с офсайта слить английский). И подумай о графе сцены.

mr.DIMAS 08.10.2009 17:24

Re: SimpleGraphicsEngine 0.1b
 
а какие моменты оптимизации можешь посоветовать? или ссыль кинь если знаешь
*.b3d меня не особо радует своей ущербностью )) впрочем как и 3ds. а придумывать свой формат это расточительно, хотя может будет и компактнее и проще. в общем если так рассуждать - то чё я нуб чтоле в программинге?

Knightmare 08.10.2009 17:47

Ответ: SimpleGraphicsEngine 0.1b
 
По оптимизации:
- Организовать нормальный граф сцены с контролем переключения стейтов, шедеров, техник и т.д.
- Использовать многопоточность где это возможно. По этой теме есть хороший доклад у Романа Лута из Deep Shadows - "Внедрение многопоточного рендеринга в игровой движок" с КРИ 2009, есть ли она в сети не знаю, мы связывались напрямую с Романом.
- Использовать SIMD для ускорения математики (следовательно использовать свою математическую библиотеку, ну или найти готовую)
Это если глобально. Ну и уже по ситуации смотреть, в какую сторону дальше рыть.
По форматам - есть много хороших и разных, выбирай какой хочешь. В идеале - свой.

mr.DIMAS 08.10.2009 18:39

Re: SimpleGraphicsEngine 0.1b
 
спасибо учту

ABTOMAT 09.10.2009 15:46

Ответ: SimpleGraphicsEngine 0.1b
 
Цитата:

2 АВТОМАТ а че ты хотел за 6 дней?
Я понимаю
Я выразил недовольство только по поводу управления

mr.DIMAS 09.10.2009 16:07

Re: SimpleGraphicsEngine 0.1b
 
Блин щас по совету всезнающего ( Knightmare ) делаю оптимизацию, уже еб*нулся на отличненько.

Knightmare 09.10.2009 16:10

Ответ: SimpleGraphicsEngine 0.1b
 
А ты как хотел? Было дело мне снились строчки деферред рендера, так что у тя все впереди.

mr.DIMAS 01.12.2009 14:08

Re: SimpleGraphicsEngine 0.1b
 
Вот прошел почти месяц, трудился по 2-3 часа в день. Сделал оптимизацию, загрузку 3ds моделей, обновил камеру( теперь не глючит ), сделал свободное управление( мышь + wsad), обновил почти каждый класс в движке, создал простую систему коллизий ( сфера - сфера ),
в аттаче простая сценка сделанная в максе + мой двиг ессесно + сяшные библы для запуска у кого нету c++ , кому надо исходники ( 100 кг кода ) пишите.

зы. шейдеры откомпилены во второй версии, так что на старых компах( у кого видяха старая) не запустится.


РАБОЧАЯ ВЕРСИЯ НА 3 СТРАНИЦЕ В 33 посте

falcon 01.12.2009 16:34

Ответ: SimpleGraphicsEngine 0.1b
 
1ое - неработает
2ое - если всё ещё делаешь с d3dx, то пока совсем не айс :)
(не подумай что призываю полностью от неё отказаться.. но от того же ID3DXMesh- точно стоит (тем более если двиг пишешь в образовательных целях).... а ещё лучше проектировать так, что б от минимально зависеть от апи (Как учил дядя Ламот).. что при необходимости перейти на другое GAPI не пришлось перелопчивать весь двиг сверху донизу:) )

mr.DIMAS 01.12.2009 16:57

Ответ: SimpleGraphicsEngine 0.1b
 
блин почему неработает (((( че пишет? я ж вроде все библы нужные запаковал

mr.DIMAS 01.12.2009 17:12

Ответ: SimpleGraphicsEngine 0.1b
 
че еще и d3dx9 и d3d9 запаковывать?

falcon 01.12.2009 17:50

Ответ: SimpleGraphicsEngine 0.1b
 
Вложений: 1
не, там хз че за хрень вылазит (типа дебага Visual Studio)
а прога висит...

mr.DIMAS 01.12.2009 18:05

Ответ: SimpleGraphicsEngine 0.1b
 
ппц, блиин, у кого еще такая лажа? ояебу если такая жосская несовместимость из-за D3DX то седня же выкину его нах

Knightmare 01.12.2009 18:09

Ответ: SimpleGraphicsEngine 0.1b
 
Есть мнение что твой код рассадник ошибок. Я правда успел полюбоваться на сцену целый 1 кадр. Потом приложение выпилило себя.

mr.DIMAS 01.12.2009 18:13

Ответ: SimpleGraphicsEngine 0.1b
 
Вложений: 1
блин почему у меня все работает а у других нет? это реально не айс ((((

кажись въехал в чем проблема. у меня стоит на загрузке шрифт Consolas . а так как у других его нет то при попытке нарисовать текст приложение вылетает с ошибкой.

в архиве ехе исправленный

falcon 01.12.2009 18:28

Ответ: SimpleGraphicsEngine 0.1b
 
Цитата:

кажись въехал
неа :)
едь дальше ^_^

mr.DIMAS 01.12.2009 18:31

Ответ: SimpleGraphicsEngine 0.1b
 
все я ушел до выяснения обстоятельств с движком.

mr.DIMAS 01.12.2009 19:10

Ответ: SimpleGraphicsEngine 0.1b
 
нашел проблему - Ш Е Й Д У Р Ы. я сверхтормозящеглючный шейдер написал. буду проводить оптимизацию, новую версию( стопудов рабочую выложу через 2 дня )

LUK 01.12.2009 19:11

Ответ: SimpleGraphicsEngine 0.1b
 
Ни один из примеров не запустился...

Цитата:

Сообщение от mr.DIMAS (Сообщение 127883)
нашел проблему - Ш Е Й Д У Р Ы. я сверхтормозящеглючный шейдер написал. буду проводить оптимизацию, новую версию( стопудов рабочую выложу через 2 дня )

Ну что ж, желаю удачи в нелегком деле =)

mr.DIMAS 03.12.2009 18:56

Ответ: SimpleGraphicsEngine 0.1b
 
Вложений: 1
Переписал шейдер, подлатал дырки в классах. ДОЛЖНО РАБОТАТЬ! ТЕСТИРОВАЛ У 3-Х ДРУЗЕЙ. У ВСЕХ ЗАПУСКАЛОСЬ И НЕ ВЫЛЕТАЛО!!!
На старых компах без шейдеров ( в двиге были выключены ) тоже все работало

Knightmare 03.12.2009 19:07

Ответ: SimpleGraphicsEngine 0.1b
 
Положительный момент - запустилось.
В целом - отвратная демка. Кстати можно ли скрин как оно должно выглядеть, а то сдается мне текстуры ложатся у меня исключительно криво. Ну и билинейная фильтрация текстур вгоняет меня в уныние. Кстати скайбокс дико глючит на стыках граней. Из далека эффект как будто они выполнены так - /\/\/\/\/\/\/\/\
Ну и ФПС убил. Просто убил.

mr.DIMAS 03.12.2009 19:10

Ответ: SimpleGraphicsEngine 0.1b
 
Демка полное дерьмо, я просто торопилсо ))) поэтому ни о какой супер карте речи и не шло
фпс типа не больше 60 т.к не более частоты обновления экрана, скай бокс да )) тупак вышел из-з того что очень большое расстояние,

Knightmare 03.12.2009 19:12

Ответ: SimpleGraphicsEngine 0.1b
 
Чо? Упирается в vsync? А ничо что у мну 85 герц? И что иногда ниже 60 проседает? Скрин таки реквестирую.

mr.DIMAS 03.12.2009 19:15

Ответ: SimpleGraphicsEngine 0.1b
 
блин может тупо фпс просто рассчитывается т.к делал счетчик по книге Френка Луны
DWORD FrameCnt;
float TimeElapsed;
float FPS;
void CalcFPS(float timeDelta)
{
FrameCnt++;
TimeElapsed += timeDelta;
if(TimeElapsed >= 1.0f)
{
FPS = (
float)FrameCnt / TimeElapsed;
TimeElapsed = 0.0f;
FrameCnt = 0;
}
}

/////////////////////
time = GetTickCount();
...Рендеринг
delta = GetTickCount - time;
CalcFPS(delta)
txt.DrawString(80,0,(int)(FPS*1000));


Knightmare 03.12.2009 19:20

Ответ: SimpleGraphicsEngine 0.1b
 
Да. Счетчик погоду показывает у тебя. Но ФПС реально низкий. Fraps'у я верю. А в нем разброс - 50-70. А при vsync допустима погрешность 1-2 кадра. Вывод - срочно оптимизировать. С такими показателями на чуть более сложной сцене оно умрет нафиг.

mr.DIMAS 03.12.2009 19:22

Ответ: SimpleGraphicsEngine 0.1b
 
Вложений: 1
Ок, просто тянуть такой ( > 100 кб ) объем кода в одиночку не самое простое занятие. Кстате двиг тянет 3 000 000 треугольников( по крайней мере у меня ) с фпс 33 - 35( на скрине не 3 000 000 треугольников ))))))))))))))))))))) )

falcon 03.12.2009 20:14

Ответ: SimpleGraphicsEngine 0.1b
 
куб что-то сильно плющит..
попробуй поставь угол зрения не p/2 а p/4
картинка должна стать лучш ^^

и ещё, скажи в чём соль твоего шейдера, если источник света статичен? -_-

mr.DIMAS 03.12.2009 21:12

Ответ: SimpleGraphicsEngine 0.1b
 
источник не статичен он двигается стрелками ( источник это куб )
Новую версию с нормальной сценой новыми шейдерами и прочим выложу через день два, эта версия была проверкой на работоспособность

LUK 04.12.2009 23:24

Ответ: SimpleGraphicsEngine 0.1b
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 128133)
эта версия была проверкой на работоспособность

Ну, поздравляю - эта заработала =) Хоть на что-то посмотрел =)
ЗЫ: Скайбокс просто ужасен!

mr.DIMAS 05.12.2009 14:41

Ответ: SimpleGraphicsEngine 0.1b
 
уже работаю над новой качественной сценкой.
кто скачал, просьба писать FPS

LUK 17.12.2009 01:25

Ответ: SimpleGraphicsEngine 0.1b
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 128377)
кто скачал, просьба писать FPS

Geforce 6600 GT:
фпс постоянно скачет от 32 до 66 и обратно...


Часовой пояс GMT +4, время: 10:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot