Как вы надежно (u, v) индексируете текстуру как 2d массив векторов? - PullRequest
0 голосов
/ 13 декабря 2011

Использование шейдерной модели 5 / D3D11 / HLSL.

Я бы хотел рассматривать двумерный массив текселей как двумерную матрицу векторов .

      u
v (1,4,3,9)   (7, 5.5, 4.9, 2.1)
* 1007.* (Каждый тексель является 4-компонентным вектором).Мне нужно получить доступ к конкретным диапазонам данных в текстуре, для разных шейдеров.Таким образом, диапазоны для доступа в текстуре, естественно, должны быть проиндексированы как компоненты u, v.

Как мне это сделать в HLSL?Я думаю следующее:

  • Создание текстуры в соответствии с нормой
  • Загрузка ваших векторных значений в текстуру (1 вектор на тексель)
  • Отключите всю линейную интерполяцию для выборки текстуры («ближайший сосед»)
  • В шейдере ищите нужные вам векторы, используя координаты текстуры

Единственное, что я чувствую, этошатко, будут ли возникать странные ошибки, когда я буду индексировать текстуру, используя числа с плавающей запятой u и v.

Если текстура имеет размер 1024x1024 текселей, и я пытаюсь проиндексировать (3,2) -> (3, 7), это было бы u = (3 / 1024,2 / 1024) -> (3 / 1024,7 / 1024), что кажется немного шатким.Возможно, есть способ индексировать текстуру по компонентам int?Или все будет хорошо?

Texture2DArray

Не желая использовать GPGPU-фреймворк только для этого (так что никаких предложений CUDA pls:).

1 Ответ

0 голосов
/ 15 декабря 2011

Вы можете сделать это, используя оператор [] в hlsl 5.0

Смотрите здесь

...