Raymarching L-Systems

category: gfx [glöplog]
I was looking at some architectural l-systems stuff by this guy, http://www.michael-hansmeyer.com/. Totally blows me away. Here's some slides breaking down the process. http://www.michael-hansmeyer.com/flash/l-systems.html

So it got me thinking, could we raymarch this? The actuall code seems pretty simple.
added on the 2011-05-07 11:57:43 by Mewler Mewler
If you can get distance to those things or density of those things in a given point then you can raymarch it(playing captain obvious there).
But isn't it more of a modelling tool?
added on the 2011-05-07 12:45:20 by a13X_B a13X_B
His works remind me this :

http://www.youtube.com/watch?v=CEq4iRjjTmI (mandelbox + menger sponge)
added on the 2011-05-07 18:56:36 by Tigrou Tigrou
you can raymarch IFS (or even more convenient, raytrace) very easily. This is an 4k intro of two years ago that i never managed to get evolving to something woah-able (release-able):

BB Image
added on the 2011-05-07 22:28:37 by iq iq
God damn you Iq, just goddamn.
added on the 2011-05-07 22:50:03 by Visualice Visualice
added on the 2011-05-07 22:53:14 by rudi rudi
visualice: Couldn't have said it better myself
added on the 2011-05-07 23:24:14 by Xetick Xetick
to quote auld:
BB Image
It seems as iq's definition of "not releaseable" greatly differs from ours :( in other words, that looks great! What is that doing there, rotting in your disks?!
added on the 2011-05-07 23:46:42 by xTr1m xTr1m
yeah. iq and his "standard". and that good things never see any light. *shakes head*
added on the 2011-05-08 00:07:17 by yumeji yumeji
I've suspected for a while that IQ could win every demo competition in the next year, just by clearing out his trash can :)
added on the 2011-05-08 01:26:11 by psonice psonice
That isn't woah-able? :u
added on the 2011-05-08 04:31:04 by msqrt msqrt
what's the point of doing all that wth raymarching, I still don't get it. Isn't it fairly straightforward to use good old triangles? You could have millions of them, probably running a lot faster too... the complexity of the scene isn't all that great anyway.

IMHO raymarching may have the edge in situations where you need to make a transition from one state of the global function to another (as in cdak) and maybe incorporate some non-planar looking geometry (done to death already).
added on the 2011-05-08 10:27:06 by Navis Navis
@Navis: Size of code
yes. Would that make that much difference for an L-system representation though?
added on the 2011-05-08 10:51:30 by Navis Navis
try writing a 4k and see yourself
added on the 2011-05-08 11:13:30 by rale rale
Navis: Code complexity.
It's less code to simulate a transparent material with raymarching than with classic rasterizing.
And you get a lot of features you just don't have with rasterizing. You can bend e.g. cylinders without having to change the tesselation and so on... It's extremly KISS.
added on the 2011-05-08 11:15:45 by las las
I'd point out that you can get a very good AO effect without much effort too.

But for an L-system, isn't it less code to try to emulate this as recursive geometry? how would recursion work in a raymarching shader though?
added on the 2011-05-08 11:19:52 by Navis Navis
check post by "knighty" it shows the idea of getting distance estimate for menger sponge (which is one type of ifs).
http://www.fractalforums.com/3d-fractal-generation/revenge-of-the-half-eaten-men ger-sponge/msg21700/
it takes lot less code to get the distance estimate + raymarching up and running than generating a cube on cpu, uploading it to gpu, transforming etc..
added on the 2011-05-08 11:31:54 by rale rale
alright! some impressive images there
added on the 2011-05-08 11:38:00 by Navis Navis
in a raytracing scenario, IFS lead themselves to a straightforward implementation, cause the ray intersection acceleration structure (bounding volume hierarchy) is the definition of the object itself, and it's procedural. this means that you can define your (very complex) object in just a few lines of code - no need to render polygons, no need to do frustum culling, no need for matrices, no need for anything. it's embarrassingly compact and simple - it's perfect for 4k intros!
added on the 2011-05-08 11:44:51 by iq iq
Navis: object distortions and mixings are dead simple to do with raymarchers. Also you might have some benefit of marchers when you're dealing with copious amounts of detailed objects (check true impostors).
Also, if your group doesn't have any 3d modellers, raymarchers provide a dead simple way for coders to get somewhat nice objects quite easily, compared to generating a mesh from polygons.
added on the 2011-05-08 12:15:38 by pommak pommak
Iq, you gotta finish that up and get it out there!
added on the 2011-05-08 13:05:19 by johnl johnl
Also, if your group doesn't have any 3d modellers, raymarchers provide a dead simple way for coders to get somewhat nice objects quite easily, compared to generating a mesh from polygons.

ha yes! I spent a BIG amount of time to generate by hand all the (simple) object I use in my intro :|

btw, I'm amazed by all it's possible to do with raymarching/tracing, but it's stil above my current coding skills :3
added on the 2011-05-09 10:05:26 by rez rez
Rez : you're totally wrong. Raymarching is simple as hell :) Much simpler than for example making nice synchros or generating meshes... Which you do perfectly already ;)
added on the 2011-05-09 10:08:01 by flure flure
Iq : ok ... Any other forgotten gem on your disks ?
added on the 2011-05-09 10:24:37 by nytrik nytrik