Поскольку у вас не было ответов от экспертов D3D11, я предлагаю свой ограниченный опыт работы с D3D9, за что он стоит.
... дважды каждый кадр кажется невероятно расточительным ...
«Кажется» - это подозрительное слово там. Вы измерили удар производительности? Дважды за кадр звучит не так уж плохо.
Для текстур я назначаю свои регистры текстуры в соответствии с назначением. Я использую регистры = s4 для рендеринга целевых текстур, которые назначаются только один раз в начале игры. Так, например, мой шейдер основной сцены имеет следующее:
sampler2D DiffuseMap : register(s0);
sampler2D DetailMap : register(s1);
sampler2D DepthMap : register(s4);
sampler2D ShadowMap : register(s5);
sampler2D LightMap : register(s6);
sampler2D PrevFrame : register(s7);
Итак, мой шейдер частиц имеет уменьшенный набор, но текстура DepthMap все еще находится в том же слоте ...
sampler2D Tex : register(s0);
sampler2D DepthMap : register(s4);
Я не знаю, насколько это применимо к D3D11, но я надеюсь, что он пригодится.