Text Rendering works

This commit is contained in:
Dynamitos
2022-04-15 23:45:44 +02:00
parent eb23264c40
commit 03e1a5784d
70 changed files with 1178 additions and 476 deletions
+12 -12
View File
@@ -22,7 +22,7 @@ InspectorView::InspectorView(Gfx::PGraphics graphics, PWindow window, const View
TextRender& render = textPassData.texts.add();
render.font = AssetRegistry::findFont("Calibri");
render.text = "Seele Engine";
render.position = Vector2(0.5f, 0.5f);
render.position = Vector2(200.f, 300.f);
render.scale = 1.0f;
render.textColor = Vector4(1, 1, 1, 1);
}
@@ -31,14 +31,14 @@ InspectorView::~InspectorView()
{
}
Job InspectorView::beginUpdate()
void InspectorView::beginUpdate()
{
co_return;
//co_return;
}
Job InspectorView::update()
void InspectorView::update()
{
co_return;
//co_return;
}
void InspectorView::commitUpdate()
@@ -50,14 +50,14 @@ void InspectorView::prepareRender()
textPass.updateViewFrame(textPassData);
}
MainJob InspectorView::render()
void InspectorView::render()
{
return uiPass.beginFrame()
.then(textPass.beginFrame())
.then(uiPass.render())
.then(textPass.render())
.then(uiPass.endFrame())
.then(textPass.endFrame());
uiPass.beginFrame();
textPass.beginFrame();
uiPass.render();
textPass.render();
uiPass.endFrame();
textPass.endFrame();
}
void InspectorView::keyCallback(KeyCode, InputAction, KeyModifier)
+3 -3
View File
@@ -14,12 +14,12 @@ public:
InspectorView(Gfx::PGraphics graphics, PWindow window, const ViewportCreateInfo &createInfo);
virtual ~InspectorView();
virtual Job beginUpdate() override;
virtual Job update() override;
virtual void beginUpdate() override;
virtual void update() override;
virtual void commitUpdate() override;
virtual void prepareRender() override;
virtual MainJob render() override;
virtual void render() override;
void selectActor();
protected:
UIPass uiPass;
+16 -16
View File
@@ -68,16 +68,16 @@ Seele::SceneView::~SceneView()
{
}
Job SceneView::beginUpdate()
void SceneView::beginUpdate()
{
co_await scene->beginUpdate(Gfx::currentFrameDelta);
co_return;
scene->beginUpdate(Gfx::currentFrameDelta);
//co_return;
}
Job SceneView::update()
void SceneView::update()
{
co_await scene->commitUpdate();
co_return;
scene->commitUpdate();
//co_return;
}
void SceneView::commitUpdate()
@@ -94,17 +94,17 @@ void SceneView::prepareRender()
basePass.updateViewFrame(basePassData);
}
MainJob SceneView::render()
void SceneView::render()
{
return depthPrepass.beginFrame()
.then(lightCullingPass.beginFrame())
.then(basePass.beginFrame())
.then(depthPrepass.render())
.then(lightCullingPass.render())
.then(basePass.render())
.then(depthPrepass.endFrame())
.then(lightCullingPass.endFrame())
.then(basePass.endFrame());
depthPrepass.beginFrame();
lightCullingPass.beginFrame();
basePass.beginFrame();
depthPrepass.render();
lightCullingPass.render();
basePass.render();
depthPrepass.endFrame();
lightCullingPass.endFrame();
basePass.endFrame();
}
static float cameraSpeed = 1;
+3 -3
View File
@@ -13,12 +13,12 @@ class SceneView : public View
public:
SceneView(Gfx::PGraphics graphics, PWindow owner, const ViewportCreateInfo &createInfo);
~SceneView();
virtual Job beginUpdate() override;
virtual Job update() override;
virtual void beginUpdate() override;
virtual void update() override;
virtual void commitUpdate() override;
virtual void prepareRender() override;
virtual MainJob render() override;
virtual void render() override;
PScene getScene() const { return scene; }
private:
+3 -4
View File
@@ -1,6 +1,5 @@
#pragma once
#include "Graphics/RenderPass/RenderGraph.h"
#include "ThreadPool.h"
namespace Seele
{
@@ -13,15 +12,15 @@ public:
virtual ~View();
// These are called from the view thread, and handle updating game data
virtual Job beginUpdate() = 0;
virtual Job update() = 0;
virtual void beginUpdate() = 0;
virtual void update() = 0;
// End frame is called with a lock, so it is safe to write to shared memory
virtual void commitUpdate() = 0;
// These are called from the render thread
// prepare render is also locked, so reading from shared memory is also safe
virtual void prepareRender() = 0;
virtual MainJob render() = 0;
virtual void render() = 0;
void applyArea(URect area);
void setFocused();
+21 -18
View File
@@ -16,29 +16,32 @@ Window::~Window()
void Window::addView(PView view)
{
WindowView* windowView = new WindowView(view);
//WindowView* windowView = new WindowView(view);
//windowView->worker = std::thread(&Window::viewWorker, this, windowView);
views.add(windowView);
viewWorker(views.size() - 1);
views.add(view);
//viewWorker(views.size() - 1);
}
MainJob Window::render()
void Window::render()
{
gfxHandle->beginFrame();
for(auto& windowView : views)
while(owner->isActive())
{
gfxHandle->beginFrame();
for(auto& view : views)
{
std::scoped_lock lock(windowView->workerMutex);
windowView->view->prepareRender();
view->beginUpdate();
view->update();
view->commitUpdate();
view->prepareRender();
view->render();
}
gfxHandle->endFrame();
if(owner->isActive())
{
render();
}
co_await windowView->view->render();
}
gfxHandle->endFrame();
if(owner->isActive())
{
render();
}
co_return;
//co_return;
}
Gfx::PWindow Window::getGfxHandle()
@@ -63,7 +66,7 @@ void Window::setFocused(PView view)
});
}
Job Window::viewWorker(size_t viewIndex)
/*void Window::viewWorker(size_t viewIndex)
{
WindowView* windowView = views[viewIndex];
co_await windowView->view->beginUpdate();
@@ -79,5 +82,5 @@ Job Window::viewWorker(size_t viewIndex)
{
viewWorker(viewIndex);
}
co_return;
}
//co_return;
}*/
+6 -7
View File
@@ -1,11 +1,10 @@
#pragma once
#include "Graphics/GraphicsResources.h"
#include "View.h"
#include "ThreadPool.h"
namespace Seele
{
struct WindowView
/*struct WindowView
{
PView view;
Event updateFinished;
@@ -14,8 +13,8 @@ struct WindowView
: view(view)
, updateFinished(view->getName())
{}
};
DEFINE_REF(WindowView)
};*/
//DEFINE_REF(WindowView)
DECLARE_REF(WindowManager)
// The logical window, with the graphics proxy
class Window
@@ -24,16 +23,16 @@ public:
Window(PWindowManager owner, Gfx::PWindow handle);
~Window();
void addView(PView view);
MainJob render();
void render();
Gfx::PWindow getGfxHandle();
void setFocused(PView view);
protected:
PWindowManager owner;
Array<WindowView*> views;
Array<PView> views;
Gfx::PWindow gfxHandle;
Job viewWorker(size_t viewIndex);
//void viewWorker(size_t viewIndex);
};
DEFINE_REF(Window)
} // namespace Seele