Поделиться через


texkill - ps

Отменяет отрисовку текущего пикселя, если любой из первых трех компонентов (UVW) координат текстуры меньше нуля.

Синтаксис

texkill dst

 

where

  • dst — это регистр назначения

Комментарии

Версии шейдера пикселей 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texkill x x x x x x x x x

 

Эта инструкция соответствует функции клипа HLSL.

texkill не является образцом какой-либо текстуры. Он работает с первыми тремя компонентами координат текстуры, заданными номером регистра назначения. Для ps_1_4 texkill работает с данными в первых трех компонентах регистра назначения.

Эту инструкцию можно использовать для реализации произвольных плоскостей клипа в растеризаторе.

При использовании шейдеров вершин приложение отвечает за применение преобразования перспективы. Это может вызвать проблемы для произвольных плоскостей обрезки, так как если она содержит анизоморфные коэффициенты шкалы, необходимо также преобразовать плоскости клипа. Поэтому лучше всего указать непроектированную позицию вершины для использования в произвольном клипере, который представляет собой набор координат текстуры, определяемый оператором texkill.

Эта инструкция используется следующим образом:

texkill tn // Маскирование пикселей выполняется следующим образом: если ( компоненты x,y,z TextureCoordinates(этап n)UVWQ< 0 ) отмена отображения пикселей

Для пиксельного шейдера 1_1, 1_2 и 1_3 texkill работает с координатами текстуры, заданными номером регистра назначения. Однако в версии 1_4 texkill работает с данными, содержащимися в регистре координат текстур (tn) или во временном регистре (rn), который был указан в качестве назначения.

Если включена функция множественной дискретизации, любой эффект сглаживания, достигнутый на ребрах многоугольников из-за множественной дискретизации, не будет достигнут по краю, созданному texkill. Пиксельный шейдер выполняется один раз для каждого пикселя.

Данный пример служит только для демонстрационных целей.

В этом примере маскируются пиксели с отрицательными координатами текстуры. Цвета пикселей интерполируются из цветов вершин, указанных в данных вершин.

ps_1_1       // Version instruction
texkill t0   // Mask out pixel using texture coordinates from stage 0
mov r0, v0   // Move the diffuse color in v0 to r0

// The rendered output from the pixel shader is shown below

Координаты текстуры варьируются от –0,5 до 0,5 в u и от 0,0 до 1,0 в v. Эта инструкция приводит к маске отрицательных значений u. На первом рисунке ниже показан цвет вершины, примененный к четырехугольнику без применения инструкции texkill. На втором рисунке ниже показан результат инструкции texkill. Цвета пикселей из координат текстуры ниже 0 (где x переходит от -0,5 до 0,0) маскируются. Цвет фона (белый) используется там, где замаскирован цвет пикселей.

Иллюстрация выходных данных с цветом вершины, примененным к четырехугольнику без инструкции texkill , иллюстрация выходных данных с примененной инструкцией texkill

Данные координат текстуры объявляются в объявлении данных вершины в этом примере.

   
struct CUSTOMVERTEX
{
    FLOAT x, y, z;
    DWORD color;
    FLOAT tu1, tv1;
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1|D3DTEXCOORD2(0))

static CUSTOMVERTEX g_Vertices[]=
{
    //  x      y     z    color         u1,    v1  
    { -1.0f, -1.0f, 0.0f, 0xffff0000, -0.5f,  1.0f, },
    {  1.0f, -1.0f, 0.0f, 0xff00ff00,  0.5f,  1.0f, },
    {  1.0f,  1.0f, 0.0f, 0xff0000ff,  0.5f,  0.0f, },
    { -1.0f,  1.0f, 0.0f, 0xffffffff, -0.5f,  0.0f, },

};

Инструкции по шейдеру пикселей