This repository contains miscellaneous code from throughout my career.
I regularly add to this repo but do not support this code through github--use it at your own risk, and please don't send feature requests or ask for help with it. Some of it was written while I was an undergraduate and may not compile on modern machines.
Some additional open source projects that I do actively support are:
- quadplay Javascript web-based fantasy video game console
- The G3D Innovation Engine C++ 3D graphics library
- Markdeep Document beautification tool
- iCompile Zero-configuration build system
- include.js Cross-domain, cross-browser HTML include tag
- codeheart.js Javascript 2D game library
The code in this repository is organized by topic.
- tachyon - Unity 5.4 starter project for a Pong-like 3D game. Particle systems, events, gamepad, logic, physics, etc. August 2016.
- tachyonVR - Unity 5.4 VR starter project for a Pong-like 3D game. Teleporting, fast rendering, Vive controllers, etc. August 2016.
- oculusSample - Oculus SDK OpenGL Sample. Windows Visual Studio project for initializing and rendering to a DK2 or later HMD using OpenGL. June 2015.
- terrain - Continuous detail GPU Terrain, with multi-scale texturing and a hardware optimized variant of the geo clipmap. April 2014 http://casual-effects.blogspot.com/2014/04/fast-terrain-rendering-with-continuous.html
- normal2bump - Compute bump map (height field/displacment) from a normal map. 2014.
- convertToOBJ - Convert various 3D model formats to OBJ, e.g., IFS, PLY, PLY3, 3DS. 2013
- cgpp3 - Minimal graphics support routines from Computer Graphics: Principles and Practice 3rd edition for loading a 3D model and image, and displaying and saving images. 2012.
- glToScreen - Reverse OpenGL projection from my flipcode article. Pre-2005.
- glProject - Forward OpenGL projection from my flipcode article. Pre-2005.
- 2DOBB - 2D oriented bounding box collision test from my flipcode article. Pre-2005.
- sort - Elegant C++ reference implementations of heapSort, insertionSort, mergeSort, and quickSort. (now maintained in The Graphics Codex). December 2012
- indent++ - Pretty-printer for indenting existing C++ files (handy for printing assignments when grading). 2012.
- getip - Obtain the current machine's IP address. Pre-2005.
- kbhit - Linux/OS X implementation of Windows console
kbhit()
. Pre-2005. - sprintf - Safe
sprintf
(now maintained in G3D asformat()
). Pre-2005.
- cardgen - HTML5/Javascript/CSS playing card template for creating custom decks. May 2015.
- relay - Node.js based relay server and sample application demonstrating its use. 2013.
- treeList - Lightweight selectable and scrollable tree list UI. 2012.
- jsmaze - Recursive perfect maze generator, with wrapping and imperfect options. 2018.
- jsvectorify - Vector operations and operator overloading. 2018.
- jsmenu - Lightweight library for dropdown menus. 2018.
- jsloadmanager - Caching and post-processing for recursive resource loading via XMLHttpRequest/fetch. 2018.
- jschat - Minimal WebRTC video conference reference code
- jsremotegame - Minimal WebRTC Canvas + Audio + Input streaming reference code
- jsscwt - Psychology Stroop test with random task
- javasandbox - ClassLoader for dynamic class reloading, useful for plugins. Executes arbitrary Java code in a protected sandbox. 2008.
- redblack - Red-black Tree implementation and demo. 2008.
- javadoom - Simple Doom-style ray caster written for a data structures course. 2008.
- javarasterizer - Simple rasterizer written for a data structures course. 2008.
- splay - Splay Tree applet and source code. 2003.
- platformer - Full featured character simulation for a 2D platformer. 2017.
- p8particle - Very fast single-pixel particle system for PICO-8. 2017.
- p8sort - Very fast PICO-8 sort. 2017.
- p8escape - Allow lowercase characters in printed PICO-8 strings. This is actually a web utility, not PICO-8 code itself. 2017
- p8controller - Minimal-memory PICO-8 controller image for instruction screens. 2017.
- p8pathfinder - Fully general PICO-8 A* (A-star) and Dijkstra pathfinding in a single function. 2017.
- p8scale - Enhanced HQx 2x, 3x, 4x scaling with transparency and better curves
- infix - Recursive descent infix parser and macro for Scheme. 2003.
- xenon - 16-bit Windows 3.1 video game written in Visual Basic. 1995.