Mirage 3.4 is out today!
The time has finally come. Mirage 3.4 is out today! The highlight of this release is the new terrain engine.
It’s been a while, hasn’t it? This has probably been the longest time between releases, but there’s a good reason for the delay!
Mirage 3.4 comes with a new terrain engine completely rewritten in Rust for top-performance. I’ve codenamed the new engine Pangu, for the creator of the world in Chinese mythology. He separated the Yin and Yang with a swing of his axe, and then split the heavens and the earth with his own arms. Pretty cool, huh?
Performance isn’t the only thing the new engine is bringing. Terrains can have any resolution now (no more power-of‑2 limitations), and they can even be rectangular. Height now works properly too. You can move and rotate the generated terrain with the offset and rotation settings now. Offset can also be used to make tiled terrains, which combine into a larger terrain (I’ll automate this in a future release!).
The Scale setting lets you control the real-world size the terrain represents. It can go from a small patch of land to a large area.
My favorite new feature though is the Live Mode. Now we can tweak settings and see the changes in real time. This is the first step towards fully interactive terrain generation with viewport widgets and all. Also, the default presets have been updated for the new engine and there’s plenty of other bugfixes around too.
While Mirage now uses a binary module, the code remains 100% GPL. You can find the source code in the pangu_src
folder of the addon.
Terrain Types
After lots of trial and error I found that using a single algorithm for terrains isn’t enough to cover all possible terrains. Unless I added a trillion options and made the UI look like a flight simulator.
The better solution is Terrain Types. These types relate to real world kinds of terrains. Each one has its own algorithm as well as different settings unique to it.
This version includes Mountainous and Smooth Hills. The first generates alpine terrains, while the second one creates rolling hills. I plan on expanding on this concept in the future with more types like desert, canyon and more. Even including a custom terrain type where you can pick and mix different noises to create the terrain.
New modifiers
Terraces
The new Terraces modifier replaces the strata modifier, as well as the plateau and sea floor settings. You can now decide how many terraces to generate in the terrain and at which height they will happen. By changing only the highest terrace you can replicate plateau, and by setting the lowest you can do the same for sea floor.
Data maps
In previous versions Mirage would generate vertex groups for slope and height automatically. These were used by the distribution system to control where objects were placed. We don’t do this by default anymore.
This makes terrain generation faster, but if you want vertex groups or vertex colors you can enable them using this modifier. Also, if you don’t generate them but later decide to add a distribution layer both vertex groups will be generated automatically.
Seamless
This modifier changes terrains borders so they can be tiled. It works by taking opposite edges and interpolating between them, then the result of that interpolation is set as the new edges. The amount of interpolation can be controlled with the transition setting.
Others
The edges settings are out. Island has become a modifier, while radial smooth is now part of the smooth falloff modifier. The smooth linear modifier also has a new start setting where you can define at which point the smoothing effect goes to zero.
Fluvial erosion is now called Water Erosion and has a much better UI. You can also have springs as a source of water besides rain. Springs are a constant source of water that can carve rivers or paths through the terrain.
Thermal erosion also got a better UI, it also looks a bit better than before (IMHO!).
New materials
The old procedural materials have been replaced by images now. While you can get really amazing results with procedural textures I’ve found the performance degrades real quick when you make terrain materials. And in the case of Eevee you can end up hitting the memory limit of your GPU. The only remaining procedurals are masks.
Botch the materials and textures are CC0. You can do anything you want with them, commercial or not. The sources for all the textures is included in a text file in the textures folder.
What’s next
There’s nothing set in stone for the next release since there’s still a lot of research to do, but here’s a tentative roadmap:
- Converting the island modifier into a terrain type
- Adding a new terrain type for deserts
- Create an object instead of a single function, so more of the terrain can be cached
- Add the first interactive viewport widgets and set the base for interactive editing of terrains