You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Add support for warm up frames when doing an AsyncCaptureScene.
#ROBOMERGE-AUTHOR: jeremy.moore #ROBOMERGE-SOURCE: CL 19322048 via CL 19322310 via CL 19322368 via CL 19327116 via CL 19328047 via CL 19328071 #ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884) [CL 19348318 by jeremy moore in ue5-main branch]
This commit is contained in:
@@ -30,12 +30,20 @@ UAsyncCaptureScene::UAsyncCaptureScene()
|
||||
UAsyncCaptureScene* UAsyncCaptureScene::CaptureSceneAsync(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY)
|
||||
{
|
||||
UAsyncCaptureScene* AsyncTask = NewObject<UAsyncCaptureScene>();
|
||||
AsyncTask->Start(ViewCamera, SceneCaptureClass, ResX, ResY);
|
||||
AsyncTask->Start(ViewCamera, SceneCaptureClass, ResX, ResY, 0);
|
||||
|
||||
return AsyncTask;
|
||||
}
|
||||
|
||||
void UAsyncCaptureScene::Start(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY)
|
||||
UAsyncCaptureScene* UAsyncCaptureScene::CaptureSceneWithWarmupAsync(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY, int WarmUpFrames)
|
||||
{
|
||||
UAsyncCaptureScene* AsyncTask = NewObject<UAsyncCaptureScene>();
|
||||
AsyncTask->Start(ViewCamera, SceneCaptureClass, ResX, ResY, WarmUpFrames);
|
||||
|
||||
return AsyncTask;
|
||||
}
|
||||
|
||||
void UAsyncCaptureScene::Start(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY, int InWarmUpFrames)
|
||||
{
|
||||
const FVector CaptureLocation = ViewCamera->GetComponentLocation();
|
||||
const FRotator CaptureRotation = ViewCamera->GetComponentRotation();
|
||||
@@ -64,6 +72,8 @@ void UAsyncCaptureScene::Start(UCameraComponent* ViewCamera, TSubclassOf<ASceneC
|
||||
ViewCamera->GetCameraView(0, CaptureView);
|
||||
CaptureComponent->SetCameraView(CaptureView);
|
||||
}
|
||||
|
||||
WarmUpFrames = FMath::Max(InWarmUpFrames, 1);
|
||||
}
|
||||
|
||||
void UAsyncCaptureScene::Activate()
|
||||
@@ -80,7 +90,10 @@ void UAsyncCaptureScene::Activate()
|
||||
|
||||
FinishLoadingBeforeScreenshot();
|
||||
|
||||
CaptureComponent->CaptureScene();
|
||||
for (int32 FrameCount = 0; FrameCount < WarmUpFrames; ++FrameCount)
|
||||
{
|
||||
CaptureComponent->CaptureScene();
|
||||
}
|
||||
|
||||
NotifyComplete(SceneCaptureRT);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ public:
|
||||
|
||||
UFUNCTION(BlueprintCallable, meta=( BlueprintInternalUseOnly="true" ))
|
||||
static UAsyncCaptureScene* CaptureSceneAsync(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY);
|
||||
|
||||
UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
|
||||
static UAsyncCaptureScene* CaptureSceneWithWarmupAsync(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY, int WarmUpFrames);
|
||||
|
||||
virtual void Activate() override;
|
||||
public:
|
||||
@@ -38,7 +41,7 @@ public:
|
||||
private:
|
||||
|
||||
void NotifyComplete(UTextureRenderTarget2D* InTexture);
|
||||
void Start(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY);
|
||||
void Start(UCameraComponent* ViewCamera, TSubclassOf<ASceneCapture2D> SceneCaptureClass, int ResX, int ResY, int InWarmUpFrames);
|
||||
void FinishLoadingBeforeScreenshot();
|
||||
|
||||
private:
|
||||
@@ -47,4 +50,6 @@ private:
|
||||
|
||||
UPROPERTY()
|
||||
TObjectPtr<UTextureRenderTarget2D> SceneCaptureRT;
|
||||
|
||||
int32 WarmUpFrames;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user