IVSmoke 1.0
Loading...
Searching...
No Matches
IVSmokeSceneViewExtension.h
1// Copyright (c) 2026, Team SDB. All rights reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "SceneViewExtension.h"
7#include "RenderGraphDefinitions.h"
8#include "SceneTexturesConfig.h"
9
10struct FPostProcessMaterialInputs;
11struct FScreenPassTexture;
12struct FRenderTargetBindingSlots;
13
14/**
15 * Scene view extension for IVSmoke post-process hook.
16 * Delegates actual rendering to FIVSmokeRenderer.
17 */
18class IVSMOKE_API FIVSmokeSceneViewExtension : public FSceneViewExtensionBase
19{
20public:
21 FIVSmokeSceneViewExtension(const FAutoRegister& AutoRegister);
22
23 /** Initialize the scene view extension singleton. */
24 static void Initialize();
25
26 /** Shutdown and release the scene view extension. */
27 static void Shutdown();
28
29 //~ Begin FSceneViewExtensionBase Interface
30 virtual void SetupViewFamily(FSceneViewFamily& InViewFamily) override {}
31 virtual void SetupView(FSceneViewFamily& InViewFamily, FSceneView& InView) override {}
32 virtual void BeginRenderViewFamily(FSceneViewFamily& InViewFamily) override;
33 virtual void SubscribeToPostProcessingPass(
34 EPostProcessingPass Pass,
35 const FSceneView& InView,
36 FPostProcessingPassDelegateArray& InOutPassCallbacks,
37 bool bIsPassEnabled) override;
38 virtual bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext& Context) const override;
39 virtual void PostRenderBasePassDeferred_RenderThread(
40 FRDGBuilder& GraphBuilder,
41 FSceneView& InView,
42 const FRenderTargetBindingSlots& RenderTargets,
43 TRDGUniformBufferRef<FSceneTextureUniformParameters> SceneTextures) override;
44 virtual void PostRenderViewFamily_RenderThread(
45 FRDGBuilder& GraphBuilder,
46 FSceneViewFamily& InViewFamily) override;
47 //~ End FSceneViewExtensionBase Interface
48
49private:
50 /** Singleton instance. */
51 static TSharedPtr<FIVSmokeSceneViewExtension, ESPMode::ThreadSafe> Instance;
52
53 /** Main render callback for post-process pass. Delegates to FIVSmokeRenderer. */
54 FScreenPassTexture Render_RenderThread(
55 FRDGBuilder& GraphBuilder,
56 const FSceneView& View,
57 const FPostProcessMaterialInputs& Inputs);
58};