Add procedural skybox scene coverage
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "Rendering/Execution/CameraRenderer.h"
|
||||
|
||||
#include "Components/CameraComponent.h"
|
||||
#include "Rendering/Caches/DirectionalShadowSurfaceCache.h"
|
||||
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
|
||||
#include "Rendering/Passes/BuiltinObjectIdPass.h"
|
||||
@@ -241,6 +242,23 @@ RenderDirectionalShadowData BuildDirectionalShadowData(
|
||||
return shadowData;
|
||||
}
|
||||
|
||||
RenderEnvironmentData BuildEnvironmentData(const CameraRenderRequest& request) {
|
||||
RenderEnvironmentData environment = {};
|
||||
if (request.camera == nullptr ||
|
||||
request.surface.GetDepthAttachment() == nullptr ||
|
||||
!HasRenderClearFlag(request.clearFlags, RenderClearFlags::Color) ||
|
||||
!request.camera->IsSkyboxEnabled() ||
|
||||
request.camera->GetProjectionType() != Components::CameraProjectionType::Perspective) {
|
||||
return environment;
|
||||
}
|
||||
|
||||
environment.mode = RenderEnvironmentMode::ProceduralSkybox;
|
||||
environment.skybox.topColor = request.camera->GetSkyboxTopColor();
|
||||
environment.skybox.horizonColor = request.camera->GetSkyboxHorizonColor();
|
||||
environment.skybox.bottomColor = request.camera->GetSkyboxBottomColor();
|
||||
return environment;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
CameraRenderer::CameraRenderer()
|
||||
@@ -407,6 +425,7 @@ bool CameraRenderer::BuildSceneDataForRequest(
|
||||
}
|
||||
|
||||
outSceneData.cameraData.clearFlags = request.clearFlags;
|
||||
outSceneData.environment = BuildEnvironmentData(request);
|
||||
if (request.hasClearColorOverride) {
|
||||
outSceneData.cameraData.clearColor = request.clearColorOverride;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user