Modern Shader-based OpenGL Techniques Qt Developer Days, Berlin 2012 - - PowerPoint PPT Presentation

modern shader based opengl techniques
SMART_READER_LITE
LIVE PREVIEW

Modern Shader-based OpenGL Techniques Qt Developer Days, Berlin 2012 - - PowerPoint PPT Presentation

Modern Shader-based OpenGL Techniques Qt Developer Days, Berlin 2012 Presented by Sean Harmer Produced by Klarlvdalens Datakonsult AB Material based on Qt 5.0, created on November 9, 2012 Module: Modern Shader-based OpenGL Techniques


slide-1
SLIDE 1

Modern Shader-based OpenGL Techniques

Qt Developer Days, Berlin 2012

Presented by Sean Harmer

Produced by Klarälvdalens Datakonsult AB

Material based on Qt 5.0, created on November 9, 2012

slide-2
SLIDE 2

Module: Modern Shader-based OpenGL Techniques

Introduction Simple Lighting Instanced Rendering Post-Processing

2/24

Modern Shader-based OpenGL Techniques

slide-3
SLIDE 3

Module: Modern Shader-based OpenGL Techniques

Introduction Simple Lighting Instanced Rendering Post-Processing Introduction

3/24

Modern Shader-based OpenGL Techniques

slide-4
SLIDE 4

Examples framework

Window Subclass of QWindow. Used to create a QOpenGLContext and a Scene. Drives the scene update. Handles window resize events, key events and mouse events AbstractScene A very simple interface we can subclass to implement

  • ur scenes/examples.

Contains a pointer to the QOpenGLContext for easy access. Subclass this when making your own examples.

  • NB. Other helpful classes will be introduced as we go along.

. Demo opengl/shader-fundamentals/ex_basic_usage

Introduction

4/24

Modern Shader-based OpenGL Techniques

slide-5
SLIDE 5

Simplified OpenGL Pipeline

Introduction

5/24

Modern Shader-based OpenGL Techniques

slide-6
SLIDE 6

Module: Modern Shader-based OpenGL Techniques

Introduction Simple Lighting Instanced Rendering Post-Processing Simple Lighting

6/24

Modern Shader-based OpenGL Techniques

slide-7
SLIDE 7

Phong Lighting

  • 3 Components
  • Ambient - same everywhere
  • Diffuse - light scattered uniformly
  • Specular - sharp highlights
  • Also known as ADS lighting model
  • Reflectivity coefficients for A, D, and S
  • Adjustable "shininess" for flexibility
  • Requires 4 vectors:
  • Normal vector at surface point,ˆ

n

  • Direction from surface point to light source,ˆ

s

  • Viewing vector from eye position to surface point,ˆ

v

  • Reflection vector ofˆ

s aboutˆ n,ˆ r

Simple Lighting

7/24

Modern Shader-based OpenGL Techniques

slide-8
SLIDE 8

Diffuse Lighting cont'd.

Simple Lighting

8/24

Modern Shader-based OpenGL Techniques

slide-9
SLIDE 9

Phong Lighting cont'd.

Simple Lighting

9/24

Modern Shader-based OpenGL Techniques

slide-10
SLIDE 10

Let me see that Phong

Bringing it all together: I = Ia + Id + Is

= LKa + LKd(ˆ

s·ˆ n)+ LKd(ˆ r·ˆ v)n

= L   

Ka

  • Ambient

+Kd(ˆ

s·ˆ n)

Diffuse

+Kd(ˆ

r·ˆ v)f

Specular

  

. Demo opengl/lighting/ex_phong

Simple Lighting

10/24

Modern Shader-based OpenGL Techniques

slide-11
SLIDE 11

Simple Toon/Cell Shading

  • Ambient & diffuse
  • No specular
  • Large areas of constant color
  • Sharp transitions
  • Non-photorealistic
  • Simulates cartoon artist technique
  • Demonstrates flexibility of shaders

. Demo opengl/lighting/ex_toon

Simple Lighting

11/24

Modern Shader-based OpenGL Techniques

slide-12
SLIDE 12

Wireframe

  • Combine with any lighting
  • Visualize mesh
  • Debugging
  • CAD applications
  • Geometry shader
  • Only 1 pass!
  • No z-fighting!

. Demo opengl/rendering/ex_wireframe

Simple Lighting

12/24

Modern Shader-based OpenGL Techniques

slide-13
SLIDE 13

Wireframe cont'd.

Simple Lighting

13/24

Modern Shader-based OpenGL Techniques

slide-14
SLIDE 14

Module: Modern Shader-based OpenGL Techniques

Introduction Simple Lighting Instanced Rendering Post-Processing Instanced Rendering

14/24

Modern Shader-based OpenGL Techniques

slide-15
SLIDE 15

Instanced Rendering

  • Use base mesh (VBOs)
  • Instance data in extra VBO
  • Set attribute divisor
  • Issue one drawing call!
  • GPU does the hard work
  • Minimises CPU overhead
  • Shaders can access per-instance data
  • Grass, trees, crowds, armies...

. Demo opengl/rendering/ex_instanced_geometry

Instanced Rendering

15/24

Modern Shader-based OpenGL Techniques

slide-16
SLIDE 16

Instanced Rendering cont'd.

Instanced Rendering

16/24

Modern Shader-based OpenGL Techniques

slide-17
SLIDE 17

Instanced Rendering cont'd

  • Use base mesh (VBOs)
  • Instance data in extra VBO
  • Set attribute divisor
  • Customise from instance data
  • Position offset
  • Bias and scale y coords
  • Color

. Demo opengl/rendering/ex_instanced_histogram

Instanced Rendering

17/24

Modern Shader-based OpenGL Techniques

slide-18
SLIDE 18

Module: Modern Shader-based OpenGL Techniques

Introduction Simple Lighting Instanced Rendering Post-Processing Post-Processing

18/24

Modern Shader-based OpenGL Techniques

slide-19
SLIDE 19

Two-pass Rendering

Post-Processing

19/24

Modern Shader-based OpenGL Techniques

slide-20
SLIDE 20

Edge Detection

  • Uses 2 rendering passes
  • Render to Texture
  • Render using texture
  • Second pass applies filter

. Demo opengl/rendering/ex_edge_detection

Post-Processing

20/24

Modern Shader-based OpenGL Techniques

slide-21
SLIDE 21

Gaussian Blur

  • Uses 3 rendering passes
  • More efficient than 2!
  • Render to Texture
  • Render using texture twice
  • Apply vertical blur
  • Apply horizontal blur
  • Optimise with hardware filtering

. Demo opengl/rendering/ex_gaussian_blur

Post-Processing

21/24

Modern Shader-based OpenGL Techniques

slide-22
SLIDE 22

Multi-pass Rendering

Post-Processing

22/24

Modern Shader-based OpenGL Techniques

slide-23
SLIDE 23

Television Effect

  • Uses 2 rendering passes
  • Render to Texture
  • Render using texture
  • Modifies original
  • Simulate poor zoom
  • Adjust levels/contrast
  • Color tint
  • Interference lines
  • Vignette
  • Flickering

. Demo opengl/rendering/ex_television

Post-Processing

23/24

Modern Shader-based OpenGL Techniques

slide-24
SLIDE 24

Chaining Effects

  • Uses 5 draw calls
  • Uses 4 rendering passes
  • Render to Texture
  • Render using texture
  • Ping/pong 2 FBOs
  • Render scenes
  • Vertical blur pass
  • Horizontal blur pass
  • Television effect
  • Order matters!

. Demo opengl/rendering/ex_multiple_effects

Post-Processing

24/24

Modern Shader-based OpenGL Techniques