diff --git a/Content/Shaders/GlobalSurfaceAtlas.flax b/Content/Shaders/GlobalSurfaceAtlas.flax
index 038465b36..900052f79 100644
--- a/Content/Shaders/GlobalSurfaceAtlas.flax
+++ b/Content/Shaders/GlobalSurfaceAtlas.flax
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:da4ac86323889084590fe12325b00acae1294dbdf2e28077f3af5a93ea7a7162
-size 7125
+oid sha256:7444088469d72ca5bd6f3507726e4ba68a2f550fcd78cfbd5c7a7b2fbee5e982
+size 7113
diff --git a/Source/Engine/Graphics/RenderBuffers.h b/Source/Engine/Graphics/RenderBuffers.h
index c0fc51808..149b4c12b 100644
--- a/Source/Engine/Graphics/RenderBuffers.h
+++ b/Source/Engine/Graphics/RenderBuffers.h
@@ -26,6 +26,9 @@ API_CLASS() class FLAXENGINE_API RenderBuffers : public ScriptingObject
{
DECLARE_SCRIPTING_TYPE(RenderBuffers);
+ ///
+ /// The custom rendering state.
+ ///
class CustomBuffer : public Object
{
public:
diff --git a/Source/Engine/Graphics/RenderTask.cpp b/Source/Engine/Graphics/RenderTask.cpp
index 23ac08591..5d4b09b9e 100644
--- a/Source/Engine/Graphics/RenderTask.cpp
+++ b/Source/Engine/Graphics/RenderTask.cpp
@@ -289,7 +289,8 @@ void SceneRenderTask::OnCollectDrawCalls(RenderContext& renderContext)
{
if (_customActorsScene == nullptr)
_customActorsScene = New();
- _customActorsScene->Clear();
+ else
+ _customActorsScene->Clear();
for (Actor* a : CustomActors)
AddActorToSceneRendering(_customActorsScene, a);
_customActorsScene->Draw(renderContext);
@@ -414,7 +415,7 @@ void SceneRenderTask::OnEnd(GPUContext* context)
// Swap matrices
View.PrevView = View.View;
View.PrevProjection = View.Projection;
- Matrix::Multiply(View.PrevView, View.PrevProjection, View.PrevViewProjection);
+ View.PrevViewProjection = View.ViewProjection();
}
bool SceneRenderTask::Resize(int32 width, int32 height)
diff --git a/Source/Engine/Level/Scene/SceneRendering.cpp b/Source/Engine/Level/Scene/SceneRendering.cpp
index 72acf14e9..740a87a91 100644
--- a/Source/Engine/Level/Scene/SceneRendering.cpp
+++ b/Source/Engine/Level/Scene/SceneRendering.cpp
@@ -25,10 +25,7 @@ void SceneRendering::Draw(RenderContext& renderContext)
if (view.RenderLayersMask.Mask & e.LayerMask && (e.NoCulling || frustum.Intersects(e.Bounds)) && e.Actor->GetStaticFlags() & view.StaticFlagsMask)
{
#if SCENE_RENDERING_USE_PROFILER
- PROFILE_CPU();
-#if TRACY_ENABLE
- ___tracy_scoped_zone.Name(*e.Actor->GetName(), e.Actor->GetName().Length());
-#endif
+ PROFILE_CPU_ACTOR(e.Actor);
#endif
e.Actor->Draw(renderContext);
}
@@ -42,10 +39,7 @@ void SceneRendering::Draw(RenderContext& renderContext)
if (view.RenderLayersMask.Mask & e.LayerMask && (e.NoCulling || frustum.Intersects(e.Bounds)))
{
#if SCENE_RENDERING_USE_PROFILER
- PROFILE_CPU();
-#if TRACY_ENABLE
- ___tracy_scoped_zone.Name(*e.Actor->GetName(), e.Actor->GetName().Length());
-#endif
+ PROFILE_CPU_ACTOR(e.Actor);
#endif
e.Actor->Draw(renderContext);
}
@@ -88,6 +82,7 @@ void SceneRendering::Clear()
int32 SceneRendering::AddActor(Actor* a)
{
int32 key = 0;
+ // TODO: track removedCount and skip searching for free entry if there is none
for (; key < Actors.Count(); key++)
{
if (Actors[key].Actor == nullptr)
diff --git a/Source/Engine/Profiler/ProfilerCPU.h b/Source/Engine/Profiler/ProfilerCPU.h
index b9e070bb0..e4d40a444 100644
--- a/Source/Engine/Profiler/ProfilerCPU.h
+++ b/Source/Engine/Profiler/ProfilerCPU.h
@@ -403,9 +403,11 @@ struct TIsPODType
#ifdef TRACY_ENABLE
#define PROFILE_CPU_SRC_LOC(srcLoc) tracy::ScopedZone ___tracy_scoped_zone( (tracy::SourceLocationData*)&(srcLoc) ); ScopeProfileBlockCPU ProfileBlockCPU((srcLoc).name)
#define PROFILE_CPU_ASSET(asset) ZoneScoped; const StringView __tracy_asset_name((asset)->GetPath()); ZoneName(*__tracy_asset_name, __tracy_asset_name.Length())
+#define PROFILE_CPU_ACTOR(actor) ZoneScoped; const StringView __tracy_actor_name((actor)->GetName()); ZoneName(*__tracy_actor_name, __tracy_actor_name.Length())
#else
#define PROFILE_CPU_SRC_LOC(srcLoc) ScopeProfileBlockCPU ProfileBlockCPU((srcLoc).name)
#define PROFILE_CPU_ASSET(asset)
+#define PROFILE_CPU_ACTOR(actor)
#endif
#else
@@ -415,5 +417,6 @@ struct TIsPODType
#define PROFILE_CPU_NAMED(name)
#define PROFILE_CPU_SRC_LOC(srcLoc)
#define PROFILE_CPU_ASSET(asset)
+#define PROFILE_CPU_ACTOR(actor)
#endif