関数に渡されたテクスチャの色がループ内で機能していませんか?
私はこれについて本当に混乱しています。最初のコードは機能していますが、2番目のコードは機能していません。誰かがこの行動について説明していますか?関数内でテクスチャ ルックアップを移動するだけで機能しますが、xy は変更されないため必要ありません。
動作していません: (出力は黒です)
float getDistance(vec3 point,vec4 n_0)
{
float d=point.z;
d+=0.1*(n_0.w);
return(d);
}
void main()
{
vec4 n_0;
vec4 color;
vec3 point;
point=vec3(v_coord.x*1.0,v_coord.y*1.0,-1.0);
n_0=texture2D(noise,vec2(point*1.0))*2.0-1.0;
int i;
float d=100.0;
for(i=0;i<50;i++)
{
d=getDistance(point,n_0);
if(d<0.001)break;
point.z+=d;
}
gl_FragColor=clamp(vec4(d),0.0,1.0);
}
動作中: (出力はノイズです)
float getDistance(vec3 point)
{
vec4 n_0=texture2D(noise,vec2(point*1.0))*2.0-1.0;
float d=point.z;
d+=0.1*(n_0.w);
return(d);
}
void main()
{
vec4 n_0;
vec4 color;
vec3 point;
point=vec3(v_coord.x*1.0,v_coord.y*1.0,-1.0);
int i;
float d=100.0;
for(i=0;i<50;i++)
{
d=getDistance(point);
if(d<0.001)break;
point.z+=d;
}
gl_FragColor=clamp(vec4(d),0.0,1.0);
}