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]
First version, will be improved.
DMFP input is used to control the back face lighting transmittance using MFP representation.
It is not possible to combine the Thin lighting and SSS mode so SSS post process is forced disabled when Thin lighting model is encoutered
#rb charles.derousiers
[CL 16125446 by Sebastien Hillaire in ue5-main branch]
- added a simple and fast clear path of the material buffer
- light and env light passes now reads AO and isStrataMaterial from the StrataHeader. No longer reads the classification or gbuffer data.
- Handle the max BSDF count case from the compiler.
Clear est 0.1ms at 1080p
SkyEnv pass cost 0.7->0.6ms et occupancy 60->70%
#rb Charles.deRousiers
[CL 15364191 by Sebastien Hillaire in ue5-main branch]
Default-no-strata => Strata before => Strata after simple tiled memory
Base pass: 1.2 => 2.4 => 1.4 ms
Light pass: 0.7 => 1.6 => 0.6 ms
SkyEnv: 1.0 => 2.0 => 0.7 ms
Classification xx => 2ms => 0.15 ms
#rb Charles.deRousiers
[CL 15336377 by Sebastien Hillaire in ue5-main branch]
There will be naming update after (not done here to not bloat the review) and update for the metal/volume representation after.
#rb charles.derousiers
[CL 15065874 by Sebastien Hillaire in ue5-main branch]
Added strata shading model as material info to infor domain/blend/MSM.
This work with material function and material layer.
Added unlit node and shader support for it.
#rb Charles.deRousiers.
[CL 14826806 by Sebastien Hillaire in ue5-main branch]
Only usable in the volumetric domain.
Added support for emissive on all BSDF, only taken advantage of by voluemtricFogCloud as of today.
Shootergame compiled and ran on pc.
#rb charles.deRousiers
[CL 14817295 by Sebastien Hillaire in ue5-main branch]