Fixes #21 color shift in semantic segmentation
This commit is contained in:
parent
4e4c69505f
commit
088ec71d7b
|
@ -26,6 +26,8 @@ static constexpr auto DEPTH_MAT_PATH =
|
|||
static constexpr auto SEMANTIC_SEGMENTATION_MAT_PATH =
|
||||
TEXT("Material'/Carla/PostProcessingMaterials/GTMaterial.GTMaterial'");
|
||||
|
||||
static void RemoveShowFlags(FEngineShowFlags &ShowFlags);
|
||||
|
||||
ASceneCaptureCamera::ASceneCaptureCamera(const FObjectInitializer& ObjectInitializer) :
|
||||
Super(ObjectInitializer),
|
||||
SizeX(720u),
|
||||
|
@ -85,24 +87,33 @@ void ASceneCaptureCamera::PostActorCreated()
|
|||
|
||||
void ASceneCaptureCamera::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
const bool bRemovePostProcessing = (PostProcessEffect != EPostProcessEffect::SceneFinal);
|
||||
|
||||
CaptureRenderTarget->InitCustomFormat(SizeX, SizeY, PF_B8G8R8A8, false);
|
||||
CaptureRenderTarget->UpdateResource();
|
||||
// Setup render target.
|
||||
const bool bInForceLinearGamma = bRemovePostProcessing;
|
||||
CaptureRenderTarget->bHDR = !bRemovePostProcessing;
|
||||
CaptureRenderTarget->InitCustomFormat(SizeX, SizeY, PF_B8G8R8A8, bInForceLinearGamma);
|
||||
|
||||
CaptureComponent2D->Deactivate();
|
||||
CaptureComponent2D->TextureTarget = CaptureRenderTarget;
|
||||
if (PostProcessEffect == EPostProcessEffect::SceneFinal) {
|
||||
CaptureComponent2D->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR;
|
||||
} else if (PostProcessEffect == EPostProcessEffect::Depth) {
|
||||
|
||||
// Setup camera post-processing.
|
||||
if (PostProcessEffect != EPostProcessEffect::None) {
|
||||
CaptureComponent2D->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR;
|
||||
}
|
||||
if (bRemovePostProcessing) {
|
||||
RemoveShowFlags(CaptureComponent2D->ShowFlags);
|
||||
}
|
||||
if (PostProcessEffect == EPostProcessEffect::Depth) {
|
||||
CaptureComponent2D->PostProcessSettings.AddBlendable(PostProcessDepth, 1.0f);
|
||||
} else if (PostProcessEffect == EPostProcessEffect::SemanticSegmentation) {
|
||||
CaptureComponent2D->CaptureSource = ESceneCaptureSource::SCS_FinalColorLDR;
|
||||
CaptureComponent2D->PostProcessSettings.AddBlendable(PostProcessSemanticSegmentation, 1.0f);
|
||||
}
|
||||
|
||||
CaptureComponent2D->UpdateContent();
|
||||
CaptureComponent2D->Activate();
|
||||
|
||||
Super::BeginPlay();
|
||||
}
|
||||
|
||||
void ASceneCaptureCamera::SetImageSize(uint32 otherSizeX, uint32 otherSizeY)
|
||||
|
@ -155,3 +166,153 @@ void ASceneCaptureCamera::UpdateDrawFrustum()
|
|||
//DrawFrustum->FrustumAspectRatio = CaptureComponent2D->AspectRatio;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove the show flags that might interfere with post-processing effects like
|
||||
// depth and semantic segmentation.
|
||||
static void RemoveShowFlags(FEngineShowFlags &ShowFlags)
|
||||
{
|
||||
ShowFlags.SetAmbientOcclusion(false);
|
||||
ShowFlags.SetAntiAliasing(false);
|
||||
ShowFlags.SetAtmosphericFog(false);
|
||||
// ShowFlags.SetAudioRadius(false);
|
||||
// ShowFlags.SetBillboardSprites(false);
|
||||
ShowFlags.SetBloom(false);
|
||||
// ShowFlags.SetBounds(false);
|
||||
// ShowFlags.SetBrushes(false);
|
||||
// ShowFlags.SetBSP(false);
|
||||
// ShowFlags.SetBSPSplit(false);
|
||||
// ShowFlags.SetBSPTriangles(false);
|
||||
// ShowFlags.SetBuilderBrush(false);
|
||||
// ShowFlags.SetCameraAspectRatioBars(false);
|
||||
// ShowFlags.SetCameraFrustums(false);
|
||||
ShowFlags.SetCameraImperfections(false);
|
||||
ShowFlags.SetCameraInterpolation(false);
|
||||
// ShowFlags.SetCameraSafeFrames(false);
|
||||
// ShowFlags.SetCollision(false);
|
||||
// ShowFlags.SetCollisionPawn(false);
|
||||
// ShowFlags.SetCollisionVisibility(false);
|
||||
ShowFlags.SetColorGrading(false);
|
||||
// ShowFlags.SetCompositeEditorPrimitives(false);
|
||||
// ShowFlags.SetConstraints(false);
|
||||
// ShowFlags.SetCover(false);
|
||||
// ShowFlags.SetDebugAI(false);
|
||||
// ShowFlags.SetDecals(false);
|
||||
// ShowFlags.SetDeferredLighting(false);
|
||||
ShowFlags.SetDepthOfField(false);
|
||||
ShowFlags.SetDiffuse(false);
|
||||
ShowFlags.SetDirectionalLights(false);
|
||||
ShowFlags.SetDirectLighting(false);
|
||||
// ShowFlags.SetDistanceCulledPrimitives(false);
|
||||
// ShowFlags.SetDistanceFieldAO(false);
|
||||
// ShowFlags.SetDistanceFieldGI(false);
|
||||
ShowFlags.SetDynamicShadows(false);
|
||||
// ShowFlags.SetEditor(false);
|
||||
ShowFlags.SetEyeAdaptation(false);
|
||||
ShowFlags.SetFog(false);
|
||||
// ShowFlags.SetGame(false);
|
||||
// ShowFlags.SetGameplayDebug(false);
|
||||
// ShowFlags.SetGBufferHints(false);
|
||||
ShowFlags.SetGlobalIllumination(false);
|
||||
ShowFlags.SetGrain(false);
|
||||
// ShowFlags.SetGrid(false);
|
||||
// ShowFlags.SetHighResScreenshotMask(false);
|
||||
// ShowFlags.SetHitProxies(false);
|
||||
ShowFlags.SetHLODColoration(false);
|
||||
ShowFlags.SetHMDDistortion(false);
|
||||
// ShowFlags.SetIndirectLightingCache(false);
|
||||
// ShowFlags.SetInstancedFoliage(false);
|
||||
// ShowFlags.SetInstancedGrass(false);
|
||||
// ShowFlags.SetInstancedStaticMeshes(false);
|
||||
// ShowFlags.SetLandscape(false);
|
||||
// ShowFlags.SetLargeVertices(false);
|
||||
ShowFlags.SetLensFlares(false);
|
||||
ShowFlags.SetLevelColoration(false);
|
||||
ShowFlags.SetLightComplexity(false);
|
||||
ShowFlags.SetLightFunctions(false);
|
||||
ShowFlags.SetLightInfluences(false);
|
||||
ShowFlags.SetLighting(false);
|
||||
ShowFlags.SetLightMapDensity(false);
|
||||
ShowFlags.SetLightRadius(false);
|
||||
ShowFlags.SetLightShafts(false);
|
||||
// ShowFlags.SetLOD(false);
|
||||
ShowFlags.SetLODColoration(false);
|
||||
// ShowFlags.SetMaterials(false);
|
||||
// ShowFlags.SetMaterialTextureScaleAccuracy(false);
|
||||
// ShowFlags.SetMeshEdges(false);
|
||||
// ShowFlags.SetMeshUVDensityAccuracy(false);
|
||||
// ShowFlags.SetModeWidgets(false);
|
||||
ShowFlags.SetMotionBlur(false);
|
||||
// ShowFlags.SetNavigation(false);
|
||||
ShowFlags.SetOnScreenDebug(false);
|
||||
// ShowFlags.SetOutputMaterialTextureScales(false);
|
||||
// ShowFlags.SetOverrideDiffuseAndSpecular(false);
|
||||
// ShowFlags.SetPaper2DSprites(false);
|
||||
ShowFlags.SetParticles(false);
|
||||
// ShowFlags.SetPivot(false);
|
||||
ShowFlags.SetPointLights(false);
|
||||
// ShowFlags.SetPostProcessing(false);
|
||||
// ShowFlags.SetPostProcessMaterial(false);
|
||||
// ShowFlags.SetPrecomputedVisibility(false);
|
||||
// ShowFlags.SetPrecomputedVisibilityCells(false);
|
||||
// ShowFlags.SetPreviewShadowsIndicator(false);
|
||||
// ShowFlags.SetPrimitiveDistanceAccuracy(false);
|
||||
ShowFlags.SetPropertyColoration(false);
|
||||
// ShowFlags.SetQuadOverdraw(false);
|
||||
// ShowFlags.SetReflectionEnvironment(false);
|
||||
// ShowFlags.SetReflectionOverride(false);
|
||||
ShowFlags.SetRefraction(false);
|
||||
// ShowFlags.SetRendering(false);
|
||||
ShowFlags.SetSceneColorFringe(false);
|
||||
// ShowFlags.SetScreenPercentage(false);
|
||||
ShowFlags.SetScreenSpaceAO(false);
|
||||
ShowFlags.SetScreenSpaceReflections(false);
|
||||
// ShowFlags.SetSelection(false);
|
||||
// ShowFlags.SetSelectionOutline(false);
|
||||
// ShowFlags.SetSeparateTranslucency(false);
|
||||
// ShowFlags.SetShaderComplexity(false);
|
||||
// ShowFlags.SetShaderComplexityWithQuadOverdraw(false);
|
||||
// ShowFlags.SetShadowFrustums(false);
|
||||
// ShowFlags.SetSkeletalMeshes(false);
|
||||
// ShowFlags.SetSkinCache(false);
|
||||
ShowFlags.SetSkyLighting(false);
|
||||
// ShowFlags.SetSnap(false);
|
||||
// ShowFlags.SetSpecular(false);
|
||||
// ShowFlags.SetSplines(false);
|
||||
ShowFlags.SetSpotLights(false);
|
||||
// ShowFlags.SetStaticMeshes(false);
|
||||
ShowFlags.SetStationaryLightOverlap(false);
|
||||
// ShowFlags.SetStereoRendering(false);
|
||||
// ShowFlags.SetStreamingBounds(false);
|
||||
ShowFlags.SetSubsurfaceScattering(false);
|
||||
// ShowFlags.SetTemporalAA(false);
|
||||
// ShowFlags.SetTessellation(false);
|
||||
// ShowFlags.SetTestImage(false);
|
||||
// ShowFlags.SetTextRender(false);
|
||||
// ShowFlags.SetTexturedLightProfiles(false);
|
||||
ShowFlags.SetTonemapper(false);
|
||||
// ShowFlags.SetTranslucency(false);
|
||||
// ShowFlags.SetVectorFields(false);
|
||||
// ShowFlags.SetVertexColors(false);
|
||||
// ShowFlags.SetVignette(false);
|
||||
// ShowFlags.SetVisLog(false);
|
||||
ShowFlags.SetVisualizeAdaptiveDOF(false);
|
||||
ShowFlags.SetVisualizeBloom(false);
|
||||
ShowFlags.SetVisualizeBuffer(false);
|
||||
ShowFlags.SetVisualizeDistanceFieldAO(false);
|
||||
ShowFlags.SetVisualizeDistanceFieldGI(false);
|
||||
ShowFlags.SetVisualizeDOF(false);
|
||||
ShowFlags.SetVisualizeHDR(false);
|
||||
ShowFlags.SetVisualizeLightCulling(false);
|
||||
ShowFlags.SetVisualizeLPV(false);
|
||||
ShowFlags.SetVisualizeMeshDistanceFields(false);
|
||||
ShowFlags.SetVisualizeMotionBlur(false);
|
||||
ShowFlags.SetVisualizeOutOfBoundsPixels(false);
|
||||
ShowFlags.SetVisualizeSenses(false);
|
||||
ShowFlags.SetVisualizeShadingModels(false);
|
||||
ShowFlags.SetVisualizeSSR(false);
|
||||
ShowFlags.SetVisualizeSSS(false);
|
||||
// ShowFlags.SetVolumeLightingSamples(false);
|
||||
// ShowFlags.SetVolumes(false);
|
||||
// ShowFlags.SetWidgetComponents(false);
|
||||
// ShowFlags.SetWireframe(false);
|
||||
}
|
||||
|
|
|
@ -11,18 +11,18 @@
|
|||
|
||||
enum class Label : uint8
|
||||
{
|
||||
None = 0,
|
||||
Buildings,
|
||||
Fences,
|
||||
Other,
|
||||
Pedestrians,
|
||||
Poles,
|
||||
RoadLines,
|
||||
Roads,
|
||||
Sidewalks,
|
||||
Vegetation,
|
||||
Vehicles,
|
||||
Walls,
|
||||
None = 0u,
|
||||
Buildings = 1u,
|
||||
Fences = 2u,
|
||||
Other = 3u,
|
||||
Pedestrians = 4u,
|
||||
Poles = 5u,
|
||||
RoadLines = 6u,
|
||||
Roads = 7u,
|
||||
Sidewalks = 8u,
|
||||
Vegetation = 9u,
|
||||
Vehicles = 10u,
|
||||
Walls = 11u,
|
||||
};
|
||||
|
||||
static Label GetLabel(const FString &str) {
|
||||
|
|
Loading…
Reference in New Issue