2016-04-10 31 views
1

Hy!HLSL ComputeShaderテクスチャのサンプルが異常な動作をする

私は、コンピュートシェーダを持っている:

[numthreads(128, 1, 1)] 
void csAdvect(uint2 dtid : SV_DispatchThreadID) 
{ 
    uint4 dtl = uint4(dtid, 0, 0); 
    float2 inverseSize = float2(1.0f/gridSize.x, 1.0f/gridSize.y); 
    float2 coord = float2(dtid.x*inverseSize.x, dtid.y*inverseSize.y); 

    float statict = statictemp.Load(dtl).x; 
    if (statict < 0)statict = 0; 
    float t = temperature.SampleLevel(zeroBoundarySampler, coord, 0).x; 
    outputTemperature[dtid] = statict + t; 
} 

それは、静的テクスチャセルから読み出されます、別のものをサンプリングし、出力テクスチャに書き込みます。裸のサンプル。 テクスチャとgridSizeは512x512です。私はこれをDispatch(4,512,1)と呼び、すべてのレンダリングステップで温度と出力温度テクスチャを入れ替えます。

私は静的な点から円形のように成長すると思っていましたが、その代わりに右だけが成長しています。 左上隅の黒っぽい/赤みを帯びたものは静的な「熱」ですが、赤色のものはシェーダからの温度が低くなります。

任意のアイデアはどのような私が間違っているのでしょうか?だから、すべての座標系の変換について

答えて

0

...

あなたは512x512のテクスチャを持っている場合は、これがに0,0に拡張したい場合、テクスチャはそう0,0から511511までの配列としてサンプリングすることができます1,1あなたは512ではなく511で分割する必要があります!愚かな間違いだが見つけにくい...

関連する問題