Introduced an alternative method for retrieving an object position if the primitive buffer data is not available, otherwise any primitive buffer requests will fail, but will now be caught by the material compiler anyway.
FN assets validated and do not have this issue.
#jira UE-188018
#rb Jason.Nadro, massimo.tristano
#lockdown marc.audy
[CL 36758513 by jon cain in 5.5 branch]
resubmit with following fixes:
- static analysis error which caught an >=0 check on a uint64 which should have been >0
- fix for an inverted guard on multiprocess cook sending bytecode to director (was only sending code across if empty instead of non-empty)
- fix for uninitialized padding in the FShaderCodeResource::FHeader struct causing nondeterministic puts
- fix for incorrect size passed to job cache hashing on receiving buffers from DDC
#rb Devin.Doucette, Laura.Hermanns, Zousar.Shaker
#lockdown Marc.Audy
[CL 36754792 by dan elksnitis in 5.5 branch]
[FYI] dan.elksnitis
Original CL Desc
-----------------------------------------------------------------
[shaders] modify FShaderCode finalize to create a FSharedBuffer object, and modify all downstream uses of shader code to re-use this buffer (job cache, pushes to DDC, shader maps, and shader library). This reduces total amount of LLM tracked memory allocated at the end of a cold Lyra PS4 cook by about ~350MB; impact likely much larger for cooks of larger projects.
#rb Devin.Doucette, Zousar.Shaker
#lockdown Marc.Audy
resubmit with SA+MP cook fix
[CL 36747522 by dan elksnitis in 5.5 branch]
[FYI] dan.elksnitis
Original CL Desc
-----------------------------------------------------------------
[shaders] modify FShaderCode finalize to create a FSharedBuffer object, and modify all downstream uses of shader code to re-use this buffer (job cache, pushes to DDC, shader maps, and shader library). This reduces total amount of LLM tracked memory allocated at the end of a cold Lyra PS4 cook by about ~350MB; impact likely much larger for cooks of larger projects.
#rb Zousar.Shaker
#lockdown marc.audy
[CL 36440265 by dan elksnitis in 5.5 branch]
- create utility classes (serialization context objects) which allow serialization of shader code blobs independently of "shader object" (i.e. whatever type of thing we're pushing to the cache, shader job or shader map) structure
- commonize bytecode format in cache entries for shadermap and shader DDC (FShaderCodeResource struct)
- rework per-shader caching to use the serialization helpers to separate serialization of job output struct data and bytecode
- rework material and global shadermap DDC serialization to use the serialization helpers to separate serialization of shadermap structural data and bytecode
#rb Laura.Hermanns, Zousar.Shaker
#jira UE-196556
(resubmit with monolithic build fix)
[CL 36153164 by dan elksnitis in 5.5 branch]
[FYI] Charles.deRousiers
#rnx
#tests Test with substrate the overide of a SubsutrateShadingModel node without subsurfaceprofile from a mateial instance to a SubsurfaceShading model with a Subsurface profile.
[CL 35954060 by sebastien hillaire in ue5-main branch]
Kept SetSubsurfaceProfileOverrideRT on proxy since otherwise there was some weird interaction with material/materialinstance when a profile was already there.
#rb charles.derousiers
#rnx
#lockdown marc.audy
[FYI] charles.derousiers
[CL 35953483 by sebastien hillaire in ue5-main branch]
#jira UE-172070
#9887
#rb rob.krajcarski
#tests Did some A/B testing with a couple of scripts to see if anything broke. Also ran full engine test suite and did a FN cook.
[CL 35823815 by KeithRare in ue5-main branch]
When using SubstrateMaterialAttribute or SubstrateShadingModel, with a shading model driven by expression, the resulting packing was incorrect for hair and eye material. This is because the substrate operator was converted as a BSDF operator (vs. an eye / hair operator), and later the material was flagged as 'single' instead of 'complex'. The substrate export code was thus missing the complex header packing causing eye/hair data to be incorrect.
This CL add hair & eye BSDF feature, and refactor the feature tracking through a bitfield for simplicity.
#rb sebastien.hillaire
[CL 35770662 by charles derousiers in ue5-main branch]
- Updated UStaticMesh::BuildFromMeshDescriptions(...) to check IsRayTracingAllowed() on non-editor builds.
- Added logic to serialization functions to strip ray tracing representation during cooking if target platform doesn't use ray tracing.
#jira UE-221227
#rb aleksander.netzel
[CL 35634761 by tiago costa in ue5-main branch]
- Fix an issue where building a static mesh could change its own DDC key, causing duplicate render data to be cached and built.
- Fix an issue where static mesh DDC could have the Nanite resources stripped differently between Nanite and non-Nanite platforms that share cache.
Nanite builder fix (from Rune.Stubbe):
- Fixed rare builder crash when cluster group has to be split into more than 8 parts
#rb graham.wihlidal
#jira UE-220876, FORT-768796
[FYI] thierry.begin, jonathan.bard, rune.stubbe
[CL 35571580 by jamie hayes in ue5-main branch]
This test expects the system to distinguish between FNames with different casing. However, this features is only available when building with WITH_CASE_PRESERVING_NAME, which is enabled only on desktop platforms (Win, Unix, Mac).
#rb Matt.Peters
#rnx
[CL 35567434 by wojciech krywult in ue5-main branch]
Bumped the static mesh DDC key to flush out any cached data containing NaNs.
#rb Krzysztof.Narkowicz
#tests Rebuilt mesh cards while MaxLumenMeshCards was set to 0. Observed in Visual Studio that the bounds now consistently initialize zeroed.
[CL 35499929 by nick edwards in ue5-main branch]