Formalize visible render item header

This commit is contained in:
2026-04-05 19:05:53 +08:00
parent 15a1a5edd5
commit 081773b8c9
7 changed files with 41 additions and 35 deletions

View File

@@ -430,6 +430,7 @@ add_library(XCEngine STATIC
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderContext.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderCameraData.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/CameraRenderRequest.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/VisibleRenderItem.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/VisibleRenderObject.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/BuiltinPassContract.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/RenderSceneUtility.h

View File

@@ -6,7 +6,7 @@
#include <XCEngine/Resources/Material/Material.h>
#include <XCEngine/Resources/Mesh/Mesh.h>
#include <XCEngine/Rendering/BuiltinPassContract.h>
#include <XCEngine/Rendering/VisibleRenderObject.h>
#include <XCEngine/Rendering/VisibleRenderItem.h>
#include <algorithm>
#include <cstddef>

View File

@@ -3,7 +3,7 @@
#include <XCEngine/Core/Math/Vector4.h>
#include <XCEngine/Core/Math/Vector3.h>
#include <XCEngine/Rendering/RenderCameraData.h>
#include <XCEngine/Rendering/VisibleRenderObject.h>
#include <XCEngine/Rendering/VisibleRenderItem.h>
#include <array>
#include <cstdint>

View File

@@ -2,7 +2,7 @@
#include <XCEngine/Core/Math/Vector3.h>
#include <XCEngine/Rendering/RenderCameraData.h>
#include <XCEngine/Rendering/VisibleRenderObject.h>
#include <XCEngine/Rendering/VisibleRenderItem.h>
#include <cstdint>
#include <vector>

View File

@@ -0,0 +1,33 @@
#pragma once
#include <XCEngine/Core/Math/Matrix4.h>
#include <XCEngine/Core/Types.h>
#include <XCEngine/Resources/Mesh/Mesh.h>
namespace XCEngine {
namespace Components {
class GameObject;
class MeshFilterComponent;
class MeshRendererComponent;
} // namespace Components
namespace Rendering {
struct VisibleRenderItem {
Components::GameObject* gameObject = nullptr;
Components::MeshFilterComponent* meshFilter = nullptr;
Components::MeshRendererComponent* meshRenderer = nullptr;
Resources::Mesh* mesh = nullptr;
const Resources::Material* material = nullptr;
Core::uint32 materialIndex = 0;
Core::uint32 sectionIndex = 0;
bool hasSection = false;
Core::int32 renderQueue = 0;
float cameraDistanceSq = 0.0f;
Math::Matrix4x4 localToWorld = Math::Matrix4x4::Identity();
};
using VisibleRenderObject = VisibleRenderItem;
} // namespace Rendering
} // namespace XCEngine

View File

@@ -1,33 +1,3 @@
#pragma once
#include <XCEngine/Core/Math/Matrix4.h>
#include <XCEngine/Core/Types.h>
#include <XCEngine/Resources/Mesh/Mesh.h>
namespace XCEngine {
namespace Components {
class GameObject;
class MeshFilterComponent;
class MeshRendererComponent;
} // namespace Components
namespace Rendering {
struct VisibleRenderItem {
Components::GameObject* gameObject = nullptr;
Components::MeshFilterComponent* meshFilter = nullptr;
Components::MeshRendererComponent* meshRenderer = nullptr;
Resources::Mesh* mesh = nullptr;
const Resources::Material* material = nullptr;
Core::uint32 materialIndex = 0;
Core::uint32 sectionIndex = 0;
bool hasSection = false;
Core::int32 renderQueue = 0;
float cameraDistanceSq = 0.0f;
Math::Matrix4x4 localToWorld = Math::Matrix4x4::Identity();
};
using VisibleRenderObject = VisibleRenderItem;
} // namespace Rendering
} // namespace XCEngine
#include <XCEngine/Rendering/VisibleRenderItem.h>