Commit Graph

66 Commits

Author SHA1 Message Date
Ryan Vance
96bac36aa9 VKRT:
Add ray tracing shader types
Add initial ray tracing pipeline creation
Add acceleration structure descriptor type
Add basic ray tracing pipeline, occlusion support initially
Strip reflection from ray tracing shader spirv to deal with validation warnings
Don't use an array of vk descriptor types directly, this breaks with non-contiguous enum values which are common in extensions. Using a TMap from descriptor type to values instead.
Don't store vk types in the serialized shader header, translate to and from our own internal enum types to avoid similar non-contiguous value issues.
Re-enabled ray tracing compilation on windows desktop, explicitly disable runtime support using GRHISupportsRayTracing

Todo:
We need to deal with the lack of a 1:1 mapping between shader stages and frequencies for ray tracing hit groups. This is a one to many mapping which doesn't work with how most of the Vulkan RHI is authored. For now I'm assuming a hitgroup maps to a CHS.
Ray tracing shader descriptor allocation and pending state support. While we are serializing the descriptors for ray tracing shaders, we're not allocating or updating them yet which is the last large chunk needed to trace rays.
Fix spirv binary version mismatch validation error. This basically needs a local dxc modification which explicitly sets the spirv binary version to work around incorrect assuptions in dxc which is causing validation failures.
Add another local dxc modification to allow for arbirary struct size support using VK_EXT_scalar_block_layout for ray tracing shaders.

#rb jeannoe.morissette, lukas.hermanns

[CL 16711940 by Ryan Vance in ue5-main branch]
2021-06-17 17:15:16 -04:00
Lukas Hermanns
199b35c9f4 Unify compiler info and source info in CCHeader meta data.
#rb Will.Damon, Ryan.Vance
#fyi Carl.Lloyd
#jira none
#rnx

[CL 16687864 by Lukas Hermanns in ue5-main branch]
2021-06-16 10:14:15 -04:00
christopher waters
2679dd6157 Fixing an issue where PrepareExportedDebugInfo would actually force symbols to be written.
Adding {ProjectDir} and {ProjectSavedDir} to r.Shaders.SymbolPathOverride

#rb none
#preflight 60c29c63c612640001dd54a4


#ROBOMERGE-SOURCE: CL 16633386
#ROBOMERGE-BOT: (v831-16623017)

[CL 16633428 by christopher waters in ue5-main branch]
2021-06-10 19:52:24 -04:00
christopher waters
66680d06e3 Moving shader symbol exporting into a shared type.
Adding shader symbol export path override cvar. This cvar supports specifying the shader platform name via "{Platform}".
Adding Luke's change for having build machine specific shader configs.

#jira none
#rb rolando.caloca, david.harvey, lukas.hermanns
#preflight 60c243181264df0001a2c283

[CL 16631848 by christopher waters in ue5-main branch]
2021-06-10 18:11:47 -04:00
Lukas Hermanns
518ab66ee2 Remove unused struct field from "FShaderConductorOptions".
#rb Rolando.Caloca
#jira none
#rnx

[CL 16220825 by Lukas Hermanns in ue5-main branch]
2021-05-06 10:56:55 -04:00
Lukas Hermanns
7d8a9df55c Improve assertion output for redundancy check in SPIR-V header parser.
#rb Rolando.Caloca
#jira none
#rnx

[CL 16186518 by Lukas Hermanns in ue5-main branch]
2021-05-03 16:09:19 -04:00
Lukas Hermanns
c2eda93a8d Refactor SPIR-V patching and strip debug instructions for Vulkan mobile except OpName instructions in --strip-reflect pass as UE always needs this reflection information.
Rebuild ShaderConductor for Win64, Mac, Linux.

#rb Carl.Lloyd, Rolando.Caloca, Ryan.Vance
#fyi Mihnea.Balta, Will.Damon, Dmitriy.Dyomin, Michael.Sartain, Brandon.Schaefer
#jira none
#rnx

[CL 16186169 by Lukas Hermanns in ue5-main branch]
2021-05-03 15:22:38 -04:00
Lukas Hermanns
2a6092c316 Replace custom Disassemble function in ShaderConductor interface with the one that was already there.
#rb Ryan.Vance
#fyi Carl.Lloyd
#jira none
#rnx

[CL 16118857 by Lukas Hermanns in ue5-main branch]
2021-04-26 17:13:29 -04:00
Ryan Vance
aacfa50a0d Initial shader compilation changes to support VKRT.
#rb Lukas.Hermanns, Rolando.Caloca

[CL 16098805 by Ryan Vance in ue5-main branch]
2021-04-22 17:38:43 -04:00
Lukas Hermanns
dc07d3f58e Add "Disassemble" function to public interface of ShaderConductor.
Move ShaderConductor utility to disassemble SPIR-V into ShaderCompilerCommon module.
Fix --strip-reflect pass in SPIRV-Tools to remove all SPV_GOOGLE* reflection extensions.
Rebuild ShaderConductor for Win64, Linux, and Mac.

#rb Carl.Lloyd, Ryan.Vance
#fyi Mihnea.Balta, Rolando.Caloca, Will.Damon, Dmitriy.Dyomin
#jira none
#rnx

[CL 15978123 by Lukas Hermanns in ue5-main branch]
2021-04-12 11:25:06 -04:00
Lukas Hermanns
c75e86cf40 Move SPIR-V utility functions for reflection and binding information into SpirvCommon.h/.cpp source files.
#rb Will.Damon, Carl.Lloyd
#fyi Ryan.Vance, Mihnea.Balta, Rolando.Caloca, Dmitriy.Dyomin
#jira none
#rnx

[CL 15954206 by Lukas Hermanns in ue5-main branch]
2021-04-08 10:09:56 -04:00
Lukas Hermanns
6c9b164f8b Added secondary "WritePackedGlobal" function to FHlslccHeaderWriter.
#rb Carl.Lloyd
#jira none
#rnx

[CL 15875032 by Lukas Hermanns in ue5-main branch]
2021-03-31 10:19:01 -04:00
Lukas Hermanns
2e1fb14cb7 Add "Optimize" function to public interface of ShaderConductor to perform SPIR-V optimizations *after* shader reflection (e.g. to strip reflection extensions).
#rb Carl.Lloyd, Will.Damon
#fyi Ryanc.Vance, Mihnea.Balta, Rolando.Caloca, Michael.Sartain, Brandon.Schaefer
#jira none
#rnx

[CL 15850443 by Lukas Hermanns in ue5-main branch]
2021-03-29 09:45:48 -04:00
will damon
0a4e702859 Remove all tessellation support from Metal RHI
- Also, remove _NOTESS Metal profile

#rb christopher.waters, richard.wallis, lukas.hermanns, rolando.caloca
#jira UE-94564
#rnx

[CL 15831929 by will damon in ue5-main branch]
2021-03-25 16:56:00 -04:00
will damon
4d9be3b3ee Update min macOS version to 10.15 and roll default MSL to v2.2.
[REVIEW] [at]richard.wallis [at]axel.riffard [at]jack.porter [at]dave.hunter
#jira UE-109999
#rnx

#ROBOMERGE-SOURCE: CL 15681710 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v781-15675533)

[CL 15684125 by will damon in ue5-main branch]
2021-03-11 21:32:06 -04:00
Rolando Caloca
24ccfe4d84 UE5 - Allow passing extra arguments to DXC
#rb Lukas.Hermanns

[CL 15436490 by Rolando Caloca in ue5-main branch]
2021-02-17 12:29:50 -04:00
Lukas Hermanns
a4dfdcd0ad Moved dxil.dll from DirectX folder into ShaderConductor binary folder and load dxil.dll manually to ensure it's always loaded from that location.
#rb Yuriy.ODonnell, Emil.Persson, Kenzo.Terelst
#fyi Mihnea.Balta, Rolando.Caloca, Graham.Wihlidal
#jira none
#rnx

[CL 15337426 by Lukas Hermanns in ue5-main branch]
2021-02-05 10:29:11 -04:00
Yuriy ODonnell
8789e0bb07 Include shader compiler DLL version in FShaderFormatD3D/Vulkan::GetVersion(), similar to how it's done for other platforms.
#rb Lukas.Hermanns

[CL 15276007 by Yuriy ODonnell in ue5-main branch]
2021-02-01 18:54:58 -04:00
Lukas Hermanns
829eddd5cf Added HlslccHeaderWriter to unify writing of shader meta data.
#rb Mihnea.Balta, Will.Damon, Dmitriy.Dyomin
#fyi Rolando.Caloca, Brian.White
#jira none
#rnx

[CL 15225002 by Lukas Hermanns in ue5-main branch]
2021-01-27 17:53:40 -04:00
Lukas Hermanns
32e30bfa9e Moved FShaderConductorContext into dedicated source files.
#rb none
#fyi Rolando.Caloca, Mihnea.Balta
#jira none
#rnx

[CL 14879107 by Lukas Hermanns in ue5-main branch]
2020-12-08 11:40:10 -04:00
zach bethel
0d7dc4d4ed Refactor of uniform buffer binding to allow for runtime selection of static or per-shader binding. This is a necessary precursor to moving the View uniform buffer to use static bindings on mesh passes; it is used in so many places that both binding models are required to preserve compatibility. Added validation to catch when a uniform buffer is bound using both methods at the same time. Added CVar to RHI transition validation to control whether to break in the debugger on a transition failure.
#rb christopher.waters

[CL 14873973 by zach bethel in ue5-main branch]
2020-12-07 17:42:32 -04:00
Lukas Hermanns
5acb4c83b6 DXC Update: SCW backends.
#rb none
#fyi Mihnea.Balta, Rolando.Caloca, Will.Damon, Jonas.Meyer, Michael.Sartain
#jira none
#rnx

[CL 14832278 by Lukas Hermanns in ue5-main branch]
2020-12-01 19:33:51 -04:00
Lukas Hermanns
9e7053fd6c Fix Vulkan tessellation in DXC: use shader output slots to commuincate patch constant data in Hull shaders (Merged from CL 14680863).
#rb Rolando.Caloca, Will.Damon
#fyi Jonas.Meyer, Mihnea.Balta, Graham.Wihlidal
#rnx

[CL 14714790 by Lukas Hermanns in ue5-main branch]
2020-11-10 18:35:10 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00