OpenGL 4 Shading Language Cookbook

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

OpenGL 4 Shading Language Cookbook, Third Edition provides easy-to-follow recipes that first walk you through the theory and background behind each technique, and then proceed to showcase and explain the GLSL and OpenGL code needed to implement them.

The book begins by familiarizing you with beginner-level topics such as compiling and linking shader programs, saving and loading shader binaries (including SPIR-V), and using an OpenGL function loader library. We then proceed to cover basic lighting and shading effects. After that, you'll learn to use textures, produce shadows, and use geometry and tessellation shaders. Topics such as particle systems, screen-space ambient occlusion, deferred rendering, depth-based tessellation, and physically based rendering will help you tackle advanced topics.

OpenGL 4 Shading Language Cookbook, Third Edition also covers advanced topics such as shadow techniques (including the two of the most common techniques: shadow maps and shadow volumes). You will learn how to use noise in shaders and how to use compute shaders.

The book provides examples of modern shading techniques that can be used as a starting point for programmers to expand upon to produce modern, interactive, 3D computer-graphics applications.

Author(s): David Wolff
Edition: 3
Publisher: Packt Publishing
Year: 2018

Language: English
Pages: 472
City: Birmingham
Tags: OpenGL;Computer graphics;Rendering (Computer graphics);Shading;Shaders;Shader

1: Getting Started with GLSL
Introduction
Using a loading library to access the latest OpenGL functionality
Using GLM for mathematics
Determining the GLSL and OpenGL version
Compiling a shader
Linking a shader program
Saving and loading a shader binary
Loading a SPIR-V shader program

2: Working with GLSL Programs
Introduction
Sending data to a shader using vertex attributes and vertex buffer objects
Getting a list of active vertex input attributes and locations
Sending data to a shader using uniform variables
Getting a list of active uniform variables
Using uniform blocks and uniform buffer objects
Using program pipelines
Getting debug messages
Building a C++ shader program class

3: The Basics of GLSL Shaders
Introduction
Diffuse and per-vertex shading with a single point light source
Implementing the Phong reflection model
Using functions in shaders
Implementing two-sided shading
Implementing flat shading
Using subroutines to select shader functionality
Discarding fragments to create a perforated look

4: Lighting and Shading
Introduction
Shading with multiple positional lights
Shading with a directional light source
Using per-fragment shading for improved realism
The Blinn-Phong reflection model
Simulating a spotlight
Creating a cartoon shading effect
Simulating fog
A physically-based reflection model

5: Using Textures
Introduction
Applying a 2D texture
Applying multiple textures
Using alpha maps to discard pixels
Using normal maps
Parallax mapping
Steep parallax mapping with self shadowing
Simulating reflection with cube maps
Simulating refraction with cube maps
Applying a projected texture
Rendering to a texture
Using sampler objects
Diffuse image-based lighting

6: Image Processing and Screen Space Techniques
Introduction
Applying an edge detection filter
Applying a Gaussian blur filter
Implementing HDR lighting with tone mapping
Creating a bloom effect
Using gamma correction to improve image quality
Using multisample anti-aliasing
Using deferred shading
Screen space ambient occlusion
Configuring the depth test
Implementing order-independent transparency

7: Using Geometry and Tessellation Shaders
Introduction
Point sprites with the geometry shader
Drawing a wireframe on top of a shaded mesh
Drawing silhouette lines using the geometry shader
Tessellating a curve
Tessellating a 2D quad
Tessellating a 3D surface
Tessellating based on depth

8: Shadows
Introduction
Rendering shadows with shadow maps
Anti-aliasing shadow edges with PCF
Creating soft shadow edges with random sampling
Creating shadows using shadow volumes and the geometry shader

9: Using Noise in Shaders
Introduction
Creating a noise texture using GLM
Creating a seamless noise texture
Creating a cloud-like effect
Creating a wood-grain effect
Creating a disintegration effect
Creating a paint-spatter effect
Creating a rusted metal effect
Creating a night-vision effect

10: Particle Systems and Animation
Introduction
Animating a surface with vertex displacement
Creating a particle fountain
Creating a particle system using transform feedback
Creating a particle system using instanced meshes
Simulating fire with particles
Simulating smoke with particles

11: Using Compute Shaders
Introduction
Implementing a particle simulation with the compute shader
Creating a fractal texture using the compute shader
Using the compute shader for cloth simulation
Implementing an edge detection filter with the compute shader