SimpLSystem: A Perfectly Comprehensib-L-System

I’ve made an L-system for Fabric Engine, called SimpLSystem. The project lives right now is on the Fabric Engine forums. The code is on my personal GitHub. The goal is for it to be a collaborative project in the Fabric Engine user community to explore variations and applications of L-Systems. As such, it’s not very far along and I’ve released it pretty early to allow it to be more community-driven. So if you like the intersection of these curious systems with high performance computation and node graphs, give it a shot!Several evolutions of an L system, each color is + 1.0 iterations.

L-systems, if you don’t know, are these neat things that take small strings and then make monstrously huge strings out of them by repeatedly replacing single characters with the other strings. Then the monstrously huge strings are interpreted into some kind of geometry by feeding them character by character into an imaginary flying turtle, who takes orders from these characters and leaves a trail of intricate, fractal-like structures. The turtle can also teleport (to a position previously visited location). Wikipedia may have a better explanation.


The first few times I tried to use it, it happily filled up the memory on my computer and crashed it several times because I accidentally set the iterations one level too high. L-systems have a tendency to scale that way: instantaneous, instantaneous, instantaneous, slightly laggy, completely unresponsive and quickly making everything else on my system unresponsive as well, forcing a reset and wondering if I should do the Windows-didn’t-shut-down-properly hard drive checking thing. (I’ve since added a safety that keeps the string from growing above a certain size. It should be safe now.)


JF Nested Dielectric

JF Nested Dielectric is released as a Psyop open source initiative! It’s a shader for Solid Angle’s Arnold Renderer. It has one purpose – efficient, physically-plausible rendering of nested dielectric surfaces in production. Licensing info, source, and DCC helper files are available in the Git Repo linked below.

In large part, this is an implementation of the 2002 paper: Simple Nested Dielectrics in Ray-traced Images by Charles M. Schmidt and Brian Budge

It’s also capable of capable of spectral dispersion, direct refraction of light sources, production-feasible ray traced blurry caustics. It also has a few different optimization techniques built in to improve render times, including Russian Roulette and energy tracking and clamping throughout the ray tree.
Visualized by my ICE ray tracer

Visualization of ray-tracing dielectric media

JF Nested Dielectric is Copyright (c) 2014, Psyop Media Company, LLC and Jonah Friedman

Update: I have released a video of a unreleased photon mapper for JF Nested Dielectric, JF Photon. This was unfortunately never finished into a product suitable for artists, but code is available on Github.

Trigonometry (Thanks Mark!)

Thanks so much for the great demos at Siggraph and all the plugs!

Mark's Siggraph Demo

So if you aren’t Mark and are reading this and don’t know what I’m talking about, Mark showed off Ruffle as part of his Softimage demos at Siggraph, which are about a thousand times more engaging than mine and contain no handwavy references to “trigonometry”.  :D

Go to Autodesk’s Siggraph 2011 video streaming page, click play, scrub to about 3:30 (that’s 3 hours in, it’s whole days of streaming).

I’m hoping this weekend to do a demo on the Tangent space rotation stuff, maybe building something that interpolates tangent space rotations from scratch to show how that all works. I’m going to try to learn from Mark’s example how to make a demo fun to watch.. but if that demo below is the result when I demo something with no math, I’m not sure what chance I have with this subject.

Thanks again Mark!