// var from param
float gridSX = ch("../grid1/sizex");
float gridSZ = ch("../grid1/sizey");
// var from UI param
float noiseOffsetX = chf("noiseOffsetX");
float noiseOffsetZ = chf("noiseOffsetZ");
float noiseScaleX = chf("noiseScaleX");
float noiseScaleZ = chf("noiseScaleZ");
int noiseType = chi("noiseType");
// other var definition
float srcXscl = 1-abs(@P.x)/(gridSX*0.5);
float srcZscl = 1-abs(@P.z)/(gridSZ*0.5);
float srcScl = srcXscl * srcZscl;
float noiseBlendSclX = 1 - srcXscl ;
float noiseBlendSclZ = 1 - srcZscl ;
vector noise;
vector noiseX = srcZscl * noiseBlendSclX;
vector noiseZ = srcXscl * noiseBlendSclZ;
if(noiseType == 0){
noise = curlnoise2d(@P.x*noiseScaleX + noiseOffsetX,@P.z*noiseScaleZ + noiseOffsetZ);
noiseX *= curlnoise2d(@P.x*noiseScaleX + noiseOffsetX - sign(@P.x)*gridSX*0.5*noiseScaleX, @P.z*noiseScaleZ + noiseOffsetZ);
noiseZ *= curlnoise2d(@P.x*noiseScaleX + noiseOffsetX, @P.z*noiseScaleZ + noiseOffsetZ - sign(@P.z)*gridSZ*0.5*noiseScaleZ);
}else if(noiseType == 1){
noise = anoise(set(@P.x*noiseScaleX + noiseOffsetX,0,@P.z*noiseScaleZ + noiseOffsetZ));
noiseX *= anoise( set( @P.x*noiseScaleX + noiseOffsetX - sign(@P.x)*gridSX*0.5*noiseScaleX,0, @P.z*noiseScaleZ + noiseOffsetZ) );
noiseZ *= anoise( set( @P.x*noiseScaleX + noiseOffsetX, 0, @P.z*noiseScaleZ + noiseOffsetZ - sign(@P.z)*gridSZ*0.5*noiseScaleZ) );
}else if(noiseType == 2){
noise = noise(set(@P.x*noiseScaleX + noiseOffsetX,0,@P.z*noiseScaleZ + noiseOffsetZ));
noiseX *= noise( set( @P.x*noiseScaleX + noiseOffsetX - sign(@P.x)*gridSX*0.5*noiseScaleX,0, @P.z*noiseScaleZ + noiseOffsetZ) );
noiseZ *= noise( set( @P.x*noiseScaleX + noiseOffsetX, 0, @P.z*noiseScaleZ + noiseOffsetZ - sign(@P.z)*gridSZ*0.5*noiseScaleZ) );
}else if(noiseType == 3){
noise = onoise(set(@P.x*noiseScaleX + noiseOffsetX,0,@P.z*noiseScaleZ + noiseOffsetZ));
noiseX *= onoise( set( @P.x*noiseScaleX + noiseOffsetX - sign(@P.x)*gridSX*0.5*noiseScaleX,0, @P.z*noiseScaleZ + noiseOffsetZ) );
noiseZ *= onoise( set( @P.x*noiseScaleX + noiseOffsetX, 0, @P.z*noiseScaleZ + noiseOffsetZ - sign(@P.z)*gridSZ*0.5*noiseScaleZ) );
}else if(noiseType == 4){
noise = snoise(set(@P.x*noiseScaleX + noiseOffsetX,0,@P.z*noiseScaleZ + noiseOffsetZ));
noiseX *= snoise( set( @P.x*noiseScaleX + noiseOffsetX - sign(@P.x)*gridSX*0.5*noiseScaleX,0, @P.z*noiseScaleZ + noiseOffsetZ) );
noiseZ *= snoise( set( @P.x*noiseScaleX + noiseOffsetX, 0, @P.z*noiseScaleZ + noiseOffsetZ - sign(@P.z)*gridSZ*0.5*noiseScaleZ) );
}
vector cdVal = noise*srcScl + noiseX + noiseZ;
v@noise = chf("noiseAmount") * set( cdVal.x, cdVal.y, cdVal.z );
//@P += @noise;
//v@Cd = set( srcXscl, srcZscl, 0 );
//v@Cd = noiseX;
//v@Cd = noiseZ;
//v@Cd = set( srcXscl, 0, 0 );
v@Cd = @noise;