apoorvaj.io
about, cv
apoorvaj.io

Apoorva Joshi

graphics/systems programmer at Playdead

email, github, twitter


Publications

14-Feb-2018Efficient Rendering of Linear Brush Strokes - Journal of Computer Graphics Techniques

Blog

01-Feb-2019Constructing a cubic Bezier that passes through four points
02-Apr-2018Single-Header Packer
14-Feb-2018Efficient Rendering of Linear Brush Strokes—my graphics paper explained
25-Sep-2017Creating a modern OpenGL context
04-Mar-2017Exploring bump mapping with WebGL
30-Nov-2016Hitchhiker's Guide to the GDB
04-Sep-2016Exploring calling conventions with x86 assembly
20-Aug-2016Loading OpenGL without GLEW
13-Aug-2016Native UI is dead, long live native UI
30-Dec-2015Alpha Compositing, OpenGL Blending and Premultiplied Alpha
03-Jul-2015Building a Fast, Modern Image Editor

Work

At Playdead, I work on graphics, GPU and CPU optimization, and tools targeted at artists.

At NVIDIA, I worked on CUDA profiling tools, including nvprof, the NVIDIA Visual Profiler, and the CUPTI library. This work involved working on the full GPU stack—silicon, drivers, profiling libraries, GUI.

My open-source work includes EasyTab, a single-header multiplatform library for drawing-tablet input, gl_lite, a single-header lightweight OpenGL loader, and tiny-jpeg-rs, a ported JPEG-encoding library written in the Rust language.

Papaya is a cross-platform image editor that I've been working on for a long time. It is built in OpenGL and C99. I've periodically spun out useful code from this project into smaller libraries and research.

Socioball was my first commercial game. I was the solo programmer on the two-person team that made the game. I began work on the shippable version—which is built in Unity—during my Bachelor's degree. Before this version, I had built a prototype of the same game in C# and XNA, including a custom deterministic game-specific physics engine.