Files
UnrealEngine/Engine/Source/Runtime/Renderer/Private/Nanite/NaniteStreamOut.h
2025-05-18 13:04:45 +08:00

60 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "RenderGraphBuilder.h"
#include "RenderGraphResources.h"
#include "RHIGPUReadback.h"
#include "CoreMinimal.h"
class FGlobalShaderMap;
namespace Nanite
{
struct FStreamOutRequest
{
uint32 PrimitiveId;
uint32 NumMaterials;
uint32 NumSegments;
uint32 SegmentMappingOffset;
uint32 AuxiliaryDataOffset;
uint32 MeshDataOffset;
};
struct FStreamOutMeshDataHeader
{
uint32 NumClusters;
uint32 VertexBufferOffset;
uint32 IndexBufferOffset;
uint32 NumVertices;
uint32 NumIndices;
};
struct FStreamOutMeshDataSegment
{
uint32 NumIndices;
uint32 FirstIndex;
};
/*
* Stream out nanite mesh data into buffers in a uncompressed format
*/
void StreamOutData(
FRDGBuilder& GraphBuilder,
FGlobalShaderMap* ShaderMap,
FSceneUniformBuffer &SceneUniformBuffer,
float CutError,
uint32 NumRequests,
FRDGBufferRef RequestBuffer,
FRDGBufferRef SegmentMappingBuffer,
FRDGBufferRef MeshDataBuffer,
FRDGBufferRef AuxiliaryDataBuffer,
FRDGBufferRef VertexBuffer,
uint32 MaxNumVertices,
FRDGBufferRef IndexBuffer,
uint32 MaxNumIndices
);
} // namespace Nanite