Giter VIP home page Giter VIP logo

homework-final's Introduction

CIS-566 Procedural Graphics Final Project

Group Member:

  • Hanming Zhang
  • Linshen Xiao

Demo

We test and develop on the lastest version Chrome browser. WebGL 2.0 required.

Since the whole demo scene is procedurally generated, please wait for around 30s everytime you load it. If your browser pop up "not response" window, please click "wait".

Please remeber to press the "DemoMode" button!

Overview

Motivation

We would like to create an animated environment with interactive procedural animations and models. We are motivated by games like Jounery and DreamTank.

Goal

The goal of this project is to create an environment that feels responsive and alive.

Inspiration

DreamTank Jounery Unlimited Blade Works

More Screenshots

What we have done

Hanming Zhang

  • Sky box
  • ShadowMap
  • Cinematic Camera(with fade in/out transition effect)
  • Water
  • God ray
  • Bloom
  • Deferred Shading Pipeline
  • Particle System
  • Background Music

Linshen Xiao

  • Terrain
  • Fog
  • Desert shader
    • Desert material
    • Cloud shadow
  • Scattering objects
  • Ribbon shader
    • Flowing effect
  • Cloud and Star
  • Curl noise for particles
  • Postprocessing
    • Chromatic Aberration
    • Vignette
    • FilmNoise
    • Flare
  • Final Color Grading

Technique

Hanming Zhang

  • Sky box: We use a cubic sky box in our scene and the sky itself is procedurally generated in fragment shader.

  • ShadowMap: Here is a screenshot of shadow:

    Shadow map is pre-baked when our scene is initialized so that we can save a lot of time rendering each frame. For some implemetation details, I refer to WebGL Tutorial: Directional Shadow Mapping without extensions.

  • Cinematic Camera: It's basically a simple time-driven key-frame system. In the scene initialization stage, we set several key-frames, and linear lerp camera's position and target position. Also, during the transition, we use some fade in/out post processing effect to make it more cinematic.

  • Water: An independent pass is used to render a reflection frame. We save it in our frame buffer and use it as a texture in the following water rendering pass. Here is the pure refection effects and water we got:

pure reflection water with reflection
  • God ray
  • Bloom
  • Deferred Shading Pipeline: Here is a basic view of our pipeline:
  • Particle System: We use particles(0.1 million) to simulate sands effect on the terrain surface. And WebGL 2.0 transform feedback(thanks to great WebGL 2.0 Samples) is used to more efficiently update each particle's information(Position / Life time / whether it's out of bound...) Here is a screen shot of only particles:
  • Audio

Linshen Xiao

  • Terrain: Modified Fractal Brownian Motion from here
  • Fog: Mix Fog's Color based on depth of fragments;
  • Desert Shader:
    • Desert material: Modified from The shading of Dunes in Journey (in Chinese);
      • Oren Nayer Diffuse;
      • Direction of normal map decided by the direction of normals, steep and shallow based on the slope of surface;
      • Specular map flowing direction decided by the direction of normals;
    • Cloud Shadow:
      • Modified Fractal Brownian Motion from here;
      • Calculate the value from the function above based on the world position and pass it to fragment shader for further computation of final color;
  • Scattering Objects: Scatter the swords and the monuments by randomly choosing a index of the terrain, rotate the objects based on the normal of that vertex on the terrain;
  • Ribbon shader:
    • Windy effect: Use sin function to offset the vertices based on time and world position;
  • Cloud and Star
    • Modified Fractal Brownian Motion from here, offset the position during the loop of octaves by time to achieve the transformation of clouds;
  • Curl noise for particles
    • Curl noise modified from here. 2D Noise is still Modified Fractal Brownian Motion from here ;
  • Postprocessing
    • Chromatic Aberration: Modified from here;
    • Vignette: Modified from here;
    • FilmNoise: Modified from here;
    • Flare: Modified from here;
  • Final Color Grading: Light color, fog color changed when the inclination of the skybox changed;

Blooper

Resources

homework-final's People

Contributors

hanmingzhang avatar githublsx avatar

Watchers

James Cloos avatar

Forkers

templeblock

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.