【发布时间】:2015-07-08 17:30:03
【问题描述】:
我是 hlsl 的新手。我正在尝试编写一个从 RGB 空间转换为 YIQ 空间(NTSC)的像素着色器。转换过程很好,但除了纹理左上角的颜色之外,我似乎无法让采样器和 tex2D 返回任何颜色。我知道这一定是一个愚蠢的错误,但谷歌搜索让我更加困惑。
我尝试过声明纹理并使用 sampler_state 将其链接到 sampler2D,但这似乎并没有改变任何东西。我正在使用 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();
}
}
我做错了什么?
【问题讨论】:
标签: directx rgb hlsl directx-9 pixel-shader