Использование шейдерной модели 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:).