#Shader stuttering and PSOs

1 messages · Page 1 of 1 (latest)

grand parcel
#

https://youtu.be/ibIFKEYyBYo

EPIC recently talked about shader stuttering and how developers can solve it, including some recent changes they made to make it easier. Eventually I hope they fully automated most if not all of this process but for now here is how you gather, expand, and then cook PSOs.

https://www.unrealengine.com/en-US/tech-blog/game-engines-and-shader-stuttering-unreal-engines-solution-to-the-problem

https://dev.epicgames.com/documentation/en-us/unreal-engine/manually-creating-bundled-pso-caches-in-unreal-engine

PSOs are a critical part of shader compilation, while you can let the engine automatically generate them at runtime for your players, this could lead to complaints of stuttering especially at lower frame rate. By pre-caching them you can help players have a smoother experience.

EPIC recently talked about shader stuttering and how developers can...

▶ Play video
Unreal Engine

Take a dive into Pipeline State Object (PSO) precaching and find out how this technique has evolved to the point that it now prevents most kinds of shader compilation stutters.

Epic Games Developer

Manually create and bundle a PSO cache with your game.

atomic knoll
#

Idk why stat psoprecache doesn't recognize

#

ow this work: stat PipelineStateCache

#

but it's different (

ornate flume
#

Having issues getting it to convert to an .spc on 5.4.4

grand parcel
grand parcel
#

or are missing one

#

something seems a bit off here

#

my full command looks more like this
D:\UE_5.5\Engine\Binaries\Win64\UnrealEditor-Cmd.exe -run=ShaderPipelineCacheTools expand

"C:\Users\Spacemarine658\Desktop\PSOCache*.rec.upipelinecache"

"C:\Users\Spacemarine658\Desktop\PSOCache*.shk"

"C:\Users\Spacemarine658\Desktop\PSOCache\PSO_StarlightBrigade_PCD3D_SM6.spc"

ornate flume
#

I was tyring to pass the full path because I was having issues. I will try again with just the project name.

#

@echo off

cd "D:\AsISurvive\Nick_Development\AIS\LocalBuilds\Windows"

START D:\AsISurvive\Nick_Development\AIS\LocalBuilds\Windows\AIS.exe -clearPSODriverCache -logPSO

FYI I had to run my bat like this as well to get it to launch with those switches.

#

Progress. Just need to fix these warnings I guess and it should actually generate the file then.

grand parcel
#

I think so 🤘

elder glade
#

Hey, i stumbled upon this thread when looking for answers since im having some difficulties setting up PSO bundled cache for Quest in UE 5.5. I had previously done the PSO caching in 5.3 and it worked just fine but on 5.5 its just not generating any rec.pipelinecache files when launching with -logPSO. I was also able to get the logging to work properly on the same project when i built for Windows.
Have you tried PSO logging for Quest in UE5.5 and if you have what were the results?

grand parcel
ornate flume
elder glade
cobalt whale
#

[Unreal 5.6] I am trying to package a PSOs bundle with my game, but so far even though the messages from the log shows that the said loading from the bundle is successful, there is still stuttering if I use -clearPSODriverCache to make sure that there are no already precached PSOs from previous runs. From the log, it seems that the PSOs bundle is first loaded and then the cache is cleared which I am not sure if it means that it creates the PSO based on the bundle instructions and then clears them afterward which it would be stupid in my opinion since as far as I have read the -clearPSODriverCache is for clearing all previous PSOs in order to see if you missed any in you bundle. I would appreciate any help regarding this.

#

There seem to be 3 spikes in my project, 2 being the loading of 2 levels and the other is for a trigger when I spawn a niagra explosion vfx, I recorded the psos for the bundle on all scalabilities from 0-4 just in case and made sure to cover the entire PSOs that could be encountered in that specific level since its just a third person template level over which I added something like a car that explodes, so nothing fancy and default settings project wise, but those 3 spikes continue to persist if I clear the cache. Again, at this point I have no clue if I am doing something wrong or misinterpreting something.