This affects Vulkan, Metal, GLES, and SPIR-V based platform backends.
Warnings will not be treated as errors for intermediate shader code, such as the one generated by the HLSL rewriter for dead-code removal.
#rnx
#rb carl.lloyd, massimo.tristano
[CL 31645356 by laura hermanns in ue5-main branch]
_Static_assert statements (see HLSLStaticAssert.h) in HLSL were not handled in the HLSL parser used to remove unused interpolators.
#jira UE-206870
#rnx
#rb Yuriy.ODonnell
[CL 31612832 by laura hermanns in ue5-main branch]
- Disabled by default
- Removed MetalDerivedData and moved shader compiler specific code to seperate files
#rb Laura.Hermanns
#jira UE-204112
[CL 31527482 by carl lloyd in ue5-main branch]
- modify which version of source is dumped as a debug artifact by default to be the final preprocessed source instead of the stripped version; this is more useful when debugging in directcompile mode
- re-add the dump of defines as commented code to this artifact, which was inadvertantly removed in a previous CL (bad merge)
- make the "detailed" source dump add the stripped version, and the version modified by the compile step (if it exists)
- only add the additional debug data to the stripped version (which is still something that SCW can process successfully) but remove it from the "modified" version (which typically will cause errors when running in directcompile mode)
#rb Laura.Hermanns
[CL 31354417 by dan elksnitis in ue5-main branch]
DxcCreateBlob apparently force adds this on creation of strings, so we need to account for that when creating a view of the result.
#rb dan.elksnitis, Laura.Hermanns
[CL 31311047 by christopher waters in ue5-main branch]
Missing functionality was that node functions can have a NodeID that is used to reference them.
The NodeID is set in an attribute on the function.
The fix is to always extract identifiers from function attributes.
This could be made more conservative by special casing to only NodeID function attributes. I'm not sure if the added complexity is worth it.
Note also that this works for node arrays, but doesn't remove out of array references when the NodeArraySize attribute is used. That is quite a special case though (different array slices from a shared array definition).
#rb Yuriy.ODonnell
#jira UE-206206
[CL 31277592 by jeremy moore in ue5-main branch]
It's about 1/4 of CoreMinimal.h but rarely needed (Compression.h pulls on CriticalSection.h and Map.h that are costly).
#rb Yoan.StAmant
[CL 30683417 by aris theophanidis in ue5-main branch]
- add support to shaderconductor to load shader source from a FAnsiStringView
- remove internal string conversion helpers in favour of using FAnsiString
- don't make copies of input strings if they are provided in ANSI format
#rb Laura.Hermanns
[CL 30594203 by dan elksnitis in ue5-main branch]
- add FShaderSource class which wraps source as populated by preprocessing and subsequently accessed by compilation and other debug features; this class automatically inserts zeroed padding such that 16-byte-wide SIMD string comparison operations do not require a non-SIMD tail to process any overhang.
- add typedefs for the string/view/character types and update preprocessing code to use these typedefs instead of the explicit types
- add explicit if constexprs in minifier code around char width to disable simd optimizations for char width != 2 (and subsequently skip the non-simd tail if char width == 2 since FShaderSource automatically adds the required padding)
#rb Jason.Nadro, Yuriy.ODonnell
[CL 30358137 by dan elksnitis in ue5-main branch]
- move sequence of preprocessing steps out of ShaderPreprocessor module and into UE::ShaderCompilerCommon::ExecuteShaderPreprocessingSteps; the former is now explicitly just the low-level preprocessor lib
- add an implementation of PreprocessShader in FBaseShaderFormat so backends which have no custom code to execute as part of preprocessing can just automatically inherit this implementation, and fix up such backends to eliminate now-unnecessary overrides
#rb christopher.waters, Laura.Hermanns
[CL 30178136 by dan elksnitis in ue5-main branch]