Skip to content

gyao96/VolumeCloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS284 Project Proposal - Cloud Simulation

Profile Video

Volumetric Cloud

Project Video

Project Video

Summary

For our final project, we intend to create a cloud simulation that renders realistic looking clouds and experiment with procedural generation of different cloud types and shapes. We will then try animating the clouds and simulate cloud movements for some sample scenes.

Group Members

Problem Description

Clouds are every where. In almost all the video games and animated films, you can see clouds. Clouds in the world of computer graphics are rendered in different shapes and styles to suit the artistic vibe of the product. We want to explore the realm of cloud simulation and try out techniques of rendering visually stunning clouds. For realistic cloud, the standard is using ray-marching to render volumetric materials. For other genras, we can use mesh subdivision to simulate moving ocean of clouds, or blending simple geometries to form morphing clouds.

Goals and Deliverables

Three Genras of Clouds

There are three types of clouds distinguishable by their art style and technical approach. Volumetric clouds are used by most triple-A games as an industry standard for photo-realism. Geometric clouds are used by animated movie and some games with cute-looking graphic style. Then there is polygon mesh clouds that uses the same technique as ocean wave simulation, famously implemented in the game Sky: Children of the Light.

Geometric Cloud

We plan to implement the geometric cloud in Unity. The expected visual should some how resembles that from Astroneer. We plan to first use the ray-marching toolkit from unity just to have an experiment of how blending simple geometries can give us shapes that look like clouds. If the toolkit isn't sufficient, then we will dive deep into coding our own ray marching shader in unity to create our own custom looking geometric cloud. We will use constructive solid geometry (CSG) to blend simple shapes. CSG is a method of creating complex geometric shapes from simple ones via boolean operations. The following diagram from WikiPedia shows what’s possible with the technique, and the toolkit implementation from Unity.

After that, we will animate the cloud by scripting the movement of geometries that constitutes the cloud. See Result.

Polygon Cloud

Cloud sea are made of very dense clouds, meaning it behaves very much like oceans. By layering levels of noise onto a 2D mesh plane we can create and tune the shape of the cloud sea. Then we can offset the texture relative to time to generate cloud movement. The best tool for experimenting with different noise layers is Unity's built-in shader graph. For example, the following graph shows the implementation of unity gradient noise. We can tweak and play around with gradient noise or implement our own shader graph components to add more variations. The ultimate goal is is to create artistically looking cloud sea. After messing around with Unity Shader Graph, this is what we got.

Volumetric Cloud

Volumetric cloud is computationally expensive. So we decided to do it as a challenge if everything goes on well. The ray-marching skeleton and noise generator implemented in the previous step will be the foundation of building volumetric cloud. A basic ray-march though a homogenous volume density will give us something like a opaque box. We will generate a noise texture map just like in the cloud sea implementation. Then we apply this texture to a box game object according to the ground plane. For each of the camera ray intersecting with the box, we march through the intersection taking samples of the cloud density estimation according to the texture map and calculate the light transport along this view ray. The details of the physically-based rendering algorithm is explained in our paper.

Resources

Hardware

Microsoft Surface Book 2 with Nvidia GTX1050 2G running Unity 2019.2

Reference
  1. Ray Marching and Signed Distance Functions, Jamie Wong
  2. Ray Marching for Dummies!, The Art of Code
  3. Unity Shader Graph - Gradient Noise
  4. Ocean Simulation, Karman Interactive
  5. Unity Shader基于视差映射的云海效果, Zhihu
  6. Physically-Based Rendering - Chapter 11 Volume Scattering
  7. Coding Adventure: Clouds, Sebastian Lague
  8. The Real-time Volumetric Cloudscapes of Horizon: Zero Dawn
  9. Real-Time Volumetric Rendering, Patapom / Bomb

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published