首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HLSL循环/采样的问题

HLSL循环/采样的问题
EN

Stack Overflow用户
提问于 2009-08-31 23:40:16
回答 1查看 1.6K关注 0票数 2

我有一段HLSL代码,如下所示:

代码语言:javascript
复制
float4 GetIndirection(float2 TexCoord)
{
    float4 indirection = tex2D(IndirectionSampler, TexCoord);

    for (half mip = indirection.b * 255; mip > 1 && indirection.a < 128; mip--)
    {
        indirection = tex2Dlod(IndirectionSampler, float4(TexCoord, 0, mip));
    }
    return indirection;
}

我得到的结果与只执行一次的循环是一致的。我检查了PIX中的着色器,事情变得更加奇怪,指示代码中位置的黄色箭头到达循环,通过它一次,然后跳回开始处,在这一点上,黄色箭头再也不会移动,但光标在代码中移动并返回结果( PIX中的错误,或者我只是使用错误了?)

我怀疑这可能是编译器将纹理读取移到循环之外的问题,但我认为这不会发生在tex2Dlod中,因为我是手动设置LOD的:/

所以:

1)有什么问题?

2)有什么建议的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-01 09:05:51

问题解决了,这只是一个简单的编码错误,我需要在每次迭代中增加mip级别,而不是减少它。

代码语言:javascript
复制
float4 GetIndirection(float2 TexCoord)
{
    float4 indirection = tex2D(IndirectionSampler, TexCoord);

    for (half mip = indirection.b * 255; mip > 1 && indirection.a < 128; mip++)
    {
        indirection = tex2Dlod(IndirectionSampler, float4(TexCoord, 0, mip));
    }
    return indirection;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1359893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档