One thing I can recall was that during development we had some issues with mid-distance rock faces (say, at around the 300m distance mark). The faces were made out of thousands of individual rocks that looked super-detailed up close. In the far distance, they were reduced to a height map, which is cheap to draw and looks identical far away. At the mid-level, they were collapsed into groups, but we had many of them on screen at the same time, and they could still be 10-20K triangles because they were just merged versions of low-LOD rocks. Many of the triangles were unnecessary, because they penetrated into the ground or stuck with each other, and they were becoming a real performance bottleneck. In the end, somebody did an experiment where they turned the rock faces into a 3D voxel structure, traced a new low-poly mesh over this voxel structure and then re-projected the material information of the landscape back onto it. We already had the material information from our radiosity voxel lighting bake. The resulting mesh was both cheap, cost little memory, and looked much better.

There are many more of these stories – performance optimization takes a few good months of the entire project!

Using algorithms

MICHIEL VAN DER LEEUW: The main areas where we used more and more procedural content generation were in the landscape itself, in the placement of vegetation, in the environment sounds and in the shaders. Nature itself is procedural; it’s built out of simple rules which are applied at a very large scale, so it’s very amenable to procedural generation. We also created a system for storing data for input to procedural systems, so-called “World Data Maps”, so that each shader, placement system, or sound could query the current humidity, temperature, distance to nearest river, etc., and make decisions based on that. We’d spawn fireflies when the player was close to bushes at night. We’d spawn salmon when the player was in the river, swimming in the opposite direction of the river at various elevations.

80 Level: If you are interested to learn more about the proceduralism in Horizon Zero Dawn, don’t forget to check out this talk by Jaap van Muijden. There’s also an official post about GPU-based procedural placement in Horizon Zero Dawn on the company’s official website.