Shader Development (XNA/MonoGame)

Even thought shader developers are in high demand, online learning-resources are surprisingly limited. While developing a game for MonoGame I came across some “eye-candy” ideas which do require shaders. However, since shader programming was one of the parts I successfully dodged till today, it is indispensable for a modern look and feel game experience and sooner or later I have to face the fact, that I do have to accustom myself and get into shader development.

And here we are; welcome to my self learning blog diary. Warning: Due to literally zero shader development experience, this “tutorial” series starts from scratch and has the aim to document my learning process/curve over time. In other words: I have no clue what I am doing and I am just writing down what I find online in a compact, readable way, trying to explain all the shader logic to myself.

The shaders are compiled with the MonoGame.Content.Pipeline ( and do compile against DirectX9. I try to use syntax which is compatible with GLSL, but don’t expect all of them to work out of the box while targeting OpenGL. (E.g.: Building for Linux and/or Mac)

The Basics

2D Shader Collection