Commit Graph

151 Commits

Author SHA1 Message Date
steve robb
8797380caa Reverting change to add MSVC 17.9 as a preferred toolchain.
[CL 31521874 by steve robb in ue5-main branch]
2024-02-15 11:28:56 -05:00
steve robb
0c6bbc6345 Support for MSVC 17.9.
#rb james.hopkin
#jira UE-206977

[CL 31516471 by steve robb in ue5-main branch]
2024-02-15 07:39:50 -05:00
josh adams
67d747d50a - Moved all versions from *SDK.Versions.cs files to *_SDK.json files
- Some static variables made it tricky, so added some support to make it simpler on users of the static variables
#rb David.Harvey

[CL 31431441 by josh adams in ue5-main branch]
2024-02-13 11:51:53 -05:00
christopher waters
565a78058a D3D12 Bindless Resources with CPU managed descriptor heap updates
- D3D12 PC Bindless needs descriptor heaps managed on the CPU; we cannot update them on the GPU timeline.
- Each context now has a FD3D12ContextBindlessState that contains the per-context GPU descriptor heap as well as descriptor rollbacks to apply to the heap before submission.
- We have to roll descriptors back to their values before the incoming view updates were applied so that we can leverage the CPU heap copy at all times. This isn't deferring the updates; it's storing the values before the updates and making sure the heap is used with those values.
- When a context encounters a draw/dispatch and there were any descriptor updates, the previously used heap is updated with the correct set of descriptors before a new heap is created for the subsequent draws/dispatches.

Additional changes
- Allowing RHIs to override FRHITextureReference for custom bindless implementations.
- Adding FRHIDescriptorAllocator::GetAllocatedRange to allow managers to find the smallest range of descriptors that need to be copied to new heaps.
- DescriptorCache now holds reference counted pointers to the bindless heaps to avoid potential use after free scenarios.
- Adding ED3D12DescriptorHeapFlags to mirror D3D12_DESCRIPTOR_HEAP_FLAGS while adding new flags.
- Adding ability to pool descriptor heaps to avoid high OS overhead when constantly allocating new ones.
- Pooling descriptor heaps required more descriptor heap managers to implement CleanupResources.

#jira UE-162014
#rb Luke.Thatcher

[CL 30183702 by christopher waters in ue5-main branch]
2023-12-07 12:30:21 -05:00
christopher waters
15bc726977 Adding Barycentrics support checks
- Adding EShaderCodeFeatures::Barycentrics
- Adding GRHIGlobals.SupportsBarycentricsSemantic
- Adding FDataDrivenShaderPlatformInfo::GetSupportsBarycentricsIntrinsics to control COMPILER_SUPPORTS_BARYCENTRIC_INTRINSICS
- Adding FDataDrivenShaderPlatformInfo::GetSupportsBarycentricsSemantic to control PLATFORM_SUPPORTS_BARYCENTRICS_SEMANTIC

#jira UE-193429
#rb graham.wihlidal, mihnea.balta

[CL 29771745 by christopher waters in ue5-main branch]
2023-11-16 00:28:03 -05:00
florian penzkofer
cd93ccdb8b Support ThinTranslucent Materials in mobile renderer
OpenGL ES and Metal use framebuffer fetch.
Vulkan uses dual source blending.
For Vulkan and OpenGL ES there is a fallback shader permutation for drivers that don't support this. The fallback is the same as the existing solution that uses regular blending (i.e. looks different).
Others uses dual source blending and we force use of DXC for those shaders.
#rb Dmitriy.Dyomin, Florin.Pascu

[CL 29245271 by florian penzkofer in ue5-main branch]
2023-10-30 15:41:46 -04:00
tiantian xie
64db4ff381 Add high end ray tracing effects platform dependent flag bSupportsHighEndRayTracingEffects and apply it to guide translucent shadow.
#jira UE-196323
#rb yuriy.odonnell

[CL 28959763 by tiantian xie in ue5-main branch]
2023-10-20 06:50:16 -04:00
chris kulla
1e11a46938 RayTracing: Remove deprecated RayTraced Reflections
This functionality is now well covered by Lumen reflections which are the supported path going forward.

#jira UE-198247
#rb Aleksander.Netzel,Yuriy.ODonnell

[CL 28866153 by chris kulla in ue5-main branch]
2023-10-17 21:41:09 -04:00
guillaume abadie
4519fde3d2 Kills waveops on -d3d12 -sm5
#rb Yuriy.ODonnell
#tests win64

[CL 28678101 by guillaume abadie in ue5-main branch]
2023-10-11 15:32:33 -04:00
josh adams
630fd08da7 - Redid the quick fix for NDA PreviewPlatforms crashing Mac/Linux, as it was causing some missing menu items and/or ensures with the other fixes
[FYI] michael.wanderson
#rb trivial

[CL 28006454 by josh adams in ue5-main branch]
2023-09-19 15:02:24 -04:00
josh adams
dc8670b9b2 - FIxed the Windows PreviewPlaforms to have the correct PlatformName
#rb Jean-Michel Dignard (tested it)

[CL 28000205 by josh adams in ue5-main branch]
2023-09-19 12:40:57 -04:00
michael wanderson
42e2411043 Add support for previewing platforms on PC D3D that support more than 16 samplers (max: 32). To acheive this the following changes were required:
- Added support for up to 32 samplers to the D3D12 RHI.
- Added 'MaxSamplers' to ShaderPlatform in DataDrivenPlatformInfo, this is defaulted to 16 for all shader platforms and can be modified the the DDPI ini files. This value will set the shader compiler define 'PLATFORM_MAX_SAMPLERS'.
- Added a 'RequiredSamplersSwitch' material editor node to branch based on a given shader platform's maximum sampler count.
- To support more than 16 samplers on feature level SM5 platforms Dxc and sm6.0 are used to compile the shader. On platforms that don't support Dxc and sm6.0 the preivew menu item will be disabled.

#jira UE-191404
#rb florin.pascu

[CL 27850133 by michael wanderson in ue5-main branch]
2023-09-13 16:56:08 -04:00
andriy tylychko
c8d32b6b0b Custom cross-platform dynamic TLS implementation because we hit OS TLS slot limit on many platforms. compile-time defined num slot limit.
Allocating and freeing slots can be contended, getting and setting a slot value is fast but has an additional indirection compared with OS TLS. Used only for windows editor for now, because it's a bit slower than OS TLS implementation.

#rb dmytro.vovk, francis.hurteau

[CL 27827939 by andriy tylychko in ue5-main branch]
2023-09-13 09:25:27 -04:00
ben hoffman
a4add7e368 Bump windows version from 18362 to 19041 to meet the minimum spec for GameInput API
#rb josh.adams, David.Harvey
#jira UE-157716

[CL 27596827 by ben hoffman in ue5-main branch]
2023-09-05 10:57:05 -04:00
graham wihlidal
0082a49c02 Add missed files in last submit
[FYI] luke.thatcher

[CL 27369193 by graham wihlidal in ue5-main branch]
2023-08-25 02:19:04 -04:00
aleksander netzel
c2de8e44ce Disable bindless for raytracing on Windows due to issues on AMD.
#rb chris.waters
#jira UE-192293

[CL 27122694 by aleksander netzel in ue5-main branch]
2023-08-15 17:52:32 -04:00
marc audy
1b8e7f29c4 Rework GPUScene support on mobile platforms.
Platforms that do support uniform buffer objects can now provide batched primitive data through UBO. There is a limit UBO range that can be accessed in shaders, so we group instances into batches that fit into this limit. Switch uses 64KB views, other platfroms16KB views. For each primitive we allocate 512Bytes and 256Bytes for instance. Mobile platforms that do not support UBO will use a desktop version of GPUScene.
There are a few things that still missing: Dynamic mesh passes,  static lighting
#rb ola.olsson, benjamin.rouveyrol

[CL 26354848 by marc audy in ue5-main branch]
2023-06-30 16:34:38 -04:00
yuriy odonnell
b67c4cb749 Add bSupportsVertexShaderSRVs to DataDrivenShaderPlatformInfo which drives PLATFORM_SUPPORTS_VERTEX_SHADER_SRVS shader
* This should be used to guard any features that require explicitly accessing buffer or textures SRVs in vertex shaders

#rb Dmitriy.Dyomin
#rb Kenzo.Terelst

[CL 26207274 by yuriy odonnell in ue5-main branch]
2023-06-23 05:56:06 -04:00
josh adams
305c260069 - Moved SDK versions (MainVersion and Min/Max SDK version) from C# strings to SDK.json files in the Platform's Config folder
- Allow for per-project override in a project's platform's config folder (this is merging with my other work on per-project SDKs and validation of multi-target builds)
- More versions will move over after this
#rb david.harvey

[CL 26150552 by josh adams in ue5-main branch]
2023-06-21 11:21:01 -04:00
serge bernier
7bf7dd423c Fix global usage of all cvars related to shader pipelines:
r.ShaderPipelines
r.Material.ExcludeNonPipelinedShaders

Both cvars are currently disable on WindowsEngine.ini which make them also disable when we cook for consoles. ExcludeNonPipelinedShaderTypes is currently used only at cooking time when we compile shaders which is currently returning false, since the value is disabled on windows. Making those cvars use FShaderPlatformCachedIniValue, will allow to have specific platform value when cooking for a specific target. Moving r.Material.ExcludeNonPipelinedShaders to the defaultengine.ini file to keep it disable for the moment and not affecting shader key string. Will enable it progressively on console later.


r.Shaders.RemoveUnusedInterpolators

Make that cvar platform agnostic, since it will be used in on other consoles eventually. Platforms supporting the stripping of unused interpolators will check the same flag (CFLAG_ForceRemoveUnusedInterpolators) to enable it. Since windows can run opengl, and stripping is not supported on that shader platform, add extra logic to exclude the flag.

-Make the RHISupportsShaderPipelines function access a real DDPI attribute and not just test if we are not on mobile. Will need this to be able to have stripping unused shader interpolators on Switch.

[REVIEW] Laura.Hermanns

[CL 26018371 by serge bernier in ue5-main branch]
2023-06-15 13:27:44 -04:00
florent guinier
7d5cb9e6ca NNE Only compile HLSL runtime shaders on supported platform.
What:
* Add data support flag for NNE shaders so platforms can opt in to the NNERuntimeHlsl shaders compilation.

Tests:
* NNE smoke test + style transfer demo on: win64 editor, win64 packaged

#rb ue-nni
#rnx
#jira UE-184154
#preflight 6447d1e7c632d1e89bc818f6

[CL 25185875 by florent guinier in ue5-main branch]
2023-04-25 14:43:04 -04:00
Florin Pascu
cd8651734e UX: Remove user-visible ES31 editor references and replace with Mobile
#jira UE-134173
#rb Jack.Porter
#preflight 6447ac2e641e2c3cb4227930

[CL 25178065 by Florin Pascu in ue5-main branch]
2023-04-25 07:05:08 -04:00
Aaron McLeran
70e7c3734f Removing many vestigates of old audio engine code.
#rb Ryan.Mangin
#jira UE-144348
#preflight 6446e9d30206a6e20f49f2e7

[CL 25172786 by Aaron McLeran in ue5-main branch]
2023-04-24 18:22:37 -04:00
jeannoe morissette
75364b7008 VulkanRHI: Add VULKAN_SM6. Move features and requirements around to match what was done on d3d.
#rb arciel.rekman, carl.lloyd
#preflight 643996128901e5ef982dc887

[CL 25045731 by jeannoe morissette in ue5-main branch]
2023-04-14 14:26:06 -04:00
florin pascu
568b9363b7 Global Distance Field For Mobile
Remove bSupportsMobileDistanceField from DDSPI
#rb Dmitriy.Dyomin, Benjamin.Rouveyrol
#jira UE-103863
#preflight 642d669cf376ab43d2c75cec

[CL 24936564 by florin pascu in ue5-main branch]
2023-04-05 17:00:43 -04:00