float4x4 matInvViewProj;

float4 GetPointPosition(float2 Tex0)
{
    float4 PosImageSpace;
    PosImageSpace.xy = float2(Tex0*2-1);
    PosImageSpace.z = tex2D(DepthTextureSampler,Tex0).r;
    return mul(PosImageSpace,matInvViewProj);
}

这就是我的像素着色其中.为什么会有一个编译器的错误?我在汇编它 ps_3_0. 没有的 mul() 它编译。

有帮助吗?

解决方案

啊,我想这是有道理的。由于w组件可以不是初始化,穆尔()功能就会失败。

避免你可以初始化矢量如下:

float4 PosImageSpace = (float4)0;

我仍建议你尝试编制你的色器使用fxc在调试模式,因为你可以得到更好的错误的描述方式。你甚至可以设立一个自定义建立一步,可以让你右击。外汇文件和编写这没有必要编译整个方案/项目。

汇编的着色用fxc在调试配置:

fxc /Od /Zi /T fx_3_0 /Fo Directional_Lighting_Shader_Defaul.fxo Directional_Lighting_Shader_Defaul.fx

你可以找到fxc在C:\Program 文件\Microsoft可SDK\公用事业\bin

设立一个自定义建立一步Visual Studio 检查这样的可SDK 并且还 检查这个网站

还要检查 这篇文章在msdn 关于使用fxc.

其他提示

这是奇怪的:我加入这一行:

PosImageSpace.w = 0.0f;

现在它汇编。这就是它看起来如何现在:

float4x4 matInvViewProj;

float4 GetPointPosition(float2 Tex0)
{
    float4 PosImageSpace;
    PosImageSpace.xy = float2(Tex0*2-1);
    PosImageSpace.z = tex2D(DepthTextureSampler,Tex0).r;
    PosImageSpace.w = 0.0f;
    return mul(PosImageSpace,matInvViewProj);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top