Virtual Texture Pool Size vs Runtime Virtual Texture

Hi.

I’m trying to set the size of the Virtual Texture Pool. I put the default size to 32mb and set custom size for each type as follow in the DefaultEngine.ini. I’m using a Runtime Virtual Texture Base Color so it create a new pool of 128mb but can definitely be way smaller and I can’t find anywhere where I can specify a lower size as it seems to do it automatically with the value specified in the config.

cheers

+Pools=(Formats=(PF_G16),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=8,bEnableResidencyMipMapBias=False,bAllowSizeScale=False,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_BC5),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=128,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_DXT1),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=128,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_G8),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=32,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_DXT5),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=32,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_FloatRGBA),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=16,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_B8G8R8A8),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=16,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=16,MaxScaledSizeInMegabyte=0) +Pools=(Formats=(PF_BC7),MinTileSize=0,MaxTileSize=0,SizeInMegabyte=16,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=16,MaxScaledSizeInMegabyte=0)

Hello there,

I’m a little unclear as to the issue you are facing. The pools should be editable in Engine - Virtual Texture Pool in the Project Settings. The transient pools will grow in editor and those sizes can be used be copied to the fixed pool sizes as a baseline, though it’s worth profiling to make sure it is large enough in all cases.

To make a pool dedicated to RVTs, you can use the min and max tile size to place RVT tiles (which are typically larger at ~264 by default) in their own pool.

Best regards,

Chris

I tried this line and still have the pool at 127mb and I have to mentioned it’s in console not in editor

+Pools=(Formats=(PF_DXT1),MinTileSize=256,MaxTileSize=0,SizeInMegabyte=64,bEnableResidencyMipMapBias=False,bAllowSizeScale=True,MinScaledSizeInMegabyte=0,MaxScaledSizeInMegabyte=0)

[Image Removed]

sorry typo I meant ON console and yes packaged

I seeing this on every platform including in the editor.

For a repro I’ll try to do it Wednesday

Can you share your project so I can see where I’m maybe doing something wrong? I’ll send you mine later today

Hummm In 5.5 vanilla I have the same behavior as in our branch and in 5.6 Vanilla it doesn’t create a new pool ? So that must have changed in 5.6? Do you still want both project? We will soon upgrade to 5.6 if it’s something that has been change.

[Image Removed]

Here the two projects

cheers

can’t attach two files …

Thanks for the repro projects.

The reason you are seeing two pools in 5.5 is because there are two different VT sizes. In the RVT, the tile size is 132 (128+2*2). In the VT texture settings, the tile size is 136(128+4*2). These tiles differ in size and cannot share a pool. If the tile border in the RVT were modified to 4 (a value of 2 in the RVT settings), that should fix it.

In the 5.6 project, the behaviour is unchanged. The reason the example only has one VT pool for DXT1 is because only the RVT is functional. The diffuse colour is being sampled from a non-VT texture, so nothing is loading into the 136 tile pool.

I hope that helps.

Best regards,

Chris

Both had the cube with a DXT1 Virtual Texture and RVT but the difference with 5.6 is you have to open the texture to have the second DXT1 pool and in 5.5 it’s there without opening the texture that makes it a bit confusing. But I’ve adjusted my RVT so it doesn’t duplicate it in my project. Thanks for your help

[Image Removed]

When you say it occurs in Console but not Editor, may I ask for clarity here?

I’m not seeing this on packaged projects or on a console platform.

Best regards,

Chris

No worries, I got what you meant.

May I ask which platform you are seeing this on? It may be platform specific.

If it’s the same one I tested, then I may need more information about how this is occurring or a minimal repro project to debug further.

Best regards,

Chris

Sounds good.

I’ve tried again to reproduce the issue, and I am still unable.

Best regards,

Chris

Both projects would be useful, I feel. At the very least for working out why you have two pools of DXT1 with minor differences in page count.

That seems to suggest that the tile size is differing slightly, but 5.6 isn’t showing that.

Best regards,

Chris

I’m glad the VT border size changes are helping.

It seems that the 5.6 repro’s DXT1_MAT is referencing /Game/StarterContent/Textures/T_Ceramic_Tile_M.

[Image Removed]

The VT pool is only appearing when the /Game/Developers/---/RVTSize/T_Ceramic_Tile_M is open as that needs the VT pool created for that texture viewer.

With the second texture set in DXT1_MAT and the sampler set to a virtual type, the behaviour of 5.5 and 5.6 is consistent, so there shouldn’t be any issues here for considering 5.6.

I hope that helps.

Best regards,

Chris