• entries
13
55
• views
20729

# Cloud.gen

2369 views

'allo

Something I've vowed several times I'd never do again: hand-paint a skybox.

The outdoor cloud-ish type specifically:

Painting clouds is all fun and fulfilling, until you need to fill out a full 360 degree view with dozens of them.

I preferred to draw a cloud scene as a spherical environment map; stretch around the outer regions is somewhat easier to deal with than the discontinuities along borders of the six faces in a cube map. (I always do my painting in Painter, so no clever 3D painting across seams for me.) Then you get the obvious issues with lighting (time of day etc.), that often require a complete repaint if you do not plan properly.

Anyway, the interface of the 'cloud tracer'-tool as it is now: options = [ "mesh" => loadmesh([ "path" => "D:/Temp/Cloud.lxo", "mask" => "Bake" ]), "env" => loadimg([ "path" => "D:/Temp/Cloud_Env_2048.exr", "gamma" => 1.0 ]), "coverage" => loadimg([ "path" => "D:/Temp/Cloud_Coverage.png" ]), "normal" => loadimg([ "path" => "D:/Temp/Cloud_Normal.png", "channelmap" => [ 0, 2, 1 ], "levelmin" => -1.0, "levelmax" => 1.0 ]), "density" => 0.025, "densityhaze" => 0.00025, "tilelevelmin" => 0.4, "tilelevelmax" => 1.0];saveimg([ "textures" => tracer(options) ]);
The "mesh":

CREEPY.

I skipped the simulation pass I initially planned on implementing, and simply modelled and replicated a series of basic cloud shapes. These cloud parts are all made up of smaller convex elements, which makes ray-testing fast and robust (occlusion tests against translucent convex objects make up the bulk of the work). I've also been meaning to try and run a radiosity solver on a low-resolution proxy mesh and have its results mapped back onto higher detail geometry - these convex bits seemed like a good candidate.

"environment":

Illumination comes from a single light probe for now.

"coverage"/"normal":

I got to doodle some more clouds by hand: geometry is expanded using these normal mapped 'depth billboards', which then have results from the lighting pass projected onto them. They're cheaper to render than volumetric textures, as there's no ray-marching involved. Also, 2D textures are far more straightforward to produce. I might come back to volume textures for other reasons later though.

Then there's some stuff about global cloud density and fog values for space in the scene that's not occupied by cloud geometry.

LET'S RENDER AND SEE:

k.

- Clouds need to be a bit more whispy here and there.
- The in-modeller point cloud replicator I used does a fairly good job at coming up with interesting cloud shapes, but I feel a custom distributor could still do better.
- The radiosity pass finishes pretty quickly as I had hoped, but tracing the final 2048 * 2048 image takes a while running on the cpu - needs more Compute.

Apologies for all the going back-and-forth with the camera.

Lastly, a bit of blatant self-promotion: I've been looking to do some graphics/tools programming for a U.S./European studio. If anyone can think of someone who might be interested, I'd love to hear (doesn't have to be game related per se).

Bro, that work for the sky is amazing. You are doing some crazy good stuff

Absolutely badass! Love to see stuff like this, keep it up!

Mindblowing. Amazing work.

This is seriously awesome! It's so freaking pretty and sexy!

how much would you charge for somebody to use this? :P

That is extremely slick sir. If you're using Unity, I recommend you package it up and put it on the Unity Asset Store.

Not sure, Riu - up until now I've always created these tools as portfolio demos.

well those tools are epic! you should really look at some form of monitization. Especially since they are for c# enviro's.

## Create an account

Register a new account

×

## Important Information

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!