Files
UnrealEngine/Engine/Plugins/Mutable/Source/MutableRuntime/Internal/MuR/OpImageProject.h
2025-05-18 13:04:45 +08:00

59 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Math/IntVector.h"
namespace mu
{
class FImage;
class FMesh;
struct FProjector;
enum class ESamplingMethod : uint8;
template <int NUM_INTERPOLATORS> class RasterVertex;
struct FScratchImageProject
{
TArray<RasterVertex<4>> Vertices;
TArray<uint8> CulledVertex;
};
extern void ImageRasterProjectedPlanar( const FMesh* pMesh, FImage* pTargetImage,
const FImage* pSource, const FImage* pMask,
bool bIsRGBFadingEnabled, bool bIsAlphaFadingEnabled,
ESamplingMethod SamplingMethod,
float FadeStart, float FadeEnd, float MipInterpolationFactor,
int Layout, uint64 BlockId,
UE::Math::TIntVector2<uint16> CropMin, UE::Math::TIntVector2<uint16> UncroppedSize,
FScratchImageProject* scratch, bool bUseVectorImplementation = false);
extern void ImageRasterProjectedCylindrical( const FMesh* pMesh, FImage* pTargetImage,
const FImage* pSource, const FImage* pMask,
bool bIsRGBFadingEnabled, bool bIsAlphaFadingEnabled,
ESamplingMethod SamplingMethod,
float FadeStart, float FadeEnd, float MipInterpolationFactor,
int32 Layout,
float ProjectionAngle,
UE::Math::TIntVector2<uint16> CropMin, UE::Math::TIntVector2<uint16> UncroppedSize,
FScratchImageProject* Scratch, bool bUseVectorImplementation = false);
extern void ImageRasterProjectedWrapping( const FMesh* pMesh, FImage* pTargetImage,
const FImage* pSource, const FImage* pMask,
bool bIsRGBFadingEnabled, bool bIsAlphaFadingEnabled,
ESamplingMethod SamplingMethod,
float FadeStart, float FadeEnd, float MipInterpolationFactor,
int32 Layout, uint64 BlockId,
UE::Math::TIntVector2<uint16> CropMin, UE::Math::TIntVector2<uint16> UncroppedSize,
FScratchImageProject* Scratch, bool bUseVectorImplementation = false);
extern float ComputeProjectedFootprintBestMip(
const FMesh* pMesh, const FProjector& Projector, const FVector2f& TargetSize, const FVector2f& SourceSize);
extern void MeshProject(FMesh* Result, const FMesh* pMesh, const FProjector& Projector, bool& bOutSuccess);
MUTABLERUNTIME_API extern void CreateMeshOptimisedForProjection(FMesh* Result, int32 LayoutIndex);
MUTABLERUNTIME_API extern void CreateMeshOptimisedForWrappingProjection(FMesh* Result, int32 LayoutIndex);
}