3700 FPS here we go

This commit is contained in:
Dynamitos
2021-04-25 23:43:40 +02:00
parent 312ae2af9a
commit 4a078bd24c
35 changed files with 160 additions and 73 deletions
+3 -1
View File
@@ -1,7 +1,9 @@
target_sources(SeeleEngine
PRIVATE
Scene.cpp
Scene.h)
Scene.h
SceneUpdater.h
SceneUpdater.cpp)
add_subdirectory(Actor/)
add_subdirectory(Components/)
+8 -4
View File
@@ -11,7 +11,7 @@ Scene::Scene(Gfx::PGraphics graphics)
: graphics(graphics)
{
lightEnv.directionalLights[0].color = Vector4(1, 0, 0, 1);
lightEnv.directionalLights[0].direction = Vector4(1, 1, 0, 1);
lightEnv.directionalLights[0].direction = Vector4(0, 0, 0, 1);
lightEnv.directionalLights[0].intensity = Vector4(1, 1, 1, 1);
lightEnv.numDirectionalLights = 1;
lightEnv.numPointLights = 0;
@@ -22,11 +22,15 @@ Scene::~Scene()
{
}
void Scene::tick(float deltaTime)
void Scene::tick(double deltaTime)
{
lightEnv.directionalLights[0].direction.x += ((rand() / (double)RAND_MAX) - 0.5f) * 100.f * deltaTime;
lightEnv.directionalLights[0].direction.y += ((rand() / (double)RAND_MAX) - 0.5f) * 100.f * deltaTime;
lightEnv.directionalLights[0].direction.z += ((rand() / (double)RAND_MAX) - 0.5f) * 100.f * deltaTime;
std::cout << lightEnv.directionalLights[0].direction << std::endl;
for (auto actor : rootActors)
{
actor->tick(deltaTime);
actor->tick(static_cast<float>(deltaTime));
}
}
@@ -39,7 +43,7 @@ void Scene::addActor(PActor actor)
void Scene::addPrimitiveComponent(PPrimitiveComponent comp)
{
primitives.add(comp);
for(auto& batch : comp->staticMeshes)
for(auto& batch : comp->getStaticMeshes())
{
PrimitiveUniformBuffer data;
data.actorWorldPosition = Vector4(comp->getTransform().getPosition(), 1);
+1 -1
View File
@@ -39,7 +39,7 @@ class Scene
public:
Scene(Gfx::PGraphics graphics);
~Scene();
void tick(float deltaTime);
void tick(double deltaTime);
void addActor(PActor actor);
void addPrimitiveComponent(PPrimitiveComponent comp);
View File
+16
View File
@@ -0,0 +1,16 @@
#pragma once
#include "Containers/Array.h"
namespace Seele
{
class SceneUpdater
{
public:
SceneUpdater();
~SceneUpdater();
private:
Array<std::thread> workers;
List<std::function<void(float)> pendingUpdates;
void work();
};
} // namespace Seele