Add request-level clear control for camera rendering
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <XCEngine/Rendering/RenderCameraData.h>
|
||||
#include <XCEngine/Rendering/RenderContext.h>
|
||||
#include <XCEngine/Rendering/RenderSurface.h>
|
||||
|
||||
@@ -17,6 +18,7 @@ struct CameraRenderRequest {
|
||||
RenderContext context;
|
||||
RenderSurface surface;
|
||||
float cameraDepth = 0.0f;
|
||||
RenderClearFlags clearFlags = RenderClearFlags::All;
|
||||
|
||||
bool IsValid() const {
|
||||
return scene != nullptr &&
|
||||
|
||||
@@ -9,12 +9,34 @@
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
enum class RenderClearFlags : uint8_t {
|
||||
None = 0,
|
||||
Color = 1 << 0,
|
||||
Depth = 1 << 1,
|
||||
All = (1 << 0) | (1 << 1)
|
||||
};
|
||||
|
||||
constexpr RenderClearFlags operator|(RenderClearFlags lhs, RenderClearFlags rhs) {
|
||||
return static_cast<RenderClearFlags>(
|
||||
static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
|
||||
}
|
||||
|
||||
constexpr RenderClearFlags operator&(RenderClearFlags lhs, RenderClearFlags rhs) {
|
||||
return static_cast<RenderClearFlags>(
|
||||
static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs));
|
||||
}
|
||||
|
||||
constexpr bool HasRenderClearFlag(RenderClearFlags flags, RenderClearFlags flag) {
|
||||
return static_cast<uint8_t>(flags & flag) != 0;
|
||||
}
|
||||
|
||||
struct RenderCameraData {
|
||||
Math::Matrix4x4 view = Math::Matrix4x4::Identity();
|
||||
Math::Matrix4x4 projection = Math::Matrix4x4::Identity();
|
||||
Math::Matrix4x4 viewProjection = Math::Matrix4x4::Identity();
|
||||
Math::Vector3 worldPosition = Math::Vector3::Zero();
|
||||
Math::Color clearColor = Math::Color::Black();
|
||||
RenderClearFlags clearFlags = RenderClearFlags::All;
|
||||
uint32_t viewportWidth = 0;
|
||||
uint32_t viewportHeight = 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user