A 3D rendering engine supporting modern graphics features such as physically based rendering, volumetric lighting and realtime global illumination. It works on older hardware (GTX 10-series minimum). It uses a deferred, GPU-driven rendering pipeline with support for large numbers of shadow-casting local lights.
Continue reading “StratusGFX Realtime Rendering Engine [C++, OpenGL]”Virtual Shadow Maps [C++, OpenGL]
A GPU virtual memory system for computing extremely high resolution shadows while maintaining a fixed memory budget and supporting data caching. Here is a link to the full tech writeup.
Cascade selection depends on distance to camera. Each square is a virtual page from a certain cascade that has been mapped to a piece of physical GPU memory.
Continue reading “Virtual Shadow Maps [C++, OpenGL]”Interactive Software Raytracing [C++, GPU Compute]
The goal was to enable ray traced lighting by utilizing GPU compute shaders so that specialized RT hardware would not be required. Support for directional lighting and emissive surfaces while maintaining interactive frame rates was accomplished.
Peaches Programmable Discord Bot [Go, PostgreSQL]
Peaches is a programmable Discord bot written in Go. It is used to create custom slash commands and scripted actions that trigger based on specific server events. It exposes a backend database for scripts to use for storing, retrieving and manipulating server-specific data. There are currently more than 200 servers that use the bot.
Documentation: https://www.peaches-bot.xyz
Open Source Contributions: YAGPDB [Go]
Contributed the following to the official YAGPDB repository via pull requests:
- Added support for threads and forum posts (including tags) from custom command scripts
- Added improvement to the AutoModerator system to be able to detect duplicates across channels
Virtual Machine written in Go (GVM)
A software virtual machine with custom bytecode instruction set written entirely in Go. It is a hybrid stack and register design with support for a minimum of 16KB RAM, 32 general purpose registers and 8 special reserved registers. It allows for up to 16 virtual devices and 64 separate types of interrupts.