Content pfp
Content
@
0 reply
0 recast
0 reaction

Piter Pasma  pfp
Piter Pasma
@piterpasma
per request here's how I created the artwork in theoretically possible to follow, slightly unordered steps: STEP 23) use the random seed "GenArt-BanNER" which you can tell is truly random and not at all cherry picked to look the nicest. Compare for instance this one which has seed "GENART-EXPLANANANANA" ⬎
8 replies
6 recasts
72 reactions

Piter Pasma  pfp
Piter Pasma
@piterpasma
so first you gotta build a Rayhatcher, you can read about it here: https://www.fxhash.xyz/article/rayhatching-evolution it's very easy the Rayhatcher is basically a flow field and everybody knows how to do flow fields right? otherwise Tyler Hobbs explains flow fields here: https://www.tylerxhobbs.com/words/flow-fields and I used the algorithm from the paper here: https://web.cs.ucdavis.edu/~ma/SIGGRAPH02/course23/notes/papers/Jobard.pdf Then we gonna raytrace, the result of which gets you a light(x,y) function, and also a normal(x,y) function which represents surface orientation. Bbbback to the flow field, we modulate the line distance according to light(x,y) and the flow field direction is based on the normals (cross product with arbitary vector, project to 2D, normalize) and that's it really
2 replies
0 recast
6 reactions

Piter Pasma  pfp
Piter Pasma
@piterpasma
you know how raytracing is easy when you use shaders and SDFs? if not, go read Inigo Quilez until you do: https://iquilezles.org/articles/raymarchingdf/ and all the other articles, bask in the infinite wisdom as your INT goes πŸš€ and your skill tree sprawls to the horizons πŸŽ‡
1 reply
1 recast
5 reactions

Piter Pasma  pfp
Piter Pasma
@piterpasma
... turns out raytracing is ALSO easy when you use JS and SDFs and it looks a little something like this: A=([x,y,z],[a,b,c],t=1)=>[x+a*t,y+b*t,z+c*t]; // 3D vector addmul IX=(SDF,ro,rd,t=0,h)=>{for(;t<MAXD&&(h=fudge*SDF(A(ro,rd,t)))>SURFD;t+=h);return t} // raytrace intersect func but feel free to write your own
1 reply
2 recasts
5 reactions