首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DirectX 11计算着色器5循环

DirectX 11计算着色器5循环
EN

Stack Overflow用户
提问于 2013-09-23 16:42:04
回答 1查看 2.1K关注 0票数 0

我有以下用于计算景深的计算着色器代码。然而,非常不寻常的是,即使g_rayCount为10,循环也只执行一次。请查看主函数raycastercs中for循环所在的位置。

代码语言:javascript
运行
复制
//--------------------------------------------------------------------------------------
// Compute Shader
//-------------------------------------------------------------------------------------

SamplerState SSLinear
{
    Filter = Min_Mag_Linear_Mip_Point;
    AddressU = Border;
    AddressV = Border;
    AddressW = Border;
};

float3 CalculateDoF(uint seedIndex, uint2 fragPos)
{
    ;
}

[numthreads(RAYCASTER_THREAD_BLOCK_SIZE, RAYCASTER_THREAD_BLOCK_SIZE, 1)]
void RaycasterCS(in uint3 threadID: SV_GroupThreadID, in uint3 groupID: SV_GroupID, in uint3 dispatchThreadID :SV_DispatchThreadID)
{
    uint2 fragPos   = groupID.xy * RAYCASTER_THREAD_BLOCK_SIZE + threadID.xy;
    float4 dstColor = g_texFinal[fragPos];
    uint seedIndex  = dispatchThreadID.x * dispatchThreadID.y;


    float3 final = float3(0, 0, 0);
    float color = 0;

    [loop][allow_uav_condition]
    for (int i = 0; i < g_rayCount; ++i);
    {
        float3 dof = CalculateDoF(seedIndex, fragPos);
        final += dof;
    }

    final *= 1.0f / ((float) g_rayCount);
    g_texFinalRW[fragPos] = float4(final, 1);
}


//--------------------------------------------------------------------------------------


technique10 Raycaster
{
    pass RaycastDefault
    {
        SetVertexShader(NULL);
        SetGeometryShader(NULL);
        SetPixelShader(NULL);
        SetComputeShader(CompileShader(cs_5_0, RaycasterCS()));
    }
}
EN

回答 1

Stack Overflow用户

发布于 2013-09-23 16:44:44

删除for语句末尾的分号

代码语言:javascript
运行
复制
for (int i = 0; i < g_rayCount; ++i)  // removed semicolon
{
    float3 dof = CalculateDoF(seedIndex, fragPos);
    final += dof;
}

正如我猜你所知道的,分号只是运行一个空的for循环,然后花括号中的代码只执行一次。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18955016

复制
相关文章

相似问题

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