This feature should only be enabled on foliage meshes exhibiting this problem, and on nothing else.Parents need to know that while the original strategy-focused version of Fortnite (also known as Save the World) is a survival action game for PlayStation 4, Xbox One, Nintendo Switch, Windows, and Mac, it's the wildly popular last-player-standing mode known as Fortnite: Battle Royale that's taken off and become a huge hit. While that looks odd if performed up close, at the distance when area preservation activates, it instead appears to maintain the density that should be there. In the case of leaves, this is the same as the remaining leaves getting bigger. To correct that, we added new logic to the Nanite builder (an option called “Preserve Area” that can be enabled under mesh “Nanite Settings”) that redistributes the lost area to the remaining triangles by dilating out the open boundary edges. Removing leaves like this causes the canopy to visually thin out. At some point, each individual leaf could not simplify any further than a single triangle and leaves needed to be removed to reduce triangle count. The initial prototype was hardcoded to only support a single programmable material in the scene, so the next step was a proper rasterizer “binning” pass that would let us support actual game scenes composed of hundreds of materials, which then enabled us to test out actual content.Īfter converting Fortnite trees to Nanite, we noticed they would lose their canopies in the distance due to the simplification process either the leaves would thin out, or in some cases, abruptly go bare. Deliver this as a production feature in UE 5.1.Minimize additional memory impact to GPU scene and Nanite.Only perform the instance culling and cluster culling work once.Bear in mind that the programmable rasterizer will be used heavily by a lot of content, so simple evaluators should deliver performance that is only marginally slower than the fixed function rasterizer.Ensure that fixed function and programmable rasterizer paths largely share the same code path, for maintainability reasons.Keep the performance profile of the existing “fixed function” fast path-the introduction of the programmable rasterizer should not slow down existing content.We defined some clear goals to drive the development of this work: The prototype was successful in proving out whether or not the programmable rasterizer would even be possible, but lots of work remained to make it production-ready and efficient. The following images show the initial prototype of a masked material animating over a Nanite garbage truck mesh. We set out to prototype the architecture needed to support material graph logic in the rasterizer, which has been coined “Nanite Programmable Rasterizer.” In order to support the aforementioned features in Nanite, we needed to make the rasterizer itself programmable. Later on, hardware became “programmable” through shader code, enabling new possibilities for graphics and allowing for features that were difficult or impossible to do using the fixed function pipeline.įrom its inception, Nanite has always supported “programmable” material graph shaders controlling the output color, but the rasterizer itself-which decides how vertices are positioned on screen and which pixels get covered by the triangles-was effectively “fixed function”:it was still implemented as shader code, but a content creator had no control over that logic. GPUs started with what was known as a fixed function pipeline, where the method in how geometry was transformed-and how depth and color was written-was built into the hardware, and could only be configured with a limited set of pre-defined functions. At the beginning of the year, the team undertook the challenge of trying to implement support for some of these features, requiring us to solve numerous non-trivial problems. Users have been heavily requesting support for features like World Position Offset, Pixel Depth Offset, custom UVs, two-sided materials, and masked materials. Going forward, we’d like to extend support into many areas Nanite has not yet covered. Instead, we’d focused our time on polishing the core Nanite functionality. It was already usable for tons of amazing things, but the initial version lacked full support for all the myriad of features available for non-Nanite meshes. Unreal Engine 5.0 launched with Nanite in a production-ready state. These features are available for you to try out in Unreal Engine 5.1 (as Beta). I’m here to showcase the exciting features and improvements we’ve developed this year in order to launch Nanite in Fortnite Battle Royale Chapter 4. Hello, I’m Graham Wihlidal, Engineering Fellow (Graphics) at Epic Games.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |