Note: This is an updated version of the original 3D Game Shaders For Beginners by David Lettier. This version includes a complete Python port of the demonstration application, in addition to the original C++ version. Maintained by Shivam Kumar.
Interested in adding textures, lighting, shadows, normal maps, glowing objects, ambient occlusion, reflections, refractions, and more to your 3D game? Great! Below is a collection of shading techniques that will take your game visuals to new heights. I've explained each technique in such a way that you can take what you learn here and apply/port it to whatever stack you use—be it Godot, Unity, Unreal, or something else. For the glue in between the shaders, the original author chose the fabulous Panda3D game engine and the OpenGL Shading Language (GLSL). The demonstration is available in both C++ and Python. So if Panda3D is your stack, then you'll also get the benefit of learning how to use these shading techniques with Panda3D and OpenGL specifically.
The included license applies to the software portion of this project—
specifically the .cxx, .py,
.vert, and .frag source code files. No other
portion of 3D Game Shaders For Beginners has been licensed for use.
(C) 2019 David Lettier
(C) 2026 Shivam Kumar