introduction to shaders
Download
Skip this Video
Download Presentation
Introduction to Shaders

Loading in 2 Seconds...

play fullscreen
1 / 11

Introduction to Shaders - PowerPoint PPT Presentation


  • 116 Views
  • Uploaded on

Introduction to Shaders. Quick Background. A vertex is a 3D point ( x , y , z ) A triangle is made from 3 vertices h as a normal Note: vertices can have normals too!. Quick Background. Models/Meshes are made from triangles OpenGL doesn’t support Quads (4 vertices).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Introduction to Shaders' - jera


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
quick background
Quick Background
  • A vertex is a 3D point (x, y, z)
  • A triangle
    • is made from 3 vertices
    • has a normal
    • Note: vertices can have normals too!

Jeff Chastine

quick background1
Quick Background
  • Models/Meshes are made from triangles
  • OpenGL doesn’t support Quads (4 vertices)

Jeff Chastine

quick background2
Quick Background
  • Hardware has changed!
    • Was “fixed”
    • More of the graphics pipeline is programmable
  • OpenGL has changed!
    • Was “fixed”
    • Is now shader-based

Jeff Chastine

intro to shaders
Intro to Shaders
  • A shader is a program
    • Has source code (text file)
    • Cg, HLSL and GLSL
    • GLSL is very “C-like”
    • Is compiled into a program
    • We get back IDs, which are just ints!

Jeff Chastine

intro to shaders1
Intro to Shaders
  • Two primary types of shaders:
    • Vertex shader
      • Changes the position of a vertex (trans/rot/skew)
      • May determine color of the vertex
    • Fragment shader
      • Determines the color of a pixel
      • Uses lighting, materials, normals, etc…

Jeff Chastine

making a shader program
Making a Shader Program
  • Compile a vertex shader (get an ID)
  • Compile a fragment shader (get an ID)
  • Check for compilation errors
  • Link those two shaders together (get an ID)
    • Keep that ID!
    • Use that ID before you render triangles
    • Can have separate shaders for each model

Jeff Chastine

examples
Examples

in vec4 s_vPosition;

void main () {

// Look, Ma! I avoided any matrix multiplication!

// The value of s_vPosition should be between -1.0 and +1.0

gl_Position = s_vPosition;

}

---------------------------------------------------------------------

out vec4 s_vColor;

void main () {

// No matter what, color the pixel red!

fColor = vec4 (1.0, 0.0, 0.0, 1.0);

}

Jeff Chastine

compiling vertex and fragment shaders
Compiling Vertex and Fragment Shaders
  • <GLuint> glCreateShader (<type>)
    • Creates an ID (a GLuint) of a shader
    • Example: GLuint ID = glCreateShader(GL_VERTEX_SHADER);
  • glShaderSource (<id>, <count>, <src code>, <lengths>)
    • Binds the source code to the shader
    • Happens before compilation
  • glCompileShader (<id>)
    • Used to make part the shader program

Jeff Chastine

creating linking using the shader
Creating/Linking/Using the Shader
  • <GLuint> glCreateProgram()
    • Returns an ID – keep this for the life of the program
  • glAttachShader(<prog ID>, <shader ID>)
    • Do this for both the vertex and fragment shaders
  • glLinkProgram(<prog ID>)
    • Actually makes the shader program
  • glUseProgram(<prog ID>)
    • Use this shader when you’re about to draw triangles

Jeff Chastine

end with a dragon
END WITH A DRAGON!

Jeff Chastine

ad