Penumbra is a Hack Club YSWS (You Ship, We Ship) program, where you ship art made with shaders, and we ship you posters of that art, free of charge! We're also giving away RTX and RX GPUs for the most dedicated.
We will use a local poster printing service in your country in order to ship your poster. In order to get a GPU, you'll need to spend at least 45 hours across multiple shaders. We'll let you know how close you are to that goal on Slack!
To get started, join our Slack and set up Hackatime! We use Slack as our primary communication platform. Hackatime is our custom WakaTime server to track your coding time. You can use it with the WakaTime for ShaderToy browser extension!
But first - let's explain what actually *is* a shader. For each pixel coordinate, a “fragment” shader will return its color!
This language is called GLSL - the OpenGL Shading Language. Try messing around with the sandbox above!
You're given UV coordinates: they range from 0.0 to 1.0. (0.0, 0.0) is the bottom-right corner, and (1.0, 1.0) is the top-left one. The center of the screen is at (0.5, 0.5).
There are multiple approaches to making art with shaders! Because what you're writing is just a function, try using random math formulas, and see what happens!
If you want to do 3D, you are probably searching for raymarching. You can learn more about it with the guides in the next section!
If you ever are stuck, don't be afraid to ask in the #penumbra Slack channel. For inspiration, take a look at ShaderToy's Browse tab! It's full of fancy shaders, all with code!
If you're just starting out, or need a refresher, watch kishimisu's fantastic introduction to the world of making art with shaders!
The basics of how GLSL and shaders work, and how to make art with them
Explains how to render 3D objects via ShaderToy.
If you're interested in 3D raymarching, these might come in handy:
Before you submit - make sure you: