Giter VIP home page Giter VIP logo

shader_prototyping_2022's Introduction

SHADER PROTOTYPING 2022

Before the course

  1. Make sure to clone this repository and their submodules recursivelly
git clone --recursive https://github.com/ShaderCamp/shader_prototyping_2022.git

If you already clone it with out the --recursive flag, just do

git pull
git submodule init
git submodule update
  1. Make sure you have compiled and installed GlslViewer from source following the instructions of you system of choise:

The course

We will start by doing a fast recap of the difference between 2D and 3D shaders, to then load a simple geometry:

make 01_material

or

glslViewer 01_mt.frag assets/skull.obj -l

We will iterate on it adding and modifying different render passes each one with a unique notation so then it's easier to structure any pipeline:

  • M main shader (2D): when loaded only a .frag file or and image or video.
  • Mt material shader (3D): when loaded a .vert or geometry file (.ply/.obj/.glb/.gltf)
  • Bg Background shader (2D): forked using BACKGROUND define keyword
  • Pp Post Processing shader (2D): forked using POSTPROCESSING define keyword renders the entire scene into a FBO call u_scene and u_sceneDepth.
  • Fl Floor Material (3D): creates a floor plane when FLOOR define keyword is present and fork the shader adding that keyword as a define to it.
  • L Light's shadowMap (2D): when uniform sampler2D u_lightShadowMap is present create a depth pass from the perspective of the light (vec3 u_light and mat4 u_lightMatrix).
  • B Buffer (2D): when define keyword BUFFER_<N> is present, forks the shader to render a 2D pass inside FBO named u_buffer<N>
  • D Doubple buffer (2D): when define keyword DOUBLE_BUFFER_<N> is present, forks the shader to render a 2D pass inside a double FBO named u_doubleBuffer<N>. This double buffer it's also know as PingPong, where after each pass the pare is swap, allowing for feedback passing their own content in it self.
  • Cp Convolution pyramid(2D): when define keyword CONVOLUTION_PYRAMID_<N> is present, forks the shader to render a 2D pass inside a FBO to be prosses according to this paper and delivered through u_pyramid<N>.
  • Gn G Buffer Normal (3D>2D): when uniform sampler2D u_sceneNormal is present creates a g buffer of the 3D scene normals in screenspace
  • Gp G Buffer Position (3D>2D): when uniform sampler2D u_sceneNPosition is present creates a g buffer of the 3D scene position in screenspace

shader_prototyping_2022's People

Contributors

patriciogonzalezvivo avatar

Watchers

James Cloos avatar  avatar

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.