refactor: move scene view infinite grid pass into renderer
This commit is contained in:
@@ -6,7 +6,6 @@
|
||||
#include "IViewportHostService.h"
|
||||
#include "SceneViewportPicker.h"
|
||||
#include "SceneViewportCameraController.h"
|
||||
#include "SceneViewportInfiniteGridPass.h"
|
||||
#include "SceneViewportPostPassPlan.h"
|
||||
#include "UI/ImGuiBackendBridge.h"
|
||||
|
||||
@@ -18,6 +17,7 @@
|
||||
#include <XCEngine/RHI/RHIResourceView.h>
|
||||
#include <XCEngine/RHI/RHITexture.h>
|
||||
#include <XCEngine/Rendering/ObjectIdEncoding.h>
|
||||
#include <XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h>
|
||||
#include <XCEngine/Rendering/Passes/BuiltinObjectIdOutlinePass.h>
|
||||
#include <XCEngine/Rendering/RenderContext.h>
|
||||
#include <XCEngine/Rendering/RenderSurface.h>
|
||||
@@ -86,6 +86,21 @@ inline uint32_t ClampViewportPixelCoordinate(float value, uint32_t extent) {
|
||||
return static_cast<uint32_t>(std::floor(clamped));
|
||||
}
|
||||
|
||||
Rendering::Passes::InfiniteGridPassData BuildInfiniteGridPassData(
|
||||
const SceneViewportOverlayData& overlay) {
|
||||
Rendering::Passes::InfiniteGridPassData data = {};
|
||||
data.valid = overlay.valid;
|
||||
data.cameraPosition = overlay.cameraPosition;
|
||||
data.cameraForward = overlay.cameraForward;
|
||||
data.cameraRight = overlay.cameraRight;
|
||||
data.cameraUp = overlay.cameraUp;
|
||||
data.verticalFovDegrees = overlay.verticalFovDegrees;
|
||||
data.nearClipPlane = overlay.nearClipPlane;
|
||||
data.farClipPlane = overlay.farClipPlane;
|
||||
data.orbitDistance = overlay.orbitDistance;
|
||||
return data;
|
||||
}
|
||||
|
||||
Math::Vector3 GetSceneViewportOrientationAxisVector(SceneViewportOrientationAxis axis) {
|
||||
switch (axis) {
|
||||
case SceneViewportOrientationAxis::PositiveX:
|
||||
@@ -595,7 +610,7 @@ private:
|
||||
const bool rendered = m_sceneGridPass.Render(
|
||||
context.renderContext,
|
||||
context.surface,
|
||||
overlay);
|
||||
BuildInfiniteGridPassData(overlay));
|
||||
if (!rendered) {
|
||||
SetViewportStatusIfEmpty(entry.statusText, "Scene grid pass failed");
|
||||
}
|
||||
@@ -1005,7 +1020,7 @@ private:
|
||||
Rendering::RenderContext m_sceneViewLastRenderContext = {};
|
||||
std::array<ViewportEntry, 2> m_entries = {};
|
||||
SceneViewCameraState m_sceneViewCamera;
|
||||
SceneViewportInfiniteGridPass m_sceneGridPass;
|
||||
Rendering::Passes::BuiltinInfiniteGridPass m_sceneGridPass;
|
||||
Rendering::Passes::BuiltinObjectIdOutlinePass m_sceneSelectionOutlinePass;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user