2011年1月26日水曜日

HLSL 擬似乱数


乱数マップを作りたくないときに便利

#define cMult 0.0001002707309736288
#define aSubtract 0.2727272727272727
float4 randGrieu(float2 coords : WPOS,
uniform samplerRECT ranTexture) : COLOR
{
float4 t = f4texRECT(ranTexture, coords);
float a = t.x + t.z*cMult + aSubtract - floor(t.x);
a *= a;
float b = t.y + a;
b -= floor(b);
float c = t.z + b;
c -= floor(c);
float d = c;
a += c*cMult + aSubtract - floor(a);
a *= a;
b += a;
b -= floor(b);
c += b;
c -= floor(c); return float4(a,b,c,d);
}

0 件のコメント:

コメントを投稿