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.
So it got me thinking, could we raymarch this? The actuall code seems pretty simple.
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?
But isn't it more of a modelling tool?
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):
God damn you Iq, just goddamn.
*burp*
visualice: Couldn't have said it better myself
to quote auld:
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?!
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?!
yeah. iq and his "standard". and that good things never see any light. *shakes head*
I've suspected for a while that IQ could win every demo competition in the next year, just by clearing out his trash can :)
That isn't woah-able? :u
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).
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).
@Navis: Size of code
yes. Would that make that much difference for an L-system representation though?
try writing a 4k and see yourself
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.
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.
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?
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?
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-menger-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..
http://www.fractalforums.com/3d-fractal-generation/revenge-of-the-half-eaten-menger-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..
alright! some impressive images there
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!
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.
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.
Iq, you gotta finish that up and get it out there!
Quote:
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
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 ;)
Iq : ok ... Any other forgotten gem on your disks ?