How would you approach creating this texture?

category: gfx [glöplog]
I stumbled upon this image from Media Molecule's Dreams and I haven't stopped wondering how to procedurally create the skybox.

On the first sight it looks like a fractal vector noise with distorted domain, but I'm not sure how would I go about the directional brushy details. It also looks like a multifractal version of Rauzy fractal, but I guess it's not used to create that pattern.

Does anyone have an idea what techniques would be the most convenient to use?
added on the 2016-05-21 05:46:26 by metric metric
I'd take a look at some of Psycho's 4k graphics entries. Have no clue what voodoo magic he uses, but ie Burj Babil has the same paint brush kinda look to it.
added on the 2016-05-21 06:56:16 by Punqtured Punqtured
I would splash a lot of noisy particles on top of each other. Each having constant color taken from the base effect plus some random variation. You would want this layered look with some parts in front of others and that will be hard to archive with a single pass fractal.
added on the 2016-05-21 08:24:29 by Psycho Psycho
Yep, they're drawing point clouds in Dreams, so what psycho said. But at the same time it's signed distance fields. Dreams is basically a demotool and it's ridiculously advanced.

Here's a very entertaining talk by alex (aka statix) about how they arrived at what they are doing: youtube

This recording is a slightly condensed version of his siggraph talk, the course notes of which are here: http://media.lolrus.mediamolecule.com/AlexEvans_SIGGRAPH-2015.pdf (200MB pdf) and highly recommended since it's the future[tm]. Contains some more pictures as well.
added on the 2016-05-21 12:21:00 by cupe cupe
How is there no thread about the technical aspect of Dreams here anyway? If someone wants to discuss this and has more to say than I have, which is "this is nuts, how can we do this without 2 years fulltime compute shader hell?", go make one please.
added on the 2016-05-21 12:41:29 by cupe cupe
Thank you so much guys for your responses and for the direction!

Is there any recommended material (papers, code) to study the point cloud rendering technique? I'm a mere beginner and so far I'm in the phase of searching tutorials.

I'm not quite sure what "splashing particles" exactly mean. Currently I understand the technique that @Psycho described like this:

  • generate several layers (e.g. XY planes) of particles with varying color (based of fBm?) that are stacked on themselves
  • cast rays and for each casted ray compute intersections with each layer, by which I obtain colors
  • average the colors somehow?

Could it be said that point cloud rendering is a projection of a 3D texture onto viewport?
added on the 2016-05-21 13:14:26 by metric metric
if i had to mimic it with a texgen: envmap, ramp the contrast, add map distortion using perlin noise, alpha from RGB, colorize with pinky hues. make several of those with different brightnesses and render these from back+center+light to front+more outside center+darker ;)
talk that cupe links is pretty dope
added on the 2016-05-21 15:32:36 by psenough psenough
that talk makes me happy about a bunch of things
hello all! gah its been years since I posted here, so much so that I lost control of the email account with my old sceneid, so, uh, this is statix/bluespoon/mmalex who helped make the engine for dreams and did the talk that cupe kindly linked (thanks dude)

amusingly the sky in particular is done in a 1-day-hack way unrelated to the rest of the engine. I have a lores colour lat-long map (picked from a stack we just made at random in various ways) just to get cool spatial variaton. it's un-animated. then we have a 2k x 6 cubemap which is actually what you're seeing, which is just splatted to - I think 4096 splats per face per frame, with very low alpha and a painterly alpha channel. ie each splat is just a textured quad with the texture only affecting the alpha; the color is just drawn from the latlong map I mentioned, sampled in teh vertex shader at the center of the splat. super dumb! but with low enough alpha, the resulting image takes a while to converge and then slowly pulsates, with a rich hires texture. it's LDR so we comp a big fat bright gaussian on top, then the usual post (vignette, grade, etc).

one thing that is somewhat finessed is that the splats orientation is somewhat related to the luma gradient of the underlying latlong image, so that the splats are somewhat oriented in spirals/rings/rays around bright parts of the image. (basically, align splats with grad(luma) of latlong image, rotated by a fixed angle + a bit of jitter).

its a total hack to get our skies looking painterly, and actually unrelated to the main engine, which is why I never talked about it before. it's a classic demo-effect really - pure 'ASD' style jamming with simple elements, very little 'science'.

glad you liked it! viva la scene. now get off my lawn, you young bastards... (ps thanks to ps for sending me here... I hang out on twitter @mmalex mostly)
added on the 2016-05-21 20:49:15 by mmalex mmalex
sorry in case it wasnt clear - the cubemap is *not* cleared each frame, and the 4096 splats in no way cover the entire surface (and have v lo alpha anyway); they're just drawn from a stratified jittered grid, IIRC.
added on the 2016-05-21 20:50:59 by mmalex mmalex
@mmalex: WOW! I would never imagine you would be the one to reply :D!!
Immense Thank You for the clarification!
added on the 2016-05-21 22:37:24 by metric metric
so much so that I lost control of the email account with my old sceneid

We could've fixed that, ya know!
added on the 2016-05-21 22:38:36 by Gargaj Gargaj
@gargaj - heh, I didnt want to bother you considering my other account has all of like 10 glops on it (http://www.pouet.net/user.php?who=1465) - I hadnt even noticed that the mail address it's associated with seems to go to dev/null somehow. need to sort that some time...
added on the 2016-05-21 23:59:53 by mmalex mmalex