Arnon Marcus

I am a senior software engineer in the realm of 3D Computer Graphics with over a decade of experience.

I have always been passionate about the magic of generating realistic images using software. Originally a lighting and rendering artist, I moved to software engineering very early on, to get more intimate with the lighting process.

I have been tracking the evolution of interactive real time graphics for many years with great excitement. I have written various interactive/real-time software rendering applications from scratch, focusing on code simplicity and ease of use (most of them written in C and in C++ but some written in Odin or TypeScript).

I've had the pleasure and honor of working at top Visual Effects studios like Weta Digital, where I have collaborated with talented and highly skilled artists and engineers, to produce the most amazing and realistic works of art.

My professional focus has always been on producing high performance software that is robust, reliable, and a pleasure to read and maintain. I am a strong believer in the importance of clear and high quality communication within and across teams for achieving the best results possible.

So, if you want to work together and see more of that, you know where to find me.

Skills:

Strong foundation in Ray Tracing and Rasterization writing software implementations from scratch.

Strong foundation in 3D math and Light Transport

Low level data structures and algorithm in C and C++ with strong emphasis on performance

Artist-centric UX for DCC, scene analysis and batch-processing of assets and shots

DCC Plugins and scripting: Scene Assembly APIs and automation of render-pass creation

Python APIs and libraries for procedurally generating graphs of simulation tasks

CUDA, OptiX, Vulkan, Metal, OpenGL, Maya (C++/Python), Mudbox (C++), 3DSMax (C#/MaxScript)

Experience

Research and Education (2019+):

As part of my graphics programming studies I authored educational content on graphics programming (see my YouTube channel). I have also written a variety of render engines from scratch, some in pure software and some hardware accelerated using graphics APIs:

Ray Tracing (Real Time) and Path Tracing (Unbiased):
- PBR: Cook/Torrance/Sparrow BRDF
- Offline: Multiple Importance Sampling (BRDF/NEE)
- Offline: Russian Roulette Ray Termination
- BVH Traversal: In-order, sorted, with TLAS/BLAS
- BVH Build: Sweep SAH / Locally-Ordered Clustering
- Intersection: Triangle, Sphere, Box and Tetrahedra
- Real Time: Analytic area lights and volumetric lights
- Real Time: Geometry/lights transformed dynamically
- Real Time: Optional hardware acceleration via CUDA

Ray Casting (Pseudo-3D, pure software):
- Ray/Edge intersection: x5 times faster than DDA
- Texturing (Mip-Mapping, Bi/Tri-Linea filtering)
- Walls and Columns with dynamic collision detection

Rasterization:
- Hardware acceleration using Vulkan and OpenGL (C++)
- Software implementation with shaders and texturing (C, C++)

Weta Digital (2015 - 2019):

Weta Digital's Creatures department uses a simulation-driven pipeline to generate believable motion of muscle, fat, skin, hair, fur and cloth. Highly automated for a massive throughput of shot assets with procedurally generated simulation graphs.

As part of my role there, I participated in a ground-up overhaul of the entire creature simulation pipeline, dramatically improving its robustness, performance and features.    I have also directly improved performance of some key sub-systems by initiating and implementing highly optimized solutions:
- New rule-based system for simulation settings with cascaded overrides (x20 faster)

- Optimized automated LOD determination driven by a screen coverage heuristic
- Dependency conflict resolution using graph analysis

Snowball Studios (2006 - 2015):

Starting in lighting and rendering, I initiated a change that turned the studio's main show from being behind schedule to being ahead of schedule, by coming up with a more efficient rendering scheme.

This led to my role as pipeline supervisor as the studio was taking on larger projects with thousands of shots and hundreds of assets, demanding a dramatically increase in the studio's overall content creation throughput. After overhauling the pipeline with a new Scene Assembly software stack which improved loading times up to x15 times, I wrote a batch processing automation system using it. The system was modular and adaptable and quickly gained wide adoption throughout the studio's production departments, leading it to complete much larger projects on time at lower costs.

I then formed the studio's R&D department to continually evolve the studio's software. I recruited additional staff, and we developed an end-to-end production management system that supported all the studio's productions from first bid to final delivery.