diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..05699b5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Plugins/FidelityFX-FSR"] + path = Plugins/FidelityFX-FSR + url = https://github.com/FlaxEngine/FidelityFX-FSR diff --git a/GoakeFlax.flaxproj b/GoakeFlax.flaxproj index 182c4b6..525d56c 100644 --- a/GoakeFlax.flaxproj +++ b/GoakeFlax.flaxproj @@ -1,13 +1,16 @@ { "Name": "GoakeFlax", "Version": "1.0", - "Company": "My Company", + "Company": "Ari Vuollet", "Copyright": "", "GameTarget": "GameTarget", "EditorTarget": "GameEditorTarget", "References": [ { "Name": "$(EnginePath)/Flax.flaxproj" + }, + { + "Name": "$(ProjectPath)/Plugins/FidelityFX-FSR/FidelityFX-FSR.flaxproj" } ], "DefaultScene": "194e05f445ece24ec5448d886e1334df", @@ -23,6 +26,5 @@ "Z": 0.338997364 } }, - "MinEngineVersion": "0.0.6194", - "EngineNickname": null + "MinEngineVersion": "0.0.6194" } \ No newline at end of file diff --git a/Plugins/FidelityFX-FSR b/Plugins/FidelityFX-FSR new file mode 160000 index 0000000..5db14b8 --- /dev/null +++ b/Plugins/FidelityFX-FSR @@ -0,0 +1 @@ +Subproject commit 5db14b8bc98cc225e2a81a1aa8bdf9d784ba3be9 diff --git a/Source/Game/Cabrito/EngineSubsystem.cs b/Source/Game/Cabrito/EngineSubsystem.cs index 4b58df4..644a3bd 100644 --- a/Source/Game/Cabrito/EngineSubsystem.cs +++ b/Source/Game/Cabrito/EngineSubsystem.cs @@ -104,5 +104,22 @@ namespace Cabrito } } } + + [ConsoleVariable("r_renderscale")] + public static string RenderScale + { + get + { + return MainRenderTask.Instance.RenderingPercentage.ToString(); + } + set + { + if (float.TryParse(value, out float valueFloat)) + { + valueFloat = Mathf.Clamp(valueFloat, 0.00001f, 4.0f); + MainRenderTask.Instance.RenderingPercentage = valueFloat; + } + } + } } } \ No newline at end of file diff --git a/Source/Game/CameraRender.cs b/Source/Game/CameraRender.cs new file mode 100644 index 0000000..fbe23e4 --- /dev/null +++ b/Source/Game/CameraRender.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using FlaxEngine; + +namespace Game +{ + /// + /// CameraRender Script. + /// + public class CameraRender : Script + { + public Camera camera; + + private PostProcessEffect fidelityFx; + + public override void OnStart() + { + // Here you can add code that needs to be called when script is created, just before the first game update + MainRenderTask.Instance.Render += InstanceOnRender; + MainRenderTask.Instance.PostRender += OnPostRender; + + foreach (PostProcessEffect fx in SceneRenderTask.GlobalCustomPostFx) + { + if (fx.TypeName == "FidelityFX.FSRPostFx") + fidelityFx = fx; + Debug.Log("fx: " + fx.TypeName); + } + + MainRenderTask.Instance.RenderingPercentage = 1f; + } + + private void InstanceOnRender(RenderTask renderTask, GPUContext gpuContext) + { + //gpuContext.Clear(); + var outputView = MainRenderTask.Instance.OutputView; + var viewport = camera.Viewport; + MainRenderTask.Instance.View.CopyFrom(camera, ref viewport); + + //MainRenderTask.Instance.View.CopyFrom(Camera.MainCamera); + } + + private void OnPostRender(GPUContext gpuContext, ref RenderContext renderContext) + { + //var viewport = MainRenderTask.Instance.Viewport; + //var viewport2 = camera.Viewport; + + MainRenderTask.Instance.View.CopyFrom(Camera.MainCamera); + } + + /// + public override void OnEnable() + { + // Here you can add code that needs to be called when script is enabled (eg. register for events) + } + + /// + public override void OnDisable() + { + MainRenderTask.Instance.Render -= InstanceOnRender; + MainRenderTask.Instance.PostRender -= OnPostRender; + // Here you can add code that needs to be called when script is disabled (eg. unregister from events) + } + + /// + public override void OnUpdate() + { + if (Input.GetKeyDown(KeyboardKeys.F8)) + { + fidelityFx.Enabled = !fidelityFx.Enabled; + Cabrito.Console.Print("FXR: " + fidelityFx.Enabled.ToString()); + } + // Here you can add code that needs to be called every frame + } + } +}