Мне нужно рассчитать минимальное и максимальное значения УФ, назначенные пикселям, полученным, когда данный объект рисуется на экране с определенной точки зрения. Например, если у меня есть куб с UV-отображением, но видима только передняя грань, для min (UV) и max (UV) следует установить минимальные и максимальные координаты UV, назначенные пикселям видимой грани.
Я бы хотел сделать это, используя шейдеры Direct3D 9 (и самую низкую модель шейдеров), чтобы ускорить обработку. Вершинный шейдер может быть таким же простым, как получение UV-координат каждой входной вершины и передача их без изменения в пиксельный шейдер. Пиксельный шейдер, с другой стороны, должен был бы принимать значения, полученные вершинным шейдером, и использовать их для вычисления минимального и максимального значений УФ.
Я бы хотел знать:
- Как мне поддерживать состояние (текущие минимальные и максимальные значения) между вызовами пиксельного шейдера?
- Как мне получить последние минимальные и максимальные значения, полученные шейдером, в мою программу?
Есть ли способ сделать это в HLSL, или я застрял, делая это вручную? Если HLSL не будет работать, каков будет самый эффективный способ сделать это без использования шейдеров?