If FuzzFoughness is not connected, the Roughness input is used instead. This allows optional independent roughness control.
#rb none
#jira none
#preflight 6389cc910e4613faed1566e2
#fyi sebastien.hillaire
[CL 23370694 by Charles deRousiers in ue5-main branch]
* Add a new thickness input on the root node for thin surface
* Add a new thickness input on vertical layer operator, to provide the thickness of the 'layered' material
* Mark Slab thickness input as deprecated, for converting existing asset once this CL is checked in.
#rb sebastien.hillaire
#jira none
#preflight 638903020e4613faedc9e8be
[CL 23358938 by Charles deRousiers in ue5-main branch]
*** This change will incur a full shader invalidation across all platforms ***
Issues:
- Some platforms require async compute dispatch indirect arguments to not cross specific memory boundaries
- This places restrictions on the valid sizes for a dispatch indirect argument set. We were not conforming to these restrictions which could result in GPU crashes on these async passes
Fixes:
- FRHIDispatchIndirectParameters is padded out to meet per-platform memory boundary restrictions
- This is driven via new per-platform preprocessor define PLATFORM_DISPATCH_INDIRECT_ARGUMENT_BOUNDARY_SIZE
- Some platforms require FRHIDispatchIndirectParameters to align with their internal structure hence we cannot universally size to meet all platform's requirements
- Introduce new FRHIDispatchIndirectParametersNoPadding for uses when we explicitly do not want the padding and otherwise avoid the memory boundary restrictions
- Revise and expand indirect argument validation code to catch further such issues in the future
- Update shaders which write to dispatch indirect argument buffers to account for optional per-platform padding
- New utility function WriteDispatchIndirectArgs introduced to faciliate this
- platforms which require other than the default nonpadded dispatch indirect arguments must define DISPATCH_INDIRECT_UINT_COUNT and their own WriteDispatchIndirectArgs in their CommonPlatform.ush
- move creation of DispatchIndirectGraphicsCommandSignature command signature to be per-platform
- DispatchIndirectGraphicsCommandSignature and DispatchIndirectComputeCommandSignature stride changed to account for additional padding on impacted platforms
Testing:
- ran Lyra with and without async compute Lumen on impacted platforms as well as Win64
- ran FN replay on impacted platforms
#rb Krzysztof.Narkowicz, Ben.Woodhouse, Benjamin.Rouveyrol
#jira UE-167950
#preflight 6359563b2e6690262a11bc06
[CL 22862498 by eric mcdaniel in ue5-main branch]
This makes the dbuffer pass 0.05ms faster, but the makes the classification slower by 0.1ms. So no win for now, but further optimization are coming. Disabled for now.
#rb none
#jira none
#preflight 632979ec9840225da24fc245
#fyi sebastien.hillaire
[CL 22091302 by Charles deRousiers in ue5-main branch]
* This CL adds dedicated legacy material compaction and writes 3uint through mrt (for simple clear coat/sss wrap/cloth) instead of 4 uint with 2 through UAV ops). This allows faster base pass in particular on slower platform.
* Activating DBuffer make the entire base pass slower with this change list, but this will be addressed with subsequent changes.
Work done by Seb, submitted on his behalf.
#rb charles.derousiers
#jira none
#preflight 631f8804065c4ac9ce61e81d
#fyi sebastien.hillaire
[CL 22002833 by Charles deRousiers in ue5-main branch]
Fixed a bug wehre loadiung fast material would not be done correctly inside the classification pass for the sharedmemeory path.
#rb none
#jira UE-161415
#preflight https://horde.devtools.epicgames.com/job/630909b9987e7155b1af0aec
#fyi charles.derousiers
[CL 21661992 by Sebastien Hillaire in ue5-main branch]
We are no longer fighting the Strata tree but just using it now, since Legacyconversion node can only oputput a single BSDF at any time. Conversion to decals parameter blending will now correctly work.
#rb charles.derousiers
#jira UE-160739
#fyi charles.derousiers
#preflight none
[CL 21423524 by Sebastien Hillaire in ue5-main branch]
This allows to have 'fast'/single layer path eye which support dual normal & caustic computation. This first version does not have SSS profile support and is missing the alternative iris normal decoding. This will be added in subsequent CLs.
#rb none
#jira none
#preflight 62a8b5541f6754ac09b164ea
#fyi sebastien.hillaire
[CL 20652223 by Charles deRousiers in ue5-main branch]
For pixel with complex/multi-BSDF computes BSDF material byte/index offsets and 'overflowing' tile.
This wil be used by Lumen for handling/parallelizing lighting computation.
#rb none
#jira none
#preflight 6234c38848746817f13c87bb
#fyi sebastien.hillaire
[CL 19438082 by Charles deRousiers in ue5-main branch]
Tiles with SSS but no rough refraction are also added onto the scene color buffer separately from the blur process.
#rb none
#preflight
#fyi charles.derousiers
[CL 19404162 by Sebastien Hillaire in ue5-main branch]
This simplify Strata Slab UI, and make it easier to thin-film coat many BSDFs at the same time.
#rb none
#jira none
#preflight 622fa337c51b66df4c248174
#fyi sebastien.hillaire
[CL 19378172 by Charles deRousiers in ue5-main branch]
- Completely changed the way we evaluate and represent the material topology.
- A topology is now represented as a tree to allow any horizontal/vertical operations (almost like a kdtree).
- This allows for correct translucent material coverage/transmittance evaluation, as well as correct BSDFs luminance weight (finally).
- All the operations to be able to do that are expended in HLSLTranslator instead of letting the compiler handle it (otherwise was too slow, leading to bugs and could not even debug shaders). This means no conditional BSDF packing.
- There is no more Material/layer/BSDFs array: only a Tree or operators, some of them being BSDF at leaves.
- Parameter blending has also been updated: when enabled on a node, it will be forced on all the oprator child / in the sub tree.
- Parameter blending is applied on an inlinedbsdf on the StrataData. When it is the root of the parameter blending subtree, it is promoted to a fully fledged BSDF operator node to allow other regular operators.
- The inlinedbsdf is not longer in premultiplied mode. Horizontal/Vertical/Add parameter blending operators have been updated to reflect that. This allows for simpler/unified/clearer code.
- Vertical blending now uses the new simple "layering of two slabs with uncorelated coverage" math I have RnD'd. See GetVerticalLayeringInfo in ShadingCommon.ush.
Follow up to this CL:
- CompileStrataBlendFunction should use parameter blending.
- Add more compilation debug output
- Update material vizualisation
- Fix Rough refraction
- Fix decals
- Fix debug probes
- Pack FStrataBSDF
- Move all StrataCompilationInfoCreateSingleBSDFMaterial into into the strata tree and rework cost evaluation and material LOD
- Expand graph visit such as UpdateBSDFWeightAfterOperatorVisit to be specific to operators for the compiler to have to do less search to inline what we know already
- Fix STRATA_TODO: operation using parameter blending are not actually discarded so they still occupy a pot in the opeartion arrays in the compiler and in the shader also.
#rb charles.derousiers
#preflight https://horde.devtools.epicgames.com/job/620a5f5d803d9066e67de938
#fyi charles.derousiers
[CL 18993400 by Sebastien Hillaire in ue5-main branch]
Ran Strata and non Strata code path.
QAGame cooked on Swi.
ShoorterGame cooked and ran on PC.
#rb charles.derousiers
#preflight https://horde.devtools.epicgames.com/job/61d47489db0309127dfae2a2
#ROBOMERGE-AUTHOR: sebastien.hillaire
#ROBOMERGE-SOURCE: CL 18509133 in //UE5/Release-5.0/... via CL 18509155
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18509183 by sebastien hillaire in ue5-release-engine-test branch]
We always compile the tile vertex shader and this includes strata.ush. We will fix compilation issue there when we get to it.
#jira https://jira.it.epicgames.com/browse/UE-137866
#rb none
#preflight https://horde.devtools.epicgames.com/job/61d42e9f932a02483cb8d000
[FYI] charles.derousiers
#ROBOMERGE-AUTHOR: sebastien.hillaire
#ROBOMERGE-SOURCE: CL 18506891 in //UE5/Release-5.0/... via CL 18506899
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18506901 by sebastien hillaire in ue5-release-engine-test branch]