PMD on smartphone

TomTom

June 1th 2023 is when I started at TomTom as an engineer on the Premium Map Display (PMD) team. TomTom is a global player in map making and navigation services and made the bold decision to adopt game technology for their next-generation renderer and luckily for me, they chose Unity3D. I got hired as a Unity3D expert to strengthen the Map Visualisation team with both in-depth knowledge of Unity3D and software engineering and architecture skills. The team I joined consists from a number of people with different backgrounds, some of which built the classic TomTom Map Renderer. This means the average seniority on the team is pretty high, which has been a humble experience to say the least, and still is.

By opting for a game-engine like Unity3D we are able to make otherwise ‘bland’ data look pretty. Unity gives us a lot of high-end rendering solutions for free, like lighting & shadows, reflections, textures / materials, post processing effects and more. What is also great about Unity3D is the speed at which we can prototype and iterate. That’s nothing new to game-developers but for application developers who custom build the previous renderer it is certainly refreshing.

What I like about working in the PMD team is the multi-disciplinary nature of our position in the tech-stack. What I mean by that, we have some up-stream and down-stream dependencies which we need to manage and/or integrate. This means our stack doesn’t just involve C# and Unity3D, but in addition: C, C++, Android, Java, Kotlin, iOS, Swift with different target platforms like Mobile and of course Automotive platforms and Android Auto. Running on one, or multiple displays in parallel. Unity3D’s cross-platform support is really great in this regard as well. And, these automotive platforms are often (custom, embedded) Linux distributions which make for very interesting CI/CD pipelines and integrations problems :D. I like to work across the entire tech-stack and architectural boundaries. Yeah, I’m that guy…

Premium Map Display

The main product I work on is called Premium Map Display (PMD). It’s the next-generation map renderer by TomTom. PMD a custom built renderer where we leverage the Unity3D game-engine for high fidelity graphics on a range of different hardware and software solutions. To get the most performance out of the engine we’ve implemented a highly customized Universal Render Pipeline (URP) and moved some performance critical code into burst compiled c# or native c++ libraries. The DotNet run-time and the Unity3D engine allow for relatively easy integration of native libraries which really helps us push the limits of performance.

From a product standpoint, PMD is build on three major pillars:

  1. High fidelity features and rendering
  2. Productivity and customisation
  3. Delight end users
pmd-pillars

Source: Our presentation at Unite Europe 2024 in Barcelona.

Fidelity and Feature set

To fulfill on the promise to deliver a true next-generation renderer we are using Unity3D as the platform to built upon. This has been a very good choice for many reasons like; a low barrier to entry, a mature 2D and 3D rendering pipeline, short iteration and experimentation loops, cross platform support and much more. Unity also provides great support for custom shaders with a lot of useful tooling around it. For example, we can experiment with the shadergraph and then later decide to adapt the shader to actual LLSL/HLSL. All of the shaders in our application are custom which makes them specialized for their specific purposes and provides us the opportunity to optimize them towards their goal as well.

 

Productivity and Customization

Us, (Unity3D) game-developers are used to being able to edit some code/model/prefab/etc. and hit that play button to observe the result in play-mode in the editor. However, for developers who are actually building the engine itself, this is not so self-evident. By adopting a game-engine like Unity3D, productivity gets a definite boost. The best part of all this, is that UX and designers can also directly use the renderer, which brings us to the customisation part.

The entire PMD renderer is data-driven meaning we are compliant by what’s called the MapLibre Style Specification, which is essentially a giant JSON file describing the layers of the rendering stack. Imagine CSS for a map renderer. So, when we get data from some source, may that be on the web or otherwise, the style is applied to the data and then rendered to the screen. TomTom has built a great tool called MapMaker to create such styles. On top of that we allow for an additional feature set to be customized in Unity3D directly, like camera behaviours while browsing the map or driving, post processing effects and much more.

 

Delight end users

There are several factors I think delights end users. First of all is to upgrade 2D to 3D rendering. Maps have inherently been 2D, including the data that is used to generate them. Making this 2D data look great in a 3D space can be difficult and tricky. By using elevation models (heat maps) we are able to extrude parts of the map to generate buildings and mountenuos terrain. We’re also adding custom 3D models for (well known) landmarks on the map like central stations, government buildings and of course, the TomTom offices.

Second is the fact that we can leverage post-processing effects in our rendering pipeline. This has been really unheard of in the map rendering space. By applying just that little bit of bloom, fog, tone-mapping, vignette or more we can really create some magnificent renders of the map.

Third, something very simple in a game-development sense; surfaces and material properties. Another feature game-developers often take for granted. But for map rendering its fairly new. Adding specific shaders and material properties to surfaces can make things really pop out of the map.

And lots of additional features like custom models for vehicles, vegetation, weather effects and environment lighting.

 

My Role within PMD

My role on the PMD team is mostly oriented towards the software design of the application. This involves fundamental architectural components, key features and making sure they fit nicely within the Unity3D philosophy. I’ve mentioned it multiple times on this blog, but Unity3D and Software Architecture sometimes don’t play nicely so as an engineer you really need to put some effort into it. Another fact is that we have a very specialized implementation in Unity3D based on a data-driven approach and custom render pipeline. This makes monitoring the architecture all that more important.

I also mentioned I like working across the entire stack so I’m involved with integrating PMD in different applications. This ranges from Android to automotive platforms rendering to one or multiple displays at the same time. Sometimes I’ll also have to dive into the Java/Kotlin and or c++ source code to add feature or squash some bugs. I’ll also dive into our CI/CD pipelines from time to time. I really like the multi-disciplinary role. I feel I can make the most impact that way.

New-York
in-vehicle-display
New-York with fog

Conferences and Demos

Because of my long history with Unity3D I’m often selected to work on projects for important conferences where TomTom has a presence. I’m able to quickly get something running conforming with the quality standards. I’ve worked on a couple over the past year and a half most notably; CES 2024 and Beijing Motor Show.

 

CES 2024

For CES 2024 I’ve working on numerous demo’s concerning TomTom digital cockpit, Orbis Maps and generally the integration of PMD. What’s so great about these demo’s is that; it’s not just smoke and mirrors. Its the actual alpha / beta releases running on target hardware (or simulators) at the stands. So these ‘demos’ are actually fully integrated tech-stacks. Which is awesome, but at the same time can also be very difficult to manage since we might be dealing with unfinished systems and components. This is what sets TomTom apart from competitors in the space. No fakes, real stuff! I’m quite proud of that.

Check this link for the official post for our CES presence. The short video shows a real-time rendering of the state of the PMD product at that time.

Beijing Motor Show

For Beijing Motor show I spend a lot of time upgrading the CES demo we’ve made for Orbis maps. Orbis is TomTom’s next-gen Map Data platform which aims to make the world’s first real-time map. For the demo we’re using PMD as map renderer which has been a great success. In this demo we’ve added localisation options and added some new locations since they need to be available offline because ‘one does not simply rely on internet access at a trade show’. One of the locations we added was Paris because it’s very recognizable and because of the Olympic games in 2024. We also made the entire demo configurable through JSON and CSV files which makes extensions to the demo a lot easier for future conferences.

Check this link for the official post for our Beijing Motor Show presence. The short video below shows a real-time rendering of the custom project demonstrating Orbis maps.

Unity3D Unite Europe 2024, Barcelona

One of the highlights for our team specifically is that TomTom was invited as a speaker at Unite Europe 2024. We also got nominated for Best Embedded project for the Unity Awards. We didn’t win, but being asked to speak there and at the same time nominated is a humbling experience.

Nonetheless, I think we delivered a great presentation which was presented by three colleagues of mine. Our VP (total bad-ass) and two members of the PMD team, one being in design and UX and a hardcore developer. The theme of the presentation was a bit of history concerning map making and rendering, then a technical and design deep dive and ending with some interesting tidbits like; what’s in it for the future and our internal marketing team using PMD to make renders for marketing materials. Its so awesome to see that PMD is used for that as well since it’s actual real-time videos and in-game renders (instead of some fake, CGI renders that took ages render on some render farm). Again, it’s not just smoke and mirrors.

Please check out the video below for the full presentation. It will not disappoint.

CES 2025

To be continued…