header
project 1 project 2 project 3
    This page will document the process in creating a lava shader in renderman.  


     Hopefully by the end of this project I will have a dynamic lava shader. I have to give a great thanks to Matt Burdette for the ideas. There will be two main foreseeable technical problems to overcome for this shader to be production quality. The first one will use sub-surface scattering point cloud data to control the incandescance and other various aspects of the shader. The second one will be to use ambient occlusion point data to drive a dynamic wrinkle displacement for the "cool" edges of the lava.



 

     Alright, so I got a little bit done. You can more or less get a general idea of what's going on currently from the flipbook upstairs. Basically, right now it's a layered shader and I'm using lights to control the "temperature" of the shader via sub-surface scattering that's being overdriven. Hopefully I can get it to work so that I can use the subsurface information as a mask for my layered shader so that where it's hot it'll show the magma sss shader, and where it's cool it'll show the crust shader. Right now for demonstration purposes I'm just masking with a t ramp.

    As you can see on the last slide, I'm having troubles using the subsurface as a mask, and I'm also having troubles whenever I turn on displacement. As soon as I get both of those fixed I should be able to fly out some detail.
    Well, this project ended up being a bit of a disappointment for a number of reasons. First off, the workflow for this thing was a rather big headache. I attempted at one point to pull it into and setup a bunch of pre-passes which is obviously quite feasible, however, it proved troublesome. Honestly, it all just boils down to not enough investment of time, due to various things. However I do plan on finsishing this to demo reel quality eventually.

So right now the easy issues that I wasn't able to figure out in time for the scope of this class was getting the displacement to mask properly based on the sub surface (which is why the lava is all bumpy and stupid instead of just being a liquidy fluid looking thing. The other issue is the fact that I had to bake a point cloud, filter it, convert it to a brick map and then read it back in anytime I wanted to change what was actually driving the subsurface. Granted this had plenty of potential nifty features, such as having a light control the viscosity on a mesh of some kind with this same shader attached (and with a proper workflow setup), so that as the light got closer, the shader and viscosity would match up in terms of "temperature". However this is a pretty backwards way of doing it. I would still like to conquer this lava beast over the summer, and I have all intentions of doing it, alongside other things.
dh_lava-3.sl

dh_lava_displace.sl

lava_bake.rib

lava_read.rib