|
Xors3D Графический движок с поддержкой DirectX9 |
25.06.2011, 04:21
|
#1
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
xCreateInstance
Во первых я рад, что появилась реальная причина хоть что-то написать "по делу". Во вторых хочу поагитировать многих тоже попробовать Xors3D для своих проектов, благо движок уже достаточное время все улучшается и улучшается. А проекты Evil`а - прямое доказательство, что движок уже как минимум вполне пригоден для создания игр ААА класса .
Оглашу некий список "говорящих за себя функций", которые мне понравились:
3D линии:
xCreate3DLine, x3DLineAlpha, xGet3DLineUseZBuffer, x3DLineColor, x3DLineAddNode, x3DLineNodesCount, etc...
Cоздание миров и переключение между ними:
xCreateWorld, xDeleteWorld, xSetActiveWorld, etc...
Работа с запакаоваными ресурсами !!!
xMountPackFile, xUnmountPackFile,
Логирование (особенно крут html лог):
xClearLogString, xCloseLog, xCreateLog ,xLogError,xLogFatal ,xLogInfo, xLogMessage, xLogWarning, xSetLogLevel, xSetLogTarget
Дебажить стало куда проще с ним!
Текстуры:
xCreateTextureFromData, xGetTextureData, xGetTextureDataPitch, xGetTextureFrames, xGetTextureSurface
Тени:
Тени реализованы очень удобно. Не буду перечислять ф-ции, просто скажу, что дело это юзаемо, я проверял.
Геометрия:
xCreateTorus (а блиц так не умел ), xLightMesh, xSaveMesh (fbx)
Ну пока хватит.
Так, а теперь вопрос к тупым, не имеющим никакого отношения к хорсу разработчикам сего движка:
Я недавно купил видяху (^_____^) и у меня заработала такая штука, как Hardware Instancing и я сразу побежал делать майнкрафт. Открываю семпл и смотрю, что на родитель инстансов надо натянуть шейдер перед тем как начинать массово плодить дешёвых клонов.
Пробую. Тестовые кубики с вашим логотипом их 20x20x20 = 20^3 = 8000 Нормальный тест. Поехали:
HWInstacing
FPS: 46
TrisRendered: 111132
DIP calls: 1
|
Shader emulation
FPS: 17
TrisRendered: 444528
DIP calls: 374
|
Without shader
FPS: 7
TrisRendered: 986760
DIP calls: 556
|
CopyEntity
FPS: 10
TrisRendered: 1683600
DIP calls: 35787
|
А теперь вопрос:
Можно хотябы намекнуть что же там такое внутри xCreateInstace накладное делается?
Почему он без шейдера тормознее чем CopyEntity?
Каковы критерии написания шейдера для того, чтоб с ним работала ф-ция xCreateInstance?
Данные о системе:
1 CPU: AMD Athlon(tm) 64 Processor 3000+ at 1808MHz (MMX, SSE, SSE2, SSE3, 3DNow!)
RAM: 1023 MBytes. Paged memory: 3162 MBytes.
Video: NVIDIA GeForce GT 440. VRAM: 993 MBytes.
Physical screen size: 410mm x 230mm. Aspect ratio: 1.78261 (41:23).
|
Баг
Не работает xClearWorld() Вылетает окно семёрки "Диагноста проблем и тд"
Его товарищ xReleaseWindow() Делает абсолютно тоже самое.
Однако ежели заглянуть в лог, то отчётливо видно, что ресурсы все почистились от начала до конца.
Прикладываю архив с тестами.
Пробел -> следующий тест + запись в файл показателей
Esc -> выход в любой момент
Последний раз редактировалось Randomize, 25.06.2011 в 07:27.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
25.06.2011, 04:38
|
#2
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
Используя shaderinstancing.fx из примеров получаем:
|
Испольуя shaderinstancing.fx из примеров получаем:
|
Мне удалось найти только 1 отличие. Помоему ты вообще всё с результатами напутал.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо NitE за это полезное сообщение:
|
|
25.06.2011, 05:26
|
#3
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
Сообщение от NitE
Мне удалось найти только 1 отличие. Помоему ты вообще всё с результатами напутал.
|
Напутал при написании поста. И только с 1 тестом. Исправил.
Апд. Сори, аттач не тот :/
Всё. Теперь все тесты в одном файле, прошу тестировать на своей системе и накидывать результаты сюда в научных целях. Просто интересно: мало ли у кого 2 вариант быcтрее первого (хотя не должен) и тд.
Последний раз редактировалось Randomize, 25.06.2011 в 06:55.
|
(Offline)
|
|
25.06.2011, 06:55
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
FPS: 10
TrisRendered: 1683600
DIP calls: 35787
|
выглядит нереально. на 35 тыщях дипов должен был быть ппц.
upd:
результаты на GF9600M + Win7:
HW Instancing - 60 FPS (вертикальная синхронизация почему-то не выключается в драйверах )
Shader Emulation - 17 FPS
Without Shader - 4 FPS
Copy Entity - 1 FPS
число дипов удивляет. По идее должно быть 1 - 1 - 8000 - 8000.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.06.2011, 06:59
|
#5
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
Сообщение от HolyDel
выглядит нереально. на 35 тыщях дипов должен был быть ппц.
|
Читни сорс. Благо он понятный (надеюсь). Может я где накосячил.
Не удалил что-то.
Upd:
Опс. В сорце мат, прошу прощения.
Терзают меня смутные сомнения, что xFreeEntity не всегда срабатывает.
Там есть строка:
if clone[x, y, z]>0 then xFreeEntity(clone[x, y, z]) If _testIndex = TEST_COPYENTITY Then clone[x, y, z] = xCopyEntity(cube) Else clone[x, y, z] = xCreateInstance(cube) EndIf xPositionEntity clone[x, y, z], x * 2.5, y * 2.5, z * 2.5
Может глюк с удалением инстанса?
Upd 2:
Ан нет. Всё чистится полностью. Проверил опытным путём.
Кстати кубов 21x21x21 = 21^3 = 9261 (там же у меня To)
|
(Offline)
|
|
25.06.2011, 07:15
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
конфиг твоего компа в студию!
|
(Offline)
|
|
25.06.2011, 07:21
|
#7
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
Сообщение от HolyDel
конфиг твоего компа в студию!
|
* В первом посте
HolyDel, спасибо за тесты и ценные комментарии.
Я повнимательнее посмотрел исходник и провёл пару экспериментов. Видать проблема с удалением всё же имеет место быть :-( Не удаляется часть Entity.
Обновил первый пост. Добавил второй тест.
VSync выключил. (случайно его включил пока баловался)
Во втором тесте я в начале каждого теста вызываю конструкцию: xSetActiveWorld(xCreateWorld())
Пока не знаю куда девается всё на предыдущем мире, но плоды это дало в плане "честности" тестирования.
|
(Offline)
|
|
25.06.2011, 11:09
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: xCreateInstance
на новом тесте:
HW - 89 /109
Shader - 48 / 57
wo shader - 17/57
copy entity - 18/65
первая цифра - все кубы в камере
вторая - все кубы вне камеры
Последний раз редактировалось HolyDel, 25.06.2011 в 14:33.
|
(Offline)
|
|
25.06.2011, 11:28
|
#9
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: xCreateInstance
Сообщение от Randomize
Не работает xClearWorld() Вылетает окно семёрки "Диагноста проблем и тд"
|
давно с этим сталкивался, xClearWorld (1, 0, 1) спасало. Второй параметр помоему браши (?)
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
25.06.2011, 11:30
|
#10
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: xCreateInstance
Сообщение от St_AnGer
давно с этим сталкивался, xClearWorld (1, 0, 1) спасало. Второй параметр помоему браши (?)
|
Да, именно так. Но при повторном очищении всё крэшится.
Хотя на офф сайте написано:
Sunday, 8 May 2011 12:04
...
Fixed crash on xClearWorld() and xDestroyGraphics().
...
|
|
(Offline)
|
|
25.06.2011, 12:51
|
#11
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: xCreateInstance
Мои результаты:
HWInstancing
FPS: 182
TrisRendered: 86784
DIP calls: 1
ShaderEmulation
FPS: 98
TrisRendered: 89508
DIP calls: 150
WithoutShader
FPS: 46
TrisRendered: 89508
DIP calls: 1
CopyEntity
FPS: 46
TrisRendered: 89508
DIP calls: 7459
|
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.06.2011, 13:36
|
#12
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: xCreateInstance
Результаты теста 2 (конфиг в подписи):
HWInstancing
FPS: 93-105
TrisRendered: 111132
DIP calls: 1
ShaderEmulation
FPS: 54-56
TrisRendered: 1111132
DIP calls: 186
WithoutShader
FPS: 18-20
TrisRendered: 111132
DIP calls: 1
CopyEntity
FPS: 30-34
TrisRendered: 111132
DIP calls: 9261
зыЖ по теме xClearWorld. Только что нашёл свой старый проектик, переделал его под последнюю ревизию ксорса. xClearWorld (1, 0, 1) работает хорошо, никаких вылетов (использую при смене разрешения экрана, т.е. как минимум при 10-12 сменах резрешения команда работает)
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
Последний раз редактировалось St_AnGer, 25.06.2011 в 17:02.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.07.2011, 01:36
|
#13
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: xCreateInstance
Я только вернулся из Крыма. В понедельник перечитаю все эти посты, а то что-то голова совсем не варит, и буду решать.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.07.2011, 11:17
|
#14
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: xCreateInstance
Понедельник на дворе, посты готовы читаться.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
05.07.2011, 01:24
|
#15
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: xCreateInstance
1. В цикле
Local clone:Int[21, 21, 21]
Очевидно, что
if clone[x, y, z]>0 then xFreeEntity(clone[x, y, z])
срабатывать не будет.
2.
If shader > 0 Then xFreeEffect(shader)
Сейчас после удаления шейдера еще нужно вручную сбрасывать в ноль шейдер энитити, на котором был удаленный шейдер.
Понятия не имею, как можно было упустить такую фигню из виду. И существует она уже довольно давно. Стыд и печаль. Буду править.
3. Софтварный инстансинг вообще лучше не юзать. Фигня на постном масле. Тоже будет выпиливаться.
4. xClearWorld у меня работает о_О. Можно пример попроще, в котором было бы видно, что оно действительно не работает? А то сейчас, я смотрю, вы и текстуры чистите, а потом опять их накладываете - беда...
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:16.
|