Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 29.05.2012, 11:41   #46
4yBa4Ok
Знающий
 
Аватар для 4yBa4Ok
 
Регистрация: 01.04.2011
Адрес: Екатеринбург
Сообщений: 232
Написано 48 полезных сообщений
(для 82 пользователей)
Ответ: C3D Engine

Я как понял PhysX не скоро....
__________________





(Offline)
 
Ответить с цитированием
Старый 29.05.2012, 14:14   #47
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Да и тем более я на две недели в отпуске и ничего сейчас не делаю, а в инет выхожу с планшетного ПК ))))
(Offline)
 
Ответить с цитированием
Старый 07.06.2012, 15:38   #48
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Поменял концепцию движка.
Теперь он работает под openGL 2.1 (ибо по моим тестам быстрее directx 9), попрежнему остался казуальным. Только теперь в ядре не будет встроеной физики звука и так далее. Все это будет отдельными библиотеками. И пользователь сам может выбрать что ему использовать. В качестве звука, физики пользователь сможет использовать различные движки, все будет зависеть от того какие dll он подключит к проекту.
Теперь в качестве шейдеров будет использован CG. Никаких FFPшных функций не используется. Нет стандартного шейдера, конечно есть в комплекте пример, но программист свой шейдер делает сам и назначает его по умолчанию, и именно он будет использоваться в программе при создании объектов, пока что какого-то конкретного ToDo нету. Названия семантик, тоже можно менять. Возможность программировния техник в шейдере, под различные версии GLSL.
ТЫТРУБА
Будет детальный туториал
это будет последние кардинальные изменения... я окончательно определился с концепцией

Последний раз редактировалось pozitiffcat, 07.06.2012 в 21:57.
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 17:08   #49
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Build 131 - только графическая составляющая + Tutorial из 5 примеров и PDF. Не все возможности описаны в туториале...
скачать движок
PDF
В туториале описывается как создать проект, как рисовать объекты, как написать первый шейдер, как настраивать, как создать модель (сетку) из кода и анимацию (например для написания своего загрузчика), как сделать источник освещения.
Движок предназначен для пользователей среднего уровня. На основе него можно написать свой каркас.. это и есть концепция. Designer Casual Graphics 3D engine.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (08.06.2012)
Старый 08.06.2012, 17:16   #50
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

очень низкий уровень создания меша.
проще писать на гапи.

что думаешь о мобильных платформах?
почему cg а не glsl, если у тебя не мультигапи?

ну и почему capi, если пишешь на плюсах? intellisens хороший помощник в написании кода...

а вообще респект, что-то уже есть

примеры, желательно сделать так, чтобы они собирались в папку с бинарниками движка. чтобы небыло мути со всякими не найдена dg3d.dll.

getCamera() - в движке не больше одной камеры?

у тебя очень высокая цена ентити, сопостовима с юнити, в два раза выше чем у блица, в три раза выше чем у хорса и в 10 раз выше чем у меня. и, судя по всему, нет даже проверки на фрустум камеры. надо пилить.

Нажмите на изображение для увеличения
Название: 4096 cubes c3d.png
Просмотров: 989
Размер:	239.6 Кб
ID:	17006
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 19:33   #51
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Да фрустума еще нет. CG потому что удобно и похоже на HLSL + затачивается под разные версии шейдеров, камерой может выступать любая нода, достаточно вызвать setCamera. Как ты добился такой скорости? HolyDel У тебя даже без фрустума скорость офигенная!
capi, для дальнейшего заюзывания в разных ЯП.
Про мобильные платформы даже не читал... хотя тестировть есть на чем... но как-то не очень заинтерисован...
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 19:56   #52
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

Как ты добился такой скорости?
были кучи бенчмарков.

в двух словах ничего лишнего. нет необходимости переключать стейт - не переключаю стейт. нет необходимости счтитать матрицу - не считаю матрицу. и т.д.
ну и еще:
16 битные индексы.
оптимизация под post TnL кэш
оптимизация под картный 32-м байтам размер аттрибутов вершины
оптимизация по переключениям стейтов (для этой демки не актуально)

или ты про скорость твоей демки на моей машине? тут просто i7 и 460GT.

Последний раз редактировалось HolyDel, 08.06.2012 в 21:50.
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 20:12   #53
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

А что дало резкий прирост скорости?
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 20:22   #54
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

ничего не дало)) просто я не делал ничего такого, чтобы скорость резко падала, а ты что то сделал)) или шейдер применяешь на каждый дип, или еще что то в етом роде.

быстрее чем рендерит железо рендер все равно идти не будет.
ну и профайлер наш друг, да.
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 22:00   #55
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Что-то переключение стейтов совсем не влияют на FPS...
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 22:04   #56
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

ну ты бы показал код рендера
или профайлером посмотри. не может тупая отрисовка быть такой долгой, где то ты что-то лишнее делаешь
(Offline)
 
Ответить с цитированием
Старый 08.06.2012, 22:18   #57
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

//отрисовка сцены
for(int i=0;i<_nodes.size();i++)
	{
		if(!_nodes[i]->vbo()) continue;
		float px = 0; float py= 0; float pz = 0;
		_nodes[i]->position(px,py,pz,true);//узнаю глобальные координаты (тут тормозит перемножение матриц парента и своей, прям сильно, хз че делать)
		if(_frustum->CubeInFrustum(px,py,pz,_nodes[i]->vbo()->box()))//если попадает во фрустум
			_nodes[i]->drawVBO(m_view, m_projection);//отрисовка
//отрисовка сетки

//там есть места где сематники в шейдер задаются, но они не влияют на скорость я пробовал коментировать. компилял интеловским компилятором, тоже скорости не дало.. я в тупике, а код твоего движка не понял, да и лень разбираться...

void CVBO::drawBuffers()
{
	if(g_last_drawed_vbo == this)//это если сетка назначена на несколько объектов (быстрее не становится все равно)
	{
		APP->render()->dips_up();
		glDrawElements(GL_TRIANGLES,_cnt_indices,GL_UNSIGNED_INT,0);//short быстрее не делает
		return;
	}

	if(_vbuffer)
	{
		glBindBufferARB( GL_ARRAY_BUFFER_ARB, _vbuffer );
		glVertexPointer( 3, GL_FLOAT, 0, (char *) NULL );
	}
	if(_nbuffer)
	{	
		glBindBufferARB( GL_ARRAY_BUFFER_ARB, _nbuffer );
		glNormalPointer(GL_FLOAT,0,(char*)NULL);
	}
	if(_tbuffer)
	{	
		glBindBufferARB( GL_ARRAY_BUFFER_ARB, _tbuffer );
		glTexCoordPointer( 2, GL_FLOAT, 0, (char *) NULL );
	}
	if(_ibuffer)
	{
		APP->render()->dips_up();
		glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, _ibuffer);
		glDrawElements(GL_TRIANGLES,_cnt_indices,GL_UNSIGNED_INT,0);//short быстрее не делает
		//glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
	}
	g_last_drawed_vbo = this;
	//glDisableClientState(GL_VERTEX_ARRAY);
	//glDisableClientState(GL_NORMAL_ARRAY);
	//glDisableClientState(GL_TEXTURE_COORD_ARRAY);
	//glDisableClientState(GL_ELEMENT_ARRAY_BUFFER_ARB);
}
	}
пользуюсь математической библиотекой glm, включил поддержку sse2, fps выросло всего на 4 + матрицы по ссылке стал передавать... в итоге на 10 fps прирост, мало
поднял fps с 25 до 60 при 4096 кубиках - ксорс на моем железе дает 90, axelinx 250... Unity 60
заметил снижает скорость передача матрицы в шейдер.. а как быть? один шейдер 4096 кубов, следовательно 4096 передач параметров для каждого куба.. как это оптимизировать?

Последний раз редактировалось pozitiffcat, 09.06.2012 в 00:07.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (09.06.2012)
Старый 09.06.2012, 01:41   #58
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Обновил PDF-ку, добавил урок работы с камерами, рендером в текстуру и пост-эффектами
PDF
Движок - билд 132
Оптимизация под SSE2
добавлен frutsum
некоторые оптимизации ядра
(Offline)
 
Ответить с цитированием
Старый 09.06.2012, 03:56   #59
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: C3D Engine

Не забывай о том что пишешь то ты открытый движок, для разработчика. Следственно нужна качественная документация, и продуманная архитектура и интерфейс, также дружелюбные паттерны. Очень важно то как выглядит код, имена функций и т.п. Этим сейчас многие берут сильно вверх, а именно дружелюбностью. В пример возьми node.js, на нём начять кодить как 2 пальца. И документация содержит тела самих функций - что более чем объясняет какие данные нужны на входе, и как она работает. Также это заставляет разработчика движка следить за кодом очень критично, что требует больше времени, но ведёт к более элегантным решениям.
Также тупо Враппер ГАПИ никому не нужен. Возьми например Unity - это нечто совсем иное, и народу ОЧЕНЬ нравится, новый подход, по другому нужно мыслить - такое продумать не так и просто..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (09.06.2012)
Старый 09.06.2012, 12:18   #60
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

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

поднял fps с 25 до 60 при 4096 кубиках
молодец! более чем в два раза ускорил.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (09.06.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com