Hi all! I'm currently working on a game taking place in part on an airship, and I've been wondering what's a good way to create high performance, "dynamic" sky environments?
My searches have shown skyboxes + skydomes + HDRIs/cubemaps are a typical solid option, but I'm not sure about more in-your-face clouds as well as great ways to approach generating the visible terrain below.
All in all, trying to accomplish the following elements in a game engine (Unreal but curious about generic approach overall):
My thoughts for each thus far are...
Writing up this post, I realized #3 is actually a pretty separate question and pretty well covered or at least I know how to discover somewhat (such as by searching "polycount distant terrain").
Thus, I'd like to really ask:
Is the above multi-layered approach of skydome/HDRIs/cubemaps + simpler 3D models closer up + volumetric (?) clouds a good approach for a dynamic, high performance up-close sky environment?
Thanks for any and all help!
Replies
What you are suggesting is perfectly right. The real issue is how would you render ever changing lighting in the clouds , Light scattering , rim light effects , Atmosphere haze. Unless you you doing a kind of simplified style. Not sure what you mean with moving terrain although. Usually terrain doesn't move anywhere except together with planet .
Best sky I have seen so far is in Forza horizon 5 . As far as I read somewhere they just shot series of dome style images somewhere in a Mexican desert and then used special vertex morphing technique to blend one shot into another one in realtime. My guess some flow map textures are involved. Probably same approch plus a few blurry volumetrics at close could work for airship too since it never goes up too high.
Thank you, those are really good points and really appreciate the general approach confirmation!
The current art direction is in a somewhat stylized direction, but I do want to expand my skillset all around and will further research the lighting and "atmospheric rendering" in depth such as from this wiki:
http://wiki.polycount.com/wiki/Skies
Your point also made it finally click why atmospheric rendering seemed to be such an important topic as well.
Oh, and as for "moving terrain", I was (poorly) referring to just terrain that perhaps verrry slowly scrolls by to give impression of movement. Or rather, being able to actually move in space and see the terrain move in contrast to a static skybox/HDRI texture/cubemap.
Thanks again!
https://www.artstation.com/artwork/Ar1dZq
roh posted this in the greentooth Slack, thought of you. There are more examples around ArtStation if you look around.
this demo is from a golf game (sothere's no need for close up volumetrics though we did play around with them for a bit) for the pc and xbox 360 .... the sky dome is a low res hemi sphere with a simple gradient shader the cloud layer is a squashed hemisphere (if you compress the uv's at the edges it'll stretch the output an make it look much "bigger" ) with a "cloud" shader that using some pretty coarse greyscale blobs converted to normal maps using the ps nvidia tool. Remembering why we dropped trying to use volumetrics was they tend to look odd from the ground even when they look like clouds whether its a scale/distance thing they just had that something not right vibe.
dug out a old file to demonstrate how the cloud dome with compressed uvs work
To add back somewhat while slowly working on this over time:
https://noclip.website/ is an amazing resource to break down how classic titles - mostly Nintendo - created their worlds, including skies.
Pretty calming to see that - say - the clouds in KH2's Agrabah are just a very verrry simple scrolling texture while the skies in Skyward Sword (Wii) were very a simple skydome paired with mostly scrolling textures on very simple meshes.
Thereafter it's easier to understand (at least for me) how other techniques come into play and can enhance the simpler techniques.
Turning out to be pretty fun to build up this beautiful detailed cloudscape that I've been working towards, ty everyone!