apoorvaj.io
about

Apoorva Joshi

Senior graphics programmer at Unity

email, github, twitter

Publications

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

Blog

Aug 2020 Convolution and probability theory
Jul 2020 Render graphs
Mar 2020 Aliasing in computer graphics
Jun 2019 Alpha compositing, OpenGL blending and premultiplied alpha
Feb 2019 Constructing a cubic Bezier that passes through four points
Feb 2018 Efficient Rendering of Linear Brush Strokes—my graphics paper explained
Sep 2017 Creating a modern OpenGL context
Mar 2017 Exploring bump mapping with WebGL
Nov 2016 Hitchikers Guide To The GDB
Sep 2016 Exploring calling conventions with x86 assembly
Aug 2016 Loading OpenGL without GLEW
Aug 2016 Native UI is dead, long live native UI
Jul 2015 Building a Fast, Modern Image Editor

Professional experience

Aug 2020 - Ongoing Unity Senior graphics programmer
Graphics, optimization and other secret stuff
May 2018 - Jul 2020 Playdead Graphics/systems programmer
Graphics R&D, engine modification, GPU/CPU optimization, artist tooling
Jan 2016 - Mar 2018 NVIDIA System software engineer, GPU profiling
Full CUDA profiling stack—driver, GPU performance monitoring libraries, profiling CLI & GUI (nvprof, Visual Profiler, Nsight Compute)
Aug 2014 - Jan 2016 - Independent game developer
Physics-based puzzle game shipped on Android and iOS
Jun 2013 - Aug 2013 Microsoft Intern
Bing search engine ingestion

Personal projects

papaya.io Browser-based image editor built with Rust compiled to WebAssembly, Svelte for the UI, and Firebase for storage and authentication
EasyTab Single-header drawing tablet library that supports Windows and Linux