Lumen surface cache generation changes in order to fix surface coverage issues

* 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]
This commit is contained in:
krzysztof narkowicz
2022-01-05 10:30:05 -05:00
parent 7bd49b802a
commit bbc28ea8b9
13 changed files with 1133 additions and 636 deletions

View File

@@ -228,6 +228,7 @@ public:
const TArray<FSignedDistanceFieldBuildMaterialData>& MaterialBlendModes,
const FBoxSphereBounds& Bounds,
const class FDistanceFieldVolumeData* DistanceFieldVolumeData,
int32 MaxLumenMeshCards,
bool bGenerateAsIfTwoSided,
class FCardRepresentationData& OutData) = 0;