Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR: Patch-1 => Main #53

Merged
merged 31 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
71bad8f
Support Vulkan API and SM6 on vulkan.
OudomMunint Oct 6, 2024
7155287
New ProjectID and Version.
OudomMunint Oct 6, 2024
91179b2
Disable F-FPS
OudomMunint Oct 6, 2024
c9b9823
Add GI quality caching and refactor SSGI & SSAO fallback logic, impro…
OudomMunint Oct 6, 2024
770ee6d
#47 - Added C++ AAShadowManager class.
OudomMunint Oct 6, 2024
e86c5b9
#47 - Shadow map fallback, enable volumetrics on medium, reduce cpu o…
OudomMunint Oct 6, 2024
fdc636a
#47 - Optimize unnecessary shadow casts.
OudomMunint Oct 6, 2024
4714dcc
Map changes, perf optimisations, lighting tweaks, spawn location bug.
OudomMunint Oct 6, 2024
9fe2ef2
Fixed packaging error due to header files + some shadow logic tweaks.
OudomMunint Oct 7, 2024
ca70564
Fixed C4458 err causing packaging failure.
OudomMunint Oct 7, 2024
3f2b3af
#49
OudomMunint Oct 7, 2024
5a42db1
#48
OudomMunint Oct 7, 2024
17de69c
#48 Tweaked clipping bounds and options pane sizing.
OudomMunint Oct 7, 2024
6dfe72b
Lighting build data
OudomMunint Oct 7, 2024
d59bcb5
Default Max FPS to 144
OudomMunint Oct 7, 2024
6cc2a90
v2.1.4 release tag.
OudomMunint Oct 8, 2024
5dfb1f6
v2.1.4 release tag
OudomMunint Oct 8, 2024
c4e5536
Revert "v2.1.4 release tag."
OudomMunint Oct 8, 2024
7b93ff1
Important readme changes and documentation clean up.
OudomMunint Oct 8, 2024
b043313
Update Xcode version requirements.
OudomMunint Oct 8, 2024
e143ecd
#50 Fix FPS & Resolution slider default value issue.
OudomMunint Oct 8, 2024
8b246a8
Re-org blueprints + added comment sections
OudomMunint Oct 8, 2024
03f39d0
Class cleanup and Refactor.
OudomMunint Oct 8, 2024
5a15835
Added custom GameInstance class, add class references.
OudomMunint Oct 8, 2024
3535521
#52 - Added a button to pull up the graphics menu during game pause.
OudomMunint Oct 11, 2024
ee8d6f3
#52 BP structure clean up. UI rework & fixes.
OudomMunint Oct 11, 2024
a6829fc
Make ApplyGISettings(int32 GiQualityLevel); a BlueprintCallable.
OudomMunint Oct 11, 2024
c9ec42e
Project outliner clean up & catagorization
OudomMunint Oct 11, 2024
db0dad7
Move staticmeshactors into /Landscape
OudomMunint Oct 11, 2024
93ad88e
v2.1.4 Build for win_x86
OudomMunint Oct 11, 2024
53b8efc
v2.1.4 build for macOS
OudomMunint Oct 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ jobs:
uses: ncipollo/[email protected]
with:
artifacts: "UE4&5-github-actions-build"
tag: v2.1.3
tag: v2.1.4
3 changes: 3 additions & 0 deletions Config/DefaultEngine.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ bUseSplitscreen=True
TwoPlayerSplitscreenLayout=Horizontal
ThreePlayerSplitscreenLayout=FavorTop
GameInstanceClass=/Script/Engine.GameInstance
GameInstanceClass=/Script/DESN2600Test.TpsGameInstance
GameDefaultMap=/Game/ShooterSimplifiedAI/Maps/DemoMap_ShooterAI.DemoMap_ShooterAI
ServerDefaultMap=/Engine/Maps/Entry
GlobalDefaultGameMode=/Game/ShooterSimplifiedAI/Blueprints/ShooterGameMode.ShooterGameMode_C
Expand All @@ -33,6 +34,7 @@ AppliedDefaultGraphicsPerformance=Maximum
+ActiveGameNameRedirects=(OldGameName="/Script/TP_FirstPersonBP",NewGameName="/Script/DESN2600Test")
bSmoothFrameRate=True
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=30.000000),UpperBound=(Type=Exclusive,Value=72.000000))
bUseFixedFrameRate=False

[/Script/AIModule.CrowdManager]
MaxAgents=100
Expand Down Expand Up @@ -88,6 +90,7 @@ DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
-D3D11TargetedShaderFormats=PCD3D_SM5
+D3D11TargetedShaderFormats=PCD3D_SM5
+VulkanTargetedShaderFormats=SF_VULKAN_SM5
+VulkanTargetedShaderFormats=SF_VULKAN_SM6
Compiler=VisualStudio2022
AudioSampleRate=48000
AudioCallbackBufferFrameSize=1024
Expand Down
4 changes: 2 additions & 2 deletions Config/DefaultGame.ini
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
[/Script/EngineSettings.GeneralProjectSettings]
ProjectID=447CEEEF4C3B2354AED720A032F1A5FD
ProjectID=CDF350244DA48F6B69E1338C583EFC28
ProjectName=Third Person Shooter
Description=Third Person shooter
CopyrightNotice=
bUseBorderlessWindow=True
Homepage="https://github.com/OudomMunint/Unreal-3rd-person-shooter-4.27"
ProjectVersion=2.1.3
ProjectVersion=2.1.4

[StartupActions]
bAddPacks=True
Expand Down
Binary file modified Content/BlueprintsMGE/BP_GameMode_MainMenu.uasset
Binary file not shown.
Binary file modified Content/BlueprintsMGE/WidgetBP/Menus/WBP_MainMenu.uasset
Binary file not shown.
Binary file modified Content/BlueprintsMGE/WidgetBP/Menus/WBP_Menu_Graphics.uasset
Binary file not shown.
Binary file modified Content/BlueprintsMGE/WidgetBP/Widgets/Pause.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/ShooterSimplifiedAI/Maps/DemoMap_ShooterAI.umap
Binary file not shown.
Binary file modified Content/ShooterSimplifiedAI/UI/HUD/W_MainHUD.uasset
Binary file not shown.
Binary file modified Content/StarterContent/Architecture/Floor_400x400.uasset
Binary file not shown.
Binary file modified Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset
Binary file not shown.
73 changes: 37 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
| API | DX11 or Vulkan | DX12 or Vulkan |
| OS | Windows 10 or macOS 10.12 | Windows 11 or macOS 10.15 |

> [!NOTE]
> See this [link](https://dev.epicgames.com/documentation/en-us/unreal-engine/hardware-and-software-specifications-for-unreal-engine#:~:text=to%2016%20cores.-,Requirements%20for%20UE5%20Rendering%20Features,-Some%20rendering%20features)
for more info on requirements for UE5 Rendering Features on Windows.

# Recommened Specs Apple Silicon
| Specification | Minimum | Recommended |
|-------------------|----------------------------------|---------------------------------|
Expand All @@ -28,6 +32,11 @@
| GPU | Apple M2 8 Core GPU | Apple M1 Pro 14 Core GPU |
| API | Metal 2.4 | Metal 3 |
| OS | macOS 13.0 | macOS 14 |
| Xcode | 14.1 | Any >= 14.1 |

> [!NOTE] <br>
> See this [link](https://dev.epicgames.com/documentation/en-us/unreal-engine/hardware-and-software-specifications-for-unreal-engine#:~:text=to%2016%20cores.-,Requirements%20for%20UE5%20Rendering%20Features,-Some%20rendering%20features)
for more info on requirements for UE5 rendering features on macOS.

# Recommended Specs Intel Macs
| Specification | Minimum | Recommended |
Expand All @@ -39,29 +48,24 @@
| Shader Model | 5.0+ | 6+ for VSM, Lumen etc |
| API | Metal 2 | Metal 2 |
| OS | macOS 10.12 | macOS 10.15 |
| Xcode | 14.1 | Any >= 14.1 |


> [!NOTE]
> - ~~‼️ Apple silicon is now supported with `macOS 13.0+` and `Unreal Engine 5.1.1+`~~
> - Apple silicon is now supported with `macOS 13.0+` and `Unreal Engine 5.2+`
> - Apple silicon Mac compatibility and performance was tested on:
> - `2023 MacBook Pro 14" M2 Pro (10 core CPU/16 Core GPU)`
> - `2021 MacBookPro 16" M1 Max (10 core GPU/32 Core GPU)`
> - Intel Mac compatibility and performance was tested on:
> - `2016 MacBook Pro 15" (i7-6700HQ + Radeon Pro 455)`
> - `2018 MacBook Pro 15" (i7-8850H + Radeon Pro 560X)`
> - Use `r.FidelityFX.FSR2.EnableFP16OnNvDX11` to enable half precision mode if GPU < `Maxwell` / `GCN 1.0


> [!WARNING]
> Known issues:
> - ~~Apple silicon isn't supported `M1` & `M2` SKUs~~
> - `UE 5.2.1` will not launch because of `FSR 2.2.1`.
> - For now macOS platforms can only use `FSR 1.0` & `FSR Mobile`.
> - For now `FSR 2` Doesn't work on macOS 13+ use `r.FidelityFX.FSR2.Enabled 0` to disable.
> - The latest builds only offer Unreal Engine's Temporal Super Resolution (TSR) in regards to upscaling.

# FSR commands (v1.0)
> Apple silicon Mac compatibility and performance was tested on:
> - `2023 MacBook Pro 14" M2 Pro (10 core CPU/16 Core GPU/16GB RAM)`
> - `2021 MacBookPro 16" M1 Max (10 core GPU/32 Core GPU/16GB RAM)`
>
> Intel Mac compatibility and performance was tested on:
> - `2016 MacBook Pro 15" (i7-6700HQ + Radeon Pro 455/16GB RAM)`
> - `2018 MacBook Pro 15" (i7-8850H + Radeon Pro 560X/16GB RAM)`


> [!WARNING] Known issues: <br>
> Nanite & Virtual Shadow Maps (VSM) is only available for Apple Silicon M2+ <br>
> Builds later than `1.0` only offer Unreal Engine's Temporal Super Resolution (TSR) as an upscaling solution.

# FSR commands. For (v1.0) build.
- For mac users: replace `r.FidelityFX.FSR2` with `r.FidelityFX.FSR1`

| Commands | Actions |
Expand All @@ -73,15 +77,15 @@
| `r.FidelityFX.FSR2.QualityMode 2` | FSR 2 Balanced Mode |
| `r.FidelityFX.FSR2.QualityMode 3` | FSR 2 Performance Mode |
| `r.FidelityFX.FSR2.QualityMode 4` | FSR 2 Ultra Performance Mode |
| `r.FidelityFX.FSR2.EnableFP16OnNvDX11 1`| Enable half precision mode on Nvidia|

# Optimization
#### These Settings were tested on an MX550 resulting in 51fps min and 58fps max @1080p
- `Resolution Scale`: `100%` if TSR or FSR is off.
- `View Distance`: `Near`, the map is small.
- `Anti-Aliasing Mode`: `TAA` or `TSR` if render resolution is below 100%.
- `Anti-Aliasing`: `Epic` if TAA is enabled, High if TSR is enabled.
- `Post Processing`: `High`, Enables lens effects.
- `Shadows`: `High-Epic` Allows soft shadows & volumetric shadows.
- `Post Processing`: `High`, Enables lens effects. This can be controlled individually.
- `Shadows`: `High-Epic` Allows soft shadows & volumetric shadows. Medium if your GPU doesn't support SM6.
- `Global Illumination`: `High` for Lumen, going lower will default to SSGI and SSAO.
- `Reflections`: `High` for Lumen, going lower will default to SSR.
- `Textures`: Low = 1.5 GB, Medium = 2-3 GB, High = 4 GB, Epic = 4-6 GB, Cinematic = 6-8 GB
Expand All @@ -94,24 +98,21 @@
> <br> You can use the performance overlay to see the performance impact of each setting in real-time.
> <br> To do so go to `Options > Graphics > Performance Overlay`.

> [!CAUTION]
> <br> Setting render resolution lower than 30% may cause visual artifacts.
> <br> Setting Global Illumination to medium will disable Lumen GI and Lumen Reflections.
> [!CAUTION] <br>
>If graphics options are not being applied, try clicking `Play` in the main menu, then you can go back to the main menu
anytime by pressing `R` during game play.

### Downloads

- <b>v1.0 Windows_x86_64:</b> <a href="https://www.dropbox.com/sh/iaq1bsasgaz5znd/AABZkdeA_N6LC4kTpRVe0Af3a?dl=1">Download here</a>
- <b>v2.1.3 Windows_x86_64:</b> <a href="https://www.dropbox.com/scl/fi/41ac7c7b7wohgh407q1uo/TPS_v2.1.3_x86.zip?rlkey=wwlp6u8o5g6zr8g5z2bwmibys&st=2haloduj&dl=0">Download here</a>
- <b>v2.1.3 macOS (Intel & Apple Silicon):</b> <a href="https://www.dropbox.com/scl/fi/u13dn2lqymrejkyok2t7x/TPS_v2.1.3_macOS.zip?rlkey=9fwcwfabrv1umgr6fk5ybhkww&st=eo19sdyu&dl=0">Download here</a>

After downloading, extract the zip file and run the executable.
If you're on macOS, you might need to allow the app to run in `System Preferences > Security & Privacy` On Windows, you might need to allow the app to run in `Windows Security` prompt.
If you're on macOS, you might need to allow the app to run in `System Preferences > Security & Privacy` On Windows, you might need to allow the app to run when prompted by Windows Security.
- <b>v1.0 (Deprecated) Windows_x86_64:</b> <a href="https://www.dropbox.com/sh/iaq1bsasgaz5znd/AABZkdeA_N6LC4kTpRVe0Af3a?dl=1">Download here</a>
- <b>v2.1.4 Windows_x86_64:</b> <a href="https://www.dropbox.com/scl/fi/mp7uqwbhy5maw98al00wa/TPS_2.1.4_x86_64.zip?rlkey=c9yujbgjhpnnc725w04c1jlx8&st=r8pk7ih9&dl=0">Download here</a>
- <b>v2.1.4 macOS (Intel & Apple Silicon):</b> <a href="https://www.dropbox.com/scl/fi/6ueauqgurhz66fj8746zt/TPS_2.1.4_macOS.zip?rlkey=zu19eamzss0arewhjwng6gwc3&st=m1e0a3fn&dl=0">Download here</a>

> [!NOTE]
> - `FSR 2` is only available on Windows v1.0.
> - `v1.0` is built with `Unreal Engine 4.2.7`.
> - `v2.0 +` is built with `Unreal Engine 5.4.4` with native Apple Silicon support.
> - Currently `v2.0` uses DX12 & Metal 3 for macOS.
> FSR 2 is only available on Windows v1.0 build. <br>
> TPS `v2.0 +` is built with `Unreal Engine 5.4.4` with native Apple Silicon support. <br>
> Currently `v2.0 +` uses DX12 for Windows & Metal 3 for macOS.

### Upcoming features

Expand Down
30 changes: 25 additions & 5 deletions Source/DESN2600Test/Private/AGlobalIlluminationManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@
#include "GameFramework/Actor.h"
#include "HAL/IConsoleManager.h"
#include "Scalability.h"
#include "AShadowManager.h"

// Sets default values
AAGlobalIlluminationManager::AAGlobalIlluminationManager()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;

// Cache current GI quality level
CachedGIQuality = Scalability::GetQualityLevels().GlobalIlluminationQuality;
ApplyGISettings(CachedGIQuality);
}

// Called when the game starts or when spawned
Expand All @@ -23,7 +28,18 @@ void AAGlobalIlluminationManager::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);

if (Scalability::GetQualityLevels().GlobalIlluminationQuality <= 1)
int32 CurrentGIQuality = Scalability::GetQualityLevels().GlobalIlluminationQuality;

if (CurrentGIQuality != CachedGIQuality)
{
ApplyGISettings(CurrentGIQuality);
CachedGIQuality = CurrentGIQuality;
}
}

void AAGlobalIlluminationManager::ApplyGISettings(int32 GiQualityLevel)
{
if (GiQualityLevel == 1)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.DynamicGlobalIlluminationMethod"))->Set(2);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.ReflectionMethod"))->Set(2);
Expand All @@ -33,11 +49,15 @@ void AAGlobalIlluminationManager::Tick(float DeltaTime)
UE_LOG(LogTemp, Warning, TEXT("SSGI fallback is enabled"));
UE_LOG(LogTemp, Warning, TEXT("SSR fallback is enabled"));
}
else if (Scalability::GetQualityLevels().GlobalIlluminationQuality > 1)
else if (GiQualityLevel == 0)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.SSGI.Quality"))->Set(0);
}
else if (GiQualityLevel > 1)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.DynamicGlobalIlluminationMethod"))->Set(1);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.ReflectionMethod"))->Set(1);

UE_LOG(LogTemp, Warning, TEXT("Lumen GI & Reflections is enabled"));
UE_LOG(LogTemp, Warning, TEXT("Lumen GI & Reflections is enabled"));
}
}
65 changes: 65 additions & 0 deletions Source/DESN2600Test/Private/AShadowManager.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#include "AShadowManager.h"
#include "AGlobalIlluminationManager.h"
#include "Engine/World.h"
#include "Engine/Engine.h"
#include "GameFramework/Actor.h"
#include "HAL/IConsoleManager.h"
#include "Scalability.h"

// Sets default values
AAShadowManager::AAShadowManager()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;

// Cache current shadow quality level
CachedShadowQuality = Scalability::GetQualityLevels().ShadowQuality;
ApplyShadowSettings(CachedShadowQuality);
}

// Called when the game starts or when spawned
void AAShadowManager::BeginPlay()
{
Super::BeginPlay();
}

// Called every frame
void AAShadowManager::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);

int32 CurrentShadowQuality = Scalability::GetQualityLevels().ShadowQuality;

if (CurrentShadowQuality != CachedShadowQuality)
{
ApplyShadowSettings(CurrentShadowQuality);
CachedShadowQuality = CurrentShadowQuality;
}
}

void AAShadowManager::ApplyShadowSettings(int32 ShadowQualityLevel)
{
if (ShadowQualityLevel <= 1)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.Shadow.Virtual.Enable"))->Set(0);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.VolumetricFog"))->Set(1);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.Shadow.CSM.MaxCascades"))->Set(3);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.Shadow.MaxCSMResolution"))->Set(2048);

UE_LOG(LogTemp, Warning, TEXT("Virtual shadow map disabled"));
UE_LOG(LogTemp, Warning, TEXT("Volumetric Fog overridden"));
}
else if (ShadowQualityLevel > 1)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.Shadow.Virtual.Enable"))->Set(1);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.VolumetricFog"))->Set(1);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.Shadow.CSM.MaxCascades"))->Set(4);

UE_LOG(LogTemp, Warning, TEXT("Virtual shadow map enabled"));
}
else if (ShadowQualityLevel == 0)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.VolumetricFog"))->Set(0);
UE_LOG(LogTemp, Warning, TEXT("Volumetric Fog disabled"));
}
}
49 changes: 49 additions & 0 deletions Source/DESN2600Test/Private/TpsGameInstance.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#include "TpsGameInstance.h"
#include "Engine/Engine.h"
#include "HAL/IConsoleManager.h"
#include "Scalability.h"

// Init() is called when the Game Instance is initialized
//void UTpsGameInstance::Init()
//{
//
//
// // Cache the initial GI quality when the engine starts
// CachedGIQuality = Scalability::GetQualityLevels().GlobalIlluminationQuality;
//
// // Apply initial GI settings
// ApplyGISettings(CachedGIQuality);
//}

void UTpsGameInstance::ApplyGISettings(int32 GiQualityLevel)
{
if (GiQualityLevel == 1)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.DynamicGlobalIlluminationMethod"))->Set(2);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.ReflectionMethod"))->Set(2);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.SSGI.Quality"))->Set(4);

UE_LOG(LogTemp, Warning, TEXT("Lumen disabled, SSGI fallback enabled"));
}
else if (GiQualityLevel == 0)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.SSGI.Quality"))->Set(0);
UE_LOG(LogTemp, Warning, TEXT("SSGI disabled"));
}
else if (GiQualityLevel > 1)
{
IConsoleManager::Get().FindConsoleVariable(TEXT("r.DynamicGlobalIlluminationMethod"))->Set(1);
IConsoleManager::Get().FindConsoleVariable(TEXT("r.ReflectionMethod"))->Set(1);
UE_LOG(LogTemp, Warning, TEXT("Lumen GI & Reflections enabled"));
}
}

void UTpsGameInstance::CheckForGIQualityChange()
{
int32 CurrentGIQuality = Scalability::GetQualityLevels().GlobalIlluminationQuality;
if (CurrentGIQuality != CachedGIQuality)
{
ApplyGISettings(CurrentGIQuality);
CachedGIQuality = CurrentGIQuality;
}
}
9 changes: 7 additions & 2 deletions Source/DESN2600Test/Public/AGlobalIlluminationManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,13 @@ class DESN2600TEST_API AAGlobalIlluminationManager : public AActor
// Called when the game starts or when spawned
virtual void BeginPlay() override;

public:
public:
// Global vars
int32 CachedGIQuality = Scalability::GetQualityLevels().GlobalIlluminationQuality;

// Called every frame
virtual void Tick(float DeltaTime) override;

};
UFUNCTION(BlueprintCallable, Category = "Global Illumination")
void ApplyGISettings(int32 GiQualityLevel);
};
30 changes: 30 additions & 0 deletions Source/DESN2600Test/Public/AShadowManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@


#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AShadowManager.generated.h"

UCLASS()
class DESN2600TEST_API AAShadowManager : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor's properties
AAShadowManager();

protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;

public:
// Global vars
int32 CachedShadowQuality = Scalability::GetQualityLevels().ShadowQuality;

// Called every frame
virtual void Tick(float DeltaTime) override;

void ApplyShadowSettings(int32 ShadowQualityLevel);
};
Loading
Loading