Description:
Autodesk's Entertainment & Media Solutions is hiring a Principal Software Developer to join the Arnold Core Rendering team. You'll report to our Senior Manager of Software Development and your contributions will help our users to continue making award-winning VFX and animated films, episodic shows, game cinematics, motion graphics, music videos, advertisements, architectural and product visualizations, synthetics, and much more. The core team focuses on the Arnold renderer library, which handles all aspects of CPU and GPU rendering, such as path tracing, shading, mesh subdivision and displacement, texturing, volumes, and everything else required of a standalone rendering library. You would be expected to become an expert in at least some parts of the renderer. A good overview of the kind of work involved can be seen in our 2018 Transactions on Graphics Journal paper: https://www.arnoldrenderer.com/research/Arnold_TOG2018.pdf.
As a core principal developer, you are expected to document and communicate your Arnold renderer changes to the Arnold plugin team so that they can properly integrate and expose your contributions for use in various DCCs such as Maya, 3ds Max, Houdini, Cinema 4D, and Katana.
Responsibilities
- Investigate new algorithms that may improve rendering speed, memory usage, numerical precision, image quality, and/or create and improve shaders.
- Benchmark the renderer and identify bottlenecks with the aim at optimizing performance.
- Design, maintain, and extend APIs for interoperability between rendering subsystems as well as external 3D applications.
- Write robust, readable, maintainable, and extensible code that can last for years and won't scare other developers.
- Refactor legacy code. Produce both unit tests and developer documentation for any new code.
- Debug existing subsystems, identify problem areas in the code, provide both quick temporary workarounds and high-quality, lasting solutions as needed.
- Debug production scenes and communicate findings and workarounds with both customers and other developers.
Minimum Qualifications
- 8+ years of experience developing large scale commercial software and in a related industry (gaming, VFX, film, or other graphics related industry)
- Advanced C++ programming and debugging skills
- Experience taking initiative, being a point of contact for the solutions you're developing
- Proven troubleshooting skills with users or customers
- Experience with CUDA or other GPU programming tools.
- Experience contributing to open-source projects, not necessarily rendering-related will be greatly appreciated.
Preferred Qualifications
We appreciate experience with one or more of the following areas
- Experience writing integrators, shaders, ray tracing intersectors and acceleration structures, mesh subdivision, and anything else you might find in the PBRT book
- Extra points if you read the PBRT book long enough to have acquired multiple editions
- Experience writing production quality shaders
- Strong mathematical background
- Advanced multi-threaded programming skills: can write lockless algorithms and instinctively writes code that avoids false-sharing
- Experience writing low-level code, from assembly to SSE intrinsics
- Ideally have written a path tracer in OptiX
- Experience integrating Open Shading Language into a renderer
- Experience working with the OpenVDB library for simulating and rendering volumes
- Knowledge of color theory. Familiar with OpenColorIO
- VFX/animation production experience