Godot Version
4.7.2
Question
Hello, does anyone have experience with raymarched volumetric clouds using 3d textures? I can’t get my clouds (image with empty landscape) to look sharp enough, they look too blurry and don’t have any nice crisp edges. I already tried lowering step size, increasing 3d texture quality and such. I would like them to look a bit sharper like the ones in horizon zero dawn (image with terrain). I am following the techniques used in hzd to implement these.
Just realized the second pic didn’t upload, but wdym exactly by remap or step? The noise is remapped with a coverage texture and also remapped with a detail 3d texture to carve away smaller details, but still looks like this. I don’t get how i would step it, when i tried that it would make holes inside the clouds if the density was low enough not just around the edges.
Second image of horizon zero dawn clouds:
Define “sharper”.
HZD clouds just look like they use a higher frequency noise for the details.
I suppose you’re right. I’ve been trying to improve my noise textures and I’m getting closer to a result I’m satisfied with. HZD clouds just look better in general shape-wise and I also didn’t have a curved horizon effect implemented, which I think makes it look nicer. I think tweaking my lighting model and params will also help.
My clouds now:
Also, while I have you here; Do you know how exactly the HZD team achieved their Perlin-Worley noise? A quote about PW noise from their chapter in GPU gems 7:
“Another flavor of noise, Worley noise, was introduced in 1996 by Steven Wor-
ley [Worley 96] and is often used in rendering caustics and water effects, as seen
in Figure 4.6.
If inverted and used in a FBM, Worley noise approximates a nice fractal
billowing pattern. It can also be used to add detail to the low-density regions of
the low-frequency Perlin noise. (See Figure 4.7, left and center.) We do this by
remapping the Perlin noise using the Worley noise FBM as the minimum value
from the original range.”
And then as an example they show this texture:
If i just follow their remapping instructions i get big black spots in the texture where the Worley noise is higher than the Perlin noise (because those spots are negative and get clamped to a value of 0.0).
Thank you!
For start, tune your light-dark value distribution. This is more of an artistic rather than a technical thing. Notice how in the HZD screenshot, the blue of the sky is even throughout and noticeably darker than anything in the clouds, even the darkest grays. This makes the cloud silhouette stand out against the sky. On the contrary, in your screenshot, blue has a wide gradient and can at places get lighter than the gray parts of the clouds. This visually breaks the cloud silhouette and makes them look “weaker”.
I don’t know what kind of noise (or combination of noises) they exactly used. Best to experiment with various parameters and combinations until you get something that looks satisfactory.
I didn’t even consider the sky colour contrast, thanks for the idea.
And for anyone trying to recreate the perlin-worley noise, I realized i misread the GPU Gems 7 chapter about HZD clouds. The actual formula included remapping a negated worley value:
float pw = remap(perlin, -wfbm, 1.0, 0.0, 1.0);
This is the result i got from that: