uGridsToLOD: improving LOD of Fallout 4. Overpasses
Let me remind you that the goal of the uGridsToLOD project is to improve the detail of objects distant from the player through the processing of LOD models of the game. You can read more about this in the previous article.
During the processing of models, it is required to use at least 10 tools (except for complex 3d packages such as Blender), a lot of interesting observations, questions and nuances arise. Their discussion requires special attention. At first I planned to write about it in the article you are reading now, but soon realized that it would be too long a text, it is better not to mix it with the results report. As far as I can see, game modification tools are rather poorly represented in Runet, there are very few Russian-language materials and clear explanations on them. Perhaps in the future I will pay attention to this topic. For example, in the format of a manual for modifying games on the example of Fallout 4.
So, I turn to the first report on the uGridsToLOD project.
The total number of LOD objects in the Fallout 4 game is large (3999), they are of very different dignity and value. To quickly assess the potential of the project, I started with a group of the most noticeable and at the same time the “heaviest” objects of the game presented in the LOD. These are overpasses.
The LOD of the zero level (LOD_0) includes 57 models of overpasses. Their detailed counterparts use 6 materials and 16 textures. All these objects were redesigned by me for LOD. The textures were placed in the LOD folder of the game while preserving the folder structure that is used for the textures of the main game models (Data/Textures/LOD/Landscape/Roads). The pixel density of each texture has been reduced by 16 times (2048 -> 512). The materials were placed in the LOD folder in a similar way (Data/Materials/LOD/Landscape/Roads), and all links of materials to textures were replaced taking into account their location in the LOD folder. Then all 57 models of overpasses were edited (Data/Meshes/LOD/Landscape/Roads/HighwayOverpass). This made it possible to reduce the number of polygons by 1.5 - 5 times. Small but very heavy objects were removed from the models, for example: pebbles; decals superimposed on sections of concrete to give them the texture of crumbled stone; large stones; elements of metal structures invisible from afar. In the following figure, you can see how 7825 faces can be removed without noticeable consequences for the appearance of the model (on the left is the original model, on the right is its new LOD version, compare the values of the “Num Triangles” parameter highlighted in green).
In addition, the diffuse map and the normal map for models of overpasses of the LOD_1 level have been redesigned (Data/Textures/LOD/HWOverpassLOD_d.dds and Data/Textures/LOD/HWOverpassLOD_n.dds). These maps were re-drawn at a resolution of 2048 x 2048 pixels, after which they were reduced to a size of 1024 x 1024 pixels to improve performance. I did not edit the meshes of the LOD_1 overpasses, deciding to limit myself to replacing maps. I can also increase the level of detail of this level by simply transferring the models of the former LOD_0 to it (which existed in it before its processing), but objects very remote from the player are located here. Working with them (so far) is not part of the project's tasks. For an example of how the new texture changed the appearance of LOD_1 models, see the figure.
Meshes and UV-unwraps of vanilla game models are very sloppy. Fortunately, the LOD_1 level models are located so far away from the player that it is difficult to see them even in the optical sight in the VR version of the game.
The number of faces in one of the largest models of overpasses (HWExitTranYRamp01.nif) after processing decreased from 65327 to 28678, i.e., 2.28 times. The number of faces in one of the smallest models (HWOnRampEndCap01.nif) after processing decreased from 2209 to 841, i.e., 2.62 times. Thus, in a rough approximation, the average number of faces in one model is (28678 + 841) / 2 = 14759,5. If we do not take into account the files with meshes of five high-rise buildings mentioned in the previous article (they have the LOD_Fake prefix), the heaviest LOD model of a building in the game is AirportTower01_LOD.nif. The number of faces in it is 2244. This means that one edited span of the overpass loads the computer on average as 6.5 fairly heavy buildings (14759 / 2244 = 6.58). I find this proportion good, because LOD models of many buildings have a good potential to reduce the number of faces to values significantly less than 2244. These calculations mean that if the integration of new models of overpasses in LOD performs well in terms of performance, then the next step - the integration of new models of buildings - can be considered promising. In addition, there is always the possibility of a second iteration in the editing of overpasses.
The tests were performed with uGridsToLoad = 5, fBlockLevel0Distance = 32768, fBlockLevel1Distance = 65536, fBlockLevel2Distance = 131072 and fBlockMaximumDistance = 262144. The characteristics of the test stand: Ryzen 7 1700, 32 Gb, 1050 Ti 4 gb (i.e., this is a pure test of the performance of the video card, the CPU load is insignificant). The updated LOD performed well. The overpass models implemented at the LOD 4 level look the same as their highly detailed counterparts. According to subjective feelings, the performance of the video card has not changed, testing with the old and new LOD shows a difference of 2-3 frames (no more than 5%). The CPU load is the same and ranges from 9% to 33%. It is important to take into account that with fBlockLevel0Distance = 32768, new models of LOD 4 level overpasses are drawn at a distance significantly greater than uGridsToLoad = 13, which is clearly visible when comparing test screenshots with the coordinate grid of the Fallout 4 world. I will talk about this in more detail a little later.
If desired, you can bring back the lost frames and save a high-quality picture at an acceptable drawing distance by simply reducing the values of the fBlockLevelXDistance parameters to the desired value. This gives these parameters a certain new meaning, which, as I believe, was originally embedded in them, but then lost during the optimization of the game, indirect evidence of which, in my opinion, can be found in the depths of game resources. This proves the validity of the uGridsToLOD idea. We can really increase the level of detail of the game without noticeable performance losses by transferring the basic game models to the LOD, provided reasonable optimization. This approach is significantly cheaper in terms of rendering costs than increasing the uGridsToLoad values but gives almost the same visual quality of the frame.
In the test screenshots, you can compare the new type of LOD overpasses (on the right) with vanilla (on the left). For convenience, I numbered all the screenshots and divided them into 8 sets.
Set of screenshots No. 1.
Screenshot 1. Overview
Screenshot 5. Updated view of the overpasses
Please note that the road junction in screenshot 5 is made up of updated models of LOD_0 level overpasses, which is easy to determine by the presence of railings, protruding fittings and other details. To understand how far it is from the player, let's turn to the coordinate grid.
In this figure, the numbers mark the corners of the square zones of detailed rendering set by the uGridsToLoad parameter when the player is in square 1. It is in this area that a set of screenshots No. 1 was taken. The fragment of the overpasses that we see in screenshot 5 is located near the lower left corner of the coordinate grid, two squares below the mark 15 (left circle). It follows from this that the new versions of the overpasses are drawn at least at a distance that corresponds to uGridsToLoad = 19. And only at a distance of 12 squares from the player (uGridsToLoad = 25), we can accurately see the LOD_1 level models (compare screenshot 6 with the coordinate grid, right circle). Screenshot 7 is also a view from the point of the overpass marked with the number 1, but not forward, but to the left (along the coordinate grid - to the right). This fragment of the world is not reflected on the coordinate grid, it is very far away.
Set of screenshots No. 2.
Screenshot 8. Overview
Set of screenshots No. 3.
Screenshot 13. Overview
Set of screenshots No. 4.
Screenshot 17. Overview
Screenshots 17-21 show updated versions of the LOD_1 level overpasses. If you look closely, in screenshot 18 you can also see the edge of the model of the LOD_0 level overpass (look for railings and characteristic fragments of reinforcement peeking out from under the road surface).
Set of screenshots No. 5.
Screenshot 22. Overview
Set of screenshots No. 6.
Screenshot 26. Overview
In the screenshot 27 we see a horizontal plane hoving over the railing. In the old version of LOD, it is also there, but it is difficult to see it there because of the noise created by the low detail of the textures. This horizontal plane is not part of any overpass model. I assume that this is a piece of a bridge thrown over the railing. Screenshot 31 shows overpasses that are very far from the player, which did not fit in the overview screenshot of set No. 6. These overpasses are located to the left of the area shown in screenshot 26.
Set of screenshots No. 7.
Screenshot 32. Overview
Screenshot 36. Overview
Screenshot 38. Walk
Screenshot 39. What is that I see in the distance?
Screenshot 40. Overpasses, overpasses, overpasses...
Set of screenshots No. 8. Artifacts.
Screenshot 41. Artifact 1
Screenshot 42. Artifact 1
Screenshot 43. Artifact 1
Screenshot 44. Artifact 2
Screenshot 45. Artifact 2
Not without artifacts. In both cases, the reason was an element of Bethesda's work style, which I call “making unexpected design decisions". It turned out that the overpasses maps for the texture atlas (diffuse map Data/Textures/LOD/HWOverpassLOD_d.dds) are used in other models: bridge (artifact 1) and ground with a road fragment (artifact 2). This is corrected by simply editing the projection coordinates of the textures. There is no point in editing the UV-unwrap of the bridge, because there are plans to redesign bridges for LOD. I plan to fix Artifact 2 when I solve the main tasks of the project.
The resources created for LOD generation are available for a conditional fee at the following link. Unfortunately, at the moment I can't afford to provide them for free, so you won't be able to find them on nexusmods and other similar resources.
Now I am implementing the next stage - I am reworking the LOD models of the Alliance location and most of the wooden buildings of the game. This is a more time-consuming task, since careful retopology is indispensable for its solution. This will be my new report.
Have a nice day, everyone.
Any use of this article must include a link to this publication.