About ShaderBattle
ShaderBattle is a free, hands-on way to learn shader programming. Instead of reading about the GPU, you write the code for a small picture, watch it appear next to a target, and a match bar tells you how close you are.
How it teaches
Each lesson explains one idea, gives you every number you need, and asks for one small piece of code. The ideas build on each other: coordinates, distance fields, colour, noise, lighting, ray marching, and finally whole scenes such as oceans, clouds, fire and smoke. Challenges then ask you to recreate a picture from scratch, and a score rewards accuracy, short code and speed.
Every language, one course
Lessons are written once and shown in HLSL (Unity and Unreal), GLSL (Shadertoy, three.js, OpenGL, GameMaker, LÖVE), Godot's shading language, Metal and WGSL (WebGPU and Bevy). Switch language and the hints, starter code, error messages and export all change. When you finish, export a file ready for your engine.
Free, and private by default
Everything runs in your browser. You do not need an account: your progress is kept on your device. An account is optional and only adds saving across devices. See the privacy page.
Get in touch
Ideas for lessons, bug reports and questions are welcome on the contact page.