Files
UnrealEngineUWP/Engine/Source/Runtime/Experimental/GeometryCollectionEngine/Private/GeometryCollection/GeometryCollectionSceneProxy.ispc
jeremy moore 1cae9c2d97 Move all immutable geometry collection rendering data into the geometry collection asset.
This is built as part of geometry collection DDC contents.
Reworked scene proxy to use this data. Some big changes there:
* Tidied up hit proxy code so that all hit proxy clients use the same path.
* Removing of internal faces are now handled without an additional index buffer by always storing internal faces at the end of a section and providing different section descriptions for including internal faces.
* Dynamic geometry hiding in editor is now done by zeroing transforms instead of rebuilding the index buffer.
#rb cedric.caillaud
#preflight 63edc2e55c7bd278c11efe51

[CL 24261113 by jeremy moore in ue5-main branch]
2023-02-16 12:40:53 -05:00

34 lines
964 B
Plaintext

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Math/Vector.isph"
#include "Math/Matrix.isph"
export void SetDynamicData_RenderThread(uniform FVector3f PositionBuffer[],
const uniform unsigned int NumVertices,
const uniform unsigned int Stride,
const uniform uint16 BoneMap[],
const uniform FMatrix44f Transforms[],
const uniform FVector3f Vertices[])
{
uniform unsigned int Chunk = 0;
foreach(i = 0 ... NumVertices)
{
uniform float * uniform pVertices = (uniform float * uniform)&Vertices[Chunk];
uniform float * uniform pPosition = (uniform float * uniform)&PositionBuffer[Chunk];
FVector3f P;
aos_to_soa3(pVertices, &P.V[0], &P.V[1], &P.V[2]);
FVector3f Out;
const int32 Bone = BoneMap[i];
foreach_unique(Index in Bone)
{
Out = MatrixTransformPosition(P, Transforms[Index]);
}
soa_to_aos3(Out.V[0], Out.V[1], Out.V[2], pPosition);
Chunk += programCount;
}
}