Я изучаю DirectCompute и застрял в StructuredBufferes. Дело в том, что я узнал, что для передачи данных в шейдер мне нужно использовать View - SRV или БПЛА, в зависимости от того, чего я пытаюсь достичь. Но примеры кода с сайта Microsoft не объясняют, как представление, определенное в коде C ++, соответствует конкретному буферу, определенному в коде шейдера. Однако есть ключевое слово hlsl, которое я не совсем понимаю - register()
. В выборке было три буфера:
StructuredBuffer<BuffType> Buff0 : register(t0);
StructuredBuffer<BuffType> Buff1 : register(t1);
RWStructuredBuffer<BuffType> BuffOut : register(u0);
В коде C ++ авторы просто устанавливают ComputeShader, 1 UAV, 2 SRV, а затем вызывают Context.Dispatch (,,) (при условии, что они заранее подготовили все буферы и представления). Итак, вопрос в том, как мне понять, что конкретный SRV (их два) предоставляет данные для конкретного StructuredBuffer? Управляется ли это номером регистра (например, регистр (t0) заполняется первым, регистр (t1) - вторым). Если да, что, если я хочу сначала передать данные во второй буфер, а затем заполнить первый? Я чувствую, что пропускаю что-то очень важное, но в предыдущих уроках, которые я использовал, все было намного проще из-за методов EffectVariales и .GetVariableBy. Заранее спасибо.