Geotoy – Shadertoy for 3D Geometry

(3d.ameo.design)

146 points | by Ameo 6 days ago ago

26 comments

  • riidom 5 days ago ago

    I found this article also interesting (I believe also from the author, but correct me if I'm wrong):

    https://cprimozic.net/blog/the-tech-behind-geotoy/#overview

    • 5 days ago ago
      [deleted]
  • xixixao 5 days ago ago

    This is awesome. My current hobby project is getting 3D SDF meshing good enough so that I can use them instead of building out of meshes. I’m starting from marching triangles but it’s very much an open problem. Everything in JS, with the goal of building models in JS.

  • wewewedxfgdf 5 days ago ago

    Help me understand what this is - so it's like Shadertoy but no animation?

    • riidom 5 days ago ago

      it's like a scripting language for 3D models (could call it a DSL, I guess).

      Look at the "temple"-example, there it is easier to reason about than the more abstract objects:

      https://3d.ameo.design/geotoy/edit/39

  • jcelerier 5 days ago ago

    Reminds me a lot of the venerable structure synth: https://structuresynth.sourceforge.net/

    I tried to give it a new life in https://ossia.io but it's decidedly not real-time friendly, maybe geotoy will work better for this!

  • lawlessone 5 days ago ago

    This runs a lot smoother than shadertoy does for me.

    • socalgal2 5 days ago ago

      they are doing completely different things.

      shadertoy: given a pixel coordinate, write a function to return a color.

      geotoy: write a function to return vertices

      In shadertoy, to draw cube on a 1280x720 screen requires your function to be called 921k times. To draw a cube in geotoy requires your function to be called 36 times. That's over simplifying but saying one is fast and one is a slow is comparing atoms to balls. Shadertoy = describe every atom, geotoy = describe the shape. again, bad analogy I suppose, but the orders of magnitude difference are somewhat help explain why one is fast and one is slow (yes though, you can generate a geotoy that will be slow and a shadertoy that will be fast). Similarly describing every atom means you can describe fog or god rays or caustics etc. Describing the shape won't do that.

      PS: I think geotoy is cool. nothing above is meant to detract from that. Just to explain, probably poorly

  • dachris 4 days ago ago

    This is fun - and really powerful.

    In some way, multicellular lifeforms (like a cherry tree or a human) also have to contain a kind of formulation like this so that they result in the fractals of branches and blood vessels as well as the overall structure.

  • jasonjmcghee 5 days ago ago

    Unsolicited feedback: I think if rotation decelerated quickly to no velocity instead of instantly stopping when you let go, it would feel more natural.

  • _bohm 5 days ago ago

    This is cool! @OP, are you the creator of Geoscript? I've never heard about this anywhere else before.

  • retrofuturism 5 days ago ago

    This wowed me in the same way when I saw GLSL for the first time. What is Geoscript??? I love this.

  • dernett 5 days ago ago

    Is it possible to create animations using something like Shadertoy's `iTime`?

  • MintPaw 5 days ago ago

    Looks kinda like Rust? How similar is this to geometry shaders?

    • fyrn_ 5 days ago ago

      Quite different, but also geometry shaders have fallen from grace for quite awhile because it turned out to be practically impossible to optimize them

      • pezezin 4 days ago ago

        Geometry shaders have been replaced by mesh shaders, which are way more powerful as they can output any kind of geometry.

  • sampton 5 days ago ago

    How is the material defined?

    • riidom 5 days ago ago

      It's not done via code, you can find the materials in the burger menu, top right corner of the console, in bottom right screen corner.

      The article I linked in another post here describes that it's all done with triplanar mapping, so no UV's involved.

  • idrios 5 days ago ago

    Now we just need Rigtoy, Animtoy and Rendertoy and we'll be able to make beautiful 3D animations in the browser

  • mclau157 5 days ago ago

    this website still uses shaders its just a button called materials after clicking the 3 bars in the bottom right of the screen

    • pjmlp 4 days ago ago

      That is the only thing modern GPUs understand, so naturally it still uses them.

      I see this as a higher level DSL for modelling, instead of doing something like SDF by hand.