Add ability to adjust the adaptive ray count heuristic to be less aggressive (larger numbers).
#rb ola.olsson
#preflight 636b0282dc30a4ce96cc093e
[CL 23071887 by andrew lauritzen in ue5-main branch]
Originally reviewed in review 22330833.
#rb andrew.lauritzen, Ola.Olsson, Sebastien.Hillaire
#jira FORT-515227
#rnx
#preflight 6356c6700313c24974e8f7dd
[CL 22749579 by tim doerries in ue5-main branch]
[Backout] - CL22476756
[FYI] tim.doerries
Original CL Desc
-----------------------------------------------------------------
Added support for filtered virtual shadow maps on SingleLayerWater. Implemented by applying the VSM shadow mask to the SeparateMainDirLight texture that is written out by the main water pass in the presence of distance field shadows (or VSM filtering) and then later composing it back into the scene. Also removed EncodeLightAttenuationFromMask() function from VirtualShadowMapMaskBitsCommon.ush.
#rb andrew.lauritzen, Ola.Olsson, Sebastien.Hillaire
#rnx
#preflight 6345d0aeb757820b7a90db71
[CL 22587146 by bob tellez in ue5-main branch]
* Add shadow/transmission blurring on SSS surfae with VSM to reduce hard-shadow (directional light only for now).
* Change SubSurfaceModel to have extinction-like color-shifting.
#rb andrew.lauritzen
#preflight 63409395090af7205c2240b2
[CODEREVIEW] sebastien.hillaire, wei.liu, chares.derousiers
[CL 22424955 by marc audy in ue5-main branch]
- Move translucent injection outside the loop rather as it shares state and doesn't need barriers between it. This had already been done for unshadowed lights but this implements it for shadowed lights as well.
- Implement VSM one pass projection (still default off) even when clustered shading is not enabled. Has two paths in the regular light loop:
1) If another effect (ex. light functions) needs to interact with the screen shadow mask, a VSM composite path is inserted that does a quick copy from the one pass projection shadow mask bits
2) If only VSM is needed for the light, the lookup is rolled directly into the deferred lighting pixel shader, eliding the screen shadow mask entirely
Especially in the second case this significantly cuts down on GPU idle time and g-buffer bandwidth, improving the performance of scenes with small local lights
#rb ola.olsson, charles.derousiers
#preflight 633b36f9ba39998ce84c34dd
#jira UE-122099
[CL 22327084 by andrew lauritzen in ue5-main branch]
- This should only be used for gameplay lights.
- Current implementation adjusts light intensity on CPU using exposure data readback from GPU.
#preflight 631b4884d31788ea3a993a2f
#rb Krzysztof.Narkowicz
[CL 21929836 by tiago costa in ue5-main branch]
Also minor optimization to local light filtering when source radius = 0.
#rb charles.derousiers
#preflight 62c480352f31b87c6c9e78e7
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 20947932 via CL 20948251 via CL 20948696
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v971-20777995)
[CL 20950909 by andrew lauritzen in ue5-main branch]
- Improvements to cube map filtering to eliminate various leaking artifacts at cube edges/corners
- Implement texel dither and optimal bias for local lights
- Remove some half stuff that was causing some sub-optimal compilation
- Fix VSM visualization alignment
- Add a general purpose permutation parameter that can be set for A/B testing projection performance that affects register allocation
- General cleanup
#rb ola.olsson
#preflight 62b350da767c9aaf349e3243
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 20779131 via CL 20780276 via CL 20780946
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v970-20704180)
[CL 20782054 by andrew lauritzen in ue5-main branch]
Add a world dither. Not necessarily useful but can be somewhat analygous to PCF radius.
Add permutation to SMRT samples = 0 (and possibly more in the future).
#preflight 628eab6fc826bd5a7f1135ec
#rb ola.olsson
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 20372897 via CL 20372913 via CL 20372922
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)
[CL 20373677 by andrew lauritzen in ue5-main branch]
- Add slope-based depth extrapolation which improves the quality of penumbras on angled receivers. Costs ~10% performance in some cases so maintaining a permutation/cvar (default on) for scalability.
- Change screen ray trace to be a simple "space skipping" ray that terminates as soon as it goes behind geometry and continue VSM trace from that distance. This avoids various contact-shadow-like artifacts and undesirable/inconsistent contact shadows from things that aren't in the VSM. In certain cases if regular contact shadows are desired on top of VSM the engine contact shadows can be enabled, as it is with CSMs.
- Remove a bunch of use of "halfs" in the shaders as they cause some extra ALU on some platforms and don't appear to really be helping with occupancy anymore
- Small bump to minimum normal bias clamp (only affects things very close to the camera)
#rb brian.karis
[FYI] ola.olsson
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 19411300 via CL 19411627
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v928-19376421)
[CL 19413239 by andrew lauritzen in ue5-main branch]
This avoids to define STRATA_ENABLED as 'env. define' for all global shaders needing a Strata specific path.
#rb none
#jira none
#fyi sebastien.hillaire
#preflight 62151b25797dbbeb472ae2eb
[CL 19074999 by Charles deRousiers in ue5-main branch]
Move visualize enum/defines to shared header file.
Rename a few cvars for consistency.
#rb graham.wihlidal
[FYI] ola.olsson
#preflight 61f9d8921d7ca8ed2d628ccd
#ROBOMERGE-AUTHOR: andrew.lauritzen
#ROBOMERGE-SOURCE: CL 18819821 in //UE5/Release-5.0/... via CL 18819825 via CL 18822904
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18825054 by andrew lauritzen in ue5-main branch]