Jonas Hack

Code

Feel free to check out more my

Github

This page shows a few non-game projects and neat code snippets, which are part of unreleased games.



2D GI Game Engine

2026

Made with Vulkan

Made using Vulkan

Made a Team

2 Team Members

Duration

1 Month


Graphics Programming

Raymarching

Radiance Cascades

Global Illumination

Game Engine

Read More

The Nox Game Engine is a 2D engine with Global Illumination using Radiance Cascades.
The engine is fairly complete, including scene & resource management, GameObjects and multiple demos. My contribution was mostly in the rendering, specifically the lighting. On a modern computer, the engine calculates full global illumination in screen space at up to 100 fps.

The lighting consists of the following stages:

  • GameObject Registration

  • Transfer Stage
    • Data Packing
    • Automatic Buffer Updates

  • G-Buffer (Deferred)
    • Batched & Culled Tilemap
    • Instanced Sprites

  • Light Preparation
    • Jump Flood Algorithm
    • SDF Creation
    • Build Cascades

  • Light Composition
    • Merge Cascades
    • Tonemapping


Click on Screenshot to view



Pathtracer

2025

Made with Vulkan

Made using Vulkan

Made in a Team

2 Team Members

Duration

1 Week


Graphics Programming

Pathtracing

Physically Based

Hardware Accelerated

Read More

A PBR Pathtracer (on the GPU, supporting Vulkan ray tracing extensions). The goal of the project was to deepen my understanding of physically-based rendering. Even though this is a team project, I was entirely responsible for the lighting calculations.

It supports:
  • Sphere Intersection
  • Plane Intersection
  • Torrance-Sparrow BRDF
  • Importance Sampling
  • Sky-Radiance
  • Temporal Denoising

Click on Screenshot to view



Volume Pathfinding

2025

Made with Unity

Made using Unity

Made alone

Solo Development

Duration

Weekend Project


Pathfinding

Multi-Threading

Tool Dev

Enemy AI

Read More
This project covers the Creation of and Pathfinding on Volumes. It is an effort to supplement Unity's built-in pathfinding solution, enabling support for airborne NPCs.

Volume Creation


The first task is to analyze and annotate the scene's navigable areas. The naive approach of scene voxelization serves as a good starting point, but scales badly with large scenes. To mitigate this, I combine adjacent voxels into larger AABB Volumes, in a process similar to greedy meshing. This results in a volume count reduction of 90%, bringing a massive performance improvement. Afterwards the volumes are tested for intersections and the adjacency matrix is filled accordingly.



Pathfinding


The pathfinding itself follows a rather tried-and-tested approach. Each navigation agent supplies requests to a navigation manager, which then buffers and hands them off to a worker thread. On completion, it invokes callbacks with the resulting path. The chosen algorithm is the commonly used A*. I paid special attention to minimizing garbage collection overhead. All data containers are allocated once at the beginning and then only cleared, not destroyed, for each request.


Click on Screenshot to view



Stylized Rendering

2024

Made with Unity

Made using Unity

Made alone

Solo Development

Duration

Weekend Project


Post-Processing

Compute Shader

Tool Dev

Texture Filtering

Read More
This project is an experiment in painterly art-styles using Post-Processing & Pre-baked Texture Filtering. I explored two approaches.

Post-Processing


I created multiple shaders and integrated them into Unity's existing Volume-based Post-Processing Stack. This way, the effects can be used and tuned using the workflow artists are already familiar with. When combined, the effects turn any game into a painting, though with a noticeable performance impact.



Implemented Effects:
  • Cell Shading
  • Kuwahara Filter
  • Oil Paint Filter
  • Outline

Texture Filtering


In the area of artistic stylization, another interesting approach has recently become popular: Applying brush strokes to the normal map, in order to create areas of solid light in the final render. This off-loads the effort from the game engine entirely onto the arists. It is usually a laborious process, where all textures of a material have to be modified identically, in order to create a convincing effect.

I automated this, by extending the classical Kuwahara filter, to accept multiple textures as input. When calculating the variance inside a quadrant, I take all the textures into account and then choose the same quadrant for all textures. This way, all the textures of the material have identical brush strokes, generated using a compute shader at the click of a button. Admittedly automated image filtering cannot match manual artistic intent, but it serves as a great starting point to be refined by an artist. The tool is not meant to stand on its own, but to be a part of a larger workflow, to be a time saver.


Click on Screenshot to view



Light Probe Placer Editor Tool

2023

Made with Unity

Made using Unity

Made alone

Solo Development

Github

Available on Github

Duration

Weekend Project






View on Github

Tool Dev

Editor

Level Design

Lighting

Read More
This script is an Unity Editor Tool for Easily Placing Lots of Light Probes use.

Placing each light probe of a group by hand is tedious and boring.
This tool automatically places them in a grid pattern, within a box, optionally avoiding intersections with scene geometry.
This tool doesn't do much, but it helps speed up my workflow significantly. The current script is available on Github.

This Portfolio Website

2023

Made alone

Solo Development

Github

Available on Github

Duration

Ongoing Project


Portfolio

Blog

Website

Web Dev

UI/UX

Read More
I made this Portfolio Website entirely in HTML & CSS, not only without any frameworks, but also without any JS.

Its main purpose is to showcase my projects and display my resume, whithout any fancy design shenanigans getting in the way. That said, I still aimed for a modern style.

The current script is available on Github.

HOSAS Input Management

2023

Made with Unity

Made using Unity

Made alone

Solo Development

Github

Available on Github

Duration

Weekend Project






View on Github

Input

Joystick

HOSAS

Fligh Sim

T16000M

Read More
This script automatically differentiates between left- & right handed flight stick inputs for HOSAS use.

By default, Unity does not recognize the difference between left- and right handed flight sticks. There is however, a suitable system for XR-Controllers in the form of Configuration Usage Tags.
These scripts automatically assign a side to Thrustmaster T16000M sticks by reading the value of the little switch on the bottom.
Additionally, the sides get updated automatically at runtime, should the switch be flipped again - or another device be plugged in.

The current script is available on Github.

Granular Audio Synthesis

2022

Made with Unity

Made using Unity

Made alone

Solo Development

Github

Available on Github

Duration

Weekend Project






View on Github

Audio Programming

Granular Synthesis

Signal Processing

C#

Read More
This script uses granular synthesis to dynamically mimic engine sounds.

More specifically, it makes use of granulation of sampled sound. The script doesn't speed up or pitch shift the input sound, but traverses it based on engine RPM.

It separates an input sound into smaller sections called grains and adjusts them to avoid clipping. During runtime it chooses a grain, which resembles the desired RPM of the virtual engine. To make the granulation less noticeable, grains are cross-faded (through so-called envelopes) and some variation (in the form of slightly randomized RPM) is added.

There are lots of opportunities for improvement, as this is just a small experiment. Specifically I'm looking into Dave Stevenson's comprehensive explanation of adjusting grain boundaries based on analysis of the frequency space.

The current script is available on Github

SusOp

2021

Made a Team

2 Team Members

Github

Available on Github

Duration

Weekend Hackathon


View on Github

Network Monitor

Sustainability

power consumption

Java Swing

UI/UX

Read More
SusOp

is a project I made with a friend for the hackaTUM 2021 hackathon.
It is a climate conscious network monitor, which keeps track of the CO2 produced by the devices running in the LAN. It is a neat little piece of software meant to increase climate change awareness.
My main contributions were in UI/UX and general desktop development, while my buddy handled networking.
Code available on Github.


Click on Screenshots to view



Classical Raytracer

2021

Made alone

Solo Development

Duration

Weekend Project


Graphics Programming

Software Raytracing

Linear Algebra

Java

Read More

A software raytracer (running on the CPU using Java). It supports multi-threading, spheres, skydomes, planes and phong-lighting.
I made it in order to manually explore the mathematical principles behind the methods that shading languages such as glsl and hlsl provide by default. This experiment serves as an interesting contrast to my latest projects on light simulation.


Click on Screenshot to view




There are a bunch of projects, I felt were too outdated or too small to list here. Some of them can be found on github.