* Card sampling with squared weights instead of cutoff in order to allow surface to leak into tiny areas without coverage
* Bump min static mesh LOD to reduce mismatches between surface cache and geometry
Card placement:
* Move near plane back outside of mesh bounds during capture in order to handle displacement mismatches
* Discard surfels seeing triangle back faces only when sky isn't visible
* New additive card placement, which can be used for continuous LOD. Instead of clustering, it tries to find the best split plane until the entire surface isn't covered.
* Lower voxel and min card size to be able to cover smaller areas and place more cards
* Spawn multiple surfels per cell if they cannot be merged
* Fixed surfel generation and card size
#ROBOMERGE-OWNER: krzysztof.narkowicz
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 21089854 via CL 21089869 via CL 21089871
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21096306 by krzysztof narkowicz in ue5-main branch]
* Card sampling with squared weights instead of cutoff in order to allow surface to leak into tiny areas without coverage
* Bump min static mesh LOD to reduce mismatches between surface cache and geometry
Card placement:
* Move near plane back outside of mesh bounds during capture in order to handle displacement mismatches
* New additive card placement, which can be used for continuous LOD. Instead of clustering, it tries to find the best split plane until the entire surface isn't covered.
* Lower voxel and min card size to be able to cover smaller areas and place more cards
* Spawn multiple surfels per cell if they cannot be merged
* Fixed surfel generation and card size
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 21078868 via CL 21078893 via CL 21079371
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21082291 by krzysztof narkowicz in ue5-main branch]
- The number of samples returned is the square number closer to the requested number.
- Updated code paths using the function to request a number of samples close to what they previously got.
#rb Krzysztof.Narkowicz
#preflight 628de9e7f622d972b5732cbb
#ROBOMERGE-AUTHOR: tiago.costa
#ROBOMERGE-SOURCE: CL 20361675 via CL 20361695 via CL 20361702
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v948-20297126)
[CL 20362041 by tiago costa in ue5-main branch]
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 20082848 via CL 20083225 via CL 20083623
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 20106592 by krzysztof narkowicz in ue5-main branch]
* Mostly two sided meshes are assumed to be foliage and forced to be repsented as a cube projection
* Lowered card min density treshold for cube projections
[FYI] Daniel.Wright
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 19424752 via CL 19424760
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v930-19419903)
[CL 19425489 by krzysztof narkowicz in ue5-main branch]
* Added r.MeshCardRepresentation.Debug for surface cache debugging. It skips DDC reads and writes, allows to regenerate per static mesh on demand and appends extra debug visualization data to every generated mapping
* Surfels are now weighted by opacity - ratio of rays which hit in a given cell, and by visibility - how many rays can hit a given Surfel from outside the mesh. This helps to select most important surfaces to cover when hitting limits
* Removed distance constraint. It�s no longer needed when card discontinuities are already handled inside the surface cache sampling code. This allows to generate larger and more optimal cards
* Limit max number of surfels to prevent generation time from exploding, as dense two sided meshes like large trees can generate many more surfels than simple walls
[FYI] Daniel.Wright
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 19304117 via CL 19304128
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)
[CL 19346860 by krzysztof narkowicz in ue5-main branch]
Instead of clearing RadiosityAtlas and skipping Radiosity when switching Lumen to SWRT, voxelize the direct lighting that's been calculated so far and keep the existing Radiosity atlas
#preflight 621f057e257fd6e099457e56
#jira UE-144367
#rb Krzysztof.Narkowicz
#lockdown Juan.Canada
#ROBOMERGE-AUTHOR: daniel.wright
#ROBOMERGE-SOURCE: CL 19219209 in //UE5/Release-5.0/... via CL 19219356
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19227351 by daniel wright in ue5-main branch]
#jira UE-122078
#rb Andrew.Davidson, Colin.McGinley
#preflight standard build
#ROBOMERGE-AUTHOR: fred.kimberley
#ROBOMERGE-SOURCE: CL 18817999 in //UE5/Release-5.0/... via CL 18818012 via CL 18822871
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18824721 by fred kimberley in ue5-main branch]
#preflight 61f277cbaf74b68515c0bd64
#ROBOMERGE-AUTHOR: andrew.davidson
#ROBOMERGE-SOURCE: CL 18751911 in //UE5/Release-5.0/... via CL 18751924 via CL 18752067
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18752076 by andrew davidson in ue5-main branch]
* First mesh is voxelized by tracing rays in every voxel
* Then voxel faces are clustered in parallel to build continuos cards. Clustering follows voxel distance, card ratio, density and other metrics
* Finally a specificied number of cards is selected per mesh (user parameter). This allows to tradeoff between coverage and runtime overhead
Other:
* Added surface cache coverage view mode for debugging coverage issues - r.Lumen.Visualize.Mode 6
* Fixed r.LumenScene.SurfaceCache.CardMinResolution to be able to go below 2
#preflight 61d478acdb0309127dfaf8ec
#rb Daniel.Wright
#ROBOMERGE-AUTHOR: krzysztof.narkowicz
#ROBOMERGE-SOURCE: CL 18519098 in //UE5/Release-5.0/... via CL 18519102
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18519115 by krzysztof narkowicz in ue5-release-engine-test branch]
#ROBOMERGE-SOURCE: CL 16900162 via CL 16917756
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16917910 by krzysztof narkowicz in ue5-release-engine-test branch]
* Generate surfels directly from the triangles instead of relying on ray tracing, to fix coverage issues on some meshes
* Surfels which are inside meshes (surrounded by back faces) or are too close to geometry are discarded
* New surfel clustering algorithm, which inserts one seed after another and tries to iteratively grow clusters in order to find the best set of seeds. Final step is to reset all clusters and grow all simultaneously from previously selected seeds.
* Cluster growing is based on normal, distance and surfel visibility (don�t cluster surfels near geometry first, as it can cause algorithm to be stuck in a local minimum)
* Runtime sampling has strict culling based on the angle and card AABB. Additionally, the tri-planar blending zone was tightened. This improves performance. 0.62-0.5 ms.
* Added various visualizations and CVars for card generation debugging
* Fixed card visibility bug, where card could influence outside of it�s range due to negative shadow map visibility
[FYI] Daniel.Wright, Patrick.Kelly
#ROBOMERGE-SOURCE: CL 16897632 via CL 16916104
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16916378 by krzysztof narkowicz in ue5-release-engine-test branch]