[gelöst] HLSL "force to unroll" problem....

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
corvex
Beiträge: 4
Registriert: 22.06.2006, 10:55
Kontaktdaten:

[gelöst] HLSL "force to unroll" problem....

Beitrag von corvex »

... huuuh... hab nen seltsames problem.... finde den fehler irgendwie nich...

folgende warnungen kommen

Code: Alles auswählen

warning X3557: Loop only executes for 0 iteration(s), forcing loop to unroll
error X3511: Unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
error X3511: Forced to unroll loop, but unrolling failed.
beim compilieren folgenden quellcodes....

Code: Alles auswählen

const int2 boxSize = (1, 1);

float4 
psBoxBlur(const vsInOut psIn) : COLOR
{
    int x = -boxSize.x;
    int y = -boxSize.y;
    float invTexSizeX = 1 / displayRes.x;
    float invTexSizeY = 1 / displayRes.y;
    
    float4 sum = 0;
    for(; x <= boxSize.x; x++)
    {
        for(; y <= boxSize.y; y++)
        {
            float2 boxUv = psIn.uv0 + float2(x * invTexSizeX, y * invTexSizeY);
            sum += tex2D(sourceSampler, boxUv);
        }
    }
    sum /= (boxSize.x * 2 + 1) * (boxSize.y * 2 + 1);
    return sum;
} 
mit ps und vs profile 3_0....

jemand ne ahnung warum der mir die 2 kleinen schleifen nicht ausklappen kann.... wenner schon der meinung ist er wolle das unbedingt machen???!

gruß
cX
Zuletzt geändert von corvex am 28.04.2009, 08:56, insgesamt 1-mal geändert.
corvex
Beiträge: 4
Registriert: 22.06.2006, 10:55
Kontaktdaten:

Re: HLSL "force to unroll" problem....

Beitrag von corvex »

achja.. auch mit klassischen schleifen a la

Code: Alles auswählen

......
for(x = -boxSize.x; x <= boxSize.x; x++)
......
mag ers nich..
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: HLSL "force to unroll" problem....

Beitrag von CodingCat »

Ich denke er meckert deshalb, weil du boxSize mit dem Modifier "const" nach wie vor anwendungsseitig verändern kannst. Versuch es mal mit

Code: Alles auswählen

static const int2 boxSize = (1, 1);
Sollte es gar nicht deine Absicht sein, den Loop zu entrollen, dann liegt der Fehler vermutlich darin, dass du y für die Schleifendurchgänge x = 0; 1 nicht zurücksetzt und so in diesen beiden Durchgängen 0 Iterationen verursachst.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
corvex
Beiträge: 4
Registriert: 22.06.2006, 10:55
Kontaktdaten:

Re: HLSL "force to unroll" problem....

Beitrag von corvex »

super.. danke für die schnelle antwort.. ich glaube es ist einfach langsam zeit feierabend zu machen ;)

thx..
Antworten