Войти
ПрограммированиеФорумГрафика

Выбор алгоритма порядок-независимой прозрачности (Directx 12) (3 стр)

Страницы: 1 2 3 4 Следующая »
#30
14:44, 4 июня 2018

допиливал алгоритм как ЧАЭС тушили, но по мне так производительность очень даже пригодная (непрозрачные части можно и вовсе вынести в отдельный рендер, а тут вся сцена через буферы). если объекта нет в поле зрения - выдает здоровые 1200 кадров даже без оптимизаций отсечения блендинга 
Изображение


#31
19:14, 4 июня 2018

Разогнал до 300 кадров на той же сцене, да появилась проблема - флаг [earlydepthstencil] не реагирует, проход прозрачной геометрии записывает глубину, а не отсекается по заготовленной.

#32
19:20, 4 июня 2018

Berns
> флаг [earlydepthstencil] не реагирует
Рендертаргет с буфером глубины не забыл установить?

#33
(Правка: 19:36) 19:30, 4 июня 2018

Поставил:
CommandList->OMSetRenderTargets(0, NULL, FALSE, &dsvDepth);

просматриваю буфер глубины - что с этим флагом, что без него - все равно в него пишется. Ставлю dsvDepth на нуль -вся прозрачная геометрия тип-топ, но по непрозрачной  разумеется не отсекается. шейдерная модель - 5.0
Вероятно, это настраивается через API в конвейере.

#34
19:41, 4 июня 2018

Berns
Не могу сказать насчет DX12, ибо с ним пока еще не работал, но в DX11 earlydepthstencil работает 100%. Значит должен и в DX12. Видимо ты что то делаешь не так.

#35
19:51, 4 июня 2018

А что на DX12 то не перешел? Мне мозгового штурма с управлением ресурсов 11-м хватило, перешел чисто ради фич, а в итоге увидел множество вариантов для улучшения производительности.
Кстати, профиксил. Там нужна была дополнительная структура D3D12_DEPTH_STENCIL_DESC для пейплайна, поставил D3D12_DEPTH_WRITE_MASK_ZERO и поехало.

#36
19:56, 4 июня 2018

Berns
> А что на DX12 то не перешел?
Да как-то руки все не доходят. Работы с DX11 и OGL полно.

> а в итоге увидел множество вариантов для улучшения производительности.
Угу, я прекрасно знаю эти варианты, потому что буквально в них сейчас и упираюсь на DX11/OGL. Но производительности сейчас и на DX11 хватает.

#37
20:01, 4 июня 2018

Кстати, ты спрашивал, зачем очищать два буфера. Пересмотрел свои исходники и увидел, что счетчик был приклеен к структурированному. Отсюда и тормоза в простое.

#38
20:26, 4 июня 2018

Berns
> допиливал алгоритм как ЧАЭС тушили

?

#39
20:28, 4 июня 2018

Berns
> что счетчик был приклеен к структурированному.
Так вроде так и надо. Для того, чтобы счетчик сбросить - не надо весь буфер чистить.

#40
20:59, 4 июня 2018

Сбросить? Например?

#41
21:21, 4 июня 2018

Berns
> Сбросить? Например?
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476465(v=vs.85).aspx
смотри последний параметр

#42
21:25, 4 июня 2018

не, для DX12 это мимо.

#43
21:35, 4 июня 2018

Berns
> не, для DX12 это мимо.
Пара минут гугления показала, что счетчики в DX12 - это отдельный ресурс (как в ОГЛ). И соответственно почистить можно только счетчик.
Счетчик привязывается к другому ресурсу во вьюшке:
https://msdn.microsoft.com/en-us/library/windows/desktop/dn788674(v=vs.85).aspx

#44
(Правка: 22:35) 22:32, 4 июня 2018

Об этом я уже знал. А чтобы его чистить пришлось создать еще один UAV, а ресурс от этого указать в качестве счетчика. Пока что всё очень даже неплохо, 420 кадров, но можно и лучше. 1200 если миновать стадию блендинга, блестяще.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика