Remove override gamma from weather settings

This commit is contained in:
nsubiron 2017-10-18 10:46:33 +02:00
parent 0a072c7838
commit afdbf78816
7 changed files with 32 additions and 10 deletions

View File

@ -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);
}
}

View File

@ -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<ASceneCaptureCamera>(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);

View File

@ -79,7 +79,8 @@ public:
void AddSceneCaptureCamera(
const FCameraDescription &CameraDescription,
const FCameraPostProcessParameters *OverridePostProcessParameters = nullptr);
const FCameraPostProcessParameters *OverridePostProcessParameters,
float TargetGamma);
/// @}
// ===========================================================================

View File

@ -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);

View File

@ -52,6 +52,8 @@ public:
void SetFOVAngle(float FOVAngle);
void SetTargetGamma(float TargetGamma);
void Set(const FCameraDescription &CameraDescription);
void Set(

View File

@ -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<enum EAutoExposureMethod> AutoExposureMethod = AEM_Histogram;

View File

@ -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"),