From afdbf788162e83eb21b160bc04e26cca806295ed Mon Sep 17 00:00:00 2001 From: nsubiron Date: Wed, 18 Oct 2017 10:46:33 +0200 Subject: [PATCH] Remove override gamma from weather settings --- Source/Carla/Game/CarlaGameModeBase.cpp | 19 ++++++++++++++++++- Source/Carla/Game/CarlaVehicleController.cpp | 4 +++- Source/Carla/Game/CarlaVehicleController.h | 3 ++- Source/Carla/SceneCaptureCamera.cpp | 8 +++++++- Source/Carla/SceneCaptureCamera.h | 2 ++ .../Settings/CameraPostProcessParameters.h | 4 ---- Source/Carla/Settings/WeatherDescription.cpp | 2 -- 7 files changed, 32 insertions(+), 10 deletions(-) diff --git a/Source/Carla/Game/CarlaGameModeBase.cpp b/Source/Carla/Game/CarlaGameModeBase.cpp index b261e827d..172312c9c 100644 --- a/Source/Carla/Game/CarlaGameModeBase.cpp +++ b/Source/Carla/Game/CarlaGameModeBase.cpp @@ -7,6 +7,7 @@ #include "Engine/PlayerStartPIE.h" #include "EngineUtils.h" #include "GameFramework/PlayerStart.h" +#include "SceneViewport.h" #include "CarlaGameInstance.h" #include "CarlaGameState.h" @@ -203,6 +204,19 @@ void ACarlaGameModeBase::RegisterPlayer(AController &NewPlayer) AttachCaptureCamerasToPlayer(); } +static float GetPlayerDisplayGamma(const APlayerCameraManager *PlayerCameraManager) +{ + if (PlayerCameraManager == nullptr) { + return 0.0f; + } + UGameViewportClient* ViewportClient = PlayerCameraManager->PCOwner->GetLocalPlayer()->ViewportClient; + if (ViewportClient == nullptr) { + return 0.0f; + } + FSceneViewport* SceneViewport = ViewportClient->GetGameViewport(); + return SceneViewport ? SceneViewport->GetDisplayGamma() : 0.0f; +} + void ACarlaGameModeBase::AttachCaptureCamerasToPlayer() { if (PlayerController == nullptr) { @@ -215,8 +229,11 @@ void ACarlaGameModeBase::AttachCaptureCamerasToPlayer() if ((Weather != nullptr) && (Weather->bOverrideCameraPostProcessParameters)) { OverridePostProcessParameters = &Weather->CameraPostProcessParameters; } + + const float TargetGamma = GetPlayerDisplayGamma(PlayerController->PlayerCameraManager); + for (const auto &Item : Settings.CameraDescriptions) { - PlayerController->AddSceneCaptureCamera(Item.Value, OverridePostProcessParameters); + PlayerController->AddSceneCaptureCamera(Item.Value, OverridePostProcessParameters, TargetGamma); } } diff --git a/Source/Carla/Game/CarlaVehicleController.cpp b/Source/Carla/Game/CarlaVehicleController.cpp index 9dddfdcb4..c9037d36a 100644 --- a/Source/Carla/Game/CarlaVehicleController.cpp +++ b/Source/Carla/Game/CarlaVehicleController.cpp @@ -110,7 +110,8 @@ void ACarlaVehicleController::Tick(float DeltaTime) void ACarlaVehicleController::AddSceneCaptureCamera( const FCameraDescription &Description, - const FCameraPostProcessParameters *OverridePostProcessParameters) + const FCameraPostProcessParameters *OverridePostProcessParameters, + const float TargetGamma) { auto Camera = GetWorld()->SpawnActor(Description.Position, Description.Rotation); if (OverridePostProcessParameters != nullptr) { @@ -118,6 +119,7 @@ void ACarlaVehicleController::AddSceneCaptureCamera( } else { Camera->Set(Description); } + Camera->SetTargetGamma(TargetGamma); Camera->AttachToActor(GetPawn(), FAttachmentTransformRules::KeepRelativeTransform); Camera->SetOwner(GetPawn()); AddTickPrerequisiteActor(Camera); diff --git a/Source/Carla/Game/CarlaVehicleController.h b/Source/Carla/Game/CarlaVehicleController.h index f05186bf8..1d77c4fbf 100644 --- a/Source/Carla/Game/CarlaVehicleController.h +++ b/Source/Carla/Game/CarlaVehicleController.h @@ -79,7 +79,8 @@ public: void AddSceneCaptureCamera( const FCameraDescription &CameraDescription, - const FCameraPostProcessParameters *OverridePostProcessParameters = nullptr); + const FCameraPostProcessParameters *OverridePostProcessParameters, + float TargetGamma); /// @} // =========================================================================== diff --git a/Source/Carla/SceneCaptureCamera.cpp b/Source/Carla/SceneCaptureCamera.cpp index d036467a1..12e7e6ddd 100644 --- a/Source/Carla/SceneCaptureCamera.cpp +++ b/Source/Carla/SceneCaptureCamera.cpp @@ -133,12 +133,18 @@ void ASceneCaptureCamera::SetPostProcessEffect(EPostProcessEffect otherPostProce } } -void ASceneCaptureCamera::SetFOVAngle(float FOVAngle) +void ASceneCaptureCamera::SetFOVAngle(const float FOVAngle) { check(CaptureComponent2D != nullptr); CaptureComponent2D->FOVAngle = FOVAngle; } +void ASceneCaptureCamera::SetTargetGamma(const float TargetGamma) +{ + check(CaptureRenderTarget != nullptr); + CaptureRenderTarget->TargetGamma = TargetGamma; +} + void ASceneCaptureCamera::Set(const FCameraDescription &CameraDescription) { SetImageSize(CameraDescription.ImageSizeX, CameraDescription.ImageSizeY); diff --git a/Source/Carla/SceneCaptureCamera.h b/Source/Carla/SceneCaptureCamera.h index c0ef3cca3..90e227153 100644 --- a/Source/Carla/SceneCaptureCamera.h +++ b/Source/Carla/SceneCaptureCamera.h @@ -52,6 +52,8 @@ public: void SetFOVAngle(float FOVAngle); + void SetTargetGamma(float TargetGamma); + void Set(const FCameraDescription &CameraDescription); void Set( diff --git a/Source/Carla/Settings/CameraPostProcessParameters.h b/Source/Carla/Settings/CameraPostProcessParameters.h index 4cf1eedb7..b697edbcd 100644 --- a/Source/Carla/Settings/CameraPostProcessParameters.h +++ b/Source/Carla/Settings/CameraPostProcessParameters.h @@ -14,10 +14,6 @@ struct FCameraPostProcessParameters { GENERATED_USTRUCT_BODY() - /** Will override FTextureRenderTarget2DResource::GetDisplayGamma if > 0. */ - UPROPERTY(Category = "Camera Parameters", EditAnywhere, BlueprintReadWrite) - float TargetGamma = 0.0f; - /** Luminance computation method */ UPROPERTY(Category = "Camera Parameters", EditAnywhere, BlueprintReadWrite) TEnumAsByte AutoExposureMethod = AEM_Histogram; diff --git a/Source/Carla/Settings/WeatherDescription.cpp b/Source/Carla/Settings/WeatherDescription.cpp index dad36202b..5706a95ea 100644 --- a/Source/Carla/Settings/WeatherDescription.cpp +++ b/Source/Carla/Settings/WeatherDescription.cpp @@ -86,7 +86,6 @@ void FWeatherDescription::ReadFromConfigFile(const IniFile &ConfigFile, const FS CARLA_LOAD_FROM_INI(Float, WindAngle) // Camera Post-Process Parameters. CARLA_LOAD_FROM_INI(Bool, bOverrideCameraPostProcessParameters) - CARLA_LOAD_FROM_INI(Float, CameraPostProcessParameters.TargetGamma) EAutoExposureMethod AutoExposureMethod; LoadAutoExposureMethod( ConfigFile, @@ -132,7 +131,6 @@ void FWeatherDescription::WriteToConfigFile(IniFile &ConfigFile) const CARLA_WRITE_TO_INI(Float, WindAngle) // Camera Post-Process Parameters. CARLA_WRITE_TO_INI(Bool, bOverrideCameraPostProcessParameters) - CARLA_WRITE_TO_INI(Float, CameraPostProcessParameters.TargetGamma) ConfigFile.SetString( *Section, TEXT("CameraPostProcessParameters.AutoExposureMethod"),