MrBajt Posted December 20, 2016 Share Posted December 20, 2016 Hello, For the sake of understanding perlin noise (and due to a little downtime during the holidays) I tried to implement a very simple approach to the perlin noise purely in VEX. I'm just a beginner in coding, so maybe this won't work at all, but for the life of me I can't seem to find a solution. Here's my code: float perlin(vector pos;vector freq) { float xi = floor((pos.x/freq.x)); float xmingridpos = xi*freq.x; float xmaxgridpos = xmingridpos+freq.x; //define a grid in x-direction float zi = floor((pos.z/freq.z)); float zmingridpos = zi*freq.z; float zmaxgridpos = zmingridpos+freq.z; //same in z-direction vector randvec1 = normalize(set(random(xmingridpos,40),0,random(zmingridpos,400)))*freq.x; //assign each corner of the cell a random vector vector randvec2 = normalize(set(random(xmingridpos,80),0,random(zmaxgridpos,800)))*freq.x; vector randvec3 = normalize(set(random(xmaxgridpos,120),0,random(zmingridpos,1200)))*freq.x; vector randvec4 = normalize(set(random(xmaxgridpos,160),0,random(zmaxgridpos,1600)))*freq.x; vector g1 = pos-set(xmingridpos,0,zmingridpos); //calculate the distance between the point in question and the grid corner vector g2 = pos-set(xmingridpos,0,zmaxgridpos); vector g3 = pos-set(xmaxgridpos,0,zmingridpos); vector g4 = pos-set(xmaxgridpos,0,zmaxgridpos); float res1 = dot(g1,randvec1); //dot product between the distance vector and the random vector float res2 = dot(g2,randvec2); float res3 = dot(g3,randvec3); float res4 = dot(g4,randvec4); float u=fit(pos.x%freq.x,0,freq.x,0,1); //where the point is in relation to the corners of the grid float v=fit(pos.z%freq.z,0,freq.z,0,1); float temp1 = lerp(res2 ,res1,v); // interpolate the values float temp2 = lerp(res4 ,res3,v); float result = lerp(temp2,temp1,u); return result; } I just wanted the x and z coordinates for simplicity. I'm reading through some tutorials (http://flafla2.github.io/2014/08/09/perlinnoise.html), but he implements a variation (i believe the simplex noise). I just tried to copy what is said in the introduction in the article above. As I have zero clue about what to do, and if anyone is interested, I would like some insight to understand the inner workings of the perlin noise Kind regards, Bajt Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.