CobaltXII's Home

Hello, I am CobaltXII. You may know me under one of my other Internet nicknames, such as -Cobalt- or sonicxspriter. I am a computer enthusiast who enjoys writing programs (mainly in C or C++). I publish all of my creations on GitHub. On this website you will find a list of my projects. Hopefully you will find something you like.

You can contact me on Discord; my username and tag is cxii#8199.

Major Projects

CobaltXII/sterling A naive pathtracer written in C++11
CobaltXII/minceraft A Minecraft clone written in C++11
CobaltXII/Tempest A terrain editor written in C++11 using OpenGL
CobaltXII/C4RN4G3 A top-down shoot 'em up written in C++11
CobaltXII/tarreria A Terraria clone written in C++11
CobaltXII/cosmos An OpenCL accelerated n-body simulation written in C++11
CobaltXII/orb A tiny raytracer written in C++11
CobaltXII/bank_heist A tower defence game written in Python
CobaltXII/Minesweeper A Microsoft Minesweeper clone written in C++11
CobaltXII/cxcc A C compiler for x86-64 written in C++11
CobaltXII/logic A logic gate simulator written in Processing
CobaltXII/planet A planet generator and renderer written in C++11
CobaltXII/boss A MS-DOS themed text editor written in C++11

Minor Projects

CobaltXII/boiler A graphics and rasterization framework built on top of SDL2
CobaltXII/KrunkerToWavefront Convert Krunker.io maps to Wavefront .obj and .mtl files
CobaltXII/vortext Raymarched font written in JavaScript and GLSL
CobaltXII/ginx Simple reverse proxy for virtual hosting written in Node.js
CobaltXII/hostess Hosts file manipulation tool writtehn in Node.js
CobaltXII/img 256-, 8- and true-color images in the terminal
CobaltXII/cxci A C-like interpreter written in C++11
CobaltXII/huffman A Huffman compressor/decompressor written in C++11
CobaltXII/fractals A GPU-accelerated fractal explorer
CobaltXII/shaker A GLSL sandbox for the desktop
CobaltXII/image_utility Image utility baseplate using stb_image_write
CobaltXII/fastbayer8 Fast 8-color Bayer dithering written in C++11
CobaltXII/pulsed_ostream A wrapper on std::ostream that adds a delay between characters

Collaborations

krunker-css A tool to generate CSS for Krunker.io

Experiments (C++)

.../additive Additive blending
.../automata Various cellular automata (with OpenMP acceleration)
.../balls Ball physics simulation
.../barycentric Triangle rasterization with vertex data interpolation
.../cloth Cloth simulation with Verlet integration
.../dither Various ordered dithering and error diffusion algorithms
.../dos MS-DOS-styled GUI library
.../gl 3-dimensional software rasterizer
.../gradient Gradient generation utility
.../lights Raycasted 2D lighting simulation
.../mandelbrot Mandelbrot, Julia and Burning Ship fractals
.../matrix Matrix (falling hacker text) simulation
.../minecraft Port of Notch's raymarched Minecraft demo
.../neural Neural network library with demonstrations
.../normals Normal mapping experiment
.../optics 2-dimensional optics simulation (reflection, refraction)
.../raster 3-dimensional software rasterizer
.../sierpinski Sierpiński triangle fractal
.../terminal Code page 437 font headers
.../affine 2-dimensional affine transformations (scale, rotate, shear)
.../bezier Quadratic and cubic Bézier curve rasterization
.../blended_metaballs Naive metaball renderer with color blending
.../cardioid Cardioid renderer
.../circle_line Circle-line intersection solver
.../clavet Clavet fluid simulation
.../collisions Static collision solver using the separating axis theorem (SAT)
.../dla Particle-based diffusion limited aggregation (DLA)
.../doom_fire Retro fire animation used in DOOM
.../doom_fire_2 Retro fire animation used in DOOM (custom palette)
.../doom_fire_3 Retro fire animation used in DOOM (with fireballs)
.../doom_fluid Retro fire animation used in DOOM (with fluid simulation)
.../epicycles Epicycle machine generator using Fourier transform
.../fire Old-school fire demoscene
.../flow Perlin noise flow field
.../fluid Fluid simulation (port from unidentified C source)
.../fluid_image Fluid simulation (port from unidentified C source)
.../fourier_series Fourier series visualization (natural square wave)
.../fourier_series_saw Fourier series visualization (natural sawtooth wave)
.../fourier_transform Fourier transform experiment (triangle wave)
.../fourier_transform_2 2-dimensional Fourier transform experiment (Coding Train)
.../grid_dla Grid-based diffusion limited aggregation (DLA)
.../heat_equation Heat equation simulation
.../intersection Line-line intersection solver
.../kernel Image convolution via kernels (Guassian blur, sharpen, etc.)
.../marching_squares Marching squares metaballs
.../multi_spatial_hash Spatial hash grid acceleration structure
.../n_body N-body simulation
.../n_body_image N-body simulation
.../naive_metaballs Naive metaballs
.../navier_squares Marching squares Navier–Stokes fluid simulation
.../navier_stokes Navier–Stokes fluid simulation
.../navier_stokes_color Three-channel (RGB) Navier–Stokes fluid simulation
.../navier_stokes_image Three-channel (RGB) Navier–Stokes fluid simulation
.../perlin One-, two- and three-dimensional Perlin noise
.../polar_1 Polar coordinates experiment
.../polar_2 Dithering an image using variable width circles
.../quadtree_image Image compression using quadtrees
.../quadtree_point Quadtree playground
.../raycaster_untextured Untextured raycaster using digital differential analysis (DDA)
.../spatial_hash Spatial hash grid acceleration structure
.../truetype Truetype font rasterization
.../verlet Concave shape physics simulation using Verlet integration
.../verlet_balls Ball physics simulation using Verlet integration
.../verlet_fluid Fluid simulation using Verlet integration
.../verlet_fluid_cl OpenCL fluid simulation using Verlet integration
.../voronoi Naive Voronoi diagram renderer
.../voronoi_metaballs Voronoi-styled metaballs
.../wave_equation Wave equation simulation
.../xiaolin Xiaolin Wu's smooth line rasterization algorithms

CobaltXII/sterling

SYNOPSIS
A naive pathtracer written in C++11

DEPENDENCIES
Sterling requires stb_image_write (Sean T. Barrett), inih (Ben Hoyt), tinyobjloader (Syoyo Fujita), GLM, and C++11 or greater. All libraries (excluding GLM) are included in this repository.

CREDITS
Thanks to Sean T. Barrett, Ben Hoyt, Syoyo Fujita, Ben Kyd, Nimmy the Oracle, and UglySwedishFisk.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/minceraft

SYNOPSIS
A Minecraft clone written in C++11

DEPENDENCIES
Minceraft requires C++11 or greater, OpenGL 3.3 Core or greater, GLM 0.9.9.3 or greater, libnoise 1.0.0 or greater, and SDL 2.0.9 or greater. Other dependencies such as GLAD, khrplatform, stb_image and stb_image_write (Sean T. Barrett) and FastNoise (Jordan Peck) are included in the repository.

DISCLAIMER
This project and it's author are not affiliated with or supported by Microsoft Corporation or Mojang AB. All of the files in the directory tex/ are the original work and property of Mojang AB. All other files are the original work of the author of this repository, and were not based off of the source code of Minecraft.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/tempest

SYNOPSIS
A terrain editor written in C++11 using OpenGL

ABSTRACT
Tempest is a terrain editor written in C++ using OpenGL. It was created mainly as an exercise to help me learn some more advanced OpenGL, such as reflections, refractions and other non-trivial effects. Currently, Tempest implements an object-oriented framework with many wrapper classes, such as cameras, cubemaps, displays, entities, framebuffers, heightmaps, lights, models, shaders, terrain, textures and water. Some of the effects that were practised when writing Tempest are water reflections, refractions, normal mapping and depth blending, terrain multi-texturing based on slope and elevation, and terrain decals using signed distance functions.

LIBRARIES
Tempest uses GLAD for generating OpenGL loaders, stb_image for loading images, stb_image_write for saving images, tinyobjloader for loading Wavefront models, FastNoise for generating coherent noise, and Dear ImGui for GUI.

CREDITS
Thanks to David Herberth, Sean Barrett, Syoyo Fujita, Jordan Peck and Omar Cornut for their libraries. Further thanks to ThinMatrix for his OpenGL tutorials which were great for starting off.

LICENSE
This repository and it's contents are licensed under the MIT License. Any libraries included in this repository are under their own licenses, which can probably be found in their subdirectory.

CobaltXII/C4RN4G3

SYNOPSIS
A top-down shoot 'em up written in C++11

ABSTRACT
C4RN4G3 is a top-down shoot 'em up written in C++11 using OpenGL. The gameplay is oriented around shooting things to gain ammunition, health, and experience. You can find guns and powerups lying around, as well as barrels that can be destroyed to get loot. The game is singleplayer and the enemies are all bots. There's no win condition, just shoot. It also runs in the browser when compiled to Javascript/WebAssembly with Emscripten.

LIBRARIES
Tempest uses GLAD for generating OpenGL loaders, stb_image for loading images, stb_image_write for saving images and Dear ImGui for GUI. Emscripten is also used when compiling to Javascript/WebAssembly.

CREDITS
Thanks to David Herberth, Sean Barrett and Omar Cornut for their libraries.

LICENSE
This repository and it's contents are licensed under the MIT License. Any libraries included in this repository are under their own licenses, which can probably be found in their subdirectory.

CobaltXII/tarreria

SYNOPSIS
A Terraria clone written in C++11

DEPENDENCIES
Tarreria requires C++11 or greater and SDL 2.0.9 or greater. Other dependencies such as FastNoise (Jordan Peck), stb_image and stb_image_write (Sean T. Barrett) are included in the repository.

DISCLAIMER
This project and it's author are not affiliated with or supported by Re-Logic. All of the files in the directory Assets/ and all of it's subdirectories are the original work and property of Re-Logic. All other files (excluding those in the directories FastNoise/ and stb/) are the original work of the author of this repository, and were not based off of the source code of Terraria.

LICENSE
This repository and it's code contents are licensed under the MIT License. All images are the property of Re-Logic and must be used responsibly.

CobaltXII/bank_heist

SYNOPSIS
A tower defence game written in Python

ABSTRACT
Bank Heist is a tower defence game. You start with a little bit of money, and you can use that money to purchase traps that automatically shoot at enemies. When you kill an enemy, you get some extra money. This continues as the game progresses and steadily gets harder. Bank Heist provides three levels that save their progress when the game is closed. The objective is to survive for 100 seconds without letting the gold core get destroyed. It was made for a computer science course and got a final mark of 99%.

LICENSE
This repository and it's code contents are licensed under the MIT License.

CobaltXII/cosmos

SYNOPSIS
An OpenCL accelerated n-body simulation written in C++11

ABSTRACT
Cosmos is an OpenCL accelerated n-body simulator. It can be used to render n-body simulations at a high speed.

DEPENDENCIES
Cosmos requires stb_image_write (Sean T. Barrett) and C++11 or greater. All libraries are included in this repository.

CREDITS
Thanks to Sean Barrett for creating stb_image_write. Thanks to the Khronos Group for creating OpenCL. Thanks to Stéfan van der Walt and Nathaniel Smith for creating the palette used in thermal_colormap.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/orb

SYNOPSIS
A tiny raytracer written in C++11

ABSTRACT
Orb started out as a weekend raytracing project, but got a little bigger. It currently supports scene files, diffuse lighting, specular lighting, recursion, reflection, refraction, procedural environments, procedural texturing, supersampling, and gamma correction. Orb was originally named Orb because it could only raytrace spheres, but it can now raytrace ellipsoids, planes, capsules, cylinders and cones as well.

DEPENDENCIES
Orb requires stb_image and stb_image_write (Sean T. Barrett), inih (Ben Hoyt), tinyobjloader (Syoyo Fujita) and C++11 or greater. All libraries are included in this repository.

CREDITS
Thanks to Inigo Quilez for his great articles and intersector functions. Thanks to Cyrille Favreau for his ellipsoid intersection function. Thanks to Brook Heisler for a great tutorial on getting started with raytracing. Thanks to Sean T. Barrett, Ben Hoyt and Syoyo Fujita for their libraries.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/Minesweeper

SYNOPSIS
A Microsoft Minesweeper clone written in C++11

ABSTRACT
Minesweeper is a Microsoft Minesweeper clone written in C++11. From Wikipedia: "Minesweeper is a single-player puzzle video game. The objective of the game is to clear a rectangular board containing hidden "mines" or bombs without detonating any of them, with help from clues about the number of neighboring mines in each field.".

DEPENDENCIES
Minesweeper requires stb_image (Sean T. Barrett), SDL2 and C++11. The dependency stb_image is included in this repository.

CREDITS
Thanks to Black Squirrel and Emmett N. for ripping the original sprites. Thanks to Microsoft for creating the sprites.

LICENSE
This repository and it's code contents are licensed under the MIT License. All of the sprites in this repository are property of their respective owners (probably Microsoft).

CobaltXII/cxcc

SYNOPSIS
A C compiler for x86-64 written in C++11

ABSTRACT
CXCC is a C compiler for x86-64. It supports a strict subset of the C language, and compiles code that uses 64-bit integers for all variables. It's output is unoptimized AT&T assembly, which can be assembled using any assembler. Unfortunately, it does not completely conform to any C standards.

CREDITS
Thanks to Joel Yliluoma for his "How to Create a Compiler" series, Mihai Bazon for his "How to implement a programming language in JavaScript" tutorial, Nora Sandler for his "Writing a C Compiler" series, and Matt Godbolt for his "Compiler Explorer". Extra thanks go to Ruslan Spivak and chekwob.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/logic

SYNOPSIS
An unfinished logic gate simulator written in Java using Processing

ABSTRACT
Logic is a logic gate simulator written in Java using the Processing library for rendering. It implements a node-based architecture which allows logic-gate circuits to be easily and intuitively constructed. It supports primitive gates, such as NOT, BUFFER, AND, NAND, OR, NOR, XOR and XNOR. It also supports useful input nodes, such as HIGH, LOW, TOGGLE, PULSE, CLOCK, and CONST. And for visualization purposes, it supports LAMP and HEX nodes. To keep circuits as simple as possible, it supports buses, which can be 1-, 4-, 8- or 16-bit. Unfortunately, the logic simulation is flawed and needs to be corrected.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/planet

SYNOPSIS
A planet generator and renderer written in C++11

ABSTRACT
Planet is a procedural planet generator and renderer. It uses icosahedron subdivision to create an icosphere, which is perturbed by a three-dimensional noise field which creates basins, mountain ranges and water.

DEPENDENCIES
Planet requires C++11 or greater, OpenGL 3.3 Core or greater, GLM 0.9.9.3 or greater, libnoise 1.0.0 or greater, and SDL 2.0.9 or greater. Other dependencies such as GLAD, khrplatform and noiseutils are included in the repository.

LICENSE
This repository and it's contents are licensed under the MIT License.

CobaltXII/boss

SYNOPSIS
A MS-DOS themed text editor written in C++11

ABSTRACT
BOSS is a text editor written for fun and profit. It is not recommended to use BOSS for serious editing, although it is certainly possible, if tedious. It's source code is meant to be readable, short and functional, so that anybody who wants to modify it for themselves can do so quickly and easily.

DEPENDENCIES
BOSS requires SDL2 and C++11 or greater.

CREDITS
Thanks to Bisqwit for providing the BIOS fonts and the Mario sprite.

LICENSE
This repository and it's contents are licensed under the MIT License.