11#include <util/ue-header-guard-begin.h>
12#include "Materials/Material.h"
13#include "Materials/MaterialInstanceDynamic.h"
14#include "Components/SceneCaptureComponent2D.h"
15#include <util/ue-header-guard-end.h>
18: Super(ObjectInitializer)
30 UMaterial *Material = Cast<UMaterial>(FSoftObjectPath(Path).TryLoad());
31 if (Material !=
nullptr)
36 UE_LOG(LogCarla, Error,
37 TEXT(
"AShaderBasedSensor::AddPostProcessingMaterial: failed to load material '%s'"),
47 AddShader({UMaterialInstanceDynamic::Create(MaterialFound,
this), 1.0});
50 for (
const auto &Shader :
Shaders)
53 SceneCapture.PostProcessSettings.AddBlendable(Shader.PostProcessMaterial, Shader.Weight);
59 Shaders[ParameterValue.ShaderIndex].PostProcessMaterial->SetScalarParameterValue(
60 ParameterValue.ParameterName,
61 ParameterValue.Value);
67 Super::Set(Description);
73 const FName &ParameterName,
void EnablePostProcessingEffects(bool Enable=true)
void Set(const FActorDescription &ActorDescription) override
TArray< FSensorShader > Shaders
AShaderBasedSensor(const FObjectInitializer &ObjectInitializer)
TArray< TObjectPtr< UMaterial > > MaterialsFound
void AddShader(const FSensorShader &Shader)
Add a post-processing shader.
void SetUpSceneCaptureComponent(USceneCaptureComponent2D &SceneCapture) override
TArray< FShaderFloatParameterValue > FloatShaderParams
bool AddPostProcessingMaterial(const FString &Path)
Load the UMaterialInstanceDynamic at the given Path and append it to the list of shaders with Weight.
void SetFloatShaderParameter(uint8_t ShaderIndex, const FName &ParameterName, float Value)
static void SetCamera(const FActorDescription &Description, ASceneCaptureSensor *Camera)
A description of a Carla Actor with all its variation.