56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <XCEngine/Rendering/RenderPass.h>
|
|
#include <XCEngine/Rendering/RenderCameraData.h>
|
|
#include <XCEngine/Rendering/RenderContext.h>
|
|
#include <XCEngine/Rendering/RenderSurface.h>
|
|
|
|
namespace XCEngine {
|
|
namespace Components {
|
|
class CameraComponent;
|
|
class Scene;
|
|
} // namespace Components
|
|
|
|
namespace Rendering {
|
|
|
|
struct ObjectIdRenderRequest {
|
|
RenderSurface surface;
|
|
|
|
bool IsRequested() const {
|
|
return !surface.GetColorAttachments().empty();
|
|
}
|
|
|
|
bool IsValid() const {
|
|
const std::vector<RHI::RHIResourceView*>& colorAttachments = surface.GetColorAttachments();
|
|
return !colorAttachments.empty() &&
|
|
colorAttachments[0] != nullptr &&
|
|
surface.GetDepthAttachment() != nullptr &&
|
|
surface.GetRenderAreaWidth() > 0 &&
|
|
surface.GetRenderAreaHeight() > 0;
|
|
}
|
|
};
|
|
|
|
struct CameraRenderRequest {
|
|
const Components::Scene* scene = nullptr;
|
|
Components::CameraComponent* camera = nullptr;
|
|
RenderContext context;
|
|
RenderSurface surface;
|
|
ObjectIdRenderRequest objectId;
|
|
float cameraDepth = 0.0f;
|
|
uint8_t cameraStackOrder = 0;
|
|
RenderClearFlags clearFlags = RenderClearFlags::All;
|
|
bool hasClearColorOverride = false;
|
|
Math::Color clearColorOverride = Math::Color::Black();
|
|
RenderPassSequence* preScenePasses = nullptr;
|
|
RenderPassSequence* postScenePasses = nullptr;
|
|
|
|
bool IsValid() const {
|
|
return scene != nullptr &&
|
|
camera != nullptr &&
|
|
context.IsValid();
|
|
}
|
|
};
|
|
|
|
} // namespace Rendering
|
|
} // namespace XCEngine
|