Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Отсечение невидимой геометрии (12 стр)

Отсечение невидимой геометрии (12 стр)

Страницы: 111 12 13 1416 Следующая »
0xc0deПостоялецwww29 сен. 201713:26#165
zavod3D
> Хотел сократить число вызовов DrawIndexedPrimitive

Сократи через instancing.

> Ну это вряд ли, емкость буфера ограничена 16 битным беззнаковым целым

Индексы могут задаваться и как unsigned int.

zavod3DПостоялецwww29 сен. 201715:09#166
0xc0de
> Сократи через instancing.
Я про разные меши в буфере
> Индексы могут задаваться и как unsigned int.
Если позволяет видеокарта
0xc0deПостоялецwww29 сен. 201715:15#167
zavod3D
> Я про разные меши в буфере

Про indirect - буфер слышал?

zavod3DПостоялецwww29 сен. 201715:20#168
0xc0de
> Про indirect - буфер слышал?
нет
0xc0deПостоялецwww29 сен. 201715:30#169
zavod3D
> нет

Погугли, он как раз решает твою проблему. Грубо говоря, это буфер, хранящий смещения (позиции мешей) в твоем индексном буфере :) Заполняешь Indrect буфер, а потом одной командой отрисовываешь сразу все необходимые меши. Кроме того, можно завести еще отдельный буфер, хранящий матрицы трансформаций этих мешей, к нему при отрисовке обращаешься по instance id и получаешь необходимую матрицу для инстанса.

zavod3DПостоялецwww29 сен. 201716:21#171
0xc0de
> Погугли, он как раз решает твою проблему.
ок, спасибо
slava_mib
> я просто натравливаю потоки куллинга на эти блоки
Что за потоки куллинга?
Fantom09
Я на директиксе сижу
AndreyПостоялецwww29 сен. 201716:35#172
zavod3D
> ок, спасибо
>Я на директиксе сижу
нужно наверное сюда копать: ID3D11DeviceContext::DrawIndexedInstancedIndirect, или у тебя еще D3D9 ? :)
>Ну это вряд ли, емкость буфера ограничена 16 битным беззнаковым целым
> > Индексы могут задаваться и как unsigned int.
> Если позволяет видеокарта
Забудь про это. Все OpenGL ES 3.0 мобильные чипы держать uint32 через gl_oes_element_index_uint, если про десктоп то это уж очень старые видюхи уровня Direct3D3D9 SM 2.0 и то это встроенные intel.
>Что за потоки куллинга?
Наверное имелось в виду отсечение распараллелено по потокам.

zavod3DПостоялецwww29 сен. 201717:05#173
Andrey
> нужно наверное сюда копать: ID3D11DeviceContext::DrawIndexedInstancedIndirect,
> или у тебя еще D3D9 ? :)
Пока не пересел, но в ближайшем будущем планирую

> Забудь про это. Все OpenGL ES 3.0 мобильные чипы держать uint32...
Да пора пересаживаться на DX11.

> Наверное имелось в виду отсечение распараллелено по потокам.
Типа использование Openmp и подобных?

AndreyПостоялецwww29 сен. 201718:33#174
zavod3D
> Типа использование Openmp и подобных?
Врядли, Openmp это по большей части директивы компиляции, к примеру для распараллелиания циклов по потокам.
Daniil PetrovПостоялецwww30 сен. 20171:16#175
barnes
> Парни, вы его запутаете только) Короче BSP это формат уровней квейка. Просто и понятно.
Вряд ли речь выше шла об формате квейковских уровней или по крайней мере не только он нём :) иначе бы я таких глупых вопросов не задавал.
slava_mibМодераторwww30 сен. 20173:54#176
> что такое non- local data, почему это снижает производительность и т.д.
zavod3D, в доках вендоров (и CPU и GPU) есть инфа.

Если на пальцах объяснять, то примерно так: каждый раз когда проц обращается к памяти - она либо есть в кэше, либо нет. Если нет, то процсс её "подсасывания" из ОЗУ в кэш - он долгий и дорогой. Потому лучше, когда данные лежат в одном общем линейном участке памяти, чем когда беспорядочно по ней разбросаны (т.к. много много кэш-промахов возникает).
Но у локальность данных есть и обратный эффект: если твои потоки пишут в один и тот же участок памяти - то ядрам проца приходится постоянно синхронизировать между собой и своими кэшами этот участок памяти.

Потому, опять же, очень упрощённо - лучше всего когда каждый поток занимается своей задачей над своим ОТДЕЛЬНЫМ, линейно хранящим сразу весь исходный массив данных, но при этом НЕБОЛЬШИМ (от нескольких десятков килобайт до максимум мегабайта примерно) участком памяти.

По-настоящему хорошо это удаётся заоптимизировать лишь настоящим спецам... к каковым я себя не отношу и потому на этом заканчиваю )

innuendoПостоялецwww30 сен. 20179:01#177
давно уже нужно создать FAQ и сразу посылать
Daniil PetrovПостоялецwww30 сен. 20179:33#178
innuendo
> давно уже нужно создать FAQ и сразу посылать
Кстати давно можно было бы такое дело по часто задаваемым вопросам сделать :) с примерами проработанного обществом форума кода.
zavod3DПостоялецwww30 сен. 201711:15#179
slava_mib
> Если на пальцах объяснять, то примерно так: каждый раз когда проц обращается к
> памяти - она либо есть в кэше, либо нет.
А. Ты про кэш имел ввиду.

> zavod3D, в доках вендоров (и CPU и GPU) есть инфа.
Спасибо. Дальше разберусь.

Страницы: 111 12 13 1416 Следующая »

/ Форум / Программирование игр / Графика

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр