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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 03.12.2013, 19:14   #121
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от HolyDel Посмотреть сообщение
У меня в движке есть граф сцены, что совершенно не мешает рендерить в ручную объекты.
camera->RenderEntity(entity(;
у меня slim ничего лишнего, хочу попробовть такую реализацию
(Offline)
 
Ответить с цитированием
Старый 03.12.2013, 19:17   #122
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

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

Также менеджить свой стейт - это круто в плане контроля и возможностей, но очень не удобно и требует дополнительной разработки от самого разраба, что приведёт его к переписке того же стейт менеджера, но по своему.

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

загрузка изображения1 в атлас - получение текстурной координаты
загрузка изображения2 в атлас - получение текстурной координаты
билд атласа (создает текстуру внутри себя)
создание изображение1, передав в атлас текстурные координаты1
создание изображение2, передав в атлас текстурные координаты2
(Offline)
 
Ответить с цитированием
Старый 03.12.2013, 19:21   #123
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от ABTOMAT Посмотреть сообщение
Ну и в чём будет принципиальное отличие?
В 2Д так делали потому что в каком порядке отрендеришь картинки, в таком они и будут друг на друге лежать.
В 3Д этим занимается Z-буфер, и хоть ты в каком порядке отрендеришь, всё будет так же, как и с Z-буфером.
Логично рендерить группами с одинаковыми текстурами/шейдерами, чтоб не гонять их каждый раз и этим стоит заниматься движку.
Альфе нужна сортировка, но с этим опять же лучше пусть двиг справляется.
В-общем я не вижу что такого может прогер сделать крутого, что не может сделать за него двиг и смысла забивать прогеру голову этим.
Разве что в FPS ствол поверх всего отрендерить, но ради 1 ствола огорода не городят.
я когда делал освещение, я просто охренел от количества шейдеров, которые расплодились, и что-то простотой перестало пахнуть, решил сделать движок, расчитаный на более продвинутого в плане графики программиста, и возложить цикл на его плечи, так контролировать всякую такую хрень проще. Темболее нарисовать в цикле много раз 1 меш в цикле (как 2д с картинками) проще ИМХО.
Опытом проверится... на самом деле хз.
(Offline)
 
Ответить с цитированием
Старый 03.12.2013, 20:28   #124
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Clear Engine (Понятный движок)

загрузка изображения1 в атлас - получение текстурной координаты
загрузка изображения2 в атлас - получение текстурной координаты
билд атласа (создает текстуру внутри себя)
создание изображение1, передав в атлас текстурные координаты1
создание изображение2, передав в атлас текстурные координаты2
тоже хотел такую штуку замутить но все руки не доходят
(Offline)
 
Ответить с цитированием
Старый 04.12.2013, 17:02   #125
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

добавил доки, правда их там мало не все успел написать
https://bitbucket.org/pozitiffcat/sl...oc/?at=default

реализовал кучу функционала, которым можно воспроизвести работу Clear Engine. И даже более, единственное ограничение, это формат вершины, 96 байт positions, normal, texcoord, texcoord2, joint, weight, binormal, tangent.
(Offline)
 
Ответить с цитированием
Старый 04.12.2013, 17:07   #126
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)

96 байт
жирно. необходим выбор программистом любого своего варианта
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 04.12.2013, 17:10   #127
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от Mr_F_ Посмотреть сообщение
жирно. необходим выбор программистом любого своего варианта
да, но там как бы все самое необходимое, причем загрузчик моего формата использует все эти атрибуты
хотя как вариант хранить в поверхности еще и формат описывающий ее...
---
хоят не не вариант. Я не могу для всех шейдеров хранить attribute location в поверхности
(Offline)
 
Ответить с цитированием
Старый 04.12.2013, 17:16   #128
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)

ни одной модели не нужны все эти данные, большинство моделей не имеют скининга, а те кто имеют - редко требуют вторые UV.
тангент и бинормал ужимаются в один vec4.

--
со страницы 19 можно почитать как жестоко ужимали вертексы в just cause 2:
http://www.humus.name/Articles/Perss...GameWorlds.pdf

вообще тут нет идеального варианта, в одном проекте могут юзаться разные структуры.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
pozitiffcat (04.12.2013), Samodelkin (04.12.2013)
Старый 04.12.2013, 20:23   #129
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

запилил атрибуты
sProgramInitData progInit;
progInit.add(VertexAttribute::VaPosition"POSITION");
progInit.add(VertexAttribute::VaTexcoord0"TEXCOORD");
progInit.add(VertexAttribute::VaJoint"JOINT");
progInit.add(VertexAttribute::VaWeight"WEIGHT");
progInit.vertexSource readTextFile(context"simple_anim.vs");
progInit.fragmentSource readTextFile(context"simple_anim.fs");
m_program context->video()->createProgram(progInit);

sVertexDeclaration vd;
vd.attributes.push_back(sAttributeDeclaration(VertexAttribute::VaPosition03));
vd.attributes.push_back(sAttributeDeclaration(VertexAttribute::VaTexcoord0242));
vd.stride sizeof(sVertex);
surface->setVertexDeclaration(vd); 
(Offline)
 
Ответить с цитированием
Старый 05.12.2013, 02:09   #130
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Clear Engine (Понятный движок)

столько лишних слов...
это нифига не slim.
(Offline)
 
Ответить с цитированием
Старый 05.12.2013, 09:49   #131
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Clear Engine (Понятный движок)

Сообщение от HolyDel Посмотреть сообщение
столько лишних слов...
это нифига не slim.
не, ну у вершины есть статический метод, по которому можно получить ее формат, вот если ты хочешь юзать свой формат, тогда придется потрудится.

Slim не в плане простоты, а в плане того, что движок не жирный.
(Offline)
 
Ответить с цитированием
Старый 05.12.2013, 15:45   #132
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Clear Engine (Понятный движок)

Кстати вот в d3dx есть такая штука id3dxeffect, которая позволяет более менее структурировать большое кол-во шейдеров, хотя конечно имхо от большого кол-ва шейдеров нужно по возможности избавляться. Можешь попробовать в opengl что-то подобное сам сделать.

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

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

Что ты понимаешь под простотой движка? Например кодить небольшие игры довольно просто на unity3d или blitz3d, однако их нельзя назвать оптимизированными по производительности. С другой стороны оптимизированный код обычно больше по размеру чем универсальный, потому что в нем может быть много частных случаев и ассемблерных вставок, он сложней для понимания и отладки. Так что имхо упрощать нужно архитектуру, убирать ненужный функционал, а также упрощать структуру и семантику кода пока это совпадает с повышением его производительности, и улучшением читабельности.

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

Поэтому я бы еще раз обратил внимание на пост товарища jimon'а где то в начале темы - там он расписывал о driven data.
Это удачное решение потому что позволяет четко распределить обязанности между движком и редакторами. Задача движка воспроизводить контент на разных платформах, с минимальным вмешательством программиста. Задача редакторов предоставить функционал движка разработчикам игр в наиболее подходящей для данного проекта форме. Тем самым подход становится более декларативным - мы даем движку контент и говорим что делать, а не как делать. Движок становится проще, а редакторы гибче, к тому же я могу на каждый проект сделать свой набор редакторов, и делать их по мере необходимости.
(Offline)
 
Ответить с цитированием
Старый 05.12.2013, 17:07   #133
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)


ассемблерных вставок
интересно кстати, у кого-нибудь хоть их юзанье на практике оправдывалось?
я кроме sincos за одну инструкцию не знаю ничего такого полезного, что нельзя было бы сделать в обычном С, он компилится и так более-менее предсказуемо.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (05.12.2013)
Старый 05.12.2013, 17:46   #134
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Clear Engine (Понятный движок)


simd однозначно лучше на ассемблере. потому как компилятор далеко не всегда может сам распаралелить цикл или т. п. У себя в двиге кое-где заюзал, но пока очень мало - оптимизацию на потом оставил, так что точнее сказать не смогу, но теоретически на x64 где 16 xmm регистров можно соответственно добиться ускорения в 8 раз. avx еще больше.
На С++ интринсики работают чуть хуже.
Однако если у тебя с производительностью все нормально то от ассемблера стоит воздержаться.
(Offline)
 
Ответить с цитированием
Старый 05.12.2013, 18:03   #135
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Clear Engine (Понятный движок)


На С++ интринсики работают чуть хуже.
а чем хуже? всегда их юзаю как раз.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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