Skip to content

Commit 6fea47f

Browse files
authored
Merge pull request #51 from Panakotta00/development
Development
2 parents 9eae5be + 3178226 commit 6fea47f

File tree

8 files changed

+79
-56
lines changed

8 files changed

+79
-56
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ jobs:
4242
- name: Download, Extract and Setup UE
4343
working-directory: ue
4444
run: |
45-
gh release download --repo satisfactorymodding/UnrealEngine -p "UnrealEngine-CSS-Editor-Win64.7z.*" 5.3.2-css-68
45+
gh release download --repo satisfactorymodding/UnrealEngine -p "UnrealEngine-CSS-Editor-Win64.7z.001" 5.3.2-css-68
46+
gh release download --repo satisfactorymodding/UnrealEngine -p "UnrealEngine-CSS-Editor-Win64.7z.002" 5.3.2-css-68
47+
gh release download --repo satisfactorymodding/UnrealEngine -p "UnrealEngine-CSS-Editor-Win64.7z.003" 5.3.2-css-68
4648
7z x UnrealEngine-CSS-Editor-Win64.7z.001
4749
rm UnrealEngine-CSS-Editor-Win64.7z*
4850
.\\SetupScripts\\Register.bat

FicsItCam.uplugin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"FileVersion": 3,
33
"Version": 1,
44
"VersionName": "1.0",
5-
"SemVersion": "1.0.0",
5+
"SemVersion": "1.0.1",
66
"GameVersion": ">=415558",
77
"AcceptsAnyRemoteVersion": true,
88
"FriendlyName": "FicsIt-Cam",

Source/FicsItCam/Private/Editor/Data/FICEditorCameraActor.cpp

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#include "Editor/Data/FICEditorCameraActor.h"
22

33
#include "EngineUtils.h"
4-
#include "FICSubsystem.h"
4+
#include "FICDummyViewport.h"
5+
#include "FICSubsystem.h"
6+
#include "SViewport.h"
57
#include "TextureResource.h"
68
#include "Components/LineBatchComponent.h"
79
#include "Components/SceneCaptureComponent2D.h"
@@ -93,18 +95,23 @@ AFICEditorCameraActor::AFICEditorCameraActor() {
9395

9496
CaptureComponent = CreateDefaultSubobject<USceneCaptureComponent2D>(TEXT("CaptureComponent"));
9597
CaptureComponent->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);
98+
9699
RenderTarget = CreateDefaultSubobject<UTextureRenderTarget2D>(TEXT("RenderTarget"));
97-
RenderTarget->InitAutoFormat(320, 320);
100+
RenderTarget->TargetGamma = 1;
101+
RenderTarget->InitCustomFormat(320, 320, PF_R8G8B8A8, false);
102+
RenderTarget->bGPUSharedFlag = true;
103+
98104
CaptureComponent->TextureTarget = RenderTarget;
99-
CaptureComponent->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR;
100-
CaptureComponent->DetailMode = DM_MAX;
101-
CaptureComponent->LODDistanceFactor = 0.01;
102-
CaptureComponent->PrimitiveRenderMode = ESceneCapturePrimitiveRenderMode::PRM_RenderScenePrimitives;
103-
CaptureComponent->bUseRayTracingIfEnabled = true;
104-
CaptureComponent->ShowFlags.SetTemporalAA(true);
105105
CaptureComponent->bCaptureEveryFrame = false;
106-
CameraPreviewBrush = FSlateImageBrush(RenderTarget, FVector2D(RenderTarget->SizeX, RenderTarget->SizeY));
107-
106+
CaptureComponent->bCaptureOnMovement = false;
107+
CaptureComponent->bUseRayTracingIfEnabled = true;
108+
CaptureComponent->bAlwaysPersistRenderingState = true;
109+
110+
CaptureComponent->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR;
111+
if (GEngine) CaptureComponent->ShowFlags = *GEngine->GameViewport->GetEngineShowFlags();
112+
113+
//CameraPreviewBrush = FSlateImageBrush(RenderTarget, FVector2D(RenderTarget->SizeX, RenderTarget->SizeY));
114+
108115
PrimaryActorTick.bCanEverTick = true;
109116

110117
LineBatcher = CreateDefaultSubobject<ULineBatchComponent>(TEXT("LineBatcher"));
@@ -154,6 +161,7 @@ void AFICEditorCameraActor::Tick(float DeltaSeconds) {
154161
if (CameraPreview && CameraPreview.IsUnique()) {
155162
CameraPreview.Reset();
156163
CaptureComponent->bCaptureEveryFrame = false;
164+
CameraPreviewViewport.Reset();
157165
}
158166
}
159167

@@ -173,14 +181,24 @@ TSharedRef<SWidget> AFICEditorCameraActor::GetCameraPreview() {
173181
UpdateRenderTarget();
174182
CaptureComponent->bCaptureEveryFrame = true;
175183
if (!CameraPreview) {
176-
CameraPreview = SNew(SImage)
177-
.Image(&CameraPreviewBrush);
184+
CaptureComponent->CaptureScene();
185+
FlushRenderingCommands();
186+
FIntPoint Size = RenderTarget->GameThread_GetRenderTargetResource()->GetSizeXY();
187+
CameraPreviewViewport = MakeShared<FFICDummyViewport>(RenderTarget->GameThread_GetRenderTargetResource()->GetRenderTargetTexture(), Size);
188+
/*CameraPreview = SNew(SImage)
189+
.Image(&CameraPreviewBrush);*/
190+
CameraPreview = SNew(SViewport)
191+
.ViewportInterface(CameraPreviewViewport)
192+
.ForceVolatile(true)
193+
.IsEnabled(true)
194+
.RenderOpacity(1.0)
195+
.EnableGammaCorrection(true);
178196
}
179197
return CameraPreview.ToSharedRef();
180198
}
181199

182200
void AFICEditorCameraActor::UpdateRenderTarget() {
183201
float AspectRatio = (float)EditorContext->GetScene()->ResolutionWidth / (float)EditorContext->GetScene()->ResolutionHeight;
184-
RenderTarget->InitAutoFormat(AspectRatio*320, 320);
185-
CameraPreviewBrush = FSlateImageBrush(RenderTarget, FVector2D(RenderTarget->SizeX, RenderTarget->SizeY));
202+
RenderTarget->ResizeTarget(AspectRatio*320, 320);
203+
//CameraPreviewBrush = FSlateImageBrush(RenderTarget, FVector2D(RenderTarget->SizeX, RenderTarget->SizeY));
186204
}

Source/FicsItCam/Private/Runtime/FICCaptureCamera.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ void AFICCaptureCamera::UpdateCaptureWithCameraData(UCameraComponent* InCamera)
6767
InCamera->GetCameraView(0, ViewInfo);
6868
CaptureComponent->SetCameraView(ViewInfo);
6969

70-
CaptureComponent->PostProcessSettings.AutoExposureSpeedDown = 10000.0f;
71-
CaptureComponent->PostProcessSettings.AutoExposureSpeedUp = 10000.0f;
70+
CaptureComponent->PostProcessSettings.AutoExposureSpeedDown = 100.0f;
71+
CaptureComponent->PostProcessSettings.AutoExposureSpeedUp = 100.0f;
7272
CaptureComponent->PostProcessSettings.bOverride_AutoExposureSpeedDown = true;
7373
CaptureComponent->PostProcessSettings.bOverride_AutoExposureSpeedUp = true;
7474
CaptureComponent->PostProcessBlendWeight = 1.0f;

Source/FicsItCam/Private/Runtime/Process/FICRuntimeProcessCameraFeed.cpp

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,9 @@
88
#include "Components/SceneCaptureComponent2D.h"
99
#include "Engine/TextureRenderTarget2D.h"
1010
#include "Runtime/FICCaptureCamera.h"
11-
#include "Slate/SceneViewport.h"
1211
#include "Slate/SlateTextures.h"
13-
#include "Widgets/Images/SImage.h"
1412
#include "Widgets/SViewport.h"
1513

16-
class FFICFeedView : public ISlateViewport
17-
{
18-
public:
19-
FFICFeedView(FTexture2DRHIRef RenderTargetTexture, FIntPoint InSize)
20-
: RenderTarget( new FSlateRenderTargetRHI(RenderTargetTexture, InSize.X, InSize.Y))
21-
, Size(InSize) {
22-
BeginInitResource(RenderTarget);
23-
}
24-
25-
~FFICFeedView() {
26-
ReleaseResourceAndFlush(RenderTarget);
27-
delete RenderTarget;
28-
}
29-
30-
// Begin ISlateViewport
31-
virtual FIntPoint GetSize() const override {
32-
return Size;
33-
}
34-
35-
virtual FSlateShaderResource* GetViewportRenderTargetTexture() const override {
36-
return RenderTarget;
37-
}
38-
39-
virtual bool RequiresVsync() const override {
40-
return false;
41-
}
42-
// End ISlateViewport
43-
44-
private:
45-
FSlateRenderTargetRHI* RenderTarget;
46-
FIntPoint Size;
47-
};
48-
4914
void UFICRuntimeProcessCameraFeed::SaveWindowSettings() {
5015
WindowLocation = Window->GetPositionInScreen();
5116
WindowSize = Window->GetSizeInScreen();
@@ -74,7 +39,7 @@ void UFICRuntimeProcessCameraFeed::Start(AFICRuntimeProcessorCharacter* InCharac
7439

7540
FIntPoint Size = FIntPoint(Camera->RenderTarget->SizeX, Camera->RenderTarget->SizeY);
7641
FVector2D Resolution = CameraArgument.GetResolution(this);
77-
View = MakeShared<FFICFeedView>(Camera->RenderTarget->GameThread_GetRenderTargetResource()->GetRenderTargetTexture(), Size);
42+
View = MakeShared<FFICDummyViewport>(Camera->RenderTarget->GameThread_GetRenderTargetResource()->GetRenderTargetTexture(), Size);
7843

7944
Window = SNew(SWindow)[
8045
SNew(SViewport)

Source/FicsItCam/Public/Editor/Data/FICEditorCameraActor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class AFICEditorCameraActor : public AActor, public IFICSelectionInteractionTarg
6868
UFICEditorCameraPathComponent* CameraPathComponent = nullptr;
6969

7070
TSharedPtr<SWidget> CameraPreview;
71+
TSharedPtr<ISlateViewport> CameraPreviewViewport;
7172

7273
AFICEditorCameraActor();
7374

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#pragma once
2+
3+
#include "CoreMinimal.h"
4+
#include "SlateTextures.h"
5+
#include "Slate/SceneViewport.h"
6+
7+
class FFICDummyViewport : public ISlateViewport {
8+
public:
9+
FFICDummyViewport(FTexture2DRHIRef RenderTargetTexture, FIntPoint InSize)
10+
: RenderTarget( new FSlateRenderTargetRHI(RenderTargetTexture, InSize.X, InSize.Y))
11+
, Size(InSize) {
12+
BeginInitResource(RenderTarget);
13+
}
14+
15+
~FFICDummyViewport() {
16+
ReleaseResourceAndFlush(RenderTarget);
17+
delete RenderTarget;
18+
}
19+
20+
// Begin ISlateViewport
21+
virtual FIntPoint GetSize() const override {
22+
return Size;
23+
}
24+
25+
virtual FSlateShaderResource* GetViewportRenderTargetTexture() const override {
26+
return RenderTarget;
27+
}
28+
29+
virtual bool RequiresVsync() const override {
30+
return false;
31+
}
32+
// End ISlateViewport
33+
34+
private:
35+
FSlateRenderTargetRHI* RenderTarget;
36+
FIntPoint Size;
37+
};

Source/FicsItCam/Public/Runtime/Process/FICRuntimeProcessCameraFeed.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "FICRuntimeProcess.h"
55
#include "Runtime/FICCameraArgument.h"
66
#include "Brushes/SlateImageBrush.h"
7-
#include "Runtime/FICCameraReference.h"
7+
#include "Rendering/FICDummyViewport.h"
88

99
#include "FICRuntimeProcessCameraFeed.generated.h"
1010

@@ -24,7 +24,7 @@ class UFICRuntimeProcessCameraFeed : public UFICRuntimeProcess, public IFGSaveIn
2424
UFICProceduralTexture* PreviewTexture = nullptr;
2525

2626
TSharedPtr<SWindow> Window;
27-
TSharedPtr<FFICFeedView> View;
27+
TSharedPtr<FFICDummyViewport> View;
2828

2929
UPROPERTY(SaveGame)
3030
FVector2D WindowLocation;

0 commit comments

Comments
 (0)