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

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

Страницы: 1 2 3 4 Следующая »
#30
(Правка: 18:38) 18:38, 21 фев. 2021

san
> Ну так и напиши эти две строчки.
Ты реально не знаешь как добавить одну семантику в шейдер? Ну как-то так:

struct VS_Out {
  float4 pos : SV_Position;
  ....
  uint rt : SV_RenderTargetArrayIndex;
};

VS_Out VS_main (VS_In In) {
  VS_Out Out;
  .....
  Out.rt = EvalRenderTargetIndex(...);
  return Out;
}

#31
20:21, 21 фев. 2021

MrShoor
> EvalRenderTargetIndex
Это что такое?

#32
20:47, 21 фев. 2021

san
> Это что такое?
Эта функция, которая посчитает тебе индекс рендертаргета, в который ты будешь писать.

#33
21:14, 21 фев. 2021

MrShoor
Что она возвращает? Может все же откроешь всю тайну, а то из тебя клещами приходится вытаскивать. Ты же не партизан на допросе.

#34
(Правка: 22:08) 22:07, 21 фев. 2021

san
> Что она возвращает?
Целое число, индекс рендертаргета. Разве не видно, что Out.rt объявлен как uint?

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

#35
23:06, 21 фев. 2021

MrShoor
Т.е. вернув 0 рендер будет идти в первую текстуру в массиве? ОК, уже понятнее.
Вообще это можно было написать в первом посте а не разводить эту канитель на трех страницах. Спасибо, попробую.

#36
4:11, 22 фев. 2021

san
> Т.е. вернув 0 рендер будет идти в первую текстуру в массиве? ОК, уже понятнее.
> Вообще это можно было написать в первом посте а не разводить эту канитель на
> трех страницах. Спасибо, попробую.
серьёзно, почему бы тебе эти вопросы не задать документации? форум нужен, чтобы найти то, что можно описать словами, но нельзя описать поисковым запросом. после того, как у тебя есть ключевые слова, просто открываешь msdn и читаешь.

#37
4:56, 22 фев. 2021

san
> Вообще это можно было написать в первом посте а не разводить эту канитель на
> трех страницах.
Ну кто ж знал, что ты до элементарных вещей не догадаешься. Ведь совершенно непонятно за что может отвечать целочисленная СВ_ИндексМассиваРендерТаргетов , да?
Видимо все ресурсы ушли на изучение анекдотов про шкипера.

#38
(Правка: 18:43) 16:59, 22 фев. 2021

MrShoor
Да, ты прав, только читаешь невнимательно. Я же сразу попросил "пальцем показать". Именно по этой причине.  Ну показал бы и вопрос закрылся без этой беллетристики.

>форум нужен, чтобы найти то, что можно описать словами, но нельзя описать поисковым запросом
По мне так форум нужен для того, что бы тебе кто-то быстро показал решение и не пришлось тратить время на поисковые запросы и гуляния по ссылкам. Чисто для экономии времени. Всегда есть люди которые в этой теме уже копались и эту фичу используют. Держать в памяти то, что тебе возможно потребуется один раз в жизни, я смысла не вижу. Я и про переключение таргетов забуду через месяц, просто это у меня будет это где-то в коде, и если опять потребуется я быстро найду уже у себя. Если я нахожу решение на вопрос в форуме, я всегда публикую код, что бы и другим время экономить - посмотри мои темы. А Знайку я из себя строить смысла не вижу, для меня главное результат а не понты.

#39
23:37, 22 фев. 2021

MrShoor
Раз ты так хорошо эту тему знаешь, то наверно скажешь как в этом случае быть с depth?
Рендерю я в разные текстуры, но при этом и глубина должна быть разная. Только у функции OMSetRenderTargets задается число рендер-текстур, но похоже только одна депт-текстура:
void OMSetRenderTargets(
  UINT                              NumRenderTargetDescriptors,
  const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
  BOOL                              RTsSingleHandleToDescriptorRange,
  const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor
);

#40
0:10, 23 фев. 2021

san
Так и знал что до этого дойдет. :)
Буфер глубины в пределах одного дроуколла менять нельзя.

#41
0:46, 23 фев. 2021

phridrich
Ну вот... Опять облом...
Хм. Но задача имеет решение, поскольку в Юнити это как-то делается. Суть в том, что там в ВР рендерят сразу два инстанса картинки для двух глаз. Получается некоторая экономия в общем времени рендера, думаю процентов 15-20 так можно сэкономить. Передать во все шейдера две матрицы и их выбирать в зависимости от номера инстанса, это просто. Как таргет менять тоже разобрались. Осталась глубина. Обнулить депт в момент переключения инстанса похоже никак невозможно. Зафигачить два депта тоже. А как быть?

#42
1:01, 23 фев. 2021

san
> Рендерю я в разные текстуры
Разве текстурный массив биндится как отдельные текстуры?

#43
1:08, 23 фев. 2021

san
А ты уверен что тебе подойдет именно переключение таргетов? Объект не может попасть в два глаза одновременно?

#44
(Правка: 1:50) 1:31, 23 фев. 2021

phridrich
Ну так у меня сейчас две текстуры, просто я рендерю последовательно а можно одновременно. Разумеется обьекты в обоих глазах одинаковые, разница только в матрицах.

Dimich
>Разве текстурный массив биндится как отдельные текстуры?
Как массив. Но доступ по отдельности. А как еще?

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