Введение в программирование трехмерных игр с DX9



         

Входные и выходные данные пиксельного шейдера


В вершинный шейдер передаются две вещи: цвет и координаты текстуры. Обе — для пиксела.

ПРИМЕЧАНИЕ

Вспомните, что цвета пикселов грани получаются путем интерполяции цветов вершин.

Координаты текстуры для пиксела это просто пара координат (u, v), определяющая тексел текстуры, который будет наложен на данный пиксел. Direct3D перед входом в пиксельный шейдер вычисляет цвет и координаты текстуры для каждого пиксела на основании цветов и координат текстуры вершин. Количество цветов и координат текстур, передаваемых в пиксельный шейдер зависит от того, сколько цветов и координат текстур возвращает вершинный шейдер. Например, если вершинный шейдер возвращает два цвета и три набора координат текстур, то Direct3D вычислит для каждого пикселя два цвета и три набора координат текстуры, которые и передаст в пиксельный шейдер. Мы отображаем переданные цвета и координаты текстур на переменные шейдера с помощью синтаксиса с двоеточием. Для рассматриваемого примера мы могли бы написать:

struct PS_INPUT { vector c0 : COLOR0; vector c1 : COLOR1; float2 t0 : TEXCOORD0; float2 t1 : TEXCOORD1; float2 t2 : TEXCOORD2; };

Возвращает пиксельный шейдер единственное вычисленное значение цвета пикселя:

struct PS_OUTPUT { vector finalPixelColor : COLOR0; };




Содержание  Назад  Вперед