Я новичок в hlsl. Я пытаюсь написать пиксельный шейдер, который преобразует из пространства RGB в пространство YIQ (NTSC). Процесс преобразования прекрасен, но я не могу заставить сэмплер и tex2D возвращать любой цвет, кроме того, что в левом верхнем углу текстуры. Я знаю, что это должна быть глупая ошибка, но поиск в Google только что смутил меня.HLSL Pixel Shader Color Sample
Я попытался объявить текстуру и связать ее с sampler2D с помощью sampler_state, но это ничего не изменило. Я использую Ventuz, в котором работают DirectX 9 и Pixel Shader 3.0. У меня есть простой объект плоскости с текстурой изображения. Я просто хочу видеть, что текстура не тронута после прохождения шейдера, поэтому я могу попробовать выполнить шаги преобразования.
float4x4 WorldViewProjection : WORLDVIEWPROJECTION;
sampler2D TextureSampler : register(s0);
float4 VS(float4 Position : POSITION){
return float4(mul(Position, WorldViewProjection));
}
float4 PS(float2 uv : TEXCOORD) : COLOR
{
float4 Colour = tex2D(TextureSampler, uv.xy);
/* Perform colour space conversion steps */
return YIQA;
}
technique Tech1
{
pass pass0
{
vertexshader = compile vs_3_0 VS();
pixelshader = compile ps_3_0 PS();
}
}
Что я делаю неправильно?