2024-08-26 22:59:24 +02:00
# Portfolio
2024-08-27 22:34:24 +02:00
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.
2024-08-27 23:30:36 +02:00
## categories
- [hardware ](#hardware )
- [game jam games ](#jam-games )
- [shaders ](#shaders )
- [raymarching shaders ](#raymarching )
- [utilities ](#utilities )
2024-08-26 22:59:24 +02:00
2024-08-19 21:58:50 +02:00
# hardware
2024-08-26 22:59:24 +02:00
### leko pona
`2022-08`
[git.crispypin.cc/CrispyPin/leko-pona ](https://git.crispypin.cc/CrispyPin/leko-pona )
==image:"/media/leko_tonsi.png":"leko pona, a split keyboard with blank keycaps in the trans flag colours"
## ch32v003 oled board
project files: [git.crispypin.cc/CrispyPin/ch32_oled ](https://git.crispypin.cc/CrispyPin/ch32_oled )
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### bad apple
`2024-04`
2024-08-28 21:04:08 +02:00
source: [git.crispypin.cc/CrispyPin/bad-apple ](https://git.crispypin.cc/CrispyPin/bad-apple/ )
2024-08-26 22:59:24 +02:00
==youtube:G0eonL14tCQ
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### Conways Game of Life
`2024-04`
==video:"/media/ch32_gol.mp4":"conways game of life on a tiny display"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### Runner game
`2024-04`
==video:"/media/musi_pi_soweli_tawa.mp4":"simple runner game, similar to the chrome dino game"
## rotary encoder keyboard
2024-08-28 21:04:08 +02:00
`2022-05`
[github.com/CrispyPin/rotary-kb ](https://github.com/CrispyPin/rotary-kb/ )
A silly project making a terrible input device. You select a letter by rotating right and left moving down a tree, and press to type it.
==image:"/media/rotary_kb.png":"a breadboard circuit with a rotary encoder"
2024-08-19 21:58:50 +02:00
# jam games
2024-08-26 22:59:24 +02:00
LD is the [Ludum Dare game jam ](https://ldjam.com/ ), where you have 3 days to create a game fitting to a theme that is revealed when the jam starts.
All the below games except for `LD45: Mind the Gap` I made together with [Erikbot ](https://github.com/ErikBot42 ). I have done both art and programming for all of them.
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### LD50: Pixel Entropy
`2022-04`
[crispypin.itch.io/ld-50 ](https://crispypin.itch.io/ld-50 )
[github.com/CrispyPin/ld-50 ](https://github.com/CrispyPin/ld-50 )
2024-08-28 21:04:08 +02:00
==image:"/media/jam-games/pixel_entropy.png":"a 2D pixel physics sandbox"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### LD49: Shork Inc
2024-08-28 21:04:08 +02:00
`2021-09`
[crispypin.itch.io/ld-49 ](https://crispypin.itch.io/ld-49 )
[github.com/CrispyPin/ld-49 ](https://github.com/CrispyPin/ld-49 )
==image:"/media/jam-games/shork_inc.png":"a messy low-poly warehouse scene"
2024-08-26 22:59:24 +02:00
### LD48: Shork
2024-08-28 21:04:08 +02:00
`2021-04`
[crispypin.itch.io/ld-48 ](https://crispypin.itch.io/ld-48 )
[github.com/CrispyPin/ld-48 ](https://github.com/CrispyPin/ld-48 )
2024-08-26 22:59:24 +02:00
### LD47: Dynamic Flux Entropy
2024-08-28 21:04:08 +02:00
`2020-10`
[crispypin.itch.io/ld-47 ](https://crispypin.itch.io/ld-47 )
[github.com/CrispyPin/ld-47 ](https://github.com/CrispyPin/ld-47 )
2024-08-26 22:59:24 +02:00
### LD46: Tree Shroomulator
2024-08-28 21:04:08 +02:00
`2020-04`
[crispypin.itch.io/ld-46 ](https://crispypin.itch.io/ld-46 )
2024-08-26 22:59:24 +02:00
### LD45: Mind the Gap
2024-08-28 21:04:08 +02:00
`2019-10`
[crispypin.itch.io/ld-45 ](https://crispypin.itch.io/ld-45 )
2024-08-26 22:59:24 +02:00
### Blackthornprod gamejam 2: Starship: Conquer Space
2024-08-28 21:04:08 +02:00
`2019-04`
[crispypin.itch.io/starship-conquer-space ](https://crispypin.itch.io/starship-conquer-space )
==image:"/media/jam-games/starship.png":"some machines on the surface of a tiny planet, with a cosmonaut in the center"
2024-08-26 22:59:24 +02:00
### LD43: The robot's adventure
2024-08-28 21:04:08 +02:00
`2018-12`
[crispypin.itch.io/ld-43 ](https://crispypin.itch.io/ld-43 )
2024-08-26 22:59:24 +02:00
### LD42: Forklift Simulator
2024-08-28 21:04:08 +02:00
`2018-08`
[crispypin.itch.io/ld-42 ](https://crispypin.itch.io/ld-42 )
==image:"/media/jam-games/forklift_simulator.png":"top-down view of a forklift surrounded by boxes in different colours"
2024-08-27 23:30:36 +02:00
2024-08-19 21:58:50 +02:00
# shaders
2024-08-27 23:30:36 +02:00
Most of my shaders are made in Unity and uplaoded as props for ChilloutVR. All my ChilloutVR props are in [this repository ](https://git.crispypin.cc/CrispyPin/cvr-props ).
2024-08-26 22:59:24 +02:00
### partial QR code
2024-08-27 22:34:24 +02:00
`2024-08`
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.
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/qr_shader_bit_order.mp4"
2024-08-27 23:30:36 +02:00
### shader quine
2024-08-27 22:34:24 +02:00
`2024-08`
A [quine ](https://en.wikipedia.org/wiki/Self-reproducing_program ) 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.
2024-08-27 22:40:58 +02:00
==image:"/media/shaders/shader_quine_198x99.png":"a large square of shader code, being rendered by itself"
2024-08-27 23:30:36 +02:00
### shader quine golf
2024-08-27 22:34:24 +02:00
`2024-08`
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.
2024-08-27 22:40:58 +02:00
==image:"/media/shaders/shader_quine_2877.png":"a smaller wall of text, with a low-resolution font that is just barely readable"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### sunset
2024-08-27 22:34:24 +02:00
`2023-02`
This is a single fragment shader, which means you can put it on any mesh and it will look the same.
2024-08-27 22:40:58 +02:00
==image:"/media/shaders/sunset_shader.png":"sunset over a calm ocean, with stars visible in the purple sky"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### julia fractal
2024-08-28 21:04:08 +02:00
`2023-07`
They are both animated slowly, but the second one has distortion based on world position.
==image:"/media/shaders/julia.png":"bright purple julia fractal"
==image:"/media/shaders/julia_distorted.png":"bright purple julia fractal, with distortion"
2024-08-27 23:30:36 +02:00
2024-08-19 21:58:50 +02:00
## andriod
2024-08-27 22:34:24 +02:00
`2024-05`
source: [git.crispypin.cc/CrispyPin/android-shaders ](https://git.crispypin.cc/CrispyPin/android-shaders )
Using the app [Shader Editor ](https://f-droid.org/en/packages/de.markusfisch.android.shadereditor/ ), I made some shaders for my phones' wallpaper.
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### binary clock variants
2024-08-27 22:34:24 +02:00
`2024-05`
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.
2024-08-27 22:40:58 +02:00
==image:"/media/shaders/binary_clock_square.png":"a 4x4 grid of circles, some of which are filled"
2024-08-27 22:34:24 +02:00
This 3-row version uses the traditional division of hours, minutes and seconds, just displaying the three numbers in binary.
2024-08-27 22:40:58 +02:00
==image:"/media/shaders/binary_clock.png":"3 rows of 5, 6 and 6 circles"
2024-08-27 23:30:36 +02:00
2024-08-19 21:58:50 +02:00
## raymarching
2024-08-26 22:59:24 +02:00
### libgarbage
2024-08-27 22:34:24 +02:00
`2023-07`
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 [git.crispypin.cc/CrispyPin/cvr-props ](https://git.crispypin.cc/CrispyPin/cvr-props/src/branch/main/Assets/raymarched/lib )
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### libgarbage demo
2024-08-27 22:34:24 +02:00
`2023-09`
An example scene made for libgarbage, showing most of the primitive shapes available.
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/rm_demo_scene.mp4":"a collection of sdf primitives with a reflective material"
2024-08-27 23:30:36 +02:00
2024-08-27 22:34:24 +02:00
### spinny thing
`2023-07`
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/rm_spinny_thing.mp4"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### flesh cube
2024-08-27 22:34:24 +02:00
`2023-07`
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/rm_flesh_cube.mp4":"disgusting pulsating fleshy cube"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### big nut
2024-08-27 22:34:24 +02:00
`2023-09`
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/rm_big_nut.mp4":"a spinning metallic bolt and nut continually screwing and unscrewing itself"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### loops
2024-08-27 22:34:24 +02:00
`2024-08`
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/rm_looping_loops.mp4":"11 rectangular frames moving through each other smoothly":loop=true
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### boxes
2024-08-27 22:34:24 +02:00
`2024-08`
2024-08-27 22:40:58 +02:00
==video:"/media/shaders/rm_boxes.mp4"
2024-08-27 23:30:36 +02:00
2024-08-19 21:58:50 +02:00
## cellular automata
2024-08-26 22:59:24 +02:00
### game of life
2024-08-27 23:01:34 +02:00
`2023-07`
I also made a web version of this in may 2021, see [gol.crispypin.cc ](https://gol.crispypin.cc/?cellsize=10&time=2 ) or [github.com/CrispyPin/gol-wallpaper ](https://github.com/CrispyPin/gol-wallpaper ) for the source
==image:"/media/shaders/game_of_life.png":"Conway's game of life"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### rule 110
2024-08-27 22:34:24 +02:00
`2023-09`
See [Elementary cellular automaton (Wikipedia) ](https://en.wikipedia.org/wiki/Elementary_cellular_automaton ).
2024-08-27 22:40:58 +02:00
==image:"/media/shaders/rule_110.png":"elementary cellular automata 110"
2024-08-27 23:30:36 +02:00
2024-08-26 22:59:24 +02:00
### WireWorld
### Lenia/smoothlife
2024-08-19 21:58:50 +02:00
## godot
2024-08-26 22:59:24 +02:00
### voxel raymarcher
2024-08-19 21:58:50 +02:00
# utilities
2024-08-26 22:59:24 +02:00
### snoud
### htmd
### webserver
### julia fractal renderer
### brainfuck debugger
### text editor lili
### compiler-timer
### GDVK godot virtual system input
2024-08-19 21:58:50 +02:00
## SteamVR
2024-08-26 22:59:24 +02:00
### OVR Utils
### sinpin-vr
### steamvr_status
2024-08-19 21:58:50 +02:00
# Silly
2024-08-27 22:34:24 +02:00
### snad
2024-08-26 22:59:24 +02:00
### worm lang
### advent of code 2023 day 1 and 4 in brainfuck
### asetniop emulator for x11
### june
### neuralblender-mc
### minesweeper-rs
### rust-mandelbrot
### voxel-meshing godot c++
### CounterBot
### gymnasiearbete: multiplayer voxel game godot