![]() ![]() We tried directly throttling the invalidations with some simple priority schemes, but this produced too many artifacts at page boundaries. ![]() ![]() This helped, but was not enough to hit our performance targets. Initially, we implemented a bunch of improvements to help reduce invalidations from animated geometry, including respecting the “Optimized WPO” flags (discussed in the Nanite blog). Fortnite not only targets higher performance levels than these previous demos, but two additional constraints heavily undercut the ability to cache shadow maps: a significant amount of animated deformation-chiefly trees-and a continuously moving sun. Virtual Shadow Maps can fulfill the quality requirements, but our past Lumen in the Land of Nanite and The Matrix Awakens: An Unreal Engine 5 Experience demos were able to rely heavily on caching shadow map pages to achieve good performance. Virtual Shadow Map caching considerations Virtual Shadow Maps replace all of these techniques with a single, unified path. If shadows disappear, pop, or switch techniques at different distances, this undercuts that temporal stability. A lot of the visual benefit of Nanite comes from the temporal stability that it brings to level-of-detail transitions. While this mix of shadow techniques has worked well enough in the past, it can only really produce low-resolution, blurry shadows in the distance, and the transition zones between the different techniques are often noticeable. Screen-space contact shadows are layered on top of all of this to try to recover some of the detail missed by the low-resolution techniques and fill in any missing shadows in the distance. The player character gets a dedicated per-object shadow map. Beyond these, there is a mix of distance field shadows and a single “far” cascade that covers most, but not all of the map. There are several conventional shadow map cascades near the player. Previously, Fortnite has used a variety of shadow techniques to try to cover all of these cases while balancing performance. In Fortnite Battle Royale, this scale difference is not only present, it is exhibited by the initial sky-diving sequence. The sun is also one of the most challenging lights, as ideally, the shadows need to be visually consistent from a few centimeters from the player all the way to the horizon. Additionally, ray-traced shadows use a less detailed version of the Nanite geometry, which works well for some effects, but lacks fine details when applied to direct shadowing.īeyond just performance and quality, we had several more specific goals for shadowing in Chapter 4 that we will discuss in the following sections.īeing primarily an outdoor game, the majority of shadows that players see in Fortnite are from the sun. Ray-traced shadows are not currently a good fit as they are not performant when forced to rebuild acceleration structures to account for the significant dynamic deformation and animation in Fortnite. Given the heavy use of Nanite in Chapter 4, Virtual Shadow Maps are a natural choice they both perform better and have better quality when compared to conventional shadow maps. Therefore, we recommend reading the Nanite in Fortnite Battle Royale Chapter 4 blog post before continuing, as many of the techniques mentioned there are as important-or in some cases primarily for-Virtual Shadow Maps. VSMs were designed specifically with Nanite in mind and integrate tightly with the Nanite rasterization process in many cases, optimizing shadows and Nanite performance are directly related. In this post, we’ll cover some of the details of how Virtual Shadow Maps are used in Fortnite Battle Royale Chapter 4, with a specific focus on recent technical improvements as well as content considerations. VSMs are designed to pair well with Nanite’s virtualized geometry and efficiently render accurate shadows ranging from small geometric detail near the camera all the way to the horizon. Since we started working on UE5, our focus has been on Virtual Shadow Maps (VSMs). Hello, we are Andrew Lauritzen and Ola Olsson, rendering engineers who work primarily on shadowing in Unreal Engine 5. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |