![]() ![]() upipelinecache files, or recorded PSO caches. To avoid throwing out entire PSO caches after a long playthrough of an application, PSO cache files are divided into two varieties: However, shaders in Unreal can change between multiple builds as developers tweak materials. The most important data in a PSO is shader information. Compute PSOs are included in the build differently (all compute shaders in the shader library will automatically have PSO entries created for them during the cook). ![]() Most information in this document concerns Graphics PSO collection. In addition to the above PSO types, ray tracing PSOs also exist, but UE 5.0 does not support PSO caching for ray tracing data. Graphics PSOs, which represent the state of the application's graphics pipeline and consist of many configurable variables.Ĭompute PSOs, which usually take the form of compute shaders. Unreal Engine supports two types of PSOs: In other words, PSO caches are lists of PSOs to create early. The term PSO Cache refers to a file with PSO descriptions that is included in the build, so the game can create these states early. However, conceptually they all are similar. For example, Vulkan uses pipeline, and Metal uses pipeline state. This document universally refers to GPU state with the term Pipeline State Object (PSO), a name used in D3D12 API. This document describes the available PSO types in UE and the detailed processes for generating PSO caches. The PSO descriptions gathered from running the application are called PSO caches.Īfter that, on subsequent playthroughs the game can create the necessary GPU states earlier than they are needed by the rendering code. This narrows down the possible GPU states to only the ones used in the application. ![]() To work around this complication, UE can collect data about the GPU state from an application build at runtime, then use this cached data to generate new PSOs far in advance of when they are used. In a highly programmable real-time rendering environment such as Unreal Engine (UE), any application with a large amount of content has too many GPU state parameters that can change to make it practical to manually configure PSOs in advance. This makes it necessary to generate PSOs long before they are needed for them to be efficient. More recent graphics APIs, such as Direct3D 12 (D3D12), Vulkan, and Metal, support using packages of pre-configured GPU state information, called Pipeline State Objects (PSOs), to change GPU states more quickly.Īlthough this greatly improves rendering efficiency, generating a new PSO on-demand can take 100 or more milliseconds, as the application has to configure every possible parameter. PSOs on Different Platforms and Graphics APIsĮarlier graphics APIs, such as Direct3D 11, needed to make dozens of separate calls to configure GPU parameters on the fly before issuing draw calls. ![]()
0 Comments
Leave a Reply. |