![]() |
xCreateInstance
Вложений: 2
Во первых я рад, что появилась реальная причина хоть что-то написать "по делу". Во вторых хочу поагитировать многих тоже попробовать Xors3D для своих проектов, благо движок уже достаточное время все улучшается и улучшается. А проекты Evil`а - прямое доказательство, что движок уже как минимум вполне пригоден для создания игр
Оглашу некий список "говорящих за себя функций", которые мне понравились: Так, а теперь вопрос к Я недавно купил видяху (^_____^) и у меня заработала такая штука, как Hardware Instancing Пробую. Тестовые кубики с вашим логотипом их 20x20x20 = 20^3 = 8000 Нормальный тест. Поехали: HWInstacing Цитата:
Цитата:
Цитата:
Цитата:
Можно хотябы намекнуть что же там такое внутри xCreateInstace накладное делается? Почему он без шейдера тормознее чем CopyEntity? Каковы критерии написания шейдера для того, чтоб с ним работала ф-ция xCreateInstance? Данные о системе: Цитата:
Баг Не работает xClearWorld() Вылетает окно семёрки "Диагноста проблем и тд" Его товарищ xReleaseWindow() Делает абсолютно тоже самое. Однако ежели заглянуть в лог, то отчётливо видно, что ресурсы все почистились от начала до конца. Прикладываю архив с тестами. Пробел -> следующий тест + запись в файл показателей Esc -> выход в любой момент |
Ответ: xCreateInstance. Нет проблем, просто интересно.
Цитата:
Цитата:
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
Цитата:
Апд. Сори, аттач не тот :/ Всё. Теперь все тесты в одном файле, прошу тестировать на своей системе и накидывать результаты сюда в научных целях. Просто интересно: мало ли у кого 2 вариант быcтрее первого (хотя не должен) и тд. |
Ответ: xCreateInstance. Нет проблем, просто интересно.
Цитата:
upd: результаты на GF9600M + Win7: HW Instancing - 60 FPS (вертикальная синхронизация почему-то не выключается в драйверах ) Shader Emulation - 17 FPS Without Shader - 4 FPS Copy Entity - 1 FPS число дипов удивляет. По идее должно быть 1 - 1 - 8000 - 8000. |
Ответ: xCreateInstance. Нет проблем, просто интересно.
Цитата:
Не удалил что-то. Upd: Опс. В сорце мат, прошу прощения. Терзают меня смутные сомнения, что xFreeEntity не всегда срабатывает. Там есть строка: PHP код:
Upd 2: Ан нет. Всё чистится полностью. Проверил опытным путём. Кстати кубов 21x21x21 = 21^3 = 9261 (там же у меня To) |
Ответ: xCreateInstance. Нет проблем, просто интересно.
конфиг твоего компа в студию!
|
Ответ: xCreateInstance. Нет проблем, просто интересно.
Цитата:
HolyDel, спасибо за тесты и ценные комментарии. Я повнимательнее посмотрел исходник и провёл пару экспериментов. Видать проблема с удалением всё же имеет место быть :-( Не удаляется часть Entity. Обновил первый пост. Добавил второй тест. VSync выключил. (случайно его включил пока баловался) Во втором тесте я в начале каждого теста вызываю конструкцию: xSetActiveWorld(xCreateWorld()) Пока не знаю куда девается всё на предыдущем мире, но плоды это дало в плане "честности" тестирования. |
Ответ: xCreateInstance
на новом тесте:
HW - 89 /109 Shader - 48 / 57 wo shader - 17/57 copy entity - 18/65 первая цифра - все кубы в камере вторая - все кубы вне камеры |
Ответ: xCreateInstance
Цитата:
|
Ответ: xCreateInstance
Цитата:
Хотя на офф сайте написано: Цитата:
|
Ответ: xCreateInstance
Мои результаты:
Цитата:
|
Ответ: xCreateInstance
Результаты теста 2 (конфиг в подписи):
Код:
HWInstancing зыЖ по теме xClearWorld. Только что нашёл свой старый проектик, переделал его под последнюю ревизию ксорса. xClearWorld (1, 0, 1) работает хорошо, никаких вылетов (использую при смене разрешения экрана, т.е. как минимум при 10-12 сменах резрешения команда работает) |
Ответ: xCreateInstance
Я только вернулся из Крыма. В понедельник перечитаю все эти посты, а то что-то голова совсем не варит, и буду решать.
|
Ответ: xCreateInstance
Понедельник на дворе, посты готовы читаться.
|
Ответ: 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 у меня работает о_О. Можно пример попроще, в котором было бы видно, что оно действительно не работает? А то сейчас, я смотрю, вы и текстуры чистите, а потом опять их накладываете - беда... |
Ответ: xCreateInstance
Вложений: 2
Цитата:
Значит так. По поводу xClearWorld() и xReleaseGraphics() Прикладываю аттач с примером и скрин ошибки. Испытывал следующие варианты: Код:
'xClearWorld() ' Ошибка |
Ответ: xCreateInstance
Я не придираюсь.
Ты чистишь мир вместе с текстурами, а затем в цикле опять накладываешь текстуру (в переменной то адрес текстуры остался, в ноль она не сбрасывается). С r704 твой пример работает. |
Ответ: xCreateInstance
Вообще понравился пример!!! Супер!
Такая разница колосальная!! Xors3d Engine version: 1.15.688.0 ( May 07 2011 ) OS: Microsoft Windows 7 4 CPUs: Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz at 2128MHz (MMX, SSE, SSE2, SSE3) RAM: 1908 MBytes. Paged memory: 3816 MBytes. ATI Mobility Radeon HD 5730. VRAM: 1016 MBytes. HWI PHP код:
PHP код:
PHP код:
PHP код:
|
Ответ: xCreateInstance
Я накидал, но я пока плохо разбираюсь в шейдерах эффектах.., и меши у меня просто исчезают
Код:
Include "xors3d.bb" |
Ответ: xCreateInstance
Посмотри в стандартных примерах, как это делать.
xEntityFX sp,HWIFX так не применишь эффект к объекту. Надо так xSetEntityEffect sp, HWIFX |
Ответ: xCreateInstance
Цитата:
Хардвэрный инстенсинг не все видяхи держат. |
Ответ: xCreateInstance
Спасибо Phyton! Всё заработало!
Вот только разница в фпс не большая вывел 10к сфер 16-го порядка CopyEntity - 20 fps Instancing - 30 fps Можно ли на сферы сделать один сурфейс?? Повертексно создавая меш, я научился односурфейсные меши лепить, а вот на загружаемые меши не знаю как.. |
Ответ: xCreateInstance
Цитата:
|
Ответ: xCreateInstance
ну хз, лучше не стало, (может не правильно) переделал так:
Код:
Global sp=xCreateSphere(16) |
Ответ: xCreateInstance
у тебя сколько треугольников выводится? сколько треугольников на сферу? так-то чем меньше трисов - тем больше эффекта от инстансинга.
|
Ответ: xCreateInstance
burovalex Еще раз спрашиваю! Какая у тебя конфигурация ПК? возможно проблема не в инстансиге, а в твоем компе...
посмотри еще раз как в примерах сделано, у тебя где то косяк в коде это точно... Опиши задачу для чего тебе нужен инстансинг? лес да пожалуйста, стандартный пример ксорса. На фпс не бросаться пример без оптимизаций!!! |
Ответ: xCreateInstance
Цитата:
amount = 100 For i = 0 To amount copy_entity = xCreateInstance(entity) x# = Rand(0, 1500) z# = Rand(0, 1500) xPositionEntity copy, x, 0, z Next |
Ответ: xCreateInstance
Я же выше участвовал в тесте.
120к треугольников. Я подставил кубики. Но все равно разница с топовым тестом очень большая. У него 61 фпс выдает, а у меня 40-43 Xors3d Engine version: 1.15.688.0 ( May 07 2011 ) OS: Microsoft Windows 7 4 CPUs: Intel(R) Core(TM) i3 CPU M 330 @ 2.13GHz at 2128MHz (MMX, SSE, SSE2, SSE3) RAM: 1908 MBytes. Paged memory: 3816 MBytes. ATI Mobility Radeon HD 5730. VRAM: 1016 MBytes. |
Ответ: xCreateInstance
Цитата:
Да и еще почему у тебя стоит старая версия 688? поставь 750, скачай с официального сайта ксорса триалку там в новой версии есть интересные примеры... у меня 80 фпс выдает без проблем! |
Ответ: xCreateInstance
Спасибо! Буду качать, хотя вроде тоже с офсайта качал..
Рассмотрю подробнее примеры! |
Ответ: xCreateInstance
Ребят, а где можно почитать о том, что такое Instance ?
В официальной справке команда xCreateInstance отсутствует. Запрос в Яндексе "xCreateInstance" выдает аж 4(четыре) ответа. Гугл немножко больше, но инфы там ноль. По форуму все как-то вскользь. |
Ответ: xCreateInstance
|
Ответ: xCreateInstance
я думаю автору интересны не теоретические подробности реализации инстансинга, а то, как с ним работать в Хорсе. Вообще, имхо, хорс очень простой движок, и по листингам выше итак все должно быть понятно.
насколько я понимаю, достаточно вместо хCopyEntity писать xCreateInstance |
Ответ: xCreateInstance
А xCreateInstance работает со спрайтами?
Воюю сейчас с травой, создаю к примеру 10 000 спрайтов (через копиЭнтити). FPS - около 8. Пытаюсь сделать через xCreateInstance - ничего не отображается. Делаю 10 000 кубов через xCreateInstance FPS - около 18. С использованием xHWInstancingAvailable() FPS - около 30. (файл шейдера спёр из сэмпла Instancing. И вот пытаюсь ответить на такие вопросы: 1. xCreateInstance работает со спрайтами? если да, то как? 2. Что за штука такая чудесная - xHWInstancingAvailable() (я понял конечно, что аппартное ускорение инстанса, но как ее использовать, нужно ли писать для каждого конкретного случая свой файл шейдеров или есть какие-то заготовки) ? Может кто намекнет, в каком направлении копать. |
Ответ: xCreateInstance
Цитата:
Цитата:
|
Ответ: xCreateInstance
Цитата:
Так все таки не подскажите по поводу спрайтов и инстансов? |
Ответ: xCreateInstance
ты можешь делать не спрайт, а просто сюрфейс квада. и ориентировать их на камеру в шейдере инстансинга.
но, кончено, такие вещт лучше как то печь в один сюрфейс. |
Ответ: xCreateInstance
Цитата:
Делал 1000 спрайтов и 1000 сюрфейсов с одинаковыми текстурами. Счёт по FPS: Спрайты - 18. Сюрфейсы - 94! Правда еще не прикрутил поворот. Два вопроса: 1. Как сделать сюрфейс прозрачным ? Перепробовал все команды, что влияют на альфу сюрфейса из оф.доки - ничего не берет - белый и все тут? (может кстати это и причина высокого ФПС). 2. При выходе из проги с сюрфейсами виндовз выдает ошибку, может их как-то из памяти удалять нужно? |
Ответ: xCreateInstance
Цитата:
Цитата:
Цитата:
|
Ответ: xCreateInstance
Цитата:
Я не совсем понял, точнее совсем не понял:)), как это "1000 квадов на 1 сюрфейс" ? что это за сюрфейс и как он должен располагаться? |
Ответ: xCreateInstance
Квад это два треугольника. Получется тот же спрайт.
Создаешь меш и один сюрфейс и в сюрфейсе создаешь уже квады. Вот пример который я как то выкладывал. Ссылка Минус в том что тяжеловато манипулировать кучей квадов на одном сюрфейсе. Инстансингом не пользовался, но уверен, что его использовать будет лучше. |
Ответ: xCreateInstance
у тебя 1000 сюрфейсов? 1000 ентити? - это все равно много.
тебе нужен 1 сюрфейс из 2000 вершин. по 2 на травинку. инстансинг скорее-всего будет медленнее, чем синглсюрфей из-за накладываемого движком оверхеда на обработку ентити, хотя хз как это реализовано. с альфой будут траблы, ибо спрайты надо сортировать от дальнего к ближнему, иначе будут косяки. можно попробовать маску. и что за машина такая, если фпс падает от 94 до 20 при включенной альфе? |
Ответ: xCreateInstance
Цитата:
|
Ответ: xCreateInstance
Цитата:
И еще самый большой минус, что через команду нельзя взять и удалить 1 квад. Для удаления надо копировать все вертексы, удалить не нужные и перезаписывать сюрфейс. :crazy: |
Ответ: xCreateInstance
Цитата:
|
Часовой пояс GMT +4, время: 07:16. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot