[UE5.6] Shader is using too many SRVs (only 64 supported)

UE5.6 版本当landscape材质制作的过于复杂的时候 会报关于SRV数量超64的错:Shader is using too many SRVs: 65 (only 64 supported)

看了下BasePassPixelShader中的BindlessSRV 应该正好64个。比较好奇SRV数量是如何count的

[Image Removed]

是有​以下SRV也被计算进去了吗?

[Image Removed]

另外​我们是否可以直接修改Engine\Source\Runtime\D3D12RHI\Public\D3D12RHI.h 中#define MAX_SRVS 64 改为128

DX12 Max SRVs in all descriptor tables per shader stage 在DX12 Feature levels 11 Tier 1下是128 ,目前现在大多数PC硬件都是Tier3。想问下UE5限制SRV 64的原因是什么?是否是面向多平台的妥协?是否可以按照目标平台去做分级?

[Image Removed]

https://learn.microsoft.com/en\-us/windows/win32/direct3d12/hardware\-support

https://microsoft.github.io/DirectX\-Specs/d3d/ResourceBinding.html

Hi,

你好,不能把MaxSRV设置超过64,因为我们有段逻辑是依赖最大的SRV在64个以内(搜索Cache.BoundMask)。CompileData.NumSRVs统计了Texture,StructureBuffer/ByteAddressBuffer,以及AccelerationBuffer的数量,如果超过64个就会报错。所以估计还是要限制一下shader里的资源使用数量。