Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Dynamic vertex pulling в Direct3D11 (комментарии) (3 стр)

Dynamic vertex pulling в Direct3D11 (комментарии) (3 стр)

Поделиться
Страницы: 1 2 3
Guppy the CatПостоялецwww22 янв. 201516:18#30
Оверхед от "мусорных вершин" не обязан быть большим, его всегда можно ограничить за счёт увеличения количества draw calls. К примеру, если есть куча всяких мешей с размером от 1 до 65535 вертекса, то при прочих равных их всех можно нарисовать за не более чем 180 draw calls с оверхедом не более 5%. При максимальном оверхеде в 10% то же самое можно уже сделать за не более чем 100 draw calls, при 20% - за порядка 55. Но в реальности эти числа можно уменьшить ещё минимум вдвоё (рисовать два разных "размера" за один draw call, например).
bazhenovcУдалёнwww22 янв. 201516:22#31
MrShoor
> Перед отрисовкой создаешь Indirect буфер, заполняешь его структурами:
> cmd->first,  cmd->count,  cmd->instanceCount, cmd->baseInstance
> для каждого объекта.
Ты не можешь передать в DrawIndirect несколько таких структур!

Только одну. Несколько структур ты можешь передать в MultiDrawIndirect.

innuendoПостоялецwww22 янв. 201519:57#32
bazhenovc

У него бзик на инстансингах :)

MrShoorУчастникwww24 янв. 20159:59#33
bazhenovc
> Ты не можешь передать в DrawIndirect несколько таких структур!
> Только одну. Несколько структур ты можешь передать в MultiDrawIndirect.
Действительно, был не прав, т.к. с индиректом не работал еще, а только собирался. Изучил тему глубже. Странное решение было ввести DrawIndirect, а MultiDrawIndirect не вводить.
innuendoПостоялецwww24 янв. 201510:03#34
MrShoor
> Странное решение было ввести DrawIndirect, а MultiDrawIndirect не вводить.

У них и простого Multi никогда не было. Хотя у AMD в железках такое есть 

ronnikoЗабаненwww30 янв. 201513:01#35
bazhenovc
я скоро пример получше выложу. От 22 января.

И где демка ?
От которой все должны были выпасть в осадок :)
bazhenovcУдалёнwww30 янв. 201513:25#36
ronniko
Изображение
Много травы, кустики уникальные.

Исходники: https://github.com/bazhenovc/sigrlinn/blob/master/demo/demo_grass.cc

ronnikoЗабаненwww30 янв. 201513:28#37
А где же разные 3д модели с разными текстурами ? :(
Случайно не за теми кустиками травы ? :)
bazhenovcУдалёнwww30 янв. 201513:33#38
ronniko
Не всё сразу, деревья ещё должен нарисовать художник, нужно написать тулзы для экспорта, нужно интегрировать технологию в движок.

Будет, не переживай, просто сейчас много работы и мало времени.

ronnikoЗабаненwww30 янв. 201514:05#39
bazhenovc
Не всё сразу, деревья ещё должен нарисовать художник, нужно написать тулзы для экспорта, нужно интегрировать технологию в движок.

Звучит как развод для детей :)
А просто 3д бокс, сферу и цилиндр с разными текстурами технология не позволяет вывести ? :)
WISHMASTER35Участникwww28 мар. 201523:11#40
А как по скорости работают эти DrawInstanced и StructuredBuffer?
Не медленнее, чем обычный способ рендеринга?
Говорят доступ к StructuredBuffer медленнее, чем обычный VertexBuffer?
bazhenovcУдалёнwww28 мар. 201523:19#41
WISHMASTER35
Что ты подразумеваешь под "Не медленнее, чем обычный способ рендеринга"?

Есть CPU time, есть GPU time. Этот метод серьёзно уменьшает CPU time, но при этом добавляет немного GPU time, но замерять сколько он добавляет на GPU довольно сложно из-за влияния десятка других факторов.

WISHMASTER35Участникwww29 мар. 201514:12#42
bazhenovc
я имею ввиду, если использовать это просто для рендеринга меша т.е. без батчинга.
Я в юнити хотел использовать ComputeBuffer и DrawProcedural, чтобы создать меш со своим форматом вершин.
Так же иногда используют ComputeBuffer и DrawProceduralIndirect, чтобы рендерить сгенерированный на видеокарте меш. Может для террейнов это используется, хотя не знаю как там генерируется сетка.
Говорят эти буфера работают медленнее т.к. в них можно еще и писать.
Страницы: 1 2 3

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

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

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