Hi, this is a non-exhaustive list of my personal projects. It appears I like making things with computers. The dates listed are the last time any significant change was made, for projects that spanned several months.<br>
<imgloading="lazy"src="/media/leko_tonsi.png"alt="leko pona, a split keyboard with blank keycaps in the trans flag colours"title="leko pona, a split keyboard with blank keycaps in the trans flag colours"></img>
<videoloading="lazy"src="/media/ch32_gol.mp4"alt="conways game of life on a tiny display"title="conways game of life on a tiny display"controls></video>
<videoloading="lazy"src="/media/musi_pi_soweli_tawa.mp4"alt="simple runner game, similar to the chrome dino game"title="simple runner game, similar to the chrome dino game"controls></video>
LD is the <ahref="https://ldjam.com/">Ludum Dare game jam</a>, where you have 3 days to create a game fitting to a theme that is revealed when the jam starts.<br>
All the below games except for <code>LD45: Mind the Gap</code> I made together with <ahref="https://github.com/ErikBot42">Erikbot</a>. I have done both art and programming for all of them.<br>
<imgloading="lazy"src="/media/jam-games/starship.png"alt="some machines on the surface of a tiny planet, with a cosmonaut in the center"title="some machines on the surface of a tiny planet, with a cosmonaut in the center"></img>
<imgloading="lazy"src="/media/jam-games/forklift_simulator.png"alt="top-down view of a forklift surrounded by boxes in different colours"title="top-down view of a forklift surrounded by boxes in different colours"></img>
Most of my shaders are made in Unity and uploaded as props for ChilloutVR. All my ChilloutVR props are in <ahref="https://git.crispypin.cc/CrispyPin/cvr-props">this repository</a>.<br>
A shader that can display qr codes of any size, though it requires computing the error correction codes beforehand. Partially because it would be slow to do for every pixel every frame, but mostly because I couldn't find a resource explaining how to do it.<br>
A <ahref="https://en.wikipedia.org/wiki/Self-reproducing_program">quine</a> is a program that outputs its own source code. Since shaders don't have text or file outputs, a shader quine must render its own source code instead. This shader contains the font data required to be readable.<br>
<imgloading="lazy"src="/media/shaders/shader_quine_198x99.png"alt="a large square of shader code, being rendered by itself"title="a large square of shader code, being rendered by itself"></img>
Code golf is the art of shortening a program as much as possible while still producing a required behavior. I made a tiny version of the quine, only 2877 bytes large. At the end it does render some random characters, but I still consider it valid. When code golfing, undefined behaviour is part of the fun.<br>
<imgloading="lazy"src="/media/shaders/shader_quine_2877.png"alt="a smaller wall of text, with a low-resolution font that is just barely readable"title="a smaller wall of text, with a low-resolution font that is just barely readable"></img>
<imgloading="lazy"src="/media/shaders/sunset_shader.png"alt="sunset over a calm ocean, with stars visible in the purple sky"title="sunset over a calm ocean, with stars visible in the purple sky"></img>
They are both animated slowly, but the second one has distortion based on world position.<br>
<imgloading="lazy"src="/media/shaders/julia.png"alt="bright purple julia fractal"title="bright purple julia fractal"></img>
<imgloading="lazy"src="/media/shaders/julia_distorted.png"alt="bright purple julia fractal, with distortion"title="bright purple julia fractal, with distortion"></img>
Using the app <ahref="https://f-droid.org/en/packages/de.markusfisch.android.shadereditor/">Shader Editor</a>, I made some shaders for my phones' wallpaper.<br>
The 4x4 version divides the day into 2^16 sections, each one about 1.3s long, and displays the number of sections passed since midnight as a binary number.<br>
<imgloading="lazy"src="/media/shaders/binary_clock_square.png"alt="a 4x4 grid of circles, some of which are filled"title="a 4x4 grid of circles, some of which are filled"></img>
libgarbage is my raymarching shader library, with which all the following shaders are made with. It doesn't have its own repository right now, but can be found in <ahref="https://git.crispypin.cc/CrispyPin/cvr-props/src/branch/main/Assets/raymarched/lib">git.crispypin.cc/CrispyPin/cvr-props</a><br>
<videoloading="lazy"src="/media/shaders/rm_demo_scene.mp4"alt="a collection of sdf primitives with a reflective material"title="a collection of sdf primitives with a reflective material"controls></video>
<videoloading="lazy"src="/media/shaders/rm_looping_loops.mp4"alt="11 rectangular frames moving through each other smoothly"title="11 rectangular frames moving through each other smoothly"controlsloop=true></video>
I also made a web version of this in may 2021, see <ahref="https://gol.crispypin.cc/?cellsize=10&time=2">gol.crispypin.cc</a> or <ahref="https://github.com/CrispyPin/gol-wallpaper">github.com/CrispyPin/gol-wallpaper</a> for the source<br>
<imgloading="lazy"src="/media/shaders/game_of_life.png"alt="Conway's game of life"title="Conway's game of life"></img>