Skip to content

Commit 41bc561

Browse files
committed
rewriting render pipeline 7 WIP
1 parent e0e6cfc commit 41bc561

File tree

1 file changed

+14
-17
lines changed

1 file changed

+14
-17
lines changed

sources/libengine/graphics/renderPipeline.cpp

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ namespace cage
9898
struct RenderModel : private Noncopyable
9999
{
100100
UniMesh uni;
101-
Frustum frustum; // object-space camera frustum used for culling
102101
RenderComponent render;
103102
std::optional<TextureAnimationComponent> textureAnimation;
104103
Holder<SkeletalAnimationPreparatorInstance> skeletalAnimation;
@@ -165,19 +164,15 @@ namespace cage
165164
Mat4 model;
166165
Mat4 view;
167166
Mat4 viewProj;
168-
169-
std::vector<RenderData> renderData;
170-
Holder<RenderQueue> renderQueue;
171-
172167
std::optional<CameraData> data;
173168
std::optional<ShadowmapData> shadowmap;
174-
175-
bool cnfRenderMissingModels = confRenderMissingModels;
176-
bool cnfRenderSkeletonBones = confRenderSkeletonBones;
177-
169+
std::vector<RenderData> renderData;
170+
Holder<RenderQueue> renderQueue;
178171
mutable std::vector<UniMesh> uniMeshes;
179172
mutable std::vector<Mat3x4> uniArmatures;
180173
mutable std::vector<float> uniCustomData;
174+
bool cnfRenderMissingModels = confRenderMissingModels;
175+
bool cnfRenderSkeletonBones = confRenderSkeletonBones;
181176

182177
// create pipeline for regular camera
183178
explicit RenderPipelineImpl(const RenderPipelineConfig &config) : RenderPipelineConfig(config)
@@ -647,7 +642,7 @@ namespace cage
647642
if (shadowmap && none(rm.mesh->flags & MeshRenderFlags::ShadowCast))
648643
return;
649644

650-
if (!intersects(rm.mesh->boundingBox(), rm.frustum))
645+
if (!intersects(rm.mesh->boundingBox(), Frustum(rm.uni.mvpMat)))
651646
return;
652647

653648
std::optional<TextureAnimationComponent> &pt = rm.textureAnimation;
@@ -799,7 +794,6 @@ namespace cage
799794
d.e = rd.e;
800795
RenderModel r;
801796
r.uni = rm.uni;
802-
r.frustum = rm.frustum;
803797
r.render = rm.render;
804798
r.textureAnimation = rm.textureAnimation;
805799
r.skeletalAnimation = rm.skeletalAnimation.share();
@@ -839,6 +833,9 @@ namespace cage
839833

840834
void prepareEntities()
841835
{
836+
ProfilingScope profiling("prepare entities");
837+
profiling.set(Stringizer() + "entities: " + scene->count());
838+
842839
renderData.reserve(scene->component<RenderComponent>()->count() + scene->component<TextComponent>()->count());
843840

844841
entitiesVisitor(
@@ -851,7 +848,6 @@ namespace cage
851848
rd.e = e;
852849
RenderModel rm;
853850
rm.uni = initializeMeshUni(rd.model);
854-
rm.frustum = Frustum(rm.uni.mvpMat);
855851
rm.render = rc;
856852
if (Holder<RenderObject> obj = assets->get<AssetSchemeIndexRenderObject, RenderObject>(rc.object))
857853
{
@@ -886,8 +882,11 @@ namespace cage
886882
+scene, false);
887883
}
888884

889-
void sortRenderData()
885+
void orderRenderData()
890886
{
887+
ProfilingScope profiling("order render data");
888+
profiling.set(Stringizer() + "count: " + renderData.size());
889+
891890
std::sort(renderData.begin(), renderData.end(),
892891
[](const RenderData &a, const RenderData &b) -> bool
893892
{
@@ -933,7 +932,7 @@ namespace cage
933932
renderQueue->checkGlErrorDebug();
934933

935934
prepareEntities();
936-
sortRenderData();
935+
orderRenderData();
937936
renderPass(RenderModeEnum::Shadowmap);
938937

939938
renderQueue->resetFrameBuffer();
@@ -1017,7 +1016,7 @@ namespace cage
10171016
view = inverse(model);
10181017
viewProj = projection * view;
10191018
prepareEntities();
1020-
sortRenderData();
1019+
orderRenderData();
10211020
prepareCameraLights();
10221021

10231022
TextureHandle colorTexture = provisionalGraphics->texture(Stringizer() + "colorTarget_" + name + "_" + resolution,
@@ -1367,7 +1366,5 @@ namespace cage
13671366
}
13681367

13691368
// todo list:
1370-
// reduce size of RenderModel (remove frustum, possibly some more)
1371-
// consider parallelizing frustum culling
13721369
// opacity for text
13731370
// consider shadows for text

0 commit comments

Comments
 (0)