Красивое 3D демо, Open Source, качаем!

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Красивое 3D демо, Open Source, качаем!

Сообщение Tarantul » 16.12.2006 (Сб) 17:39

Сделано полностью мною за 3 недели. Полностью SoftWare(Picture1.Picture :D ), вообще без Direct3D! Использует только базовые функции DirectDraw для быстрого вывода пикселей.

Демонстрационная программа показывает, как осуществлять программную растеризацию сцены с базовыми возможностями: преобразование, 3D-отсечение, текстурирование, освещение, Z-Buffer, mip-mapping, и т.д. Фактически, все построено на векторной и аналитической геометрии, так что без ее знания врядли что-то можно понять в исходниках :) Но посмотреть на результат все равно стоит! Перемещаться по сцене - как в играх, с помошью стрелок, мыши, CTRL/SHIFT.
Можно поставить любое разрешение, глубину цвета. В процессе работы можно переключать режими (WireFrame->Solid->Textured->Textured(persp) 1/z buffer-> Textured(persp) 1/z buffer gouraud, + ULTRA режим с билинейной фильтрацией :!: ). В последнем режиме изображение выглядит ни чуть не хуже, чем, например, уровень Unreal Tournament на уппаратном ускорении.

А теперь самое интересное: все это сделано на VB :), причем дает не такие уж плохие скоростные показатели. Две самые мощные функции отображения треугольников все-таки переписаны еще и на на C++ (не удержался), и это уже дало выигрыш в два раза. Увы, VB слабо подходит для оптимизационных целей .

В придачу еще и загрузчик MD2.
Весит 2М, но оно того стоит! Тестируйте, хвалите :). И не забудьте поэкспериментировать с разными режимами экрана и отображения!
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Tarantul 17.12.2006 (Вс) 19:40, всего редактировалось 2 раз(а).

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 16.12.2006 (Сб) 18:17

риспект и уважуха 8)


з.ы. со звуком не пускается. Это Мерлин Менсон борется за копирайт :)

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 16.12.2006 (Сб) 18:28

Очень хорошо и интересно сделано, но... скорость...
У меня не поднимается выше 20 fps даже на 800*600*16 (Radeon 9200).

При нажатии клавиши Win во время демо происходит Automation Error: Run-time error -2005532222
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 16.12.2006 (Сб) 19:02

Пасибо за отзывы! не стесняйтесь, пишите есщо:)
Сделал звук по желанию - видимо не зря :D Судя по всему, у тебя какой-то библы нету.

Очень хорошо и интересно сделано, но... скорость...
У меня не поднимается выше 20 fps даже на 800*600*16 (Radeon 9200)

Прикол этой демы в том, что она ВООБЩЕ не использует аппаратное ускорения. Хоть RadeonX1900XTX(как у меня), хоть Integrated Video Controller - все зависит тока от проца :)

Насчет Automation Error - очевидная ошибка по потери поверхностей. Уже исправлена, выложенная версия без нее :) Исправлена десятком строк.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.12.2006 (Сб) 20:44

Здорово!
У меня 24 FPS в 1024x768, с отрисовщиком из QDll.dll.
Кстати, а что там внутри? :-)
Изображение

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 16.12.2006 (Сб) 21:27

Ничего сверхестественного :)
Почти точная копия этой-же функции на VB (DrawPoly...), только деление и умножение на степень двойки заменено побитовым сдвигом. (В DLL, как и в VB, в циклах используются числа с фиксированной точкой, сделанные из int все тем же побитовым сдвигом).

В принципе, могу выложить и исходники QDll (MSVC++.net),мне не жалко :)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 16.12.2006 (Сб) 21:46

Запустил и получил...

---------------------------
D:\Documents
---------------------------
The specified device is not open or is not recognized by MCI.
---------------------------
OK
---------------------------


После нажатия ОК мне ещё раз 8 во время работы программы выдавалось это сообщение.
Кто-то забыл учесть в пути пробелы? :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 16.12.2006 (Сб) 21:48

Tarantul
Очень интересно! Вообще сложно поверить но у меня 45 FPS :) Блин даже незнаю что я такого делал. Проц AMD Athlon XP 2600+
#define ROFL 0xDDDD

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 16.12.2006 (Сб) 21:57

BV
Ладно тебе, две кавычки забыл вставить... Засунь в нормальную папку - и все заработает :)
Скажи лучше как сама программа.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 16.12.2006 (Сб) 22:07

Ничего так, красиво :)

FPS в среднем 17.
Модельки, видимо, из Quake? Или все-таки UT?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 17.12.2006 (Вс) 0:17

Модель вообще с PolyCount (бывшего :( ).
Кстати, пытался на скорую руку исправить mciExecute, и напоролся на дурацкий глюк с пробелом (здесь его так и не решили). Скоро заменю на mciSendCommand, а пока надо тестить в нормальной папке (без пробелов).

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 17.12.2006 (Вс) 7:10

Tarantul
Демо просто класс :!:
Загляни в мой топик, я думаю тебе есть что сказать по предложенной там теме.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.12.2006 (Вс) 10:03

Tarantul писал(а):В принципе, могу выложить и исходники QDll (MSVC++.net),мне не жалко :)

Да я не претендую, просто странно увидеть на архиве надпись "со всеми исходниками", а внутри их не обнаружить...
Изображение

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 17.12.2006 (Вс) 11:11

все конечно хорошо но 40 фпс
никуда не годится при всего 3000 треугольнков :?

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 17.12.2006 (Вс) 13:52

Да не в фпс тут дело. Иногда лучше жевать..

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 17.12.2006 (Вс) 14:55

вот и жуй

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 17.12.2006 (Вс) 15:03

ничего более умного я и не надеялся услышать.

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 17.12.2006 (Вс) 15:50

успокойся Малыш не будем здесь перепалку устраивать

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.12.2006 (Вс) 15:57

Bonesnapper, предупреждение.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 17.12.2006 (Вс) 16:38

Насколько мне известно, в тех же играх(типа Quake1) выводиться за кадр примерно такое же количество треугольников. Другой вопроc, что на карте их может быть на 2-3 порядка больше, но тут уже в ход вступает BSP.
Вообще говоря, дело не в количестве, и один треугольник на весь экран даст такой же FPS в программной прорисовке :)

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 16.02.2007 (Пт) 23:28

Автору респект!
Я пытался сделать нечто подобное, но очень уж гемморойно было с оптимизациями...

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 06.05.2007 (Вс) 22:08

Кстати, перекомпилил библу на VC.NET и FPS на 1280х1024х32 стал 30-35 показыватся, а раньше больше 15 не видел, а на 800х600х32 теперь 45-49 (интересно а чё ни при каких 50 нет, а тока 49 макс)

У мня CPU = AMD Sempron 1.14GHz

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Сообщение StimorolD3DX » 11.05.2007 (Пт) 18:09

AMD Athlon x64 Dual core 4200+ = 40 fps max
жуть :(

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 22.06.2007 (Пт) 23:20

Текущяя прога - это "KinderGarten" по сравнению со следующей :)

Выкладываемая программа схожа по структуре с первоначальной, но очень сильно расширена. Теперь она грузит карты из Unreal, строит BSP-деревья и на их основе трэйсит LightMap'ы, и самое главное - это растеризатор, зветься fpu.cpp. Большая часть процедуры - на чистом asm'e с использованием SSE, SSE2, MMX и т.д, реализует полноценный soft-rendering карты с lightmap-ом и би-линейной фильтрацией!

http://www.abctop.ru/download/13803 (3.3M), пароль alexv@skif.com.ua

P.S. до стадии релизного движка проект так скорее всего и не добереться :( Его и так последний раз открывал еще в марте...

Stop Kran
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 22
Зарегистрирован: 19.06.2007 (Вт) 3:35
Откуда: из онлайна

Сообщение Stop Kran » 23.06.2007 (Сб) 0:13

Респект тебе за проделанную работу. Обрабатывать графику на процессоре это конечно интересно, но по моему не правильно. Сравнительно скорость gpu растёт быстрее чем cpu и скоро уже подумывают часть работы процессоров перекладывать на видеокарты, а ты наоборот процессоры загружаеш. А на фпс мне лично плева** главное чтобы не меньше 15-ти, а вот прорисовка, свет, тени, проработка мелких деталей для меня гораздо важнее.

Кстати про мелкие детали
в 3д графике ценится проработка мелких деталей: от большого взрыва до гибели амебы.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 23.06.2007 (Сб) 22:05

Stop Kran
Не забывай, что очень немалая часть аудитории сидит в офисах, где видео встроено в материнку... На нём сильно не порисуешь. А по поводу красивостей - это, конечно, очень хорошо, но во многих современных играх они идут в ущерб качеству игрового процесса, которые толком не прорабатывают, желая сделать покрасивше
Изображение

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 24.06.2007 (Вс) 17:40

Stop Kran
никто и не говорит о практическом применении этого кода. Понятно что это сделано ради интереса.. и менее ценным код от этого не становится.

keks-n
Для тех кто сидит в офисах есть микрософт ворд и пасьянс косынка. Не использовать в играх gpu под предлогом того, что часть аудитории сидит в офисах - крайне неразумно.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.06.2007 (Вс) 20:39

Stop Kran

... А на фпс мне лично плева** главное чтобы ...


Объясни мне, пожалуйста, для чего в слове "плевать" ты последние две буквы заменил на * ? Или ты имел ввиду слово "плева", а эти *-ки - это типа обозначения сноски?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 25.06.2007 (Пн) 10:17

nekeda
А ноуты? Там тоже встроенное видео, как правило(из 6-ти лишь в одном было приличное видео)
Изображение

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 25.06.2007 (Пн) 13:13

keks-n
дык, ноуты это те же "компы в офисах".. человек, который планирует работать с мультимедиа, будь то компьютерная графика, игры, звук - никогда не будет заниматься этим на ноуте)

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList