Senior Rendering Engineer C++ for 3D Map
2GIS Maps is heading for immersion: we want to create not just a beautiful, but an unprecedentedly realistic map. If you are 'on fire' about graphics and want to participate in creating a new map, we are waiting for you!
About the project
The 3D engine is a large and complex project containing over half a million lines of high-performance C++20 code, and also actively interacts with modern GAPIs: Vulkan/Metal/OpenGL.
We build this code using CMake, with recent versions of compilers (Clang, GCC, MSVC) in various IDEs – whatever is more convenient.
We deliver our product as a cross-platform library with a documented API, and also provide a set of utilities for processing and preparing cartographic data.
We also don’t forget about the quality of our product. We write and maintain various tests: from simple unit tests to complex e2e screenshot tests run on a farm with real mobile devices.
The team's main tasks are related to processing and rendering a large number of 3D objects — geometry generation, writing shaders and effects, working with map binary data (vector tiles) in a proprietary format.
Main tech stack
- C++20, Python 3, CMake — for development and tests.
- Jira, Bitbucket Stash, and Jenkins – for tasks, reviews, and CI builds.
Tasks
- Right now, we are actively developing graphical product features for the map: various object animations, terrain, realistic roads, interchanges, and tunnels.
- Also actively experimenting with the implementation of various visual effects. We study state-of-the-art approaches in graphics and evaluate their applicability to our product.
- We don’t forget about non-functional requirements — we work on improving the performance of the engine and its graphics subsystem.
You will work on
- Preparing and rendering new cartographic data.
- Implementing various graphical effects.
- Improving interaction with modern graphics APIs (Vulkan, Metal, OpenGL).
- The performance of the graphics subsystem and the 3D engine as a whole.
- Data compression (including creating and optimizing proprietary data storage formats).
- Generalization and simplification of data.
- Developing algorithms and data structures that are performant on various mobile devices.
- Improving and maintaining our proprietary map styling description language.
We expect you to
- Have 5+ years of experience with modern C++.
- Have experience with graphics APIs (Metal, OpenGL, DirectX, Vulkan).
- Have experience writing shader programs.
- Know basic algorithms and data structures, including experience with computer graphics algorithms.
- Join the development of complex software solutions — from elaborating and discussing requirements to designing architecture and writing high-quality code.
- Be able to work in a team — communicate openly and discuss your tasks, find the best solutions together with the team.
Would be a plus
Experience in mobile or cross-platform C++ development, development of multithreaded applications, and skills in performance measurement and profiling of graphics programs.
Furthermore
- 2GIS is an accredited IT company.
- If you want to work in a hybrid format, we have offices in Moscow, St. Petersburg, two great offices in Novosibirsk. You can also work 100% remotely.
- The work schedule is not the main thing. Some start at 9, some at 11, and some — whenever is convenient for them and the team. The main thing is to complete tasks on time and be in touch with colleagues.
- Of course, a fully official white salary, the amount is discussed at the interview, there is no ceiling.
- There is voluntary health insurance (DMS), an in-house therapist, neurologist, medical consultant, and other IT perks.
- If you want to share your experience, we are all for it — we will help with conference presentations and articles for Habr.