forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Пишем 3D движок - замену Xors3D (http://forum.boolean.name/showthread.php?t=18971)

Randomize 20.03.2014 19:25

Ответ: Пишем 3D движок - замену Xors3D
 
Я бы назвал FlatChestedGAPI

KCEPOKC 20.03.2014 20:50

Ответ: Пишем 3D движок - замену Xors3D
 
Может быть назовешь тогда просто Xe(Ксенон типа:-) ) engine?
P.S. зарегался на твоем сайте. Можешь теперь следить за мной;)

bugway 21.03.2014 13:43

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от XoreX (Сообщение 277468)
Может быть назовешь тогда просто Xe(Ксенон типа:-) ) engine?

Даже в яндексе по запросу "xe engine" - более 16 миллионов ссылок!!! Не вариант... Текущее название GeoVoxium3D.com - по крайней мере с точки зрения поисковиков -удачный вариант. Обобщив, можно сказать, что название должно:
1) быть уникальным
2) отсутствовать в поисковиках (в идеале вообще, но по крайней мере не более 100 ссылок)
3) фонетически звучать
4) опционально иметь скрытый смысл или легко трактоваться


P.S. Заглушку на сайт поставил - теперь можно вернуться к разработке движка... :)

moka 21.03.2014 20:35

Ответ: Пишем 3D движок - замену Xors3D
 
Вот тут слайды нашёл, по OpenGL как можно сильно оптимизировать рендеринг и уменьшить overhead от драйвера.
http://www.geeks3d.com/20140321/open...iver-overhead/

HolyDel 21.03.2014 23:28

Ответ: Пишем 3D движок - замену Xors3D
 
слайд с gdc 2014

KCEPOKC 22.03.2014 15:48

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 277499)
название должно:
1) быть уникальным
2) отсутствовать в поисковиках (в идеале вообще, но по крайней мере не более 100 ссылок)
3) фонетически звучать
4) опционально иметь скрытый смысл или легко трактоваться

Если я и придумаю такое название, то тебе не скажу:tongue:

pozitiffcat 25.03.2014 08:24

Ответ: Пишем 3D движок - замену Xors3D
 
Не читал трэд, начинал когдато, когда еще 1 страница была. Чем все кончилось? Какой рендер будет, фичи там?...
Если OpenGl, то могу взять на себя написание рендера, а вы пишите граф сцены, загрузку моделей и т.п. Только при условии, что на движок никто не забьет потом, потому что я уже раз 50 забивал, хотя были довольно успешные попытки

bugway 25.03.2014 11:13

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от pozitiffcat (Сообщение 277718)
Не читал трэд, начинал когдато, когда еще 1 страница была. Чем все кончилось? Какой рендер будет, фичи там?...
Если OpenGl, то могу взять на себя написание рендера, а вы пишите граф сцены, загрузку моделей и т.п. Только при условии, что на движок никто не забьет потом, потому что я уже раз 50 забивал, хотя были довольно успешные попытки

Еще раз кратко:

1. Движок в виде COM DLL на DX9/11. Девятка видимо отомрет, но в целях получения опыта пока будет. Компилятор - PowerBasic 10.
2. Из основных фич - работа с разнообразными ландшафтами. Вдохновлен игрой StaudSoft Syntetic World
3. Из дополнительных фич - полная поддержка Nvidia 3D Vision и Oculus Rift.
4. На текущий момент уже есть зачатки DLL с основными классами. Успешно работает с VB6, PowerBasic 10. С другими компиляторами пока не тестил.
5. Застолбил домен - GeoVoxium3d.com. Временный форум на forum.GeoVoxium3d.com
6. Из пока не освоенных вещей: физика, 3д звук, и много чего еще.
7. В итоге должен получится не конструктор как некоторые предположили, а именно движок. Возможно прикручу LUA, если общественность сильно захочет.
8. Кое-что из слайдов 196 поста можно применить и в DX. OpenGL не использую по 2-м причинам: кроссплатформленность не нужна и в OpenGL не работает 3D Vision


P.S. Еще раз повторюсь: энтузиасты активно приглашаются. Работы много и ее хватит всем. Кто-то нарисует красивый значок, кто-то подскажет интересную идею, кто-то сделает красивую демку - вобщем с миру по нитке... В то же время я не сижу сложа руки. Как минимум пару раз в неделю буду выкладывать инфу тут и у себя на форуме...

P.P.S. Сегодня попробую что-нибудь интересное выложить во избежание умирания топика....

KCEPOKC 27.03.2014 15:03

Ответ: Пишем 3D движок - замену Xors3D
 
Кстати, как тебе идея написать игру для последнего джема на этом движке?

Arton 27.03.2014 21:15

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от XoreX (Сообщение 277758)
Кстати, как тебе идея написать игру для последнего джема на этом движке?

У меян подозрение что там мало чего можно, хотя я хз, даже демку не запускал :)

bugway 28.03.2014 08:44

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Arton (Сообщение 277787)
У меня подозрение что там мало чего можно, хотя я хз, даже демку не запускал :)

На данный момент что-то типа Майнкрафта можно сделать, но 2 недели срока явно мало - разве что платформер наваять... Вот если бы 2 месяца... :) Хотя тема выживания очень мне нравится... Всего неделя до джема... Не знаю, возможно если сделаю коллизии, GUI и некоторые другие вещи - может галопом успею поучаствовать... Загадывать не буду.


Вообще я не представляю, как народ умудряется за такой короткий срок вообще что-то делать. Сон + 9 часов на работе + дорога + ужин + домашние дела = остается 2-3 часа в рабочий день на конкурс... В выходные времени побольше, но тоже не всегда. Скажите кто умудрялся за 2 недели что-то с нуля сделать - КАК ВАМ ЭТО УДАВАЛОСЬ???

HolyDel 28.03.2014 13:07

Ответ: Пишем 3D движок - замену Xors3D
 
(2 * 5 + 10 * 2) * 2 = 60 часов за две недели.
даже за 8 часов можно что то сделать. а тут 60.
+ можно спать на работе, а ночью делать игру.

pozitiffcat 28.03.2014 13:42

Ответ: Пишем 3D движок - замену Xors3D
 
Мне кажется с DirectX не зайдет.
Я бы на твоем месте собрал бы сообщество, для написания движка на OpenGL с ES совместимостью, разделил бы обязаности, и запилили бы движок, Затем вытащили бы Сишный интерфейс наружу. Вот это бы нормально зашло бы. Люди бы пользовались. Мобилки же актуальны. Мне просто самому лень писать загрузчики форматов, всякие там обработчики в графе сцены. Вот если бы кто то сделал бы это за меня ))

HolyDel 28.03.2014 16:41

Ответ: Пишем 3D движок - замену Xors3D
 
автору нужен 3d vision.
под виндой он только на квадрах с gl-ом.
потому и директ.

Samodelkin 28.03.2014 18:15

Ответ: Пишем 3D движок - замену Xors3D
 
тем временем анонсировали directx 12.

Arton 29.03.2014 00:55

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 277834)
Всего неделя до джема...

Какая неделя?
Цитата:

Сообщение от XoreX (Сообщение 277749)
Конкурс продлится с 00:00 1-го апреля по 23:59 16-го апреля!

3 дня!


bugway 31.03.2014 18:46

Ответ: Пишем 3D движок - замену Xors3D
 
Вложений: 1
Тестирую с VB.Net 2013:


HolyDel 01.04.2014 00:26

Ответ: Пишем 3D движок - замену Xors3D
 
почему префикс x?
х - это хорс.
у тебя должен быть или g или на крайняк v

bugway 01.04.2014 03:47

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 278055)
почему префикс x?
х - это хорс.
у тебя должен быть или g или на крайняк v

логично. Но не будет ли это резать глаза тем, кто юзал opengl или xors? Вот варианты:

xGraphic
vGraphic
gGraphic
gvGraphic
geGraphic
gveGraphic

Вроде Х симпатичнее смотрится.... Кто как думает?

Randomize 01.04.2014 04:32

Ответ: Пишем 3D движок - замену Xors3D
 
А нельзя использовать НЕЙМСПЕЙСЫ, а не префиксы?

pax 01.04.2014 07:21

Ответ: Пишем 3D движок - замену Xors3D
 
Для VB/C# лучше конечно префиксы убрать. Они не нужны. Префикс обусловлен тем, что в блице есть команды с тем же именем, и нужен для того, чтобы их отличить друг от друга.
В самом же блице, если движок будет заменой xors3d, логично использовать префикс 'x', чтобы не переписывать готовый код (но только при условии, если автор собирается реализовать полный набор функций xors3d).

bugway 01.04.2014 07:28

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Randomize (Сообщение 278072)
А нельзя использовать НЕЙМСПЕЙСЫ, а не префиксы?

Если имеется ввиду неймспейсы как в си, то - нет. Движок должен работать с максимальным количеством различных компиляторов. Поэтому я использую COM DLL с зашитой в нее TLB, чтобы не подключать хидеры.
В рамках COM практически на любом языке все будет примерно так:

1. создаем объектную переменную, например MyEngine
2. используем методы и свойства движка через объектную переменную, типа: MyEngine.xGraphic(...) или MyEngine.xTextures.Add(...)
3. Снаружи оперируем только простыми типами, не интерфейсами СОМ.

Вообще думаю, может отказаться от префиксов, совместимости с Xors и подобными вещами? Может просто максимально понятно назвать методы? Например вместо xGraphic назвать SetDisplayMode...

Кто что думает?

P.S. Кстати, блиц-то хоть поддерживает COM?

pax 01.04.2014 07:58

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 278081)
P.S. Кстати, блиц-то хоть поддерживает COM?

Имхо нет.

ant0N 01.04.2014 08:12

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Кто что думает?
я за Set и Get (SetPosition, GetPosition вместо EntityPosition...)

bugway 01.04.2014 09:14

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от ant0N (Сообщение 278083)
я за Set и Get (SetPosition, GetPosition вместо EntityPosition...)

Тогда уж просто: .X .Y .Z (например MyEngine.Player.X)

HolyDel 01.04.2014 12:45

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

но только при условии, если автор собирается реализовать полный набор функций xors3d
зачем нужен второй хорс?
если планируется его использовать вместе с блицом то какой никакой префикс все равно нужен (иначе можно все равно напороться на одинаковые команды), но я бы его делал другим.

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

bugway 01.04.2014 14:45

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 278093)
а вообще, имхо, бейсики не особо нужны. в качестве школы программирования только.

Смотря какие "бейсики". Движок пишу на PowerBasic 10 c ассемблерными вставками и в стиле Си... Поэтому не всё так однозначно.


Почему-то многие сразу ассоциируют слово "бейсик" с QBasic или Turbo Basic и их скромными возможностями... Но уже другое время. Сегодня "бейсик" - это всего лишь синтаксис. Это как сравнивать английский язык с немецким - какой лучше? :) Вся соль в возможностях компилятора и удобстве IDE.


На счет второго Xors3D - полностью согласен. Должно получиться нечто совершенно новое, поскольку работа с движком осуществляется через СОМ. Хотя нечто подобное видел - движок TrueVision3D.

impersonalis 01.04.2014 14:49

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 278098)
c ассемблерными вставками и в стиле Си...

Это как?

SBJoker 01.04.2014 14:53

Ответ: Пишем 3D движок - замену Xors3D
 
trall-mode
Цитата:

if (x > 2) then ;{
doSmfn()
endif
;}

bugway 01.04.2014 15:10

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от impersonalis (Сообщение 278099)
Это как?

Типа такого (не самый удачный пример)

Код:

Function NvAPI_GetDisplayDriverVersion(ByVal hNvDisplay As Dword, pVersion As NvDisplayDriverVersion) As Long 'CDecl
    pVersion.version=Len(pVersion) Or 65536
    ! push dword pVersion
    ! push dword ptr hNvDisplay
    Call Dword NVfunc(2)
    ! mov  RetVal, eax
    Function = RetVal
End Function


Mr_F_ 01.04.2014 15:37

Ответ: Пишем 3D движок - замену Xors3D
 
жесть какая-то

impersonalis 01.04.2014 15:49

Ответ: Пишем 3D движок - замену Xors3D
 
Вероятно, речь шла о intel-синтаксисе, а не языке ассемблера в стиле Си

Samodelkin 01.04.2014 20:15

Ответ: Пишем 3D движок - замену Xors3D
 
в c/c++ можно фигачить и в att и intel, причем в msvs intel делает просто вставку а дальше как повезет, а в gcc/g++ intel можно по прежнему контролировать (также как и att), указывая соотношения регистров и локальных переменных.

bugway 02.04.2014 06:31

Ответ: Пишем 3D движок - замену Xors3D
 
Я пытался сказать, что использование PB10 нисколько меня не ограничивает. Как и в Си те же оконные процедуры, обработка сообщений и т.п. Наличие ассемблера вообще развязывает руки. На результирующую DLL движка использование PB10 негативно не повлияет.


А теперь по существу:

Кто делал фабрику мешей, поделитесь соображениями - как это лучше связать с буфером/буферами вертексов?
Варианты (просто пришедшие в голову):
1. Хранить все меши в едином буфере вертексов. В классе меша реализовать ссылки на определенную область в буфере вертексов.
2. Хранить сами вертексы как часть экземпляра класса меша и использовать отдельный буфер вертексов для каждого меша.

Иначе говоря, сколько статических буферов вертексов принято использовать - один или столько, сколько мешей?

Второй вариант позволит использовать такой стиль:
MyEngine.Mesh(i).Render

Первый вариант (с общим буфером) такой стиль:
MyEngine.Render Mesh(i)

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

Mr_F_ 02.04.2014 11:08

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Я пытался сказать, что использование PB10 нисколько меня не ограничивает. Как и в Си
Цитата:

Function NvAPI_GetDisplayDriverVersion(ByVal hNvDisplay As Dword, pVersion As NvDisplayDriverVersion) As Long 'CDecl
pVersion.version=Len(pVersion) Or 65536
! push dword pVersion
! push dword ptr hNvDisplay
Call Dword NVfunc(2)
! mov RetVal, eax
Function = RetVal
End Function
Ты ведь в курсе, что чтобы вызывать в С функцию из длл, не надо передавать аргументы асмом? Можно просто подключить хидер и либ и вызывать как обычную. В крайнем случае можно подгрузить динамически, но и там всё проще.
Тьфу, да даже в блицаке можно было юзать деклс и вызывать нормально.

Никто никогда не напишет для повербейсика хидеры. Захотел юзать самый популярный формат моделей FBX? А вот и хер тебе, например, сдк есть только под С++ и Питон.


Цитата:

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

2. Хранить сами вертексы как часть экземпляра класса меша и использовать отдельный буфер вертексов для каждого меша.
Так наверное будет пока оптимальней.
Ну или можно by design запретить удаление статики, только если разом всю. Первый вариант должен быть незначительно быстрее.

Цитата:

Второй вариант позволит использовать такой стиль:
MyEngine.Mesh(i).Render

Первый вариант (с общим буфером) такой стиль:
MyEngine.Render Mesh(i)
Первый вариант тоже должен мочь реализовываться вторым кодом, почему нет?
"Каждый объект сам себя рендерит" это не лучшая идея (уже много где обсуждалось). Каждый раз входишь в функцию, кладёшь что-то на стек, плюс она ещё может быть виртуальной (не знаю как в вашем бейсике), мы ждём пока каждая функция выполнит гапи код. Если много объектов - то много оверхеда накапливается.
Намного приятнее имхо и дружелюбнее к железу представлять все объекты как данные. Меш должен содержать только инфу, нужную для его рендера. Дальше ты рендереру посылаешь толстую пачку этих мешей, и он, как на конвеере, их рендерит друг за другом без перерывов, в одном цикле. Также, в таком случае этот конвеер можно крутить в параллельном потоке, например.

pozitiffcat 02.04.2014 11:20

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 278081)
Если имеется ввиду неймспейсы как в си, то - нет. Движок должен работать с максимальным количеством различных компиляторов. Поэтому я использую COM DLL с зашитой в нее TLB, чтобы не подключать хидеры.

Пздц.
В си нет неймспейсов, в плюсах есть. Что бы твоя дллка работала везде, нужно пилить extern "C" и __declspec погугли.

И да. Неймспейсы для переносимости не нужны, но на компилятор это никак не влияет ))

pozitiffcat 02.04.2014 11:25

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 278133)
Кто делал фабрику мешей, поделитесь соображениями - как это лучше связать с буфером/буферами вертексов?

Мое предложение. Каждый меш хранит один буффер с вершинами и буффер с индексами. Затем Список Поверхностей их индекс начала, конца и указатель на материал.

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

PHP код:

// псевдокод
template <typename T>
class 
Buffer {
}

struct Surface {
    
std::pair<intintrange;
    
Material *material;
}

class 
Mesh {
public:
    
void render() {
        
bindVertexBuffer(m_vertexBuffer);
        
bindIndexBuffer(m_indicesBuffer);
        
bindShader(); // устанавливает настройки меша в шейдер
        
for (const Surface &surface m_surfaces)
            
renderSurface(surface); // устанавливает настройки поверхности в шейдер - рисует
    
}
private:
    
std::vector<Surfacem_surfaces;
    
Buffer<Vertexm_vertexBuffer;
    
Buffer<intm_indexBuffer;



Samodelkin 02.04.2014 11:31

Ответ: Пишем 3D движок - замену Xors3D
 
соглашение о вызовах

bugway 02.04.2014 12:24

Ответ: Пишем 3D движок - замену Xors3D
 
А с точки зрения материалов? В каждом меше создавать еще подмеши со своим материалом?

А потом в цикле рендера перебирать все подмеши всех мешей с одним материалом, потом с другим материалом, потом с третьим и т.п.? Не убьет ли это производительность?

Т.е. если имеем в кадре 100 различных типов мешей по 10 материалов. Итого нужно 1000 вертексных буферов + столько же индексных?

Mr_F_ 02.04.2014 12:35

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Т.е. если имеем в кадре 100 различных типов мешей по 10 материалов. Итого нужно 1000 вертексных буферов + столько же индексных?
ну в идеале тебе нужен 1 VB и 10 IB.

в не идеале, хотя бы 1 VB/IB на меш ничто не мешает держать - тогда по 100 тех и тех + для каждого типа материала хранишь оффсет/размер (диапазон короче) в индексбуфере меша.

pozitiffcat 02.04.2014 22:12

Ответ: Пишем 3D движок - замену Xors3D
 
Я же все написал выше.
А что бы избегать много объектов, делай класс который сконструирует один меш из 100, сгруппируя по материалам. Это относится к статике. Также можно заюзать текстурный атлас. Можно добиться отрисовки всего за 1 дип.

bugway 04.04.2014 05:21

Ответ: Пишем 3D движок - замену Xors3D
 
Занимаюсь оптимизацией. Как каждый из вас относится к идее не использовать DIP в пользу DP ?

Плюсы DP в том, что можно дублировать вертексы в одной позиции с разными текстурными координатами. Из минусов только большое количество самих вертексов (для куба аж 36 вместо 8 при DIP). Но судя по профайлингу DP быстрее DIP на 10-15%. Поэтому вроде больше плюсов у DP, чем у DIP.

Кто как думает?

Arton 04.04.2014 07:12

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от bugway (Сообщение 278302)
Занимаюсь оптимизацией. Как каждый из вас относится к идее не использовать DIP в пользу DP ? Кто как думает?

Если бы мне кто объяснил что есть что? :4to:

bugway 04.04.2014 08:29

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от Arton (Сообщение 278303)
Если бы мне кто объяснил что есть что? :4to:

DP - DrawPrimitive
DIP - DrawIndexedPrimitive

HolyDel 04.04.2014 10:25

Ответ: Пишем 3D движок - замену Xors3D
 
Post T&L cache.

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

про post T&L cache - когд вершину обработал вершинный шейдер, результаты ее хранятся в кэше. И если есть треугольники со смежными вершинами - то эти смежные вершины в случае DIP будут считаться только один раз, в случае DP для каждого треугольника всегда считаются три вершины. и неважно, считались они уже или нет.

Samodelkin 04.04.2014 14:55

Ответ: Пишем 3D движок - замену Xors3D
 
И я так понимаю, что если рендер имеет сильный перекос в сторону пиксельных шейдеров (perpixel light, deffered shading и т.п.), то возможно DP в некоторых ситуациях будет предпочтительней.

HolyDel 04.04.2014 17:27

Ответ: Пишем 3D движок - замену Xors3D
 
по идее в случае сильного перекоса в сторону пиксельных шейдеров будет без разницы. на растеризации будет ботлнек.

Цитата:

для куба аж 36 вместо 8 при DIP
у тебя куб без нормалей и текстурных координат, да?
таким кубом только карту глубины для рендера шадоумапы рисовать.

кстати кто нибудь делал такую оптимизацию? чтобы на пасс, где генерится шадоумапа использовались упрощенные шейдеры и геометрия (только позиция). Давала ли такая техника ускорения?

Samodelkin 04.04.2014 19:10

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 278333)
по идее в случае сильного перекоса в сторону пиксельных шейдеров будет без разницы. на растеризации будет ботлнек.

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

pax 05.04.2014 08:41

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 278093)
зачем нужен второй хорс?
если планируется его использовать вместе с блицом то какой никакой префикс все равно нужен (иначе можно все равно напороться на одинаковые команды), но я бы его делал другим.

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

Давно в тему не заходил, я это предположил исходя из этого:

Цитата:

Пишем 3D движок - замену Xors3D

L-ee-X 05.04.2014 21:04

Ответ: Пишем 3D движок - замену Xors3D
 
Я вот лично вообще не понимаю логики. Какую замену ксорсу пытается написать человек? Да еще и на бэйсике =D
Все что можно уже за долго до тебя написали. Лучшего мы здесь все равно не увидим. На написание хорошего движка уйдут годы. Посмотри сколько разрабатывался юнити и какое количество людей его делает. В нем уже по максимальному все просто и понятно с редакторами и т. д. Лично я считаю что толку будет 0, в свет он не выйдет хотя бы как тот же ксорс, знаний от написания движка 0 имхо язык бэйсик ну больше сказать нечего . Чисто символически мое мнение :)

HolyDel 05.04.2014 21:11

Ответ: Пишем 3D движок - замену Xors3D
 
опыт.
опыт программирования графики на уровне гапи и программирование ее же на пару уровней выше это совсем разные вещи.
хотя бейсик не понимаю, да. но автору нравится.

Цитата:

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

Samodelkin 05.04.2014 23:36

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от L-ee-X (Сообщение 278378)
...знаний от написания движка 0 имхо...

Штоа?

moka 07.04.2014 01:35

Ответ: Пишем 3D движок - замену Xors3D
 
Тут в WebGL балуюсь, сделал примитивную демку, 1024 энтитей, у каждого свой вершинный и индексный буфера, также свой шейдер (примитивно позиция и цвет вершин), и все они вращаются независимо. То есть каждый куб полностью независимо рендериться.
1024 кубов, выдало 150 fps.
А если забиндить буфера по одному разу и шейдер, и только для каждого куба передавать матрицу трансформации и вызывать drawElements, то фпс будет 200.

HolyDel 07.04.2014 06:37

Ответ: Пишем 3D движок - замену Xors3D
 
ссылку чтоли давай

Цитата:

А если забиндить буфера по одному разу и шейдер, и только для каждого куба передавать матрицу трансформации и вызывать drawElements, то фпс будет 200.
у меня в новом движке поверх gl-я своя стейт машина. которая все стейты и связанные объекты кеширует, еще и для каждого контекста )) вроде удобно, и быстро.

pozitiffcat 08.04.2014 08:23

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 278536)
ссылку чтоли давай


у меня в новом движке поверх gl-я своя стейт машина. которая все стейты и связанные объекты кеширует, еще и для каждого контекста )) вроде удобно, и быстро.

Реквест Хелло ворда и демку =)

Samodelkin 08.04.2014 12:56

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от HolyDel (Сообщение 278536)
ссылку чтоли давай


у меня в новом движке поверх gl-я своя стейт машина. которая все стейты и связанные объекты кеширует, еще и для каждого контекста )) вроде удобно, и быстро.

Я кстати замечал что при рендере одинаковых объектов в d3d, если стейты не выносить из цикла рисования, то они практически не уменьшают производительность.
Наводит на мысль что такая стейт машина уже есть внутри d3d.
Есть у кого более подробная инфа на этот счёт?

HolyDel 08.04.2014 14:30

Ответ: Пишем 3D движок - замену Xors3D
 
возможно в d3d и есть.
в gl-e мои и МоКины эксперементы указывают что ее нет.

Цитата:

Реквест Хелло ворда и демку =)
пока нет ни нод, ни камеры, ни сцены.
только контексты, буфера и шейдеры, решил на сей раз начать не с кубов)))
как смогу рисовать кубы и летать камерой - так выложу демку.

mr.DIMAS 08.04.2014 17:34

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Наводит на мысль что такая стейт машина уже есть внутри d3d.
Есть у кого более подробная инфа на этот счёт?
Да, есть. Если включить режим отладки на максимум, то в лог студии пишется "Ignoring redundant render state _номер_стейта_" при повторных вызовах замены стейта тем же стейтом.

Кирпи4 08.04.2014 19:51

Ответ: Пишем 3D движок - замену Xors3D
 
Если это подключаемая библиотека, наро встретит это дело очень тепло. Особенно движок встретят люди, прогающие на пурике

Samodelkin 08.04.2014 21:53

Ответ: Пишем 3D движок - замену Xors3D
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 278616)
Да, есть. Если включить режим отладки на максимум, то в лог студии пишется "Ignoring redundant render state _номер_стейта_" при повторных вызовах замены стейта тем же стейтом.

А где гарантия того что это сохраниться в релиз режиме?
Может она просто указывает чтобы ты поправил код и избавился от ворнингов, а в релиз режиме машина стейтов убирается в надежде что ты все поправил. :)

mr.DIMAS 09.04.2014 17:00

Ответ: Пишем 3D движок - замену Xors3D
 
Ну кагбе тут разжевано

http://www.gamedev.net/topic/296413-...render-states/
Цитата:

3) D3D does contain its own internal redundant state checker for non-PURE devices. So when you set the same state twice in a row, that warning message is it's state checker telling you. For that reason, unless you're using a PURE device, a redundant state checker in your own code is only truly useful if it can do it on multiple chunks of state (you can use application specific knowledge here).
Подтверждение тут

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Samodelkin 09.04.2014 20:45

Ответ: Пишем 3D движок - замену Xors3D
 
Ок.
Значит с флагом D3DCREATE_PUREDEVICE стейт машину можно убрать.
Тогда всё сделано как надо.

Samodelkin 10.04.2014 00:09

Ответ: Пишем 3D движок - замену Xors3D
 
Кто-нибудь знает как в msvs 2013 (и может быть любой другой) в редакторе кода сделать видимыми символы пробела и табуляции, как это можно делать в notepad++ или gedit тех же?

mr.DIMAS 10.04.2014 00:16

Ответ: Пишем 3D движок - замену Xors3D
 
Edit->Advanced->View White Space

или

Подряд Ctrl+R, Ctrl+W


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

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