地雷船GLSL:我如何设置云的位置?

地雷船GLSL:我如何设置云的位置?,glsl,minecraft,Glsl,Minecraft,我使用的是gl_FragCoord.xy,但云彩锁定在玩家眼睛或相机位置。如果你回头看,他们会和你一起搬家。但我希望云有自己的静止位置。我用worldposition=gbufferModelViewInverse*fragposition试过,但结果很糟糕。如果我看着日出或日落,看到了镜子的效果,云彩就会伸展开来。如果我看日落的话,他们的样本和日出时一样 现在我的问题是:如果玩家看左边,云不会随着玩家的眼睛移动,我如何才能做到这一点?很难解释,所以我试着画一幅简单的图: 以下是我的代码中的一

我使用的是
gl_FragCoord.xy
,但云彩锁定在玩家眼睛或相机位置。如果你回头看,他们会和你一起搬家。但我希望云有自己的静止位置。我用
worldposition=gbufferModelViewInverse*fragposition
试过,但结果很糟糕。如果我看着日出或日落,看到了镜子的效果,云彩就会伸展开来。如果我看日落的话,他们的样本和日出时一样

现在我的问题是:如果玩家看左边,云不会随着玩家的眼睛移动,我如何才能做到这一点?很难解释,所以我试着画一幅简单的图:

以下是我的代码中的一部分:

float hash( float n )
{
    return fract(sin(n)*43758.5453);
}

float noise( in vec2 x )
{
    vec2 p = floor(x);
    vec2 f = fract(x);
        f = f*f*(3.0-2.0*f);
        float n = p.x + p.y*57.0;
        float res = mix(mix( hash(n+  0.0), hash(n+  1.0),f.x), mix( hash(n+ 57.0), hash(n+ 58.0),f.x),f.y);
        return res;
}

float fbm( vec2 p )
{
        float f = 0.0;
        f += 0.50000*noise( p ); p = p*2.02;
        f += 0.25000*noise( p ); p = p*2.03;
        f += 0.12500*noise( p ); p = p*2.01;
        f += 0.06250*noise( p ); p = p*2.04;
        f += 0.03125*noise( p );
        return f/0.984375;
}

#define CLOUD_COVER         0.55
#define CLOUD_SHARPNESS     0.015

// Wind - Used to animate the clouds
vec2 wind_vec = vec2(0.001 + frameTimeCounter*0.005, 0.003 + frameTimeCounter * 0.005);

// Set up domain
vec2 q = (gl_FragCoord.xy / 2024);
vec2 p = -1.0 + 3.0 * q + wind_vec;

// Create noise using fBm
float f = fbm( 4.0*p );

float cover = CLOUD_COVER;
float sharpness = CLOUD_SHARPNESS;

float c = f - (1.0 - cover);
if ( c < 0.0 )
c = 0.0;

f = 1.0 - (pow(sharpness, c));

color += f/15*TimeDay;
color += vec3(0.03, 0.19, 0.99)*f/1000*TimeMidnight;
float散列(float n)
{
返回分数(sin(n)*43758.5453);
}
浮动噪声(以vec2 x为单位)
{
vec2p=地板(x);
vec2f=fract(x);
f=f*f*(3.0-2.0*f);
浮动n=p.x+p.y*57.0;
float res=混合(混合(散列(n+0.0)、散列(n+1.0)、f.x)、混合(散列(n+57.0)、散列(n+58.0)、f.x)、f.y);
返回res;
}
浮动fbm(vec2 p)
{
浮动f=0.0;
f+=0.50000*噪声(p);p=p*2.02;
f+=0.25000*噪声(p);p=p*2.03;
f+=0.12500*噪声(p);p=p*2.01;
f+=0.06250*噪声(p);p=p*2.04;
f+=0.03125*噪声(p);
返回f/0.984375;
}
#定义云覆盖率0.55
#定义云_锐度0.015
//风-用于设置云的动画
vec2 wind_vec=vec2(0.001+帧时计数器*0.005,0.003+帧时计数器*0.005);
//设置域
vec2 q=(德国劳埃德船级社,xy/2024);
vec2p=-1.0+3.0*q+wind\u-vec;
//使用fBm创建噪波
浮点数f=fbm(4.0*p);
浮子覆盖层=云层覆盖层;
浮动清晰度=云层清晰度;
浮子c=f-(1.0-盖);
if(c<0.0)
c=0.0;
f=1.0-(功率(锐度,c));
颜色+=f/15*时间日;
颜色+=vec3(0.03,0.19,0.99)*f/1000*时间午夜;

您是否正在寻找创建skybox的方法?