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

Два рендер-таргета по выбору.

Страницы: 1 2 3 4 Следующая »
#0
4:49, 20 фев. 2021

Возникла задача писать в две разные текстуры (одинаковые) в зависимости от условия в вертексном шейдере.

Первая идея - сделать два рендер таргета вместо одного. Минус (фатальный) вывод пойдет сразу в обе текстуры. Значит вторая будет запорчена.
Решение в лоб - вместо рендер таргета использовать две UAV текстуры. Минус - подозреваю будет заметно тормозить.
Второе решение - сделать таргет в 2 раза шире, писать в свой кусок в зависимости от условия, потом разделить на 2 текстуры. Минус - как-то криво...

Что-то еще можно придумать? Идеально - поставить что-то в вертексный шейдер что бы если это не его текстура, то пиксельный сразу бы отвалился и рендер таргет не портил.


#1
4:59, 20 фев. 2021

san
> Что-то еще можно придумать?
SV_ViewportArrayIndex

#2
(Правка: 5:17) 5:07, 20 фев. 2021

MrShoor
Ты не умничай, ты пальцем покажи.

P.S. Погуглил. Похоже там вылезает геометрический шейдер. Добавлять GS во все сотню шейдеров как-то влом. А что-то попроще слабо?

#3
5:42, 20 фев. 2021

Кстати еще одна мысль пришла - а если посылать вертексные координаты far-far away? Тогда же вроде записи в таргет быть не должно?

#4
5:43, 20 фев. 2021

san
> Ты не умничай, ты пальцем покажи.
Чувак, вот что с тобой не так? Ты спросил: "что еще можно придумать?". Я тебе показал вариант, дав ключевое слово для поиска, по которому можно за 5 минут понять как пользоваться этим вариантом. В ответ вместо: "спасибо, но не хочется добавлять везде геометрический шейдер" ты говоришь: "Ты не умничай, ты пальцем покажи."
Ты всегда говном всех поливал по жизни? Или это с возрастом у тебя?

#5
5:44, 20 фев. 2021

san
> А что-то попроще слабо?
Я то могу еще варианты предложить, но как-то уже не горю, давай сам.

#6
(Правка: 6:07) 5:54, 20 фев. 2021

MrShoor
Ну вот, сразу и спекся...  Я потому и вопрос задал, что ничего путного сам придумать не могу. Точнее задача то решаема, но хотелось бы как-то поэлегантнее. А не тупо дубиной по башке...

>Ты всегда говном всех поливал по жизни? Или это с возрастом у тебя?
О, полилось... Ну пусть и по возрасту, старый уже, соображаю уже не так быстро - это факт. Потому и помощи прошу. Но я хоть надыбал 3 варианта. Реальные, не поиск в гугле. Ты по делу можешь что-то сказать? Сам с подобной задачей дело имел, помочь можешь, или как innuendo - главное анонимнно обосрать кого-то и тем возвыситься в собственных глазах?

#7
5:58, 20 фев. 2021

san
> Я потому и вопрос задал, что ничего путного сам придумать не могу.
Любопытно, а выглядело так, что ты не знал про SV_ViewportArrayIndex. А не просто потому что придумать не мог.
Ну так то там есть еще варианты, ищи.

#8
(Правка: 6:53) 6:15, 20 фев. 2021

MrShoor
> Любопытно, а выглядело так, что ты не знал про SV_ViewportArrayIndex.
Ну так и не знал, то тут такого? Я много что не знаю или не держу в памяти. Я все же практик а не теоретик. Ты наверно тоже мало что знаешь про структуру драйверов в Linux/FreeBSD или про специфику разработки в VR. Ну и что? Нельза обьять необьятное. Для этого и есть Интернет. Но в любом случае поскольку твой вариант требует включения в сотню шейдеров еще и по геометрическому шейдеру, то  это еще более криво чем то я описал в первом посте.
Другие идеи есть?

P.S.
Фраза: "Ты не умничай, ты пальцем покажи" -  это вообще-то из известного анектота про чукчу. В данном случае я выступал в роли "тупого шкипера", т.е. это было сказано с самоиронией. У тебя либо нет чуства юмора либо ты этот анекдот на знаешь по молодости лет. Погугли тогда что ли.

#9
7:02, 20 фев. 2021

san
> У тебя либо нет чуства юмора либо ты этот анекдот на знаешь по молодости лет.
> Погугли тогда что ли.
Погуглил я твой анекдот. Странная у тебя манера использовать анекдоты.
Ок, VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation погугли. Подходит?

#10
7:28, 20 фев. 2021

MrShoor
>Погуглил я твой анекдот. Странная у тебя манера использовать анекдоты.
Что тут странного? Я просто хотел сказать, "что расскажи подробнее, я не понял, ибо тупой". Что тут непонятного то? То, что я себя выставил в роли тупого шкипера?  Ну так я же вопросы задаю а не наоборот.

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

#11
7:31, 20 фев. 2021

san
> Ты сам то знаешь как эту задачу решить, в смысле ты с ней сталкивался
> практически, или ты просто парсишь Интернет на обшие слова?
Ну это фича, которая позволяет писать в SV_ViewportArrayIndex не только из геометрического шейдера, а из любого шейдера, который передает данные в пиксельный.
Ограничение - железо с поддержкой dx 11.3 и выше.

#12
(Правка: 8:00) 7:54, 20 фев. 2021

MrShoor
Ну поскольку я работаю в ВР, и на DX12 то железо не столь критично. Но ты можешь подробнее обьяснить что это за фича и как ее использовать? Пока все что я нашел сводитсяя к использованию геометрическогои шейдера что неприемлимо. Я не очень понимаю почему просто не отправить всю геометрию очень далеко прямо в вертексном шейдере, что этому мешает? (Сам пока не проверял - пятница... Бушмиллс - святое дело...).

#13
(Правка: 7:57) 7:56, 20 фев. 2021

MrShoor
> VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation
Вначале я подумал что это троллинг и всё таки решил погуглить.
Но оказалось там ещё лучше Изображение

Whether the viewport (VP) and Render Target (RT) array index from any shader feeding the rasterizer are supported without geometry shader emulation. Compare the VPAndRTArrayIndexFromAnyShaderFeedingRasterizermember of the D3D11_FEATURE_DATA_D3D11_OPTIONS3 structure. In ID3D12ShaderReflection::GetRequiresFlags, see the
#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER.

#14
8:03, 20 фев. 2021

san
> Но ты можешь подробнее обьяснить что это за фича и как ее использовать?
В вершинном шейдере объявляешь SV_ViewportArrayIndex семантику в которую пишешь индекс вьюпорта. Шейдер компилируешь с соответствующим таргетом. Не помню нужен дополнительный дефайн в шейдере или нет, попробуй скомпилировать, если нужен - оно тебе подскажет какой

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