Показать сообщение отдельно
Старый 21.10.2011, 21:23   #1
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Нубошоу по шейдерам.

struct VSOutput
{
float4 position : POSITION;
float4 position2 : TEXCOORD2;
float3 normal : TEXCOORD1;
float2 texCoords : TEXCOORD0;
};
Вставляю в вывод вершинного шейдера выделенную строку и шейдер перестает исполнятся, хотя из:
В качестве результата своей работы, вершинные шейдер помет возвращать сле-дующие данные:

POSITION0 – трансформированная позиция вершины.

COLOR[n] – значение цвета, стоит отметить, что записывать именно цвет сюда вовсе необязательно, например, в случае если необходимо передать в пиксельный шейдер позицию, ее спокойно можно поместить в любое поле с семантикой COLOR или TEXCOORD.

TEXCOORD[n] – текстурные координаты. Не обязательно float2 зна-чение, может быть любым в зависимости от ваших нужд (например, для передачи нормали можно использовать float3).

FOG – float значения тумана для данной вершины.

PSIZE – размер точки. Действует только на точечные спрайты (системы частиц).
Например, если нам необходимо рассчитать попиксельное
struct VSOutput
{
float4 position : POSITION;
float4 position2 : TEXCOORD1;
float3 normal : TEXCOORD2;
float2 texCoords0 : TEXCOORD0;
};
Т.к. в качестве входных данных пиксельный шейдер может принимать только цвет и текстурные координаты (т.е. поля можно объявлять только с семантиками COLOR и TEXCOORD), для передачи в пиксельный шейдер позиции вершины и ее нормали необходимо записать их в поля с семантиками текстурных координат.
Однако, вполне допустимо использовать выходную структуру вершинного шей-дера в качестве входной пиксельного, но только до тех пор пока в пиксельном шей-дере не происходит обращения к полям с недопустимой семантикой (например POSITION), что вызовет ошибку компиляции шейдера.
следует, что такая структура допустима.
Где я не прав? Мне почему-то кажется, что стандартный шейдер из шагов с таким изменением вывода вершинного шейдера должен работать. Или шаги уже устарели?
(Offline)
 
Ответить с цитированием