Text Rendering works
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}*/
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user