I am Markus, a PhD student in the Computer Graphics Group at TU Berlin under the supervision of Marc Alexa, where I am working on efficient differentiable rendering and its applications in graphics, 3D vision, and machine learning. Before joining TU Berlin, I was working on multi-view 3D reconstruction of humans in the Immersive Media and Communications Group at Fraunhofer Heinrich Hertz Institute.
I have completed my Bachelor's and Master's in Computer Science at TU Berlin with a focus on computer graphics and vision.
I am passionate about real-time rendering ﹘ my initial motivation for learning programming was wanting to create video games (C#/XNA then C++/Direct3D). So maybe it is unsurprising that I enjoy performant code until this day and much of my research is inspired by real-time graphics.
Differentiable Rendering of Parametric Geometry
Markus Worchel, Marc Alexa
ACM Transactions on Graphics (Proceedings of SIGGRAPH Asia), 2023.
Differentiable Shadow Mapping for Efficient Inverse Graphics
Markus Worchel, Marc Alexa
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2023.
Official Version Author's Version (with Appendix) Project Page Code
Multi-View Mesh Reconstruction with Neural Deferred Shading
Markus Worchel, Rodrigo Diaz, Weiwen Hu, Oliver Schreer, Ingo Feldmann, Peter Eisert
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2022.
Official Version Author's Version (with Appendix) Project Page Code
Hardware design and accurate simulation for benchmarking of 3D reconstruction algorithms
Sebastian Koch, Yurii Piadyk, Markus Worchel, Marc Alexa, Claudio Silva, Denis Zorin, Daniele Panozzo
Neural Information Processing Systems (NeurIPS 2021) Track on Datasets and Benchmarks, 2021.
Ernst Grube: A Contemporary Witness and His Memories Preserved with Volumetric Video
Markus Worchel, Markus Zepp, Weiwen Hu, Oliver Schreer, Ingo Feldmann, Peter Eisert
Eurographics Workshop on Graphics and Cultural Heritage (EG GCH), 2020.
Some very old and more recent personal projects with a little background and history.
Python bindings for xatlas (2021-)
C++, Python
An early prototype of our CVPR 2022 reconstruction method needed texture mapping in Python so I created bindings for the xatlas library and made them public. While our final method did not use texture mapping I am truly amazed by how useful the bindings were for the community in software (e.g. trimesh and nerfstudio) and research projects (e.g. nvdiffrec, Text2Tex, and 3D Paintbrush).
SVBRDF Estimation using a Physically-based Renderer (2019)
Python, PyTorch, TensorFlow
As part of a computer graphics project, I combined Tzu-Mao Li et al.'s work on differentiable path tracing with Valentine Deschaintre et al.'s work on image-based material capture. This was my first experience with PyTorch and TensorFlow. The initial focus was only material capture but my supervisor pointed me to differentiable rendering, which has me hooked ever since.
Rendering Layered Materials (2015)
C++, Python
As part of a computer graphics seminar, a colleague and I implemented Wenzel Jakob et al.'s paper A Comprehensive Framework for Rendering Layered Materials. It presents an approach for practical and efficient rendering of multi-layered materials by precomputing the corresponding BSDFs. I think, this was my first exposure to physically-based rendering and path tracing.
Fluid 2D (2014, 2018)
C++, CUDA, Direct3D 11, HLSL
After an analysis course, I got curious about differential equations and simulation, which led me to Jos Stam's paper on real-time fluid dynamics. I implemented it on the CPU but planned a GPU version with compute shaders (which never happened). In 2018, after learning CUDA, I finally ported it to the GPU. Funny enough, almost ten years after the first prototype, I actually met Jos at a conference.
Treibholz Engine (2013-2015)
C++, Direct3D 11, HLSL, Lua
I am a big fan of the classic LucasArts point-and-click adventure games so I set out to create an adventure game engine like SCUMM or GrimE. This was clearly out of my league (I started from scratch multiple times and the engine was awfully slow), but in hindsight it was a valuable lesson on many things, simply learning by doing: rendering with Direct2D and Direct3D, scripting an engine and the "game content" using Lua, building game entities with a component-based design, etc.
3D OBJ Viewer (2013)
C++, Direct3D 11, HLSL
A simple 3D viewer for triangle meshes stored as *.obj. This was my learning project for the Direct3D 11 API, closely following the Rastertek tutorial. Very obviously, the feature set only reached somewhere around part 11/49 of the Rastertek tutorial but the PNG reader for loading textures was hand-made (I guess it's normal to get sidetracked).
Console Engine (2012)
C++
An attempt of turning the Windows console to a canvas for interactive applications, notable as it was my first larger project in C++. Supported arbitrary placement of "pixels" and text, mouse and keyboard input, and the rendering was double buffered using two console screen buffers. I remember long nights of digging through the Windows console API documentation...