PBR Lit Particle Clouds?

Has anyone seen work flow for lit particle translucency smoke or clouds? I’m currently under the constraint that I cannot use geometry.

There’s tons of regular smoke tutorials, but I’m having trouble finding anything that relates well to PBR.

My current work looks like harshly lit popcorn and it’s hurting my soul.
It’s really creepy animated popcorn though…

1 Like

Proprietary engine, or UE4/Unity?

1 Like

Sure, but it’s costly.
One of my old examples can be seen on slide 42 here: Physically Based and Unified Volumetric Rendering in Frostbite

Unfortunately it’s just the slide so the video isn’t playing but if you can find a recording of the talk somewhere it should be in there.

You need code to voxelize or raytrace them to get good results.


Take a look at these… it’s in Unity :smiley:


Those are nice…how were they made?

Dude, you’re always the best.
I was hoping for something dumb, cheap, and fast, but I might be able to talk them into that.

It’s hard to explain for me but I think he uses different cameras to project the information of the lights depending on the angle into the cloud texture. It looks very nice…


I implemented it in a personal project to study it :blush:

This is what i found, it’s pretty cool…

1 Like

dude put a unity pack on the youtube vid it says matcap… http://www.hedfiles.net/CloudPuff_MatCap.unitypackage


That’s cool! All screenspace. You won’t get any selfshadowing, but that’s still a very convincing result!

1 Like

can always just make normal maps from renders. they just drop into unity’s PBR shader


nice results, what do use to make the normal map, i don’t recognize that program.

also do you get any fringe lighting when the light source is from behind the clouds?

1 Like

Looks like a RGB lightcomp in Nuke.


Could world space normals be done in Houdini? ive tried creating a RGB light rig similar to @mattorialist but i don’t seem to be getting the right effect. ive also tried using the texture sheet node created by @mikelyndon but this doesnt work well for creating clouds for a sky sphere as the normals created by that is tangent based not world/object.

The normals created by the light rig are world space - I just fit them between 0 and 1. If you want to mess with the raw renders have a look at the image planes in RGB Image Sequence. There are 6 separate planes for each axis. You can combine these however you want.

ah ok ill take a dive in and see what i can do.

The main issue is that you are trying to be PBR, and by that I mean you are trying to do surface lighting… when what you need is density lighting. And we don’t yet really have the perfs to do fully raytraced volume lighting…

So an old trick I am still very fond of is to use a D-Lut (Dot Look-Up Table) map. Basically, you get a small texture like 32x32 where on 1 axis you encode NdotL(biased to 0-1) and on the other axis you encode NdotV(biased to 0-1). So in one corner you have the color when direct lit, and facing, in another you have the color when facing and backlit, another corner is backface, backlit, the last corner is backface, front lit… So the middle area is your rim light… etc… You can switch around the thing is you switch axis or 1- the biased dot products but that’s the idea anyways. So its kinda like pseudo BRDF and it ends up quite ok… But while it solves translucency very decently (if you treat your alpha as a density map) it doesn’t solve the self shadow problem.

Enter the 4D shadow maps… Which are easy to generate and amazing looking and my current go to method. (Normals are terrible.)

By combining the 2, you can get amazing result. Mostly depends what you budget is… but technically, if you skip the pseudo BRDF D-Lut map, doing the 4D Shadowmap instead of normals is cheaper in perf and looks better imho.


I’ll come back to this when I’ve had more sleep and try to wrap my head around it. Thanks for sharing!

Sounds real interesting, might have a got at this. I’ll some google’n on 4D shadow maps, but any chance you could provide a bit more info?

Discussed quite a bit in this thread.

1 Like

Poster below you had a good link on there. 4D stands for 4 directions. Basically, you render a light/shadow map from tangent to cam view, top, bottom, left and right. This is the most effective way I found since you can get all the maps in 1 texture (you can mathematically infer front and back maps) and then, the weighting for light is easy, since it’s just Pythagoras theorem.

You just need a custom lighting function, which is quite documented in unity and unreal. Since in order for this to work well, you need to pass the ambient lighting and direct lighting in seperate interpolators from the VS to the PS.