modern shader based opengl techniques
play

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


  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

  2. Module: Modern Shader-based OpenGL Techniques Introduction Simple Lighting Instanced Rendering Post-Processing Modern Shader-based OpenGL Techniques 2/24

  3. Module: Modern Shader-based OpenGL Techniques Introduction Simple Lighting Instanced Rendering Post-Processing Introduction Modern Shader-based OpenGL Techniques 3/24

  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 our 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 Modern Shader-based OpenGL Techniques 4/24

  5. Simplified OpenGL Pipeline Introduction Modern Shader-based OpenGL Techniques 5/24

  6. Module: Modern Shader-based OpenGL Techniques Introduction Simple Lighting Instanced Rendering Post-Processing Simple Lighting Modern Shader-based OpenGL Techniques 6/24

  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 Modern Shader-based OpenGL Techniques 7/24

  8. Diffuse Lighting cont'd. Simple Lighting Modern Shader-based OpenGL Techniques 8/24

  9. Phong Lighting cont'd. Simple Lighting Modern Shader-based OpenGL Techniques 9/24

  10. Let me see that Phong Bringing it all together: I = I a + I d + I s v ) n = LK a + LK d ( ˆ s · ˆ n )+ LK d ( ˆ r · ˆ   v ) f = L  K a + K d ( ˆ s · ˆ n ) + K d ( ˆ r · ˆ    ���� � �� � � �� � Ambient Diffuse Specular Demo opengl/lighting/ex_phong . Simple Lighting Modern Shader-based OpenGL Techniques 10/24

  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 Modern Shader-based OpenGL Techniques 11/24

  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 Modern Shader-based OpenGL Techniques 12/24

  13. Wireframe cont'd. Simple Lighting Modern Shader-based OpenGL Techniques 13/24

  14. Module: Modern Shader-based OpenGL Techniques Introduction Simple Lighting Instanced Rendering Post-Processing Instanced Rendering Modern Shader-based OpenGL Techniques 14/24

  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 Modern Shader-based OpenGL Techniques 15/24

  16. Instanced Rendering cont'd. Instanced Rendering Modern Shader-based OpenGL Techniques 16/24

  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 Modern Shader-based OpenGL Techniques 17/24

  18. Module: Modern Shader-based OpenGL Techniques Introduction Simple Lighting Instanced Rendering Post-Processing Post-Processing Modern Shader-based OpenGL Techniques 18/24

  19. Two-pass Rendering Post-Processing Modern Shader-based OpenGL Techniques 19/24

  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 Modern Shader-based OpenGL Techniques 20/24

  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 Modern Shader-based OpenGL Techniques 21/24

  22. Multi-pass Rendering Post-Processing Modern Shader-based OpenGL Techniques 22/24

  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 Modern Shader-based OpenGL Techniques 23/24

  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 Modern Shader-based OpenGL Techniques 24/24

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend