Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float get_floor(vec3 p) {
- vec3 q = p; /* save input p */
- float d = 1000.0; /* total distance */
- for (int i=-1;i<=1;++i){
- for(int j=-1;j<=1;++j){
- float space = 6.;
- float item = floor(abs(mod(p.z,0.)) / space);
- item += abs(float(j)); /* offset cell index */
- p.y += sin(iTime + item * PI / 2.) * 4.0;
- p.xz = mod(p.xz,space)-.5 * space;
- p.xz += vec2(float(i), float(j)) * space; /* offset local coordinates */
- float displacement = sin(15. * p.x) * sin(15. * p.y) * sin(15. * p.z) * .04;
- float floorBox = boxSDF(vec3(p.x,p.y + 3.,p.z), vec3(15.5, .2, 15.5));
- //+ displacement;
- float circleCut = sphereSDF(vec3(p.x,p.y + 3.,p.z),2.);
- float dd = max(floorBox,circleCut);
- d = min(d, dd); /* keep track of total distance */
- p = q; /* restore input p */
- }
- }
- return d;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement