forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   xCreateInstance (http://forum.boolean.name/showthread.php?t=14984)

Andrew_00001 26.09.2012 12:54

Ответ: xCreateInstance
 
Ребят, а где можно почитать о том, что такое Instance ?
В официальной справке команда xCreateInstance отсутствует.
Запрос в Яндексе "xCreateInstance" выдает аж 4(четыре) ответа. Гугл немножко больше, но инфы там ноль. По форуму все как-то вскользь.

St_AnGer 26.09.2012 16:59

Ответ: xCreateInstance
 
Инстансинг геометрии

Ссылка из википедии на геймдев.ру

HolyDel 26.09.2012 17:08

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

насколько я понимаю, достаточно вместо хCopyEntity писать xCreateInstance

Andrew_00001 27.09.2012 01:07

Ответ: xCreateInstance
 
А xCreateInstance работает со спрайтами?
Воюю сейчас с травой, создаю к примеру 10 000 спрайтов (через копиЭнтити). FPS - около 8.
Пытаюсь сделать через xCreateInstance - ничего не отображается.

Делаю 10 000 кубов через xCreateInstance FPS - около 18.
С использованием xHWInstancingAvailable() FPS - около 30. (файл шейдера спёр из сэмпла Instancing.

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

Может кто намекнет, в каком направлении копать.

Nex 27.09.2012 01:14

Ответ: xCreateInstance
 
Цитата:

Сообщение от Andrew_00001 (Сообщение 239256)
Может кто намекнет, в каком направлении копать.

Цитата:

создаю к примеру 10 000 спрайтов
Это уже не правильно. Надо создавать только вокруг игрока/камеры траву в определенном радиусе.

Andrew_00001 27.09.2012 01:20

Ответ: xCreateInstance
 
Цитата:

Сообщение от Nex (Сообщение 239259)
Это уже не правильно. Надо создавать только вокруг игрока/камеры траву в определенном радиусе.

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

HolyDel 27.09.2012 02:19

Ответ: xCreateInstance
 
ты можешь делать не спрайт, а просто сюрфейс квада. и ориентировать их на камеру в шейдере инстансинга.
но, кончено, такие вещт лучше как то печь в один сюрфейс.

Andrew_00001 27.09.2012 03:45

Ответ: xCreateInstance
 
Цитата:

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

ОГО!
Делал 1000 спрайтов и 1000 сюрфейсов с одинаковыми текстурами.
Счёт по FPS:
Спрайты - 18.
Сюрфейсы - 94!
Правда еще не прикрутил поворот.
Два вопроса:
1. Как сделать сюрфейс прозрачным ? Перепробовал все команды, что влияют на альфу сюрфейса из оф.доки - ничего не берет - белый и все тут? (может кстати это и причина высокого ФПС).
2. При выходе из проги с сюрфейсами виндовз выдает ошибку, может их как-то из памяти удалять нужно?

Nex 27.09.2012 03:53

Ответ: xCreateInstance
 
Цитата:

Делал 1000 спрайтов и 1000 сюрфейсов с одинаковыми текстурами.
Лучше 1к квадов на 1 сюрфейс. Фпс будет еще лучше.
Цитата:

Как сделать сюрфейс прозрачным ?
Грузи текстуру с альфа каналом и загружай с флагами "1+2"
Цитата:

При выходе из проги с сюрфейсами виндовз выдает ошибку
У тебя где то в коде косяк.

Andrew_00001 27.09.2012 04:24

Ответ: xCreateInstance
 
Цитата:

Сообщение от Nex (Сообщение 239269)
Лучше 1к квадов на 1 сюрфейс. Фпс будет еще лучше.

Грузи текстуру с альфа каналом и загружай с флагами "1+2"

У тебя где то в коде косяк.

Спасибо за подсказку. Как и ожидалось ФПС с включением альфы упало до 20. Прикручу поворот будут как раз самые 18, что и у спрайтов. Движок их видимо реализует одним и тем же способом.
Я не совсем понял, точнее совсем не понял:)), как это "1000 квадов на 1 сюрфейс" ? что это за сюрфейс и как он должен располагаться?

Nex 27.09.2012 04:30

Ответ: xCreateInstance
 
Квад это два треугольника. Получется тот же спрайт.
Создаешь меш и один сюрфейс и в сюрфейсе создаешь уже квады.
Вот пример который я как то выкладывал. Ссылка
Минус в том что тяжеловато манипулировать кучей квадов на одном сюрфейсе. Инстансингом не пользовался, но уверен, что его использовать будет лучше.

HolyDel 27.09.2012 09:52

Ответ: xCreateInstance
 
у тебя 1000 сюрфейсов? 1000 ентити? - это все равно много.

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

и что за машина такая, если фпс падает от 94 до 20 при включенной альфе?

Andrew_00001 27.09.2012 14:07

Ответ: xCreateInstance
 
Цитата:

Сообщение от Nex (Сообщение 239271)
Квад это два треугольника. Получется тот же спрайт.
Создаешь меш и один сюрфейс и в сюрфейсе создаешь уже квады.
Вот пример который я как то выкладывал. Ссылка
Минус в том что тяжеловато манипулировать кучей квадов на одном сюрфейсе. Инстансингом не пользовался, но уверен, что его использовать будет лучше.

Пример интересный, вроде бы все понятно, но ума не приложу как это можно применить к траве на террайне, он ведь не плоский

Nex 27.09.2012 16:37

Ответ: xCreateInstance
 
Цитата:

Сообщение от Andrew_00001 (Сообщение 239283)
Пример интересный, вроде бы все понятно, но ума не приложу как это можно применить к траве на террайне, он ведь не плоский

В примере я квады использую как частицы (камера смотрит с верху и квады движутся только по двум плоскостям). Посути это теже самые спрайты. Создавай их над землей вокруг игрока и все.
И еще самый большой минус, что через команду нельзя взять и удалить 1 квад. Для удаления надо копировать все вертексы, удалить не нужные и перезаписывать сюрфейс. :crazy:

dsd 27.09.2012 19:50

Ответ: xCreateInstance
 
Цитата:

Сообщение от Nex (Сообщение 239287)
И еще самый большой минус, что через команду нельзя взять и удалить 1 квад. Для удаления надо копировать все вертексы, удалить не нужные и перезаписывать сюрфейс. :crazy:

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


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

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