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.

Start learning