Cesium: Global cloud rendering

Created on 2 Nov 2017  ·  19Comments  ·  Source: CesiumGS/cesium

@immiao @byumjin this would be a great real-time rendering project for the winter/spring!

Phase 1 - billboards

  • [ ] Procedural billboard texture generation from various cloud types
  • [ ] Navie rendering with Cesium's billboard engine
  • [ ] Post processing
  • [ ] LOD rendering if needed

Phase 2 - Volumetric clouds

  • [ ] Procedural generation from noise, etc.
  • [ ] GPU ray marched rendering with secondary ray effects

Later

  • [ ] Connect to real-time weather data

Resources

Inspiration from GeoFS

@ron-popov and @yotam180 may have input.

Cloud rendering

Cesium rendering engine

category - graphics type - roadmap

Most helpful comment

One link I find interesting (billboard based method) is dead on the Vterrain page. Here is a the paper http://twvideo01.ubm-us.net/o1/vault/gdc04/slides/realistic_and_fast_cloud.pdf

How it's done in GeoFS:

  • uses billboards with a variable density based on distance from camera.
  • Billboards are destroyed and generated as the camera moves
  • Flat clouds are 3D models (quads) with a transparent texture
  • This works only when camera is close to the ground. Will look strange from high/orbital altitude.
  • has to fix billboards rotation at each frame when camera roll changes (something is wrong with Cesium's billboard implementation when it comes to "up" orientation)
  • entity color is modified according to a value ramp based on time of day for dusk/dawn effect.

All 19 comments

One link I find interesting (billboard based method) is dead on the Vterrain page. Here is a the paper http://twvideo01.ubm-us.net/o1/vault/gdc04/slides/realistic_and_fast_cloud.pdf

How it's done in GeoFS:

  • uses billboards with a variable density based on distance from camera.
  • Billboards are destroyed and generated as the camera moves
  • Flat clouds are 3D models (quads) with a transparent texture
  • This works only when camera is close to the ground. Will look strange from high/orbital altitude.
  • has to fix billboards rotation at each frame when camera roll changes (something is wrong with Cesium's billboard implementation when it comes to "up" orientation)
  • entity color is modified according to a value ramp based on time of day for dusk/dawn effect.

@xtassin awesome, thanks for the summary!

Hi all,

In regards to the Horizon Zero Dawn Volumetric Cloudscapes presentation
https://www.guerrilla-games.com/read/the-real-time-volumetric-cloudscapes-of-horizon-zero-dawn,
I worked on implementing this as a C++ plugin in Nuke during my Pixar
internship this past summer. A couple other GPU current students and I
(Aman Sachan, Joe Klinger, and Dan McCann) are planning to implement this
for our final project this semester as well.

The 2015 presentation offers great insight on the approach overall, as well
as the motivations behind it. It essentially breaks down into the following
sections:

  • Goals / Explorations / Method comparisons
  • Modeling

    • Raymarching through multiple low and high resolution 3D textures

      created from a combination of low and high resolution Perlin and Worley

      noises

    • Describing the weather authoring system they used to dictate cloud

      coverage, type, and precipitation


    • Lighting

    • Achieving multiple-scattering using a combination of Beer's Law and

      the Henyey-Greenstein function

    • Using a combination of beer's law and other equations to create a

      more "powder" looking effect on the clouds

    • More thorough description in their Nubis 2017 presentation

      http://www.advances.realtimerendering.com/s2017/index.html

  • Rendering

    • Describing the scale of the world, placement of the clouds in the

      atmosphere, and their raymarching methods through the textures and to the

      light

  • Optimizations

The GPU Pro 7 book
https://www.amazon.com/GPU-Pro-Advanced-Rendering-Techniques/dp/149874253X
contains
a more descriptive article based on this presentation and goes into a
little more implementation detail. So this book would be another great
resource.

Let me know if you have any other questions!
-Meghana

On Fri, Nov 3, 2017 at 8:04 AM, Patrick Cozzi notifications@github.com
wrote:

@xtassin https://github.com/xtassin awesome, thanks for the summary!


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AnalyticalGraphicsInc/cesium/issues/5962#issuecomment-341685495,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFKijlJF704bD5msfaNEPZVTcCC0_CAOks5sywFfgaJpZM4QP2ss
.

--
Meghana Seshadri
M.S.E., Computer Graphics and Game Technology
University of Pennsylvania School of Engineering and Applied Science
meghana.[email protected]

@MegSesh great summary, thanks so much for the notes! @immiao, @byumjin, and I will stay in touch as this moves forward.

Great final project idea as well!

CC #797 - some WebGL 2 features like 3D textures will be required - we can have a fallback for WebGL 1.

Forum discussion: https://groups.google.com/forum/#!topic/cesium-dev/Hpzap5oNKJg

Repo for weather API integration by @immiao: https://github.com/immiao/cesium-weather

Sure!

Related killer projects by CIS 565 students

Our project has been renamed to Meteoros
https://github.com/Aman-Sachan-asach/Meteoros.

Best,
Aman Sachan

On Tue, 5 Dec 2017 at 09:15 Patrick Cozzi notifications@github.com wrote:

Related killer projects by CIS 565 students


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AnalyticalGraphicsInc/cesium/issues/5962#issuecomment-349316244,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHhfdr0c_J1owMNIrRW0qnLqwRHf9Pd3ks5s9U__gaJpZM4QP2ss
.

Not sure if this'll be relevant, but it's cool and well written, Mapbox blogpost on wind sim: https://blog.mapbox.com/how-i-built-a-wind-map-with-webgl-b63022b5537f

some WebGL 2 features like 3D textures will be required - we can have a fallback for WebGL 1.

Reading through the Horizon Zero Dawn presentation, theoretically couldn't we pack the 3D texture to 2D? Back-of-the-envelope math, 128^3 takes much less GPU memory than 2048^2. Would it be too slow though? [EDIT] b/c maybe there's trilinear interpolation in hardware or something for Webgl 2 3D textures...

Packing into a 2D texture could be fine. For example, see "Real-Time Volumetric Lighting for WebGL" - https://github.com/WebGLInsights/WebGLInsights.github.io/releases/download/v1.0/WebGL.Insights.-.Patrick.Cozzi.pdf

Just as a note, the 3D textures define the cloud using all the input
parameters that are provided by the the weather map. The weather map
described in the paper was a 512*512 texture that defined a 100,000sq km.
Or the weather map can be replaced by a simulation. So over all if you pack
the cloud textures (low frequency 3D texture, high frequency 3D texture,
and a 2D curl noise texture), it should not be that terrible in terms of
memory. Also, apparently the original authors weren't able to perfect it to
the point that they could ship it with the game.

On Mon 18 Dec, 2017, 12:53 PM Patrick Cozzi, notifications@github.com
wrote:

Packing into a 2D texture could be fine. For example, see "Real-Time
Volumetric Lighting for WebGL" -
https://github.com/WebGLInsights/WebGLInsights.github.io/releases/download/v1.0/WebGL.Insights.-.Patrick.Cozzi.pdf


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/AnalyticalGraphicsInc/cesium/issues/5962#issuecomment-352504091,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHhfdp8d-hHle3dWHPB3LU4bMzyZ0f6Tks5tBqaHgaJpZM4QP2ss
.

Was this page helpful?
0 / 5 - 0 ratings