GLSL Shaders from Scratch
About the Author: SimonDev
About SimonDev
Hello! My name is Simon. I am a senior graphics engineer with more than 20 years of experience. Many people know me from my YouTube channel, which has over 214,000 subscribers.
Early Work
I hold a computer science degree from the University of Toronto. I started my career in the early 2000s as a graphics programmer on the original Xbox and PlayStation 2 consoles.
I focused on 3D rendering and performance work. I built custom engines and shader tools, created visual effects, and set up graphics pipelines. One of my projects, a custom shader graph system, was shown at GDC in 2007. This was long before common visual shader editors appeared.
Time at Google
I later joined the Chrome team at Google. I spent about seven years improving performance, building tools, and working on systems for profiling and tracking regressions at scale.
Side Projects
I also worked on several unusual projects. One was an MMO with millions of players and tens of thousands online at the same time. The server was written in C++, and the client ran in Adobe Shockwave.
I consulted on mobile game work for the iPhone. This included rewriting a backend from PHP to Python, which cut server costs from about $10,000 to about $50 per month.
What I Do Now
Today, I create technical demos and run a YouTube channel about real-time graphics, performance, and game development. I enjoy this work and aim to share the knowledge I have gained over the years.
Watch Online 71 lessons
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Course Overview Demo | 01:45 | |
| 2 | Welcome and Introductions | 05:54 | |
| 3 | Sample Shader | 02:53 | |
| 4 | GLSL Overview | 03:22 | |
| 5 | Transformation Pipeline & Shader Inputs | 07:27 | |
| 6 | Key Takeaways | 02:18 | |
| 7 | IDE Setup & Template Code | 04:17 | |
| 8 | Simple Colours & RGB | 04:06 | |
| 9 | Shader Inputs - Varyings | 03:48 | |
| 10 | Shader Inputs - Uniforms | 04:14 | |
| 11 | Shader Inputs - Attributes | 02:57 | |
| 12 | Simple Textures & Colours | 07:35 | |
| 13 | Working with Alpha | 03:48 | |
| 14 | Addressing | 03:39 | |
| 15 | Filtering | 04:22 | |
| 16 | Step, Mix, Smoothstep | 17:47 | |
| 17 | Min, Max, Clamp, Saturate | 04:25 | |
| 18 | Fract & Friends | 15:36 | |
| 19 | InverseLerp, Remap, and the Derivative Functions | 06:57 | |
| 20 | Sin/Cos | 06:25 | |
| 21 | Common Vector Operations | 08:03 | |
| 22 | Ambient & Hemi Lights | 07:05 | |
| 23 | Lambertian Lighting & sRGB | 07:37 | |
| 24 | Phong Specular | 03:40 | |
| 25 | IBL Specular & Fresnel | 07:52 | |
| 26 | Toon Shading | 05:12 | |
| 27 | Recap | 02:24 | |
| 28 | Simple Transformations | 07:23 | |
| 29 | Varyings in Way More Depth | 09:49 | |
| 30 | Project: Pop-In (easing functions) | 02:10 | |
| 31 | Project: Warped Sphere | 06:37 | |
| 32 | What are SDF's? | 07:58 | |
| 33 | Simple Shapes | 05:38 | |
| 34 | Transformations | 03:47 | |
| 35 | Antialiasing & Shading | 02:31 | |
| 36 | Boolean Operations | 09:40 | |
| 37 | Project: Cloudy Day | 34:15 | |
| 38 | Intro to Noise | 03:39 | |
| 39 | Value & Gradient Noise | 02:40 | |
| 40 | Filtering | 06:36 | |
| 41 | Perlin & Simplex | 10:07 | |
| 42 | More Noises! | 14:18 | |
| 43 | Project: Landscape | 12:15 | |
| 44 | Project: Burn Transition | 07:22 | |
| 45 | Intro to PostFX | 02:43 | |
| 46 | Basic Colour Manipulation | 12:48 | |
| 47 | Colour Boost, Vignette, Pixelation | 10:43 | |
| 48 | Distortions & Ripples | 06:58 | |
| 49 | Stars | 13:38 | |
| 50 | Planet | 21:52 | |
| 51 | Intro | 02:40 | |
| 52 | Theory | 09:42 | |
| 53 | Basic Implementation | 15:24 | |
| 54 | Advanced Features | 26:44 | |
| 55 | Project: Terrain | 30:42 | |
| 56 | Initial Setup | 02:57 | |
| 57 | Introduction & Outline | 04:58 | |
| 58 | Overview of GDC Paper | 04:55 | |
| 59 | Basic Idea and Approach | 09:35 | |
| 60 | Single Blade of Grass | 21:43 | |
| 61 | Basic Lighting & Wind | 47:20 | |
| 62 | More details | 32:57 | |
| 63 | Basic Particles | 35:12 | |
| 64 | Particle Systems | 02:45:52 | |
| 65 | Blending | 01:15:24 | |
| 66 | GPU Particles - Stateless | 01:05:52 | |
| 67 | GPU Particles - Stateful | 01:04:40 | |
| 68 | GPU Particles - Advanced | 49:31 | |
| 69 | GPU Particles - Boids | 01:35:03 | |
| 70 | GPU Particles - Boids 2 | 01:04:31 | |
| 71 | GPU Particles - Boids 3 | 15:01 |
Get instant access to all 70 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscription