realistic and fast realistic and fast cloud rendering in
play

Realistic and Fast Realistic and Fast Cloud Rendering in Cloud - PDF document

Realistic and Fast Realistic and Fast Cloud Rendering in Cloud Rendering in Computer Games Computer Games Niniane Wang Software Engineer Microsoft Flight Simulator (now at Google Inc) Intro Video 1 Agenda Agenda Agenda Previous


  1. Realistic and Fast Realistic and Fast Cloud Rendering in Cloud Rendering in Computer Games Computer Games Niniane Wang Software Engineer Microsoft Flight Simulator (now at Google Inc) Intro Video 1

  2. Agenda Agenda Agenda • Previous Work • Previous Work • • 3-D Modeling + Art Pipeline 3-D Modeling + Art Pipeline • Performance • Performance • Shading model • Shading model • • Animation: Formation and Dissipation Animation: Formation and Dissipation • Q & A • Q & A (All slide backgrounds are actual screenshots.) (All slide backgrounds are actual screenshots.) Previous Research Previous Research Previous Research • Harris, SkyWorks • Harris, SkyWorks – Use GPU to improve performance – Use GPU to improve performance – Impostor for each cloud – Impostor for each cloud • • Dobashi Dobashi – Metaballs – Metaballs – Anisotropic scattering – Anisotropic scattering • Ebert, Blinn, others • Ebert, Blinn, others 2

  3. Previous Games • Flight Simulator 2002 – Each cloud is a single billboard • Combat Flight Simulator 3 – Each cloud is a few unique billboards • I L-2 Sturmovik – Each cloud is a large number of small particles Our Enhancements Over Previous Systems • Many distinct cloud types (e.g. altocumulus, cumulonimbus) • Art pipeline allows fine-grained control over model and shading • Real-time performance (15 – 60 fps) – Even for overcast scenes 3

  4. Concept: Cluster of Sprites Concept: Cluster of Sprites Concept: Cluster of Sprites Each cloud is composed of 5 – 50 textured sprites. Each cloud is composed of 5 – 50 textured sprites. Cloud Creation Cloud Creation Cloud Creation Each cloud is created by artists in 3D Studio Max. Each cloud is created by artists in 3D Studio Max. • Use boxes to build cloud shape. • Use boxes to build cloud shape. • Custom-written Max script to randomly fill boxes with • Custom-written Max script to randomly fill boxes with sprites. sprites. • Immediate visual feedback • Immediate visual feedback • Export final model to a file to load into game • Export final model to a file to load into game 4

  5. Cloud Creation Video Cloud Creation Video Cloud Creation Video Artist-specified Parameters • # sprites to control cloud density • Category (“stratus”, “solid cumulus”) to detemine texture • Range for width and height of sprite • Range of rotation for each sprite to give more variety 5

  6. Cloud Sprite Generation • Artist presses a button… • 3DS Max plug-in creates a list of randomly placed sprite centers • It culls all sprites whose centers are within a “cull radius” of each other – Cull radius of 1/3 of cloud height is good for typical clouds, 1/5 for dense clouds Real-World Cloud Types Real life cloud types have distinct looks Real life cloud types have distinct looks • Cumulus, stratus, cumulonimbus • Cumulus, stratus, cumulonimbus • Sub-categories • Sub-categories 6

  7. Simulating Cloud Types Mix and match 16 textures Mix and match 16 textures • Solid puffs for cumulus, blurry • Solid puffs for cumulus, blurry puffs for stratus, puffs for stratus, • Less video memory than using • Less video memory than using unique textures for each cloud unique textures for each cloud Cloud Types Video 7

  8. In- - Cloud Experience Cloud Experience In In-Cloud Experience • Sprite disappears as the camera passes through it • Sprite disappears as the camera passes through it • Advantages of using cluster of sprites: • Advantages of using cluster of sprites: – Consistent with cloud as seen from the outside – wispy parts are – Consistent with cloud as seen from the outside – wispy parts are still wispy still wispy – Each cloud has different in-cloud experience, unlike with – Each cloud has different in-cloud experience, unlike with canned animation canned animation In-cloud problems and solutions • Initially, “parting of the Red Sea” problem • Solve by locking the sprite within a distance • This causes sprite edges to be visible • Solution: Take dot product of lock angle and angle to camera, and adjust sprite transparency 8

  9. In- - Cloud Video Cloud Video In-Cloud Video In Performance • Requirements: – Flight Simulator must maintain 15 to 60 fps – Overcast scenes are the biggest challenge – Emulate real-world conditions (“Real-World Weather” feature) – Range of machines: 700 MHz to 3.0 GHz 9

  10. Performance: Impostors Performance: Impostors Performance: Impostors Main bottleneck is in overdraw Main bottleneck is in overdraw Reduce overdraw by rendering Reduce overdraw by rendering multiple clouds into a single multiple clouds into a single billboard billboard Ring of Impostors Ring of Impostors Ring of Impostors Octagonal ring around user eyepoint Octagonal ring around user eyepoint • Clouds within ring are drawn in 3-D • Clouds within ring are drawn in 3-D 10

  11. Impostors • Render same billboard across many frames • Dynamically update impostor upon position/time change – Empirical results are 15% of impostor ring radius horizontally a nd 2% vertically – Time change of 10 minutes • User can set ring radius – Smaller ring means better performance but more visual anomalies Impostors: Visual Anomalies Impostors: Visual Anomalies Impostors: Visual Anomalies • • Parallax Parallax • Interaction with terrain and objects • Interaction with terrain and objects • Rendering to texture not supported across all video card • Rendering to texture not supported across all video card hardware hardware • • Gray edges (the “silver lining”) Gray edges (the “silver lining”) 11

  12. Fallback on older systems • On old systems (< 450 MHz), even rendering a single block of 3-d sprites is too expensive • Fall back to LoD scheme of single-billboard clouds – This is a degenerate case of our cluster of sprites model Performance Results 12

  13. Impostor Video Shading • We chose artist-driven system rather than simulating scattering of light • Model lighting for different times of day • Ambient and directional 13

  14. Ambient Shading Simulate the filtering of light from the sky Simulate the filtering of light from the sky • Clouds have dark bottoms, esp. cumulus • Clouds have dark bottoms, esp. cumulus • • Artist specifies 5 “color levels”. Each level is a height Artist specifies 5 “color levels”. Each level is a height with associated RGBA color. with associated RGBA color. – Color also used to give cloud types their distinct look (e.g. – Color also used to give cloud types their distinct look (e.g. more transparency for stratus) more transparency for stratus) Illustration of Color Levels 14

  15. Ambient Shading Computation • Interpolate maximum ambient RGBA for given time of • Interpolate maximum ambient RGBA for given time of day day • • For each cloud vertex For each cloud vertex – Interpolate its ambient percentage of maximum value, based on – Interpolate its ambient percentage of maximum value, based on vertex height within the cloud vertex height within the cloud – Multiply by maximum RGBA – Multiply by maximum RGBA Ambient Shading Video 15

  16. Directional Shading • Parts of the cloud facing the sun receive more • Parts of the cloud facing the sun receive more directional sunlight directional sunlight • Artist specifies • Artist specifies – Shading groups (sections of 1-30 sprites that are – Shading groups (sections of 1-30 sprites that are shaded as a unit) shaded as a unit) – Maximum directional color for a set of times – Maximum directional color for a set of times throughout the day throughout the day Directional Shading Computation • Find maximum directional RGBA for a given time of • Find maximum directional RGBA for a given time of day day • For a vertex: • For a vertex: – Compute dot product of (vector from cloud center to – Compute dot product of (vector from cloud center to sun) with (vector from vertex to cloud center) sun) with (vector from vertex to cloud center) – Multiply by interpolated maximum color – Multiply by interpolated maximum color 16

  17. Illustration for Directional Light Directional Shading Video 17

  18. Animation Animation Animation Adjust transparency values of sprites Adjust transparency values of sprites • Form clouds from core first • Form clouds from core first – Multiply cloud vertex with transparency factor based on its – Multiply cloud vertex with transparency factor based on its distance from cloud center distance from cloud center – Render all of core first before edges – Render all of core first before edges • Dissipate from edges • Dissipate from edges Animation Video Animation Video Animation Video 18

Recommend


More recommend