From c0b454e3206c0cdd9d1da10d4072a95e9e23993f Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Fri, 5 Jan 2018 17:30:40 +0100 Subject: [PATCH 01/91] Remove redundant __GNU__ macro --- code/Modules/Core/Assertion.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/Modules/Core/Assertion.h b/code/Modules/Core/Assertion.h index 4af8d5433..f97eb3942 100644 --- a/code/Modules/Core/Assertion.h +++ b/code/Modules/Core/Assertion.h @@ -9,7 +9,7 @@ #define ORYOL_TRAP() abort() -#if !(__GNUC__ || __GNUC__) +#if !__GNUC__ // on Visual Studio, replace __PRETTY_FUNCTION__ with __FUNCSIG__ #define __PRETTY_FUNCTION__ __FUNCSIG__ #endif From faf4c7ee2dc1714df035431da1d0c98722b913d7 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Fri, 5 Jan 2018 17:30:59 +0100 Subject: [PATCH 02/91] Add sokol dependency --- fips.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fips.yml b/fips.yml index 783040fbf..09d0fa9d8 100644 --- a/fips.yml +++ b/fips.yml @@ -19,6 +19,8 @@ imports: git: https://github.com/floooh/fips-remotery.git fips-vld: git: https://github.com/floooh/fips-vld.git + sokol: + git: https://github.com/floooh/sokol.git exports: header-dirs : From 1e4a9ee5ec8a69a96c44287c9a58f6b8c78e29f5 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Fri, 5 Jan 2018 17:31:12 +0100 Subject: [PATCH 03/91] Add sokolGfxBackend class --- code/Modules/Gfx/private/sokolGfxBackend.cc | 195 ++++++++++++++++++++ code/Modules/Gfx/private/sokolGfxBackend.h | 88 +++++++++ 2 files changed, 283 insertions(+) create mode 100644 code/Modules/Gfx/private/sokolGfxBackend.cc create mode 100644 code/Modules/Gfx/private/sokolGfxBackend.h diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc new file mode 100644 index 000000000..6dd4fbab6 --- /dev/null +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -0,0 +1,195 @@ +//------------------------------------------------------------------------------ +// sokolGfxBackend.cc +//------------------------------------------------------------------------------ +#include "Pre.h" +#include "Core/Assertion.h" +#include "sokolGfxBackend.h" + +namespace Oryol { +namespace _priv { + +//------------------------------------------------------------------------------ +sokolGfxBackend::~sokolGfxBackend() { + o_assert(!this->isValid); +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::Setup(const GfxSetup& setup) { + o_assert(!this->isValid); + // FIXME + this->isValid = true; +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::Discard() { + o_assert(this->isValid); + this->isValid = false; + // FIXME +} + +//------------------------------------------------------------------------------ +bool sokolGfxBackend::IsValid() { + return this->isValid; +} + +//------------------------------------------------------------------------------ +bool sokolGfxBackend::QuitRequested() { + // FIXME + return false; +} + +//------------------------------------------------------------------------------ +bool sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { + o_assert_dbg(this->isValid); + // FIXME! + return false; +} + +//------------------------------------------------------------------------------ +GfxEventHandlerId sokolGfxBackend::Subscribe(GfxEventHandler handler) { + o_assert_dbg(this->isValid); + // FIXME! + return GfxEventHandlerId(); +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::Unsubscribe(GfxEventHandlerId id) { + o_assert_dbg(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +ResourceLabel sokolGfxBackend::PushResourceLabel() { + o_assert_dbg(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::PushResourceLabel(ResourceLabel label) { + o_assert_dbg(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +ResourceLabel sokolGfxBackend::PopResourceLabel() { + o_assert_dbg(this->isValid); + // FIXME + return ResourceLabel(); +} + +//------------------------------------------------------------------------------ +Id sokolGfxBackend::CreateBuffer(const BufferSetup& setup) { + o_assert_dbg(this->isValid); + // FIXME + return Id::InvalidId(); +} + +//------------------------------------------------------------------------------ +Id sokolGfxBackend::CreateImage(const ImageSetup& setup) { + o_assert_dbg(this->isValid); + // FIXME + return Id::InvalidId(); +} + +//------------------------------------------------------------------------------ +Id sokolGfxBackend::CreateShader(const ShaderSetup& setup) { + o_assert_dbg(this->isValid); + // FIXME + return Id::InvalidId(); +} + +//------------------------------------------------------------------------------ +Id sokolGfxBackend::CreatePipeline(const PipelineSetup& setup) { + o_assert_dbg(this->isValid); + // FIXME + return Id::InvalidId(); +} + +//------------------------------------------------------------------------------ +Id sokolGfxBackend::CreatePass(const PassSetup& setup) { + o_assert_dbg(this->isValid); + // FIXME + return Id::InvalidId(); +} + +//------------------------------------------------------------------------------ +Id sokolGfxBackend::LookupResource(const Locator& loc) { + o_assert_dbg(this->isValid); + // FIXME + return Id::InvalidId(); +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::DestroyResource(ResourceLabel label) { + o_assert_dbg(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::UpdateImage(const Id& id, const ImageContent& data) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::BeginPass(Id passId, const PassAction* action) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::EndPass() { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::ApplyViewPort(int x, int y, int w, int h, bool originTopLeft) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::ApplyScissorRect(int x, int y, int w, int h, bool originTopLeft) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::ApplyDrawState(const DrawState& drawState) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::Draw(int baseElement, int numElements, int numInstances) { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::CommitFrame() { + o_assert(this->isValid); + // FIXME +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::ResetStateCache() { + o_assert(this->isValid); + // FIXME +} + +} // namespace _priv +} // namespace Oryol diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h new file mode 100644 index 000000000..7a4c61804 --- /dev/null +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -0,0 +1,88 @@ +#pragma once +//------------------------------------------------------------------------------ +/** + @class Oryol::_priv::sokolGfxBackend + @ingroup _priv + @brief graphics backend implementation on top of sokol_gfx.h +*/ +#include "Gfx/GfxTypes.h" +#include "Resource/ResourceLabel.h" + +namespace Oryol { +namespace _priv { + +class sokolGfxBackend { +public: + /// destructor + ~sokolGfxBackend(); + + /// setup the Gfx backend + void Setup(const GfxSetup& setup); + /// shutdown the Gfx backend + void Discard(); + /// check if Gfx backend has been setup + bool IsValid(); + /// return true if the Gfx backend wants to quit the application + bool QuitRequested(); + /// check if optional feature is supported + bool QueryFeature(GfxFeature::Code feature); + + /// subscribe to display events + GfxEventHandlerId Subscribe(GfxEventHandler handler); + /// unsubscribe from display events + void Unsubscribe(GfxEventHandlerId id); + + /// generate new resource label and push on label stack + ResourceLabel PushResourceLabel(); + /// push explicit resource label on label stack + void PushResourceLabel(ResourceLabel label); + /// pop resource label from label stack + ResourceLabel PopResourceLabel(); + + /// create a buffer resource + Id CreateBuffer(const BufferSetup& setup); + /// create an image resource + Id CreateImage(const ImageSetup& setup); + /// create a shader resource + Id CreateShader(const ShaderSetup& setup); + /// create a pipeline resource + Id CreatePipeline(const PipelineSetup& setup); + /// create a pass resource + Id CreatePass(const PassSetup& setup); + /// lookup a resource Id by locator + Id LookupResource(const Locator& loc); + /// destroy one or multiple resource(s) by matching label + void DestroyResources(ResourceLabel label); + + /// update dynamic buffer data + void UpdateBuffer(const Id& id, const void* data, int numBytes); + /// update dynamic image data + void UpdateImage(const Id& id, const ImageContent& data); + + /// begin rendering pass + void BeginPass(Id passId, const PassAction* action); + /// finish rendering pass + void EndPass(); + + /// apply viewport + void ApplyViewPort(int x, int y, int w, int h, bool originTopLeft); + /// apply scissor rect + void ApplyScissorRect(int x, int y, int w, int h, bool originTopLeft); + /// apply a draw state + void ApplyDrawState(const DrawState& drawState); + /// apply a uniform block + void ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes); + + /// issue a draw call + void Draw(int baseElement, int numElements, int numInstances); + + /// commit current frame + void CommitFrame(); + /// reset the internal state cache + void ResetStateCache(); + + bool isValid = false; +}; + +} // namespace _priv +} // namespace Oryol From 76eab6d37f73acf1d59f4fabeb82c41b64bb7478 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 6 Jan 2018 13:51:00 +0100 Subject: [PATCH 04/91] Some more sokol_gfx backend implementation --- code/Modules/Gfx/CMakeLists.txt | 1 + code/Modules/Gfx/Gfx.cc | 6 ++-- code/Modules/Gfx/Gfx.h | 8 ++--- code/Modules/Gfx/GfxTypes.h | 16 +++++++++ code/Modules/Gfx/private/sokolGfxBackend.cc | 38 +++++++++++++++++---- code/Modules/Gfx/private/sokolGfxBackend.h | 13 +++---- 6 files changed, 61 insertions(+), 21 deletions(-) diff --git a/code/Modules/Gfx/CMakeLists.txt b/code/Modules/Gfx/CMakeLists.txt index a50f81723..7b90f069c 100644 --- a/code/Modules/Gfx/CMakeLists.txt +++ b/code/Modules/Gfx/CMakeLists.txt @@ -32,6 +32,7 @@ fips_begin_module(Gfx) ) fips_dir(private) fips_files( + sokolGfxBackend.cc sokolGfxBackend.h displayMgrBase.cc displayMgrBase.h displayMgr.h renderer.h diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 249e2a642..d4712bb38 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -82,15 +82,15 @@ Gfx::QuitRequested() { } //------------------------------------------------------------------------------ -Gfx::EventHandlerId -Gfx::Subscribe(EventHandler handler) { +GfxEvent::HandlerId +Gfx::Subscribe(GfxEvent::Handler handler) { o_assert_dbg(IsValid()); return state->displayManager.Subscribe(handler); } //------------------------------------------------------------------------------ void -Gfx::Unsubscribe(EventHandlerId id) { +Gfx::Unsubscribe(GfxEvent::HandlerId id) { o_assert_dbg(IsValid()); state->displayManager.Unsubscribe(id); } diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 8293ea92b..b2a5bae76 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -37,14 +37,10 @@ class Gfx { /// test if the window system wants the application to quit static bool QuitRequested(); - /// event handler callback typedef - typedef std::function EventHandler; - /// event handler id typedef - typedef unsigned int EventHandlerId; /// subscribe to display events - static EventHandlerId Subscribe(EventHandler handler); + static GfxEvent::HandlerId Subscribe(GfxEvent::Handler handler); /// unsubscribe from display events - static void Unsubscribe(EventHandlerId id); + static void Unsubscribe(GfxEvent::HandlerId id); /// get the original render setup object static const class GfxSetup& GfxSetup(); diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index ac09ce69c..08d071377 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -10,6 +10,7 @@ #include "Gfx/GfxConfig.h" #include "glm/vec4.hpp" #include +#include namespace Oryol { @@ -1032,6 +1033,10 @@ struct DisplayAttrs { */ class GfxEvent { public: + /// handler function typedef + typedef std::function Handler; + /// id for an event handler subscription + typedef uint32_t HandlerId; /// event types enum Type { DisplayModified, @@ -1168,6 +1173,17 @@ class GfxSetup { GfxSetup(); }; +//------------------------------------------------------------------------------ +/** + @class Oryol::MeshSetup + @ingroup Gfx + @brief setup attributes for meshes +*/ +class BufferSetup { +public: + // FIXME! +}; + //------------------------------------------------------------------------------ /** @class Oryol::MeshSetup diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 6dd4fbab6..d9b602734 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -3,6 +3,31 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "Core/Assertion.h" +#include "Core/Memory/Memory.h" +#define SOKOL_IMPL +#define SOKOL_ASSERT(c) o_assert_dbg(c) +#define SOKOL_MALLOC(s) Oryol::Memory::Alloc(s) +#define SOKOL_FREE(p) Oryol::Memory::Free(p) +#define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) +#define SOKOL_UNREACHABLE o_assert_dbg(false) +#if ORYOL_OPENGL +#include "Gfx/private/gl/gl_impl.h" +#endif +#if ORYOL_OPENGLES2 +#define SOKKOL_GLES2 +#elif ORYOL_OPENGL3 +#define SOKOL_GLES3 +#elif ORYOL_OPENGL_CORE_PROFILE +#define SOKOL_GLCORE33 +#elif ORYOL_D3D11 +#define SOKOL_D3D11 +#elif ORYOL_METAL +#if ORYOL_MACOS +#define SOKOL_METAL_MACOS +#else +#define SOKOL_METAL_IOS +#endif +#endif #include "sokolGfxBackend.h" namespace Oryol { @@ -46,14 +71,14 @@ bool sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { } //------------------------------------------------------------------------------ -GfxEventHandlerId sokolGfxBackend::Subscribe(GfxEventHandler handler) { +GfxEvent::HandlerId sokolGfxBackend::Subscribe(GfxEvent::Handler handler) { o_assert_dbg(this->isValid); // FIXME! - return GfxEventHandlerId(); + return GfxEvent::HandlerId(); } //------------------------------------------------------------------------------ -void sokolGfxBackend::Unsubscribe(GfxEventHandlerId id) { +void sokolGfxBackend::Unsubscribe(GfxEvent::HandlerId id) { o_assert_dbg(this->isValid); // FIXME } @@ -62,6 +87,7 @@ void sokolGfxBackend::Unsubscribe(GfxEventHandlerId id) { ResourceLabel sokolGfxBackend::PushResourceLabel() { o_assert_dbg(this->isValid); // FIXME + return ResourceLabel(); } //------------------------------------------------------------------------------ @@ -85,7 +111,7 @@ Id sokolGfxBackend::CreateBuffer(const BufferSetup& setup) { } //------------------------------------------------------------------------------ -Id sokolGfxBackend::CreateImage(const ImageSetup& setup) { +Id sokolGfxBackend::CreateTexture(const TextureSetup& setup) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); @@ -120,7 +146,7 @@ Id sokolGfxBackend::LookupResource(const Locator& loc) { } //------------------------------------------------------------------------------ -void sokolGfxBackend::DestroyResource(ResourceLabel label) { +void sokolGfxBackend::DestroyResources(ResourceLabel label) { o_assert_dbg(this->isValid); // FIXME } @@ -132,7 +158,7 @@ void sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) } //------------------------------------------------------------------------------ -void sokolGfxBackend::UpdateImage(const Id& id, const ImageContent& data) { +void sokolGfxBackend::UpdateTexture(const Id& id, const ImageDataAttrs& attrs, const void* data, int numBytes) { o_assert(this->isValid); // FIXME } diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 7a4c61804..aabaf578f 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -7,6 +7,7 @@ */ #include "Gfx/GfxTypes.h" #include "Resource/ResourceLabel.h" +#include "sokol_gfx.h" namespace Oryol { namespace _priv { @@ -28,9 +29,9 @@ class sokolGfxBackend { bool QueryFeature(GfxFeature::Code feature); /// subscribe to display events - GfxEventHandlerId Subscribe(GfxEventHandler handler); + GfxEvent::HandlerId Subscribe(GfxEvent::Handler handler); /// unsubscribe from display events - void Unsubscribe(GfxEventHandlerId id); + void Unsubscribe(GfxEvent::HandlerId id); /// generate new resource label and push on label stack ResourceLabel PushResourceLabel(); @@ -41,8 +42,8 @@ class sokolGfxBackend { /// create a buffer resource Id CreateBuffer(const BufferSetup& setup); - /// create an image resource - Id CreateImage(const ImageSetup& setup); + /// create an texture resource + Id CreateTexture(const TextureSetup& setup); /// create a shader resource Id CreateShader(const ShaderSetup& setup); /// create a pipeline resource @@ -56,8 +57,8 @@ class sokolGfxBackend { /// update dynamic buffer data void UpdateBuffer(const Id& id, const void* data, int numBytes); - /// update dynamic image data - void UpdateImage(const Id& id, const ImageContent& data); + /// update dynamic texture data + void UpdateTexture(const Id& id, const ImageDataAttrs& attrs, const void* data, int numBytes); /// begin rendering pass void BeginPass(Id passId, const PassAction* action); From db3122cd5cef0d9fe0c5c349fe8019301c071cc4 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 6 Jan 2018 15:00:17 +0100 Subject: [PATCH 05/91] start moving functionality into gfxBackend --- code/Modules/Gfx/Gfx.cc | 140 ++++++++---------- code/Modules/Gfx/private/gfxBackend.h | 14 ++ .../Gfx/private/gfxResourceContainer.cc | 63 ++++---- .../Gfx/private/gfxResourceContainer.h | 8 +- code/Modules/Gfx/private/sokolGfxBackend.cc | 74 ++++----- code/Modules/Gfx/private/sokolGfxBackend.h | 13 +- code/Modules/Resource/CMakeLists.txt | 2 +- code/Modules/Resource/ResourceContainerBase.h | 48 ------ ...ContainerBase.cc => ResourceLabelStack.cc} | 56 +++---- code/Modules/Resource/ResourceLabelStack.h | 39 +++++ 10 files changed, 232 insertions(+), 225 deletions(-) create mode 100644 code/Modules/Gfx/private/gfxBackend.h delete mode 100644 code/Modules/Resource/ResourceContainerBase.h rename code/Modules/Resource/{ResourceContainerBase.cc => ResourceLabelStack.cc} (55%) create mode 100644 code/Modules/Resource/ResourceLabelStack.h diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index d4712bb38..1de43db29 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -6,9 +6,7 @@ #include "Core/Core.h" #include "Core/Trace.h" #include "Gfx/private/gfxPointers.h" -#include "Gfx/private/displayMgr.h" -#include "Gfx/private/gfxResourceContainer.h" -#include "Gfx/private/renderer.h" +#include "Gfx/private/gfxBackend.h" namespace Oryol { @@ -19,9 +17,7 @@ namespace { class GfxSetup gfxSetup; GfxFrameInfo gfxFrameInfo; RunLoop::Id runLoopId = RunLoop::InvalidId; - _priv::displayMgr displayManager; - class _priv::renderer renderer; - _priv::gfxResourceContainer resourceContainer; + _priv::gfxBackend backend; bool inPass = false; }; _state* state = nullptr; @@ -35,20 +31,18 @@ Gfx::Setup(const class GfxSetup& setup) { state->gfxSetup = setup; gfxPointers pointers; - pointers.displayMgr = &state->displayManager; - pointers.renderer = &state->renderer; - pointers.resContainer = &state->resourceContainer; - pointers.meshPool = &state->resourceContainer.meshPool; - pointers.shaderPool = &state->resourceContainer.shaderPool; - pointers.texturePool = &state->resourceContainer.texturePool; - pointers.pipelinePool = &state->resourceContainer.pipelinePool; - pointers.renderPassPool = &state->resourceContainer.renderPassPool; + pointers.displayMgr = &state->backend.displayManager; + pointers.renderer = &state->backend.renderer; + pointers.resContainer = &state->backend.resourceContainer; + pointers.meshPool = &state->backend.resourceContainer.meshPool; + pointers.shaderPool = &state->backend.resourceContainer.shaderPool; + pointers.texturePool = &state->backend.resourceContainer.texturePool; + pointers.pipelinePool = &state->backend.resourceContainer.pipelinePool; + pointers.renderPassPool = &state->backend.resourceContainer.renderPassPool; - state->displayManager.SetupDisplay(setup, pointers); - state->renderer.setup(setup, pointers); - state->resourceContainer.setup(setup, pointers); + state->backend.Setup(setup, pointers); state->runLoopId = Core::PreRunLoop()->Add([] { - state->displayManager.ProcessSystemEvents(); + state->backend.ProcessSystemEvents(); }); state->gfxFrameInfo = GfxFrameInfo(); } @@ -58,12 +52,8 @@ void Gfx::Discard() { o_assert_dbg(IsValid()); o_assert_dbg(!state->inPass); - state->resourceContainer.GarbageCollect(); - state->resourceContainer.Destroy(ResourceLabel::All); Core::PreRunLoop()->Remove(state->runLoopId); - state->renderer.discard(); - state->resourceContainer.discard(); - state->displayManager.DiscardDisplay(); + state->backend.Discard(); Memory::Delete(state); state = nullptr; } @@ -78,21 +68,21 @@ Gfx::IsValid() { bool Gfx::QuitRequested() { o_assert_dbg(IsValid()); - return state->displayManager.QuitRequested(); + return state->backend.QuitRequested(); } //------------------------------------------------------------------------------ GfxEvent::HandlerId Gfx::Subscribe(GfxEvent::Handler handler) { o_assert_dbg(IsValid()); - return state->displayManager.Subscribe(handler); + return state->backend.Subscribe(handler); } //------------------------------------------------------------------------------ void Gfx::Unsubscribe(GfxEvent::HandlerId id) { o_assert_dbg(IsValid()); - state->displayManager.Unsubscribe(id); + state->backend.Unsubscribe(id); } //------------------------------------------------------------------------------ @@ -106,14 +96,14 @@ Gfx::GfxSetup() { const DisplayAttrs& Gfx::DisplayAttrs() { o_assert_dbg(IsValid()); - return state->displayManager.GetDisplayAttrs(); + return state->backend.displayManager.GetDisplayAttrs(); } //------------------------------------------------------------------------------ const DisplayAttrs& Gfx::PassAttrs() { o_assert_dbg(IsValid()); - return state->renderer.renderPassAttrs(); + return state->backend.renderer.renderPassAttrs(); } //------------------------------------------------------------------------------ @@ -130,7 +120,7 @@ Gfx::BeginPass() { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - state->renderer.beginPass(nullptr, &state->gfxSetup.DefaultPassAction); + state->backend.renderer.beginPass(nullptr, &state->gfxSetup.DefaultPassAction); } //------------------------------------------------------------------------------ @@ -140,7 +130,7 @@ Gfx::BeginPass(const PassAction& action) { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - state->renderer.beginPass(nullptr, &action); + state->backend.renderer.beginPass(nullptr, &action); } //------------------------------------------------------------------------------ @@ -150,9 +140,9 @@ Gfx::BeginPass(const Id& id) { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - renderPass* pass = state->resourceContainer.lookupRenderPass(id); + renderPass* pass = state->backend.resourceContainer.lookupRenderPass(id); o_assert_dbg(pass); - state->renderer.beginPass(pass, &pass->Setup.DefaultAction); + state->backend.renderer.beginPass(pass, &pass->Setup.DefaultAction); } //------------------------------------------------------------------------------ @@ -162,9 +152,9 @@ Gfx::BeginPass(const Id& id, const PassAction& passAction) { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - renderPass* pass = state->resourceContainer.lookupRenderPass(id); + renderPass* pass = state->backend.resourceContainer.lookupRenderPass(id); o_assert_dbg(pass); - state->renderer.beginPass(pass, &passAction); + state->backend.renderer.beginPass(pass, &passAction); } //------------------------------------------------------------------------------ @@ -173,7 +163,7 @@ Gfx::EndPass() { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); state->inPass = false; - state->renderer.endPass(); + state->backend.renderer.endPass(); } //------------------------------------------------------------------------------ @@ -186,13 +176,13 @@ Gfx::ApplyDrawState(const DrawState& drawState) { state->gfxFrameInfo.NumApplyDrawState++; // apply pipeline and meshes - pipeline* pip = state->resourceContainer.lookupPipeline(drawState.Pipeline); + pipeline* pip = state->backend.resourceContainer.lookupPipeline(drawState.Pipeline); o_assert_dbg(pip); mesh* meshes[GfxConfig::MaxNumInputMeshes] = { }; int numMeshes = 0; for (; numMeshes < GfxConfig::MaxNumInputMeshes; numMeshes++) { if (drawState.Mesh[numMeshes].IsValid()) { - meshes[numMeshes] = state->resourceContainer.lookupMesh(drawState.Mesh[numMeshes]); + meshes[numMeshes] = state->backend.resourceContainer.lookupMesh(drawState.Mesh[numMeshes]); } else { break; @@ -201,7 +191,7 @@ Gfx::ApplyDrawState(const DrawState& drawState) { #if ORYOL_DEBUG validateMeshes(pip, meshes, numMeshes); #endif - state->renderer.applyDrawState(pip, meshes, numMeshes); + state->backend.renderer.applyDrawState(pip, meshes, numMeshes); // apply vertex textures if any texture* vsTextures[GfxConfig::MaxNumVertexTextures] = { }; @@ -209,7 +199,7 @@ Gfx::ApplyDrawState(const DrawState& drawState) { for (; numVSTextures < GfxConfig::MaxNumVertexTextures; numVSTextures++) { const Id& texId = drawState.VSTexture[numVSTextures]; if (texId.IsValid()) { - vsTextures[numVSTextures] = state->resourceContainer.lookupTexture(texId); + vsTextures[numVSTextures] = state->backend.resourceContainer.lookupTexture(texId); } else { break; @@ -219,7 +209,7 @@ Gfx::ApplyDrawState(const DrawState& drawState) { #if ORYOL_DEBUG validateTextures(ShaderStage::VS, pip, vsTextures, numVSTextures); #endif - state->renderer.applyTextures(ShaderStage::VS, vsTextures, numVSTextures); + state->backend.renderer.applyTextures(ShaderStage::VS, vsTextures, numVSTextures); } // apply fragment textures if any @@ -228,7 +218,7 @@ Gfx::ApplyDrawState(const DrawState& drawState) { for (; numFSTextures < GfxConfig::MaxNumFragmentTextures; numFSTextures++) { const Id& texId = drawState.FSTexture[numFSTextures]; if (texId.IsValid()) { - fsTextures[numFSTextures] = state->resourceContainer.lookupTexture(texId); + fsTextures[numFSTextures] = state->backend.resourceContainer.lookupTexture(texId); } else { break; @@ -238,7 +228,7 @@ Gfx::ApplyDrawState(const DrawState& drawState) { #if ORYOL_DEBUG validateTextures(ShaderStage::FS, pip, fsTextures, numFSTextures); #endif - state->renderer.applyTextures(ShaderStage::FS, fsTextures, numFSTextures); + state->backend.renderer.applyTextures(ShaderStage::FS, fsTextures, numFSTextures); } } @@ -246,77 +236,77 @@ Gfx::ApplyDrawState(const DrawState& drawState) { bool Gfx::QueryFeature(GfxFeature::Code feat) { o_assert_dbg(IsValid()); - return state->renderer.queryFeature(feat); + return state->backend.QueryFeature(feat); } //------------------------------------------------------------------------------ ResourceLabel Gfx::PushResourceLabel() { o_assert_dbg(IsValid()); - return state->resourceContainer.PushLabel(); + return state->backend.PushResourceLabel(); } //------------------------------------------------------------------------------ void Gfx::PushResourceLabel(ResourceLabel label) { o_assert_dbg(IsValid()); - state->resourceContainer.PushLabel(label); + state->backend.PushResourceLabel(label); } //------------------------------------------------------------------------------ ResourceLabel Gfx::PopResourceLabel() { o_assert_dbg(IsValid()); - return state->resourceContainer.PopLabel(); + return state->backend.PopResourceLabel(); } //------------------------------------------------------------------------------ Id Gfx::LoadResource(const Ptr& loader) { o_assert_dbg(IsValid()); - return state->resourceContainer.Load(loader); + return state->backend.resourceContainer.Load(loader); } //------------------------------------------------------------------------------ Id Gfx::LookupResource(const Locator& locator) { o_assert_dbg(IsValid()); - return state->resourceContainer.Lookup(locator); + return state->backend.LookupResource(locator); } //------------------------------------------------------------------------------ int Gfx::QueryFreeResourceSlots(GfxResourceType::Code resourceType) { o_assert_dbg(IsValid()); - return state->resourceContainer.QueryFreeSlots(resourceType); + return state->backend.resourceContainer.QueryFreeSlots(resourceType); } //------------------------------------------------------------------------------ ResourceInfo Gfx::QueryResourceInfo(const Id& id) { o_assert_dbg(IsValid()); - return state->resourceContainer.QueryResourceInfo(id); + return state->backend.resourceContainer.QueryResourceInfo(id); } //------------------------------------------------------------------------------ ResourcePoolInfo Gfx::QueryResourcePoolInfo(GfxResourceType::Code resType) { o_assert_dbg(IsValid()); - return state->resourceContainer.QueryPoolInfo(resType); + return state->backend.resourceContainer.QueryPoolInfo(resType); } //------------------------------------------------------------------------------ void Gfx::DestroyResources(ResourceLabel label) { o_assert_dbg(IsValid()); - return state->resourceContainer.DestroyDeferred(label); + return state->backend.DestroyResources(label); } //------------------------------------------------------------------------------ _priv::gfxResourceContainer* Gfx::resource() { o_assert_dbg(IsValid()); - return &(state->resourceContainer); + return &(state->backend.resourceContainer); } //------------------------------------------------------------------------------ @@ -325,7 +315,7 @@ Gfx::ApplyViewPort(int x, int y, int width, int height, bool originTopLeft) { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); state->gfxFrameInfo.NumApplyViewPort++; - state->renderer.applyViewPort(x, y, width, height, originTopLeft); + state->backend.ApplyViewPort(x, y, width, height, originTopLeft); } //------------------------------------------------------------------------------ @@ -334,7 +324,7 @@ Gfx::ApplyScissorRect(int x, int y, int width, int height, bool originTopLeft) { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); state->gfxFrameInfo.NumApplyScissorRect++; - state->renderer.applyScissorRect(x, y, width, height, originTopLeft); + state->backend.ApplyScissorRect(x, y, width, height, originTopLeft); } //------------------------------------------------------------------------------ @@ -343,9 +333,7 @@ Gfx::CommitFrame() { o_trace_scoped(Gfx_CommitFrame); o_assert_dbg(IsValid()); o_assert_dbg(!state->inPass); - state->renderer.commitFrame(); - state->displayManager.Present(); - state->resourceContainer.GarbageCollect(); + state->backend.CommitFrame(); state->gfxFrameInfo = GfxFrameInfo(); } @@ -354,7 +342,7 @@ void Gfx::ResetStateCache() { o_trace_scoped(Gfx_ResetStateCache); o_assert_dbg(IsValid()); - state->renderer.resetStateCache(); + state->backend.ResetStateCache(); } //------------------------------------------------------------------------------ @@ -363,8 +351,8 @@ Gfx::UpdateVertices(const Id& id, const void* data, int numBytes) { o_trace_scoped(Gfx_UpdateVertices); o_assert_dbg(IsValid()); state->gfxFrameInfo.NumUpdateVertices++; - mesh* msh = state->resourceContainer.lookupMesh(id); - state->renderer.updateVertices(msh, data, numBytes); + mesh* msh = state->backend.resourceContainer.lookupMesh(id); + state->backend.renderer.updateVertices(msh, data, numBytes); } //------------------------------------------------------------------------------ @@ -373,8 +361,8 @@ Gfx::UpdateIndices(const Id& id, const void* data, int numBytes) { o_trace_scoped(Gfx_UpdateIndices); o_assert_dbg(IsValid()); state->gfxFrameInfo.NumUpdateIndices++; - mesh* msh = state->resourceContainer.lookupMesh(id); - state->renderer.updateIndices(msh, data, numBytes); + mesh* msh = state->backend.resourceContainer.lookupMesh(id); + state->backend.renderer.updateIndices(msh, data, numBytes); } //------------------------------------------------------------------------------ @@ -383,8 +371,8 @@ Gfx::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& offsets o_trace_scoped(Gfx_UpdateTexture); o_assert_dbg(IsValid()); state->gfxFrameInfo.NumUpdateTextures++; - texture* tex = state->resourceContainer.lookupTexture(id); - state->renderer.updateTexture(tex, data, offsetsAndSizes); + texture* tex = state->backend.resourceContainer.lookupTexture(id); + state->backend.renderer.updateTexture(tex, data, offsetsAndSizes); } //------------------------------------------------------------------------------ @@ -394,7 +382,7 @@ Gfx::Draw(int primGroupIndex, int numInstances) { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); state->gfxFrameInfo.NumDraw++; - state->renderer.draw(primGroupIndex, numInstances); + state->backend.renderer.draw(primGroupIndex, numInstances); } //------------------------------------------------------------------------------ @@ -404,7 +392,7 @@ Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); state->gfxFrameInfo.NumDraw++; - state->renderer.draw(primGroup.BaseElement, primGroup.NumElements, numInstances); + state->backend.renderer.draw(primGroup.BaseElement, primGroup.NumElements, numInstances); } //------------------------------------------------------------------------------ @@ -587,13 +575,13 @@ Gfx::validatePassSetup(const PassSetup& setup) { } // check that all render targets have the required params - const texture* t0 = state->resourceContainer.lookupTexture(setup.ColorAttachments[0].Texture); + const texture* t0 = state->backend.resourceContainer.lookupTexture(setup.ColorAttachments[0].Texture); o_assert(t0); const int w = t0->textureAttrs.Width; const int h = t0->textureAttrs.Height; const int sampleCount = t0->textureAttrs.SampleCount; for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - const texture* tex = state->resourceContainer.lookupTexture(setup.ColorAttachments[i].Texture); + const texture* tex = state->backend.resourceContainer.lookupTexture(setup.ColorAttachments[i].Texture); if (tex) { const auto& attrs = tex->textureAttrs; if ((attrs.Width != w) || (attrs.Height != h)) { @@ -610,7 +598,7 @@ Gfx::validatePassSetup(const PassSetup& setup) { } } } - const texture* dsTex = state->resourceContainer.lookupTexture(setup.DepthStencilTexture); + const texture* dsTex = state->backend.resourceContainer.lookupTexture(setup.DepthStencilTexture); if (dsTex) { const auto& attrs = dsTex->textureAttrs; if ((attrs.Width != w) || (attrs.Height != h)) { @@ -644,7 +632,7 @@ Gfx::CreateResource(const TextureSetup& setup, const void* data, int size) { #if ORYOL_DEBUG validateTextureSetup(setup, data, size); #endif - return state->resourceContainer.Create(setup, data, size); + return state->backend.resourceContainer.Create(setup, data, size); } //------------------------------------------------------------------------------ @@ -654,7 +642,7 @@ Gfx::CreateResource(const MeshSetup& setup, const void* data, int size) { #if ORYOL_DEBUG validateMeshSetup(setup, data, size); #endif - return state->resourceContainer.Create(setup, data, size); + return state->backend.resourceContainer.Create(setup, data, size); } //------------------------------------------------------------------------------ @@ -664,7 +652,7 @@ Gfx::CreateResource(const ShaderSetup& setup, const void* data, int size) { #if ORYOL_DEBUG validateShaderSetup(setup); #endif - return state->resourceContainer.Create(setup, nullptr, 0); + return state->backend.resourceContainer.Create(setup, nullptr, 0); } //------------------------------------------------------------------------------ @@ -674,7 +662,7 @@ Gfx::CreateResource(const PipelineSetup& setup, const void* data, int size) { #if ORYOL_DEBUG validatePipelineSetup(setup); #endif - return state->resourceContainer.Create(setup, nullptr, 0); + return state->backend.resourceContainer.Create(setup, nullptr, 0); } //------------------------------------------------------------------------------ @@ -684,7 +672,7 @@ Gfx::CreateResource(const PassSetup& setup, const void* data, int size) { #if ORYOL_DEBUG validatePassSetup(setup); #endif - return state->resourceContainer.Create(setup, nullptr, 0); + return state->backend.resourceContainer.Create(setup, nullptr, 0); } //------------------------------------------------------------------------------ @@ -692,7 +680,7 @@ void Gfx::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t layoutHash, const uint8_t* ptr, int byteSize) { o_assert_dbg(IsValid()); state->gfxFrameInfo.NumApplyUniformBlock++; - state->renderer.applyUniformBlock(bindStage, bindSlot, layoutHash, ptr, byteSize); + state->backend.renderer.applyUniformBlock(bindStage, bindSlot, layoutHash, ptr, byteSize); } } // namespace Oryol diff --git a/code/Modules/Gfx/private/gfxBackend.h b/code/Modules/Gfx/private/gfxBackend.h new file mode 100644 index 000000000..0291ec7ce --- /dev/null +++ b/code/Modules/Gfx/private/gfxBackend.h @@ -0,0 +1,14 @@ +#pragma once +//------------------------------------------------------------------------------ +/** + @class Oryol::_priv::gfxBackend + @ingroup _priv + @brief wrapper class for gfx backend implementations +*/ +#include "Gfx/private/sokolGfxBackend.h" + +namespace Oryol { +namespace _priv { +class gfxBackend : public sokolGfxBackend { }; +} // namespace _priv +} // namespace Oryol diff --git a/code/Modules/Gfx/private/gfxResourceContainer.cc b/code/Modules/Gfx/private/gfxResourceContainer.cc index f10112d46..65a83e698 100644 --- a/code/Modules/Gfx/private/gfxResourceContainer.cc +++ b/code/Modules/Gfx/private/gfxResourceContainer.cc @@ -12,9 +12,12 @@ namespace _priv { //------------------------------------------------------------------------------ void gfxResourceContainer::setup(const GfxSetup& setup, const gfxPointers& ptrs) { - o_assert(!this->IsValid()); + o_assert(!this->valid); + this->valid = true; this->pointers = ptrs; + this->registry.Setup(setup.ResourceRegistryCapacity); + this->labelStack.Setup(setup.ResourceLabelStackCapacity); this->pendingLoaders.Reserve(128); this->destroyQueue.Reserve(128); @@ -27,23 +30,20 @@ gfxResourceContainer::setup(const GfxSetup& setup, const gfxPointers& ptrs) { this->runLoopId = Core::PostRunLoop()->Add([this]() { this->update(); }); - - ResourceContainerBase::Setup(setup.ResourceLabelStackCapacity, setup.ResourceRegistryCapacity); } //------------------------------------------------------------------------------ void gfxResourceContainer::discard() { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Core::PostRunLoop()->Remove(this->runLoopId); for (const auto& loader : this->pendingLoaders) { loader->Cancel(); } this->pendingLoaders.Clear(); - - ResourceContainerBase::Discard(); - + this->registry.Discard(); + this->labelStack.Discard(); this->renderPassPool.Discard(); this->pipelinePool.Discard(); this->texturePool.Discard(); @@ -51,12 +51,13 @@ gfxResourceContainer::discard() { this->meshPool.Discard(); this->factory.discard(); this->pointers = gfxPointers(); + this->valid = false; } //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::Create(const MeshSetup& setup, const void* data, int size) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); o_assert_dbg(!setup.ShouldSetupFromFile()); Id resId = this->registry.Lookup(setup.Locator); @@ -65,7 +66,7 @@ gfxResourceContainer::Create(const MeshSetup& setup, const void* data, int size) } else { resId = this->meshPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); mesh& res = this->meshPool.Assign(resId, ResourceState::Setup); res.Setup = setup; const ResourceState::Code newState = this->factory.initMesh(res, data, size); @@ -78,7 +79,7 @@ gfxResourceContainer::Create(const MeshSetup& setup, const void* data, int size) //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::Create(const TextureSetup& setup, const void* data, int size) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); o_assert_dbg(!setup.ShouldSetupFromFile()); Id resId = this->registry.Lookup(setup.Locator); @@ -87,7 +88,7 @@ gfxResourceContainer::Create(const TextureSetup& setup, const void* data, int si } else { resId = this->texturePool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); texture& res = this->texturePool.Assign(resId, ResourceState::Setup); res.Setup = setup; const ResourceState::Code newState = this->factory.initTexture(res, data, size); @@ -100,10 +101,10 @@ gfxResourceContainer::Create(const TextureSetup& setup, const void* data, int si //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::prepareAsync(const MeshSetup& setup) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Id resId = this->meshPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); mesh& res = this->meshPool.Assign(resId, ResourceState::Pending); res.Setup = setup; return resId; @@ -112,7 +113,7 @@ gfxResourceContainer::prepareAsync(const MeshSetup& setup) { //------------------------------------------------------------------------------ template<> ResourceState::Code gfxResourceContainer::initAsync(const Id& resId, const MeshSetup& setup, const void* data, int size) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); // the prepared resource may have been destroyed while it was loading if (this->meshPool.Contains(resId)) { @@ -134,10 +135,10 @@ gfxResourceContainer::initAsync(const Id& resId, const MeshSetup& setup, const v //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::prepareAsync(const TextureSetup& setup) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Id resId = this->texturePool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); texture& res = this->texturePool.Assign(resId, ResourceState::Pending); res.Setup = setup; return resId; @@ -146,7 +147,7 @@ gfxResourceContainer::prepareAsync(const TextureSetup& setup) { //------------------------------------------------------------------------------ template<> ResourceState::Code gfxResourceContainer::initAsync(const Id& resId, const TextureSetup& setup, const void* data, int size) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); // the prepared resource may have been destroyed while it was loading if (this->texturePool.Contains(resId)) { @@ -168,7 +169,7 @@ gfxResourceContainer::initAsync(const Id& resId, const TextureSetup& setup, cons //------------------------------------------------------------------------------ ResourceState::Code gfxResourceContainer::failedAsync(const Id& resId) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); switch (resId.Type) { case GfxResourceType::Mesh: @@ -199,7 +200,7 @@ gfxResourceContainer::failedAsync(const Id& resId) { //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::Create(const ShaderSetup& setup, const void* /*data*/, int /*size*/) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Id resId = this->registry.Lookup(setup.Locator); if (resId.IsValid()) { @@ -207,7 +208,7 @@ gfxResourceContainer::Create(const ShaderSetup& setup, const void* /*data*/, int } else { resId = this->shaderPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); shader& res = this->shaderPool.Assign(resId, ResourceState::Setup); res.Setup = setup; const ResourceState::Code newState = this->factory.initShader(res); @@ -220,7 +221,7 @@ gfxResourceContainer::Create(const ShaderSetup& setup, const void* /*data*/, int //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::Create(const PipelineSetup& setup, const void* /*data*/, int /*size*/) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Id resId = this->registry.Lookup(setup.Locator); if (resId.IsValid()) { @@ -228,7 +229,7 @@ gfxResourceContainer::Create(const PipelineSetup& setup, const void* /*data*/, i } else { resId = this->pipelinePool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); pipeline& res = this->pipelinePool.Assign(resId, ResourceState::Setup); res.Setup = setup; const ResourceState::Code newState = this->factory.initPipeline(res); @@ -241,7 +242,7 @@ gfxResourceContainer::Create(const PipelineSetup& setup, const void* /*data*/, i //------------------------------------------------------------------------------ template<> Id gfxResourceContainer::Create(const PassSetup& setup, const void* /*data*/, int /*size*/) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Id resId = this->registry.Lookup(setup.Locator); if (resId.IsValid()) { @@ -249,7 +250,7 @@ gfxResourceContainer::Create(const PassSetup& setup, const void* /*data*/, int / } else { resId = this->renderPassPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->PeekLabel()); + this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); renderPass& res = this->renderPassPool.Assign(resId, ResourceState::Setup); res.Setup = setup; const ResourceState::Code newState = this->factory.initRenderPass(res); @@ -262,7 +263,7 @@ gfxResourceContainer::Create(const PassSetup& setup, const void* /*data*/, int / //------------------------------------------------------------------------------ Id gfxResourceContainer::Load(const Ptr& loader) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Id resId = this->registry.Lookup(loader->Locator()); if (resId.IsValid()) { @@ -278,7 +279,7 @@ gfxResourceContainer::Load(const Ptr& loader) { //------------------------------------------------------------------------------ void gfxResourceContainer::DestroyDeferred(const ResourceLabel& label) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Array ids = this->registry.Remove(label); if (ids.Size() > 0) { this->destroyQueue.Reserve(ids.Size()); @@ -371,7 +372,7 @@ gfxResourceContainer::destroyResource(const Id& id) { //------------------------------------------------------------------------------ void gfxResourceContainer::Destroy(const ResourceLabel& label) { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); Array ids = this->registry.Remove(label); for (const Id& id : ids) { this->destroyResource(id); @@ -381,7 +382,7 @@ gfxResourceContainer::Destroy(const ResourceLabel& label) { //------------------------------------------------------------------------------ void gfxResourceContainer::update() { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); /// call update method on resource pools (this is cheap) this->meshPool.Update(); @@ -402,7 +403,7 @@ gfxResourceContainer::update() { //------------------------------------------------------------------------------ ResourceInfo gfxResourceContainer::QueryResourceInfo(const Id& resId) const { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); switch (resId.Type) { case GfxResourceType::Texture: @@ -424,7 +425,7 @@ gfxResourceContainer::QueryResourceInfo(const Id& resId) const { //------------------------------------------------------------------------------ ResourcePoolInfo gfxResourceContainer::QueryPoolInfo(GfxResourceType::Code resType) const { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); switch (resType) { case GfxResourceType::Texture: @@ -446,7 +447,7 @@ gfxResourceContainer::QueryPoolInfo(GfxResourceType::Code resType) const { //------------------------------------------------------------------------------ int gfxResourceContainer::QueryFreeSlots(GfxResourceType::Code resourceType) const { - o_assert_dbg(this->IsValid()); + o_assert_dbg(this->valid); switch (resourceType) { case GfxResourceType::Texture: diff --git a/code/Modules/Gfx/private/gfxResourceContainer.h b/code/Modules/Gfx/private/gfxResourceContainer.h index 3f80d9a12..0f4a2df6f 100644 --- a/code/Modules/Gfx/private/gfxResourceContainer.h +++ b/code/Modules/Gfx/private/gfxResourceContainer.h @@ -8,7 +8,8 @@ #include "Core/RunLoop.h" #include "Core/Containers/Array.h" #include "Resource/ResourceLoader.h" -#include "Resource/ResourceContainerBase.h" +#include "Resource/ResourceRegistry.h" +#include "Resource/ResourceLabelStack.h" #include "Resource/ResourceInfo.h" #include "Gfx/GfxTypes.h" #include "Gfx/private/resourcePools.h" @@ -21,7 +22,7 @@ namespace _priv { class renderer; class displayMgr; -class gfxResourceContainer : public ResourceContainerBase { +class gfxResourceContainer { public: /// setup the resource container void setup(const GfxSetup& setup, const gfxPointers& ptrs); @@ -68,8 +69,11 @@ class gfxResourceContainer : public ResourceContainerBase { /// destroy a single resource void destroyResource(const Id& id); + bool valid = false; gfxPointers pointers; gfxFactory factory; + ResourceRegistry registry; + ResourceLabelStack labelStack; class meshPool meshPool; class shaderPool shaderPool; class texturePool texturePool; diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index d9b602734..ae4d9df22 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -39,17 +39,23 @@ sokolGfxBackend::~sokolGfxBackend() { } //------------------------------------------------------------------------------ -void sokolGfxBackend::Setup(const GfxSetup& setup) { +void sokolGfxBackend::Setup(const GfxSetup& setup, const gfxPointers& ptrs) { o_assert(!this->isValid); - // FIXME + this->displayManager.SetupDisplay(setup, ptrs); + this->resourceContainer.setup(setup, ptrs); + this->renderer.setup(setup, ptrs); this->isValid = true; } //------------------------------------------------------------------------------ void sokolGfxBackend::Discard() { o_assert(this->isValid); + this->resourceContainer.GarbageCollect(); + this->resourceContainer.Destroy(ResourceLabel::All); + this->renderer.discard(); + this->resourceContainer.discard(); + this->displayManager.DiscardDisplay(); this->isValid = false; - // FIXME } //------------------------------------------------------------------------------ @@ -59,48 +65,43 @@ bool sokolGfxBackend::IsValid() { //------------------------------------------------------------------------------ bool sokolGfxBackend::QuitRequested() { - // FIXME - return false; + return this->displayManager.QuitRequested(); } //------------------------------------------------------------------------------ bool sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { o_assert_dbg(this->isValid); - // FIXME! - return false; + return this->renderer.queryFeature(feature); } //------------------------------------------------------------------------------ GfxEvent::HandlerId sokolGfxBackend::Subscribe(GfxEvent::Handler handler) { o_assert_dbg(this->isValid); - // FIXME! - return GfxEvent::HandlerId(); + return this->displayManager.Subscribe(handler); } //------------------------------------------------------------------------------ void sokolGfxBackend::Unsubscribe(GfxEvent::HandlerId id) { o_assert_dbg(this->isValid); - // FIXME + this->displayManager.Unsubscribe(id); } //------------------------------------------------------------------------------ ResourceLabel sokolGfxBackend::PushResourceLabel() { o_assert_dbg(this->isValid); - // FIXME - return ResourceLabel(); + return this->resourceContainer.labelStack.PushLabel(); } //------------------------------------------------------------------------------ void sokolGfxBackend::PushResourceLabel(ResourceLabel label) { o_assert_dbg(this->isValid); - // FIXME + return this->resourceContainer.labelStack.PushLabel(label); } //------------------------------------------------------------------------------ ResourceLabel sokolGfxBackend::PopResourceLabel() { o_assert_dbg(this->isValid); - // FIXME - return ResourceLabel(); + return this->resourceContainer.labelStack.PopLabel(); } //------------------------------------------------------------------------------ @@ -141,80 +142,87 @@ Id sokolGfxBackend::CreatePass(const PassSetup& setup) { //------------------------------------------------------------------------------ Id sokolGfxBackend::LookupResource(const Locator& loc) { o_assert_dbg(this->isValid); - // FIXME - return Id::InvalidId(); + return this->resourceContainer.registry.Lookup(loc); } //------------------------------------------------------------------------------ void sokolGfxBackend::DestroyResources(ResourceLabel label) { o_assert_dbg(this->isValid); - // FIXME + return this->resourceContainer.DestroyDeferred(label); } //------------------------------------------------------------------------------ void sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::UpdateTexture(const Id& id, const ImageDataAttrs& attrs, const void* data, int numBytes) { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::BeginPass(Id passId, const PassAction* action) { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::EndPass() { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::ApplyViewPort(int x, int y, int w, int h, bool originTopLeft) { - o_assert(this->isValid); - // FIXME + o_assert_dbg(this->isValid); + this->renderer.applyViewPort(x, y, w, h, originTopLeft); } //------------------------------------------------------------------------------ void sokolGfxBackend::ApplyScissorRect(int x, int y, int w, int h, bool originTopLeft) { - o_assert(this->isValid); - // FIXME + o_assert_dbg(this->isValid); + this->renderer.applyScissorRect(x, y, w, h, originTopLeft); } //------------------------------------------------------------------------------ void sokolGfxBackend::ApplyDrawState(const DrawState& drawState) { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes) { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::Draw(int baseElement, int numElements, int numInstances) { - o_assert(this->isValid); + o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ void sokolGfxBackend::CommitFrame() { - o_assert(this->isValid); - // FIXME + o_assert_dbg(this->isValid); + this->renderer.commitFrame(); + this->displayManager.Present(); + this->resourceContainer.GarbageCollect(); } //------------------------------------------------------------------------------ void sokolGfxBackend::ResetStateCache() { - o_assert(this->isValid); - // FIXME + o_assert_dbg(this->isValid); + this->renderer.resetStateCache(); +} + +//------------------------------------------------------------------------------ +void sokolGfxBackend::ProcessSystemEvents() { + o_assert_dbg(this->isValid); + this->displayManager.ProcessSystemEvents(); } } // namespace _priv diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index aabaf578f..255205f2a 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -6,6 +6,10 @@ @brief graphics backend implementation on top of sokol_gfx.h */ #include "Gfx/GfxTypes.h" +#include "Gfx/private/displayMgr.h" +#include "Gfx/private/gfxResourceContainer.h" +#include "Gfx/private/renderer.h" +#include "Gfx/private/gfxPointers.h" #include "Resource/ResourceLabel.h" #include "sokol_gfx.h" @@ -18,7 +22,7 @@ class sokolGfxBackend { ~sokolGfxBackend(); /// setup the Gfx backend - void Setup(const GfxSetup& setup); + void Setup(const GfxSetup& setup, const gfxPointers& ptrs); /// shutdown the Gfx backend void Discard(); /// check if Gfx backend has been setup @@ -79,10 +83,17 @@ class sokolGfxBackend { /// commit current frame void CommitFrame(); + /// present current frame + void Preset(); /// reset the internal state cache void ResetStateCache(); + /// process window system events + void ProcessSystemEvents(); bool isValid = false; + displayMgr displayManager; + gfxResourceContainer resourceContainer; + class renderer renderer; }; } // namespace _priv diff --git a/code/Modules/Resource/CMakeLists.txt b/code/Modules/Resource/CMakeLists.txt index 13cbdb7ee..42af03fe1 100644 --- a/code/Modules/Resource/CMakeLists.txt +++ b/code/Modules/Resource/CMakeLists.txt @@ -11,7 +11,7 @@ fips_begin_module(Resource) ResourceLoader.cc ResourceLoader.h ResourcePool.h SetupAndData.h - ResourceContainerBase.cc ResourceContainerBase.h + ResourceLabelStack.cc ResourceLabelStack.h ResourceRegistry.cc ResourceRegistry.h ResourceBase.h ) diff --git a/code/Modules/Resource/ResourceContainerBase.h b/code/Modules/Resource/ResourceContainerBase.h deleted file mode 100644 index 47779fca2..000000000 --- a/code/Modules/Resource/ResourceContainerBase.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::ResourceContainerBase - @ingroup Resource - @brief base class for resource containers - - A resource container manages creation, pooling, querying and - discard for different types of related resources. Modules like - the Gfx module typically derive a single ResourceContainer subclass - to wrap their different resource types. -*/ -#include "Core/Types.h" -#include "Core/Containers/Array.h" -#include "Resource/ResourceRegistry.h" -#include "Resource/ResourceLabel.h" - -namespace Oryol { - -class ResourceContainerBase { -public: - /// destructor - ~ResourceContainerBase(); - - /// setup the resource container - void Setup(int labelStackCapacity, int registryCapacity); - /// discard the resource container - void Discard(); - /// return true if valid - bool IsValid() const; - /// peek top of label stack - ResourceLabel PeekLabel() const; - /// generate new resource label and push on label stack - ResourceLabel PushLabel(); - /// push explicit resource label on label stack - void PushLabel(ResourceLabel label); - /// pop resource label from label stack - ResourceLabel PopLabel(); - /// lookup a resource Id by Locator - Id Lookup(const Locator& locator) const; - - Array labelStack; - ResourceRegistry registry; - uint32_t curLabelCount = 0; - bool valid = false; -}; - -} // namespace Oryol diff --git a/code/Modules/Resource/ResourceContainerBase.cc b/code/Modules/Resource/ResourceLabelStack.cc similarity index 55% rename from code/Modules/Resource/ResourceContainerBase.cc rename to code/Modules/Resource/ResourceLabelStack.cc index 7d9bfe0fc..39a1267c9 100644 --- a/code/Modules/Resource/ResourceContainerBase.cc +++ b/code/Modules/Resource/ResourceLabelStack.cc @@ -1,48 +1,45 @@ //------------------------------------------------------------------------------ -// ResourceContainerBase.cc +// ResourceLabelStack.cc //------------------------------------------------------------------------------ #include "Pre.h" -#include "Core/Core.h" -#include "Core/Assertion.h" -#include "ResourceContainerBase.h" +#include "ResourceLabelStack.h" namespace Oryol { - + //------------------------------------------------------------------------------ -ResourceContainerBase::~ResourceContainerBase() { - o_assert_dbg(!this->valid); +ResourceLabelStack::~ResourceLabelStack() { + o_assert_dbg(!this->isValid); } //------------------------------------------------------------------------------ void -ResourceContainerBase::Setup(int labelStackCapacity, int registryCapacity) { - o_assert_dbg(!this->valid); - this->labelStack.Reserve(labelStackCapacity); - this->registry.Setup(registryCapacity); - this->valid = true; +ResourceLabelStack::Setup(int stackCapacity) { + o_assert_dbg(!this->isValid); + o_assert_dbg(stackCapacity > 0); + this->labelStack.Reserve(stackCapacity); + this->isValid = true; this->PushLabel(ResourceLabel::Default); } //------------------------------------------------------------------------------ void -ResourceContainerBase::Discard() { - o_assert_dbg(this->valid); +ResourceLabelStack::Discard() { + o_assert_dbg(this->isValid); o_assert_dbg(this->labelStack.Size() == 1); this->PopLabel(); - this->registry.Discard(); - this->valid = false; + this->isValid = false; } //------------------------------------------------------------------------------ bool -ResourceContainerBase::IsValid() const { - return this->valid; +ResourceLabelStack::IsValid() const { + return this->isValid; } //------------------------------------------------------------------------------ ResourceLabel -ResourceContainerBase::PushLabel() { - o_assert_dbg(this->valid); +ResourceLabelStack::PushLabel() { + o_assert_dbg(this->isValid); o_assert_dbg(this->curLabelCount < ResourceLabel::Default); this->labelStack.Add(this->curLabelCount++); return this->labelStack.Back(); @@ -50,15 +47,15 @@ ResourceContainerBase::PushLabel() { //------------------------------------------------------------------------------ void -ResourceContainerBase::PushLabel(ResourceLabel label) { - o_assert_dbg(this->valid); +ResourceLabelStack::PushLabel(ResourceLabel label) { + o_assert_dbg(this->isValid); this->labelStack.Add(label); } //------------------------------------------------------------------------------ ResourceLabel -ResourceContainerBase::PopLabel() { - o_assert_dbg(this->valid); +ResourceLabelStack::PopLabel() { + o_assert_dbg(this->isValid); ResourceLabel label = this->labelStack.Back(); this->labelStack.Erase(this->labelStack.Size() - 1); return label; @@ -66,16 +63,9 @@ ResourceContainerBase::PopLabel() { //------------------------------------------------------------------------------ ResourceLabel -ResourceContainerBase::PeekLabel() const { - o_assert_dbg(this->valid); +ResourceLabelStack::PeekLabel() const { + o_assert_dbg(this->isValid); return this->labelStack.Back(); } -//------------------------------------------------------------------------------ -Id -ResourceContainerBase::Lookup(const Locator& loc) const { - o_assert_dbg(this->valid); - return this->registry.Lookup(loc); -} - } // namespace Oryol diff --git a/code/Modules/Resource/ResourceLabelStack.h b/code/Modules/Resource/ResourceLabelStack.h new file mode 100644 index 000000000..4ab953f6e --- /dev/null +++ b/code/Modules/Resource/ResourceLabelStack.h @@ -0,0 +1,39 @@ +#pragma once +//------------------------------------------------------------------------------ +/** + @class Oryol::ResourceLabelStack + @ingroup Resource + @brief a stack for resource labels +*/ +#include "Core/Containers/Array.h" +#include "Resource/ResourceLabel.h" + +namespace Oryol { + +class ResourceLabelStack { +public: + /// destructor + ~ResourceLabelStack(); + + /// setup the label stack + void Setup(int stackCapacity); + /// discard the label stack + void Discard(); + /// return true if object has been setup + bool IsValid() const; + + /// peek top of label stack + ResourceLabel PeekLabel() const; + /// generate new resource label and push on label stack + ResourceLabel PushLabel(); + /// push explicit resource label on label stack + void PushLabel(ResourceLabel label); + /// pop resource label from label stack + ResourceLabel PopLabel(); + + Array labelStack; + uint32_t curLabelCount = 0; + bool isValid = false; +}; + +} // namespace Oryol From 3b63a38e072b72947cc825543802d89527745092 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 8 Jan 2018 17:40:14 +0100 Subject: [PATCH 06/91] remove obsolete platform Gfx sources --- code/Modules/Gfx/CMakeLists.txt | 72 +- code/Modules/Gfx/UnitTests/DDSLoadTest.cc | 146 --- code/Modules/Gfx/UnitTests/MeshFactoryTest.cc | 116 -- code/Modules/Gfx/UnitTests/MeshSetupTest.cc | 104 -- code/Modules/Gfx/UnitTests/RenderEnumsTest.cc | 204 ---- code/Modules/Gfx/UnitTests/RenderSetupTest.cc | 41 - code/Modules/Gfx/UnitTests/ShapeBuilderTest.h | 1 - .../Gfx/UnitTests/TestShaderLibrary.glsl | 53 - .../Gfx/UnitTests/TextureFactoryTest.cc | 95 -- .../Modules/Gfx/UnitTests/TextureSetupTest.cc | 48 - .../Modules/Gfx/UnitTests/VertexLayoutTest.cc | 70 -- code/Modules/Gfx/UnitTests/glTypesTest.cc | 38 - .../Modules/Gfx/private/d3d11/d3d11Factory.cc | 778 ------------ code/Modules/Gfx/private/d3d11/d3d11Factory.h | 60 - .../Gfx/private/d3d11/d3d11Renderer.cc | 745 ------------ .../Modules/Gfx/private/d3d11/d3d11Renderer.h | 123 -- .../Gfx/private/d3d11/d3d11Resource.cc | 144 --- .../Modules/Gfx/private/d3d11/d3d11Resource.h | 142 --- code/Modules/Gfx/private/d3d11/d3d11Types.cc | 305 ----- code/Modules/Gfx/private/d3d11/d3d11Types.h | 58 - code/Modules/Gfx/private/d3d11/d3d11_decl.h | 47 - code/Modules/Gfx/private/d3d11/d3d11_impl.h | 10 - .../private/{d3d11 => }/d3d11DisplayMgr.cc | 0 .../Gfx/private/{d3d11 => }/d3d11DisplayMgr.h | 0 .../Gfx/private/{egl => }/eglDisplayMgr.cc | 0 .../Gfx/private/{egl => }/eglDisplayMgr.h | 0 .../Gfx/private/{emsc => }/emscDisplayMgr.cc | 0 .../Gfx/private/{emsc => }/emscDisplayMgr.h | 0 code/Modules/Gfx/private/gfxFactory.h | 24 - code/Modules/Gfx/private/gfxFactoryBase.cc | 86 -- code/Modules/Gfx/private/gfxFactoryBase.h | 43 - code/Modules/Gfx/private/gl/glCaps.cc | 349 ------ code/Modules/Gfx/private/gl/glCaps.h | 141 --- code/Modules/Gfx/private/gl/glFactory.cc | 887 -------------- code/Modules/Gfx/private/gl/glFactory.h | 52 - code/Modules/Gfx/private/gl/glRenderer.cc | 1073 ----------------- code/Modules/Gfx/private/gl/glRenderer.h | 149 --- code/Modules/Gfx/private/gl/glResource.cc | 130 -- code/Modules/Gfx/private/gl/glResource.h | 215 ---- code/Modules/Gfx/private/gl/glTypes.cc | 327 ----- code/Modules/Gfx/private/gl/glTypes.h | 46 - code/Modules/Gfx/private/gl/gl_decl.h | 29 - code/Modules/Gfx/private/gl/gl_impl.h | 65 - .../Gfx/private/{glfw => }/glfwDisplayMgr.cc | 0 .../Gfx/private/{glfw => }/glfwDisplayMgr.h | 0 .../Gfx/private/{ios => }/iosDisplayMgr.h | 0 .../Gfx/private/{ios => }/iosDisplayMgr.mm | 0 code/Modules/Gfx/private/mtl/mtlFactory.h | 81 -- code/Modules/Gfx/private/mtl/mtlFactory.mm | 625 ---------- code/Modules/Gfx/private/mtl/mtlRenderer.h | 107 -- code/Modules/Gfx/private/mtl/mtlRenderer.mm | 655 ---------- code/Modules/Gfx/private/mtl/mtlResource.h | 127 -- code/Modules/Gfx/private/mtl/mtlResource.mm | 122 -- code/Modules/Gfx/private/mtl/mtlTypes.h | 65 - code/Modules/Gfx/private/mtl/mtlTypes.mm | 359 ------ code/Modules/Gfx/private/mtl/mtl_decl.h | 34 - code/Modules/Gfx/private/mtl/mtl_impl.h | 10 - .../Gfx/private/{mtl => }/mtlDisplayMgr.h | 0 .../Gfx/private/{mtl => }/mtlDisplayMgr.mm | 0 code/Modules/Gfx/private/renderer.h | 28 - code/Modules/Gfx/private/resource.h | 107 -- code/Modules/Gfx/private/resourceBase.cc | 49 - code/Modules/Gfx/private/resourceBase.h | 109 -- code/Modules/Gfx/private/resourcePools.h | 21 - .../Gfx/private/{win => }/winDisplayMgr.cc | 0 .../Gfx/private/{win => }/winDisplayMgr.h | 0 .../Gfx/private/{win => }/winInputDefs.h | 0 code/Modules/Gfx/private/{win => }/win_decl.h | 0 68 files changed, 3 insertions(+), 9512 deletions(-) delete mode 100644 code/Modules/Gfx/UnitTests/DDSLoadTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/MeshFactoryTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/MeshSetupTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/RenderEnumsTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/RenderSetupTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/ShapeBuilderTest.h delete mode 100644 code/Modules/Gfx/UnitTests/TestShaderLibrary.glsl delete mode 100644 code/Modules/Gfx/UnitTests/TextureFactoryTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/TextureSetupTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/VertexLayoutTest.cc delete mode 100644 code/Modules/Gfx/UnitTests/glTypesTest.cc delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Factory.cc delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Factory.h delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Renderer.cc delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Renderer.h delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Resource.cc delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Resource.h delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Types.cc delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11Types.h delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11_decl.h delete mode 100644 code/Modules/Gfx/private/d3d11/d3d11_impl.h rename code/Modules/Gfx/private/{d3d11 => }/d3d11DisplayMgr.cc (100%) rename code/Modules/Gfx/private/{d3d11 => }/d3d11DisplayMgr.h (100%) rename code/Modules/Gfx/private/{egl => }/eglDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{egl => }/eglDisplayMgr.h (100%) rename code/Modules/Gfx/private/{emsc => }/emscDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{emsc => }/emscDisplayMgr.h (100%) delete mode 100644 code/Modules/Gfx/private/gfxFactory.h delete mode 100644 code/Modules/Gfx/private/gfxFactoryBase.cc delete mode 100644 code/Modules/Gfx/private/gfxFactoryBase.h delete mode 100644 code/Modules/Gfx/private/gl/glCaps.cc delete mode 100644 code/Modules/Gfx/private/gl/glCaps.h delete mode 100644 code/Modules/Gfx/private/gl/glFactory.cc delete mode 100644 code/Modules/Gfx/private/gl/glFactory.h delete mode 100644 code/Modules/Gfx/private/gl/glRenderer.cc delete mode 100644 code/Modules/Gfx/private/gl/glRenderer.h delete mode 100644 code/Modules/Gfx/private/gl/glResource.cc delete mode 100644 code/Modules/Gfx/private/gl/glResource.h delete mode 100644 code/Modules/Gfx/private/gl/glTypes.cc delete mode 100644 code/Modules/Gfx/private/gl/glTypes.h delete mode 100644 code/Modules/Gfx/private/gl/gl_decl.h delete mode 100644 code/Modules/Gfx/private/gl/gl_impl.h rename code/Modules/Gfx/private/{glfw => }/glfwDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{glfw => }/glfwDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ios => }/iosDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ios => }/iosDisplayMgr.mm (100%) delete mode 100644 code/Modules/Gfx/private/mtl/mtlFactory.h delete mode 100644 code/Modules/Gfx/private/mtl/mtlFactory.mm delete mode 100644 code/Modules/Gfx/private/mtl/mtlRenderer.h delete mode 100644 code/Modules/Gfx/private/mtl/mtlRenderer.mm delete mode 100644 code/Modules/Gfx/private/mtl/mtlResource.h delete mode 100644 code/Modules/Gfx/private/mtl/mtlResource.mm delete mode 100644 code/Modules/Gfx/private/mtl/mtlTypes.h delete mode 100644 code/Modules/Gfx/private/mtl/mtlTypes.mm delete mode 100644 code/Modules/Gfx/private/mtl/mtl_decl.h delete mode 100644 code/Modules/Gfx/private/mtl/mtl_impl.h rename code/Modules/Gfx/private/{mtl => }/mtlDisplayMgr.h (100%) rename code/Modules/Gfx/private/{mtl => }/mtlDisplayMgr.mm (100%) delete mode 100644 code/Modules/Gfx/private/renderer.h delete mode 100644 code/Modules/Gfx/private/resource.h delete mode 100644 code/Modules/Gfx/private/resourceBase.cc delete mode 100644 code/Modules/Gfx/private/resourceBase.h delete mode 100644 code/Modules/Gfx/private/resourcePools.h rename code/Modules/Gfx/private/{win => }/winDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{win => }/winDisplayMgr.h (100%) rename code/Modules/Gfx/private/{win => }/winInputDefs.h (100%) rename code/Modules/Gfx/private/{win => }/win_decl.h (100%) diff --git a/code/Modules/Gfx/CMakeLists.txt b/code/Modules/Gfx/CMakeLists.txt index 7b90f069c..a4a2cf851 100644 --- a/code/Modules/Gfx/CMakeLists.txt +++ b/code/Modules/Gfx/CMakeLists.txt @@ -35,78 +35,31 @@ fips_begin_module(Gfx) sokolGfxBackend.cc sokolGfxBackend.h displayMgrBase.cc displayMgrBase.h displayMgr.h - renderer.h - gfxPointers.h - resourcePools.h - resourceBase.h resourceBase.cc - resource.h - gfxFactory.h - gfxFactoryBase.h gfxFactoryBase.cc gfxResourceContainer.h gfxResourceContainer.cc ) - if (ORYOL_OPENGL) - fips_dir(private/gl) - fips_files( - glCaps.cc glCaps.h - glResource.cc glResource.h - glFactory.cc glFactory.h - glRenderer.cc glRenderer.h - glTypes.cc glTypes.h - gl_decl.h - gl_impl.h - ) - endif() if (ORYOL_D3D11) - fips_dir(private/win) - fips_files( - win_decl.h - winDisplayMgr.cc winDisplayMgr.h - winInputDefs.h - ) - endif() - if (ORYOL_D3D11) - fips_dir(private/d3d11) - fips_files( - d3d11_impl.h d3d11_decl.h - d3d11DisplayMgr.cc d3d11DisplayMgr.h - d3d11Types.cc d3d11Types.h - d3d11Resource.cc d3d11Resource.h - d3d11Factory.cc d3d11Factory.h - d3d11Renderer.cc d3d11Renderer.h - ) + fips_files(winDisplayMgr.cc winDisplayMgr.h) + fips_files(d3d11DisplayMgr.cc d3d11DisplayMgr.h) endif() if (ORYOL_METAL) - fips_dir(private/mtl) - fips_files( - mtl_decl.h mtl_impl.h - mtlDisplayMgr.h mtlDisplayMgr.mm - mtlTypes.h mtlTypes.mm - mtlResource.h mtlResource.mm - mtlFactory.h mtlFactory.mm - mtlRenderer.h mtlRenderer.mm - ) + fips_files(mtlDisplayMgr.h mtlDisplayMgr.mm) fips_frameworks_osx(Metal QuartzCore) endif() if (FIPS_ANDROID) - fips_dir(private/egl) fips_files(eglDisplayMgr.cc eglDisplayMgr.h) fips_libs(GLESv3 EGL) endif() if (FIPS_EMSCRIPTEN) - fips_dir(private/emsc) fips_files(emscDisplayMgr.cc emscDisplayMgr.h) endif() if (FIPS_IOS AND NOT ORYOL_METAL) - fips_dir(private/ios) fips_files(iosDisplayMgr.mm iosDisplayMgr.h) endif() if (ORYOL_OPENGL) if (FIPS_RASPBERRYPI) - fips_dir(private/egl) fips_files(eglDisplayMgr.cc eglDisplayMgr.h) fips_libs(GLESv2 EGL bcm_host) elseif (FIPS_MACOS OR FIPS_WINDOWS OR FIPS_LINUX) - fips_dir(private/glfw) fips_files(glfwDisplayMgr.cc glfwDisplayMgr.h) fips_dir(private/flextgl) fips_files(flextGL.c flextGL.h) @@ -125,22 +78,3 @@ if (FIPS_MSVC) # forcing value to bool target_compile_options(Gfx PRIVATE "/wd4800") endif() - -fips_begin_unittest(Gfx) - fips_vs_warning_level(3) - fips_dir(UnitTests) - fips_files( - DDSLoadTest.cc - MeshFactoryTest.cc - MeshSetupTest.cc - RenderEnumsTest.cc - RenderSetupTest.cc - TextureFactoryTest.cc - TextureSetupTest.cc - VertexLayoutTest.cc - glTypesTest.cc - ) - oryol_shader(TestShaderLibrary.glsl) - fips_deps(HttpFS Gfx Assets) -fips_end_unittest() - diff --git a/code/Modules/Gfx/UnitTests/DDSLoadTest.cc b/code/Modules/Gfx/UnitTests/DDSLoadTest.cc deleted file mode 100644 index ccd77bcc0..000000000 --- a/code/Modules/Gfx/UnitTests/DDSLoadTest.cc +++ /dev/null @@ -1,146 +0,0 @@ -//------------------------------------------------------------------------------ -// DDSLoadTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Core/Core.h" -#include "Core/RunLoop.h" -#include "HttpFS/HTTPFileSystem.h" -#include "IO/IO.h" -#define GLIML_ASSERT o_assert -#include "gliml.h" -#include -#include - -using namespace Oryol; - -TEST(DDSLoadTest) { -#if !ORYOL_EMSCRIPTEN && !ORYOL_UNITTESTS_HEADLESS - Core::Setup(); - - // setup an IO facade, and associate http: with the HTTPFileSystem - IOSetup ioSetup; - ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - IO::Setup(ioSetup); - - // DXT1 - Ptr req = IO::LoadFile("http://floooh.github.com/oryol/data/lok_dxt1.dds"); - while (!req->Handled) { - Core::PreRunLoop()->Run(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - CHECK(req->Status == IOStatus::OK); - if (req->Status == IOStatus::OK) { - - // parse DDS data with gliml - const int size = req->Data.Size(); - const void* data = req->Data.Data(); - CHECK(gliml::is_dds(data, size)); - gliml::context ctx; - ctx.enable_dxt(true); - CHECK(ctx.load_dds(data, size)); - CHECK(ctx.error() == GLIML_SUCCESS); - CHECK(ctx.texture_target() == GLIML_GL_TEXTURE_2D); - CHECK(ctx.is_compressed()); - CHECK(ctx.is_2d()); - CHECK(!ctx.is_3d()); - CHECK(ctx.num_faces() == 1); - CHECK(ctx.num_mipmaps(0) == 9); - CHECK(ctx.image_target(0) == GLIML_GL_TEXTURE_2D); - CHECK(ctx.image_internal_format() == GLIML_GL_COMPRESSED_RGBA_S3TC_DXT1_EXT); - CHECK(ctx.image_format() == GLIML_GL_COMPRESSED_RGBA_S3TC_DXT1_EXT); - CHECK(ctx.image_type() == 0); - int w = 256, h = 256; - for (int i = 0; i < 9; i++) { - CHECK(ctx.image_width(0, i) == (w >> i)); - CHECK(ctx.image_height(0, i) == (h >> i)); - CHECK(ctx.image_depth(0, i) == 1); - int mipSize = (w>>(2+i)) * (h>>(2+i)) * 8; - if (mipSize < 8) mipSize = 8; - CHECK(ctx.image_size(0, i) == mipSize); - } - } - - // DXT3 - req = IO::LoadFile("http://floooh.github.com/oryol/data/lok_dxt3.dds"); - while (!req->Handled) { - Core::PreRunLoop()->Run(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - CHECK(req->Status == IOStatus::OK); - if (req->Status == IOStatus::OK) { - - // parse DDS data with gliml - const int size = req->Data.Size(); - const void* data = req->Data.Data(); - CHECK(gliml::is_dds(data, size)); - gliml::context ctx; - ctx.enable_dxt(true); - CHECK(ctx.load_dds(data, size)); - CHECK(ctx.error() == GLIML_SUCCESS); - CHECK(ctx.texture_target() == GLIML_GL_TEXTURE_2D); - CHECK(ctx.is_compressed()); - CHECK(ctx.is_2d()); - CHECK(!ctx.is_3d()); - CHECK(ctx.num_faces() == 1); - CHECK(ctx.num_mipmaps(0) == 9); - CHECK(ctx.image_target(0) == GLIML_GL_TEXTURE_2D); - CHECK(ctx.image_internal_format() == GLIML_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT); - CHECK(ctx.image_format() == GLIML_GL_COMPRESSED_RGBA_S3TC_DXT3_EXT); - CHECK(ctx.image_type() == 0); - int w = 256, h = 256; - for (int i = 0; i < 9; i++) { - CHECK(ctx.image_width(0, i) == (w >> i)); - CHECK(ctx.image_height(0, i) == (h >> i)); - CHECK(ctx.image_depth(0, i) == 1); - int mipSize = (w>>(2+i)) * (h>>(2+i)) * 16; - if (mipSize < 8) mipSize = 16; - CHECK(ctx.image_size(0, i) == mipSize); - } - } - - // DXT5 - req = IO::LoadFile("http://floooh.github.com/oryol/data/lok_dxt5.dds"); - while (!req->Handled) { - Core::PreRunLoop()->Run(); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } - CHECK(req->Status == IOStatus::OK); - if (req->Status == IOStatus::OK) { - - // parse DDS data with gliml - const int size = req->Data.Size(); - const void* data = req->Data.Data(); - CHECK(gliml::is_dds(data, size)); - gliml::context ctx; - ctx.enable_dxt(true); - CHECK(ctx.load_dds(data, size)); - CHECK(ctx.error() == GLIML_SUCCESS); - CHECK(ctx.texture_target() == GLIML_GL_TEXTURE_2D); - CHECK(ctx.is_compressed()); - CHECK(ctx.is_2d()); - CHECK(!ctx.is_3d()); - CHECK(ctx.num_faces() == 1); - CHECK(ctx.num_mipmaps(0) == 9); - CHECK(ctx.image_target(0) == GLIML_GL_TEXTURE_2D); - CHECK(ctx.image_internal_format() == GLIML_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT); - CHECK(ctx.image_format() == GLIML_GL_COMPRESSED_RGBA_S3TC_DXT5_EXT); - CHECK(ctx.image_type() == 0); - int w = 256, h = 256; - for (int i = 0; i < 9; i++) { - CHECK(ctx.image_width(0, i) == (w >> i)); - CHECK(ctx.image_height(0, i) == (h >> i)); - CHECK(ctx.image_depth(0, i) == 1); - int mipSize = (w>>(2+i)) * (h>>(2+i)) * 16; - if (mipSize < 8) mipSize = 16; - CHECK(ctx.image_size(0, i) == mipSize); - } - } - - // FIXME: RGBA, LUM - - req.invalidate(); - IO::Discard(); - Core::Discard(); -#endif -} diff --git a/code/Modules/Gfx/UnitTests/MeshFactoryTest.cc b/code/Modules/Gfx/UnitTests/MeshFactoryTest.cc deleted file mode 100644 index 58d59bc9b..000000000 --- a/code/Modules/Gfx/UnitTests/MeshFactoryTest.cc +++ /dev/null @@ -1,116 +0,0 @@ -//------------------------------------------------------------------------------ -// MeshFactoryTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Gfx/private/renderer.h" -#include "Gfx/private/gfxFactory.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/displayMgr.h" -#include "Assets/Gfx/MeshBuilder.h" - -#if ORYOL_OPENGL -#include "Gfx/private/gl/gl_impl.h" -#endif - -using namespace Oryol; -using namespace _priv; - -// NOTE: this is should not be treated as sample code on how -// to initialize a mesh! -TEST(MeshFactoryTest) { - - #if !ORYOL_UNITTESTS_HEADLESS - // setup a GL context - auto gfxSetup = GfxSetup::Window(400, 300, "Oryol Test"); - displayMgr displayManager; - class renderer renderer; - texturePool texPool; - meshPool meshPool; - - gfxPointers ptrs; - ptrs.displayMgr = &displayManager; - ptrs.renderer = &renderer; - ptrs.texturePool = &texPool; - ptrs.meshPool = &meshPool; - - displayManager.SetupDisplay(gfxSetup, ptrs); - - // setup a meshFactory object - renderer.setup(gfxSetup, ptrs); - gfxFactory factory; - factory.setup(ptrs); - - // setup a MeshBuilder and create mesh geometry - MeshBuilder mb; - mb.NumVertices = 4; - mb.NumIndices = 6; - mb.Layout - .Add(VertexAttr::Position, VertexFormat::Float3) - .Add(VertexAttr::TexCoord0, VertexFormat::Float2); - mb.PrimitiveGroups.Add(0, 6); - mb.Begin() - .Vertex(0, VertexAttr::Position, 0.0f, 0.0f, 0.0f) // top-left - .Vertex(1, VertexAttr::Position, 1.0f, 0.0f, 0.0f) // top-right - .Vertex(2, VertexAttr::Position, 1.0f, 1.0f, 0.0f) // bottom-right - .Vertex(3, VertexAttr::Position, 0.0f, 1.0f, 0.0f) // bottom-left - .Vertex(0, VertexAttr::TexCoord0, 0.0f, 0.0f) - .Vertex(1, VertexAttr::TexCoord0, 1.0f, 0.0f) - .Vertex(2, VertexAttr::TexCoord0, 1.0f, 1.0f) - .Vertex(3, VertexAttr::TexCoord0, 0.0f, 1.0f) - .Triangle(0, 0, 1, 2) - .Triangle(1, 0, 2, 3); - auto buildResult = mb.Build(); - - // setup the mesh - mesh mesh; - mesh.Setup = buildResult.Setup; - const void* data = buildResult.Data.Data(); - const int size = buildResult.Data.Size(); - - factory.initMesh(mesh, data, size); - CHECK(!mesh.Id.IsValid()); - CHECK(mesh.Setup.Locator == Locator::NonShared()); - CHECK(mesh.vertexBufferAttrs.NumVertices == 4); - CHECK(mesh.vertexBufferAttrs.BufferUsage == Usage::Immutable); - CHECK(mesh.vertexBufferAttrs.Layout.NumComponents() == 2); - CHECK(mesh.vertexBufferAttrs.Layout.ByteSize() == 20); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentByteOffset(0) == 0); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentByteOffset(1) == 12); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(0).IsValid()); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(0).Attr == VertexAttr::Position); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(0).Format == VertexFormat::Float3); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(0).ByteSize() == 12); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(1).IsValid()); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(1).Attr == VertexAttr::TexCoord0); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(1).Format == VertexFormat::Float2); - CHECK(mesh.vertexBufferAttrs.Layout.ComponentAt(1).ByteSize() == 8); - CHECK(mesh.indexBufferAttrs.NumIndices == 6); - CHECK(mesh.indexBufferAttrs.Type == IndexType::Index16); - CHECK(mesh.indexBufferAttrs.BufferUsage == Usage::Immutable); - CHECK(mesh.indexBufferAttrs.ByteSize() == 12); - CHECK(mesh.numPrimGroups == 1); - CHECK(mesh.primGroups[0].BaseElement == 0); - CHECK(mesh.primGroups[0].NumElements == 6); - #if ORYOL_OPENGL - CHECK(mesh.buffers[mesh::vb].glBuffers[0] != 0); - CHECK(mesh.buffers[mesh::ib].glBuffers[0] != 0); - #endif - - factory.destroyMesh(mesh); - CHECK(!mesh.Id.IsValid()); - CHECK(mesh.vertexBufferAttrs.NumVertices == 0); - CHECK(mesh.vertexBufferAttrs.BufferUsage == Usage::InvalidUsage); - CHECK(mesh.vertexBufferAttrs.Layout.NumComponents() == 0); - CHECK(mesh.vertexBufferAttrs.Layout.ByteSize() == 0); - CHECK(mesh.indexBufferAttrs.NumIndices == 0); - CHECK(mesh.indexBufferAttrs.Type == IndexType::InvalidIndexType); - CHECK(mesh.indexBufferAttrs.BufferUsage == Usage::InvalidUsage); - CHECK(mesh.numPrimGroups == 0); - factory.discard(); - renderer.discard(); - displayManager.DiscardDisplay(); - - #endif -} diff --git a/code/Modules/Gfx/UnitTests/MeshSetupTest.cc b/code/Modules/Gfx/UnitTests/MeshSetupTest.cc deleted file mode 100644 index bd0d28878..000000000 --- a/code/Modules/Gfx/UnitTests/MeshSetupTest.cc +++ /dev/null @@ -1,104 +0,0 @@ -//------------------------------------------------------------------------------ -// MeshSetupTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Gfx/GfxTypes.h" - -using namespace Oryol; - -TEST(MeshSetupTest) { - - const MeshSetup s0 = MeshSetup::FromFile("s0"); - CHECK(s0.ShouldSetupFromFile()); - CHECK(!s0.ShouldSetupFromData()); - CHECK(!s0.ShouldSetupEmpty()); - CHECK(s0.Locator == "s0"); - CHECK(s0.VertexUsage == Usage::Immutable); - CHECK(s0.IndexUsage == Usage::Immutable); - CHECK(s0.NumVertices == 0); - CHECK(s0.NumIndices == 0); - CHECK(s0.Layout.Empty()); - CHECK(s0.IndicesType == IndexType::None); - - const MeshSetup s1 = MeshSetup::FromFile("s1"); - CHECK(s1.ShouldSetupFromFile()); - CHECK(!s1.ShouldSetupFromData()); - CHECK(!s1.ShouldSetupEmpty()); - CHECK(s1.Locator == "s1"); - CHECK(s1.VertexUsage == Usage::Immutable); - CHECK(s1.IndexUsage == Usage::Immutable); - - /* FIXME: needs blueprint setup - const MeshSetup s2 = MeshSetup::FromFile("s2", s1); - CHECK(s2.ShouldSetupFromFile()); - CHECK(!s2.ShouldSetupFromStream()); - CHECK(!s2.ShouldSetupEmpty()); - CHECK(s2.Locator == "s2"); - CHECK(s2.VertexUsage == Usage::Stream); - CHECK(s2.IndexUsage == Usage::Dynamic); - */ - - const MeshSetup s3 = MeshSetup::FromData(); - CHECK(!s3.ShouldSetupFromFile()); - CHECK(!s3.ShouldSetupEmpty()); - CHECK(s3.ShouldSetupFromData()); - CHECK(s3.Locator == Locator::NonShared()); - CHECK(s3.VertexUsage == Usage::Immutable); - CHECK(s3.IndexUsage == Usage::Immutable); - - const MeshSetup s4 = MeshSetup::FromData(Usage::Stream, Usage::Dynamic); - CHECK(!s4.ShouldSetupFromFile()); - CHECK(!s4.ShouldSetupEmpty()); - CHECK(s4.ShouldSetupFromData()); - CHECK(s4.Locator == Locator::NonShared()); - CHECK(s4.VertexUsage == Usage::Stream); - CHECK(s4.IndexUsage == Usage::Dynamic); - - const MeshSetup s5 = MeshSetup::FromData(s4); - CHECK(!s5.ShouldSetupFromFile()); - CHECK(!s5.ShouldSetupEmpty()); - CHECK(s5.ShouldSetupFromData()); - CHECK(s5.Locator == Locator::NonShared()); - CHECK(s5.VertexUsage == Usage::Stream); - CHECK(s5.IndexUsage == Usage::Dynamic); - - MeshSetup s6 = MeshSetup::Empty(128, Usage::Stream); - s6.Layout - .Add(VertexAttr::Position, VertexFormat::Float3) - .Add(VertexAttr::TexCoord0, VertexFormat::Float2); - CHECK(!s6.ShouldSetupFromFile()); - CHECK(!s6.ShouldSetupFromData()); - CHECK(s6.ShouldSetupEmpty()); - CHECK(s6.Locator == Locator::NonShared()); - CHECK(s6.VertexUsage == Usage::Stream); - CHECK(s6.IndexUsage == Usage::InvalidUsage); - CHECK(s6.NumVertices == 128); - CHECK(s6.NumIndices == 0); - CHECK(s6.IndicesType == IndexType::None); - CHECK(s6.Layout.NumComponents() == 2); - CHECK(s6.Layout.ComponentAt(0).Attr == VertexAttr::Position); - CHECK(s6.Layout.ComponentAt(0).Format == VertexFormat::Float3); - CHECK(s6.Layout.ComponentAt(1).Attr == VertexAttr::TexCoord0); - CHECK(s6.Layout.ComponentAt(1).Format == VertexFormat::Float2); - - MeshSetup s7 = MeshSetup::Empty(256, Usage::Dynamic, IndexType::Index16, 512, Usage::Stream); - s7.Layout - .Add(VertexAttr::Position, VertexFormat::Float3) - .Add(VertexAttr::TexCoord0, VertexFormat::Float2); - s7.AddPrimitiveGroup(PrimitiveGroup(0, 64)); - CHECK(!s7.ShouldSetupFromFile()); - CHECK(!s7.ShouldSetupFromData()); - CHECK(s7.ShouldSetupEmpty()); - CHECK(s7.Locator == Locator::NonShared()); - CHECK(s7.VertexUsage == Usage::Dynamic); - CHECK(s7.IndexUsage == Usage::Stream); - CHECK(s7.NumVertices == 256); - CHECK(s7.NumIndices == 512); - CHECK(s7.IndicesType == IndexType::Index16); - CHECK(s7.Layout.NumComponents() == 2); - CHECK(s7.NumPrimitiveGroups() == 1); - CHECK(s7.PrimitiveGroup(0).BaseElement == 0); - CHECK(s7.PrimitiveGroup(0).NumElements == 64); -} - diff --git a/code/Modules/Gfx/UnitTests/RenderEnumsTest.cc b/code/Modules/Gfx/UnitTests/RenderEnumsTest.cc deleted file mode 100644 index 7d2cf205f..000000000 --- a/code/Modules/Gfx/UnitTests/RenderEnumsTest.cc +++ /dev/null @@ -1,204 +0,0 @@ -//------------------------------------------------------------------------------ -// RenderEnumsTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Core/String/String.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/gl/gl_impl.h" -#include - -using namespace Oryol; - -//------------------------------------------------------------------------------ -TEST(PixelFormatChannelBitsTest) { - - CHECK(PixelFormat::NumBits(PixelFormat::RGBA8, PixelChannel::Red) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA8, PixelChannel::Green) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA8, PixelChannel::Blue) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA8, PixelChannel::Alpha) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA8, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA8, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::RGB8, PixelChannel::Red) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGB8, PixelChannel::Green) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGB8, PixelChannel::Blue) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::RGB8, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::RGB8, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::RGB8, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::R5G6B5, PixelChannel::Red) == 5); - CHECK(PixelFormat::NumBits(PixelFormat::R5G6B5, PixelChannel::Green) == 6); - CHECK(PixelFormat::NumBits(PixelFormat::R5G6B5, PixelChannel::Blue) == 5); - CHECK(PixelFormat::NumBits(PixelFormat::R5G6B5, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R5G6B5, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R5G6B5, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::R5G5B5A1, PixelChannel::Red) == 5); - CHECK(PixelFormat::NumBits(PixelFormat::R5G5B5A1, PixelChannel::Green) == 5); - CHECK(PixelFormat::NumBits(PixelFormat::R5G5B5A1, PixelChannel::Blue) == 5); - CHECK(PixelFormat::NumBits(PixelFormat::R5G5B5A1, PixelChannel::Alpha) == 1); - CHECK(PixelFormat::NumBits(PixelFormat::R5G5B5A1, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R5G5B5A1, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::RGBA4, PixelChannel::Red) == 4); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA4, PixelChannel::Green) == 4); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA4, PixelChannel::Blue) == 4); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA4, PixelChannel::Alpha) == 4); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA4, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA4, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::L8, PixelChannel::Red) == 8); - CHECK(PixelFormat::NumBits(PixelFormat::L8, PixelChannel::Green) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::L8, PixelChannel::Blue) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::L8, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::L8, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::L8, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::DEPTH, PixelChannel::Red) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTH, PixelChannel::Green) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTH, PixelChannel::Blue) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTH, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTH, PixelChannel::Depth) == 16); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTH, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::DEPTHSTENCIL, PixelChannel::Red) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTHSTENCIL, PixelChannel::Green) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTHSTENCIL, PixelChannel::Blue) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTHSTENCIL, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTHSTENCIL, PixelChannel::Depth) == 24); - CHECK(PixelFormat::NumBits(PixelFormat::DEPTHSTENCIL, PixelChannel::Stencil) == 8); - - CHECK(PixelFormat::NumBits(PixelFormat::RGBA32F, PixelChannel::Red) == 32); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA32F, PixelChannel::Green) == 32); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA32F, PixelChannel::Blue) == 32); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA32F, PixelChannel::Alpha) == 32); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA32F, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA32F, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::RGBA16F, PixelChannel::Red) == 16); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA16F, PixelChannel::Green) == 16); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA16F, PixelChannel::Blue) == 16); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA16F, PixelChannel::Alpha) == 16); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA16F, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::RGBA16F, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::R32F, PixelChannel::Red) == 32); - CHECK(PixelFormat::NumBits(PixelFormat::R32F, PixelChannel::Green) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R32F, PixelChannel::Blue) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R32F, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R32F, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R32F, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::R16F, PixelChannel::Red) == 16); - CHECK(PixelFormat::NumBits(PixelFormat::R16F, PixelChannel::Green) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R16F, PixelChannel::Blue) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R16F, PixelChannel::Alpha) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R16F, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R16F, PixelChannel::Stencil) == 0); - - CHECK(PixelFormat::NumBits(PixelFormat::R10G10B10A2, PixelChannel::Red) == 10); - CHECK(PixelFormat::NumBits(PixelFormat::R10G10B10A2, PixelChannel::Green) == 10); - CHECK(PixelFormat::NumBits(PixelFormat::R10G10B10A2, PixelChannel::Blue) == 10); - CHECK(PixelFormat::NumBits(PixelFormat::R10G10B10A2, PixelChannel::Alpha) == 2); - CHECK(PixelFormat::NumBits(PixelFormat::R10G10B10A2, PixelChannel::Depth) == 0); - CHECK(PixelFormat::NumBits(PixelFormat::R10G10B10A2, PixelChannel::Stencil) == 0); - - // all other pixel formats must return 0 for all channels - for (uint32_t pf = 0; pf < PixelFormat::NumPixelFormats; pf++) { - if ((pf != PixelFormat::RGBA8) && - (pf != PixelFormat::RGB8) && - (pf != PixelFormat::R5G6B5) && - (pf != PixelFormat::R5G5B5A1) && - (pf != PixelFormat::RGBA4) && - (pf != PixelFormat::L8) && - (pf != PixelFormat::DEPTH) && - (pf != PixelFormat::DEPTHSTENCIL) && - (pf != PixelFormat::RGBA32F) && - (pf != PixelFormat::RGBA16F) && - (pf != PixelFormat::R16F) && - (pf != PixelFormat::R32F) && - (pf != PixelFormat::R10G10B10A2)) { - std::array channels = { {PixelChannel::Red, PixelChannel::Green, PixelChannel::Blue, PixelChannel::Alpha, PixelChannel::Depth, PixelChannel::Stencil} }; - for (PixelChannel::Bits chn : channels) { - CHECK(PixelFormat::NumBits((PixelFormat::Code)pf, chn) == 0); - } - } - } -} - -//------------------------------------------------------------------------------ -TEST(PixelFormatByteSizeTest) { - CHECK(PixelFormat::ByteSize(PixelFormat::RGBA8) == 4); - CHECK(PixelFormat::ByteSize(PixelFormat::RGB8) == 3); - CHECK(PixelFormat::ByteSize(PixelFormat::R5G6B5) == 2); - CHECK(PixelFormat::ByteSize(PixelFormat::R5G5B5A1) == 2); - CHECK(PixelFormat::ByteSize(PixelFormat::RGBA4) == 2); - CHECK(PixelFormat::ByteSize(PixelFormat::L8) == 1); - CHECK(PixelFormat::ByteSize(PixelFormat::DEPTH) == 2); - CHECK(PixelFormat::ByteSize(PixelFormat::DEPTHSTENCIL) == 4); - CHECK(PixelFormat::ByteSize(PixelFormat::RGBA32F) == 16); - CHECK(PixelFormat::ByteSize(PixelFormat::RGBA16F) == 8); - CHECK(PixelFormat::ByteSize(PixelFormat::R16F) == 2); - CHECK(PixelFormat::ByteSize(PixelFormat::R32F) == 4); - CHECK(PixelFormat::ByteSize(PixelFormat::R10G10B10A2) == 4); -} - -//------------------------------------------------------------------------------ -TEST(VertexFormatTest) { - CHECK(VertexFormat::NumVertexFormats == 13); - - CHECK(VertexFormat::ByteSize(VertexFormat::Float) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::Float2) == 8); - CHECK(VertexFormat::ByteSize(VertexFormat::Float3) == 12); - CHECK(VertexFormat::ByteSize(VertexFormat::Float4) == 16); - CHECK(VertexFormat::ByteSize(VertexFormat::Byte4) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::Byte4N) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::UByte4) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::UByte4N) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::Short2) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::Short2N) == 4); - CHECK(VertexFormat::ByteSize(VertexFormat::Short4) == 8); - CHECK(VertexFormat::ByteSize(VertexFormat::Short4N) == 8); - CHECK(VertexFormat::ByteSize(VertexFormat::UInt10_2N) == 4); -} - -//------------------------------------------------------------------------------ -TEST(VertexAttrTest) { - CHECK(VertexAttr::NumVertexAttrs == 16); - - CHECK(String(VertexAttr::ToString(VertexAttr::Position)) == "position"); - CHECK(String(VertexAttr::ToString(VertexAttr::Normal)) == "normal"); - CHECK(String(VertexAttr::ToString(VertexAttr::TexCoord0)) == "texcoord0"); - CHECK(String(VertexAttr::ToString(VertexAttr::TexCoord1)) == "texcoord1"); - CHECK(String(VertexAttr::ToString(VertexAttr::TexCoord2)) == "texcoord2"); - CHECK(String(VertexAttr::ToString(VertexAttr::TexCoord3)) == "texcoord3"); - CHECK(String(VertexAttr::ToString(VertexAttr::Tangent)) == "tangent"); - CHECK(String(VertexAttr::ToString(VertexAttr::Binormal)) == "binormal"); - CHECK(String(VertexAttr::ToString(VertexAttr::Weights)) == "weights"); - CHECK(String(VertexAttr::ToString(VertexAttr::Indices)) == "indices"); - CHECK(String(VertexAttr::ToString(VertexAttr::Color0)) == "color0"); - CHECK(String(VertexAttr::ToString(VertexAttr::Color1)) == "color1"); - CHECK(String(VertexAttr::ToString(VertexAttr::Instance0)) == "instance0"); - CHECK(String(VertexAttr::ToString(VertexAttr::Instance1)) == "instance1"); - CHECK(String(VertexAttr::ToString(VertexAttr::Instance2)) == "instance2"); - CHECK(String(VertexAttr::ToString(VertexAttr::Instance3)) == "instance3"); - - CHECK(VertexAttr::FromString("position") == VertexAttr::Position); - CHECK(VertexAttr::FromString("normal") == VertexAttr::Normal); - CHECK(VertexAttr::FromString("texcoord0") == VertexAttr::TexCoord0); - CHECK(VertexAttr::FromString("texcoord1") == VertexAttr::TexCoord1); - CHECK(VertexAttr::FromString("texcoord2") == VertexAttr::TexCoord2); - CHECK(VertexAttr::FromString("texcoord3") == VertexAttr::TexCoord3); - CHECK(VertexAttr::FromString("tangent") == VertexAttr::Tangent); - CHECK(VertexAttr::FromString("binormal") == VertexAttr::Binormal); - CHECK(VertexAttr::FromString("weights") == VertexAttr::Weights); - CHECK(VertexAttr::FromString("indices") == VertexAttr::Indices); - CHECK(VertexAttr::FromString("color0") == VertexAttr::Color0); - CHECK(VertexAttr::FromString("color1") == VertexAttr::Color1); - CHECK(VertexAttr::FromString("instance0") == VertexAttr::Instance0); - CHECK(VertexAttr::FromString("instance1") == VertexAttr::Instance1); - CHECK(VertexAttr::FromString("instance2") == VertexAttr::Instance2); - CHECK(VertexAttr::FromString("instance3") == VertexAttr::Instance3); -} - diff --git a/code/Modules/Gfx/UnitTests/RenderSetupTest.cc b/code/Modules/Gfx/UnitTests/RenderSetupTest.cc deleted file mode 100644 index 0aa80282f..000000000 --- a/code/Modules/Gfx/UnitTests/RenderSetupTest.cc +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// RenderSetupTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Core/Core.h" -#include "Gfx/Gfx.h" - -using namespace Oryol; - -//------------------------------------------------------------------------------ -TEST(RenderSetupTest) { - - #if !ORYOL_UNITTESTS_HEADLESS - Core::Setup(); - Gfx::Setup(GfxSetup::Window(400, 300, "Oryol Test")); - - CHECK(Gfx::GfxSetup().Width == 400); - CHECK(Gfx::GfxSetup().Height == 300); - CHECK(Gfx::GfxSetup().ColorFormat == PixelFormat::RGBA8); - CHECK(Gfx::GfxSetup().DepthFormat == PixelFormat::DEPTHSTENCIL); - CHECK(Gfx::GfxSetup().Title == "Oryol Test"); - CHECK(Gfx::GfxSetup().Windowed == true); - - CHECK(Gfx::DisplayAttrs().WindowWidth >= 400); - CHECK(Gfx::DisplayAttrs().WindowHeight >= 300); - CHECK(Gfx::DisplayAttrs().WindowPosX >= 0); - CHECK(Gfx::DisplayAttrs().WindowPosY >= 0); - CHECK(Gfx::DisplayAttrs().FramebufferWidth >= 400); - CHECK(Gfx::DisplayAttrs().FramebufferHeight >= 300); - CHECK(Gfx::DisplayAttrs().ColorPixelFormat == PixelFormat::RGBA8); - CHECK(Gfx::DisplayAttrs().DepthPixelFormat == PixelFormat::DEPTHSTENCIL); - CHECK(Gfx::DisplayAttrs().SwapInterval == 1); - CHECK(Gfx::DisplayAttrs().WindowTitle == "Oryol Test"); - CHECK(Gfx::DisplayAttrs().Windowed == true); - - Gfx::Discard(); - Core::Discard(); - #endif -} - diff --git a/code/Modules/Gfx/UnitTests/ShapeBuilderTest.h b/code/Modules/Gfx/UnitTests/ShapeBuilderTest.h deleted file mode 100644 index 0519ecba6..000000000 --- a/code/Modules/Gfx/UnitTests/ShapeBuilderTest.h +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/code/Modules/Gfx/UnitTests/TestShaderLibrary.glsl b/code/Modules/Gfx/UnitTests/TestShaderLibrary.glsl deleted file mode 100644 index 98fa52fdc..000000000 --- a/code/Modules/Gfx/UnitTests/TestShaderLibrary.glsl +++ /dev/null @@ -1,53 +0,0 @@ -//------------------------------------------------------------------------------ -// test.shd -//------------------------------------------------------------------------------ - -/* -Bla Bla Bla -*/ - -@block TransformUtil -vec4 myTransform(mat4 mvp, vec4 pos) -{ - return mvp * pos; -} -@end - -@block FSUtil -vec4 myColor(vec4 nrm, vec4 texColor) -{ - return ((nrm * 0.5) + 0.5) * 0.75 + texColor * texColor * texColor; -} -@end - -@vs MyVertexShader -@include TransformUtil -uniform vsParams { - mat4 mvp; -}; -in vec4 position; -in vec4 normal; -in vec2 texcoord0; -out vec4 nrm; -out vec2 uv; -void main() { - gl_Position = myTransform(mvp, position); - nrm = normal; - uv = texcoord0; -} -@end - -@fs MyFragmentShader -@include FSUtil -uniform sampler2D tex; -in vec4 nrm; -in vec2 uv; -out vec4 fragColor; -void main() { - vec4 texColor = texture(tex, uv * vec2(5.0, 3.0)); - fragColor = myColor(nrm, texColor); -} -@end - -@program MyShader MyVertexShader MyFragmentShader - diff --git a/code/Modules/Gfx/UnitTests/TextureFactoryTest.cc b/code/Modules/Gfx/UnitTests/TextureFactoryTest.cc deleted file mode 100644 index cab53b80c..000000000 --- a/code/Modules/Gfx/UnitTests/TextureFactoryTest.cc +++ /dev/null @@ -1,95 +0,0 @@ -//------------------------------------------------------------------------------ -// TextureFactoryTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Gfx/private/gfxFactory.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/private/displayMgr.h" -#include "Gfx/private/renderer.h" - -#if ORYOL_OPENGL -#include "Gfx/private/gl/gl_impl.h" -#endif - -using namespace Oryol; -using namespace _priv; - -TEST(RenderTargetCreationTest) { - - #if !ORYOL_UNITTESTS_HEADLESS - // setup a GL context - auto gfxSetup = GfxSetup::Window(400, 300, "Oryol Test"); - displayMgr displayManager; - class renderer renderer; - texturePool texPool; - meshPool meshPool; - - gfxPointers ptrs; - ptrs.displayMgr = &displayManager; - ptrs.renderer = &renderer; - ptrs.texturePool = &texPool; - ptrs.meshPool = &meshPool; - - displayManager.SetupDisplay(gfxSetup, ptrs); - - // setup a meshFactory object - renderer.setup(gfxSetup, ptrs); - gfxFactory factory; - factory.setup(ptrs); - - // create a render target (no depth buffer) - auto texSetup = TextureSetup::RenderTarget2D(320, 256); - texSetup.ColorFormat = PixelFormat::RGBA8; - texture tex0; - tex0.Setup = texSetup; - factory.initTexture(tex0, nullptr, 0); - CHECK(tex0.glTextures[0] != 0); - CHECK(tex0.glDepthRenderbuffer == 0); - const TextureAttrs& attrs0 = tex0.textureAttrs; - CHECK(attrs0.Locator == Locator::NonShared()); - CHECK(attrs0.Type == TextureType::Texture2D); - CHECK(attrs0.ColorFormat == PixelFormat::RGBA8); - CHECK(attrs0.DepthFormat == PixelFormat::InvalidPixelFormat); - CHECK(attrs0.TextureUsage == Usage::Immutable); - CHECK(attrs0.Width == 320); - CHECK(attrs0.Height == 256); - CHECK(attrs0.Depth == 1); - CHECK(1 == attrs0.NumMipMaps); - CHECK(attrs0.IsRenderTarget); - CHECK(!attrs0.HasDepthBuffer); - - // create a render target with depth buffer - auto rtSetup = TextureSetup::RenderTarget2D(640, 480); - rtSetup.ColorFormat = PixelFormat::RGBA8; - rtSetup.DepthFormat = PixelFormat::DEPTHSTENCIL; - texture tex1; - tex1.Setup = rtSetup; - factory.initTexture(tex1, nullptr, 0); - CHECK(tex1.glTextures[0] != 0); - CHECK(tex1.glDepthRenderbuffer != 0); - const TextureAttrs& attrs1 = tex1.textureAttrs; - CHECK(attrs1.Locator == Locator::NonShared()); - CHECK(attrs1.Type == TextureType::Texture2D); - CHECK(attrs1.ColorFormat == PixelFormat::RGBA8); - CHECK(attrs1.DepthFormat == PixelFormat::DEPTHSTENCIL); - CHECK(attrs1.TextureUsage == Usage::Immutable); - CHECK(attrs1.Width == 640); - CHECK(attrs1.Height == 480); - CHECK(attrs1.Depth == 1); - CHECK(1 == attrs1.NumMipMaps); - CHECK(attrs1.IsRenderTarget); - CHECK(attrs1.HasDepthBuffer); - - // cleanup - factory.destroyTexture(tex1); - CHECK(tex1.glTextures[0] == 0); - CHECK(tex1.glDepthRenderbuffer == 0); - - factory.destroyTexture(tex0); - factory.discard(); - renderer.discard(); - displayManager.DiscardDisplay(); - #endif -} - diff --git a/code/Modules/Gfx/UnitTests/TextureSetupTest.cc b/code/Modules/Gfx/UnitTests/TextureSetupTest.cc deleted file mode 100644 index 16aff4207..000000000 --- a/code/Modules/Gfx/UnitTests/TextureSetupTest.cc +++ /dev/null @@ -1,48 +0,0 @@ -//------------------------------------------------------------------------------ -// TextureSetupTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Gfx/GfxTypes.h" - -using namespace Oryol; - -TEST(TextureSetupTest) { - - // setup as absolute-size render target, no depth buffer - auto rt = TextureSetup::RenderTarget2D(320, 256); - rt.Locator = Locator("absSize"); - rt.ColorFormat = PixelFormat::RGB8; - CHECK(!rt.ShouldSetupFromFile()); - CHECK(!rt.ShouldSetupFromPixelData()); - CHECK(rt.IsRenderTarget); - CHECK(!rt.HasDepth()); - CHECK(rt.Locator.Location() == "absSize"); - CHECK(rt.Width == 320); - CHECK(rt.Height == 256); - CHECK(rt.ColorFormat == PixelFormat::RGB8); - CHECK(rt.DepthFormat == PixelFormat::InvalidPixelFormat); - CHECK(rt.Sampler.WrapU == TextureWrapMode::ClampToEdge); - CHECK(rt.Sampler.WrapV == TextureWrapMode::ClampToEdge); - CHECK(rt.Sampler.MagFilter == TextureFilterMode::Nearest); - CHECK(rt.Sampler.MinFilter == TextureFilterMode::Nearest); - - // setup as absolute-size render target, with depth buffer - auto rt0 = TextureSetup::RenderTarget2D(320, 256); - rt0.ColorFormat = PixelFormat::RGBA8; - rt0.DepthFormat = PixelFormat::DEPTHSTENCIL; - CHECK(!rt0.ShouldSetupFromFile()); - CHECK(!rt0.ShouldSetupFromPixelData()); - CHECK(rt0.IsRenderTarget); - CHECK(rt0.HasDepth()); - CHECK(rt0.Locator == Locator::NonShared()); - CHECK(rt0.Width == 320); - CHECK(rt0.Height == 256); - CHECK(rt0.ColorFormat == PixelFormat::RGBA8); - CHECK(rt0.DepthFormat == PixelFormat::DEPTHSTENCIL); - CHECK(rt0.Sampler.WrapU == TextureWrapMode::ClampToEdge); - CHECK(rt0.Sampler.WrapV == TextureWrapMode::ClampToEdge); - CHECK(rt0.Sampler.MagFilter == TextureFilterMode::Nearest); - CHECK(rt0.Sampler.MinFilter == TextureFilterMode::Nearest); -} - diff --git a/code/Modules/Gfx/UnitTests/VertexLayoutTest.cc b/code/Modules/Gfx/UnitTests/VertexLayoutTest.cc deleted file mode 100644 index 1797df4c2..000000000 --- a/code/Modules/Gfx/UnitTests/VertexLayoutTest.cc +++ /dev/null @@ -1,70 +0,0 @@ -//------------------------------------------------------------------------------ -// VertexLayoutTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Gfx/GfxTypes.h" - -using namespace Oryol; - -TEST(VertexLayoutTest) { - VertexLayout layout; - CHECK(layout.Empty()); - CHECK(0 == layout.NumComponents()); - - layout.Add(VertexAttr::Position, VertexFormat::Float3) - .Add(VertexAttr::Normal, VertexFormat::UByte4N) - .Add(VertexLayout::Component(VertexAttr::TexCoord0, VertexFormat::Float2)); - CHECK(!layout.Empty()); - CHECK(3 == layout.NumComponents()); - - const VertexLayout::Component& comp0 = layout.ComponentAt(0); - CHECK(comp0.Attr == VertexAttr::Position); - CHECK(comp0.Format == VertexFormat::Float3); - CHECK(comp0.ByteSize() == 12); - const VertexLayout::Component& comp1 = layout.ComponentAt(1); - CHECK(comp1.Attr == VertexAttr::Normal); - CHECK(comp1.Format == VertexFormat::UByte4N); - CHECK(comp1.ByteSize() == 4); - const VertexLayout::Component& comp2 = layout.ComponentAt(2); - CHECK(comp2.Attr == VertexAttr::TexCoord0); - CHECK(comp2.Format == VertexFormat::Float2); - CHECK(comp2.ByteSize() == 8); - - CHECK(layout.ByteSize() == 24); - CHECK(layout.ComponentByteOffset(0) == 0); - CHECK(layout.ComponentByteOffset(1) == 12); - CHECK(layout.ComponentByteOffset(2) == 16); - - CHECK(layout.ComponentIndexByVertexAttr(VertexAttr::Position) == 0); - CHECK(layout.ComponentIndexByVertexAttr(VertexAttr::Normal) == 1); - CHECK(layout.ComponentIndexByVertexAttr(VertexAttr::TexCoord0) == 2); - CHECK(layout.ComponentIndexByVertexAttr(VertexAttr::TexCoord1) == InvalidIndex); - CHECK(layout.Contains(VertexAttr::Position)); - CHECK(layout.Contains(VertexAttr::Normal)); - CHECK(layout.Contains(VertexAttr::TexCoord0)); - CHECK(!layout.Contains(VertexAttr::TexCoord1)); - - layout.Clear(); - CHECK(layout.Empty()); - CHECK(0 == layout.NumComponents()); - - VertexLayout l0({ - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Float3 }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }); - CHECK(l0.ComponentIndexByVertexAttr(VertexAttr::Position) == 0); - CHECK(l0.ComponentIndexByVertexAttr(VertexAttr::Normal) == 1); - CHECK(l0.ComponentIndexByVertexAttr(VertexAttr::TexCoord0) == 2); - - VertexLayout l1; - l1.Add({ - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Tangent, VertexFormat::Byte4N }, - }).EnableInstancing(); - CHECK(l1.ComponentIndexByVertexAttr(VertexAttr::Position) == 0); - CHECK(l1.ComponentIndexByVertexAttr(VertexAttr::Tangent) == 1); - CHECK(l1.StepFunction == VertexStepFunction::PerInstance); -} - diff --git a/code/Modules/Gfx/UnitTests/glTypesTest.cc b/code/Modules/Gfx/UnitTests/glTypesTest.cc deleted file mode 100644 index cd8eb9508..000000000 --- a/code/Modules/Gfx/UnitTests/glTypesTest.cc +++ /dev/null @@ -1,38 +0,0 @@ -//------------------------------------------------------------------------------ -// glTypesTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Gfx/private/gl/gl_impl.h" -#include "Gfx/private/gl/glTypes.h" - -using namespace Oryol; -using namespace _priv; - -//------------------------------------------------------------------------------ -TEST(glTypesTest) { - - // glTexImage format - // FIXME: incomplete - CHECK(glTypes::asGLTexImageFormat(PixelFormat::RGBA8) == GL_RGBA); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::RGB8) == GL_RGB); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::R5G6B5) == GL_RGB); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::R5G5B5A1) == GL_RGBA); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::RGBA4) == GL_RGBA); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::RGBA32F) == GL_RGBA); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::RGBA16F) == GL_RGBA); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::DEPTH) == GL_DEPTH_COMPONENT); - CHECK(glTypes::asGLTexImageFormat(PixelFormat::DEPTHSTENCIL) == GL_DEPTH_STENCIL); - - // glTexImage type - // FIXME: incomplete - CHECK(glTypes::asGLTexImageType(PixelFormat::RGBA8) == GL_UNSIGNED_BYTE); - CHECK(glTypes::asGLTexImageType(PixelFormat::RGB8) == GL_UNSIGNED_BYTE); - CHECK(glTypes::asGLTexImageType(PixelFormat::R5G6B5) == GL_UNSIGNED_SHORT_5_6_5); - CHECK(glTypes::asGLTexImageType(PixelFormat::R5G5B5A1) == GL_UNSIGNED_SHORT_5_5_5_1); - CHECK(glTypes::asGLTexImageType(PixelFormat::RGBA4) == GL_UNSIGNED_SHORT_4_4_4_4); - CHECK(glTypes::asGLTexImageType(PixelFormat::DEPTH) == GL_UNSIGNED_SHORT); - CHECK(glTypes::asGLTexImageType(PixelFormat::RGBA32F) == GL_FLOAT); - CHECK(glTypes::asGLTexImageType(PixelFormat::RGBA16F) == GL_HALF_FLOAT); - CHECK(glTypes::asGLTexImageType(PixelFormat::DEPTHSTENCIL) == GL_UNSIGNED_INT_24_8); -} diff --git a/code/Modules/Gfx/private/d3d11/d3d11Factory.cc b/code/Modules/Gfx/private/d3d11/d3d11Factory.cc deleted file mode 100644 index 42745d8ad..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Factory.cc +++ /dev/null @@ -1,778 +0,0 @@ -//------------------------------------------------------------------------------ -// d3d11Factory.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "d3d11Factory.h" -#include "d3d11Types.h" -#include "d3d11_impl.h" -#include "Gfx/private/resource.h" -#include "Gfx/private/renderer.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -void -d3d11Factory::setup(const gfxPointers& ptrs) { - o_assert_dbg(!this->subResourceData); - gfxFactoryBase::setup(ptrs); - this->subResourceData = (D3D11_SUBRESOURCE_DATA*) Memory::Alloc(sizeof(D3D11_SUBRESOURCE_DATA) * maxNumSubResourceData); -} - -//------------------------------------------------------------------------------ -void -d3d11Factory::discard() { - o_assert_dbg(this->subResourceData); - Memory::Free(this->subResourceData); - this->subResourceData = nullptr; - gfxFactoryBase::discard(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initMesh(mesh& msh, const void* data, int size) { - o_assert_dbg(this->isValid); - if (msh.Setup.ShouldSetupFullScreenQuad()) { - return this->initFullscreenQuad(msh); - } - else { - return this->initStdMesh(msh, data, size); - } -} - -//------------------------------------------------------------------------------ -void -d3d11Factory::destroyMesh(mesh& msh) { - this->pointers.renderer->invalidateMeshState(); - if (msh.d3d11VertexBuffer) { - msh.d3d11VertexBuffer->Release(); - } - if (msh.d3d11IndexBuffer) { - msh.d3d11IndexBuffer->Release(); - } - msh.Clear(); -} - -//------------------------------------------------------------------------------ -ID3D11Buffer* -d3d11Factory::createBuffer(const void* data, uint32_t dataSize, uint32_t d3d11BindFlags, Usage::Code usage) { - o_assert_dbg((D3D11_BIND_VERTEX_BUFFER == d3d11BindFlags) || (D3D11_BIND_INDEX_BUFFER == d3d11BindFlags)); - ID3D11Device* d3d11Device = this->pointers.renderer->d3d11Device; - o_assert_dbg(d3d11Device); - - D3D11_BUFFER_DESC desc = { }; - desc.ByteWidth = dataSize; - desc.Usage = d3d11Types::asResourceUsage(usage); - desc.BindFlags = d3d11BindFlags; - desc.CPUAccessFlags = d3d11Types::asResourceCPUAccessFlag(usage); - - D3D11_SUBRESOURCE_DATA* initDataPtr = nullptr; - D3D11_SUBRESOURCE_DATA initData = { }; - if (data) { - initData.pSysMem = data; - initDataPtr = &initData; - } - ID3D11Buffer* buf = nullptr; - HRESULT hr = d3d11Device->CreateBuffer(&desc, initDataPtr, &buf); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(buf); - - return buf; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initFullscreenQuad(mesh& mesh) { - o_assert_dbg(nullptr == mesh.d3d11VertexBuffer); - o_assert_dbg(nullptr == mesh.d3d11IndexBuffer); - - VertexBufferAttrs vbAttrs; - vbAttrs.NumVertices = 4; - vbAttrs.BufferUsage = Usage::Immutable; - vbAttrs.Layout.Add(VertexAttr::Position, VertexFormat::Float3); - vbAttrs.Layout.Add(VertexAttr::TexCoord0, VertexFormat::Float2); - mesh.vertexBufferAttrs = vbAttrs; - - IndexBufferAttrs ibAttrs; - ibAttrs.NumIndices = 6; - ibAttrs.Type = IndexType::Index16; - ibAttrs.BufferUsage = Usage::Immutable; - mesh.indexBufferAttrs = ibAttrs; - - mesh.numPrimGroups = 1; - mesh.primGroups[0] = PrimitiveGroup(0, 6); - - // vertices - const float topV = mesh.Setup.FullScreenQuadFlipV ? 0.0f : 1.0f; - const float botV = mesh.Setup.FullScreenQuadFlipV ? 1.0f : 0.0f; - float vertices[] = { - -1.0f, +1.0f, 0.0f, 0.0f, topV, // top-left corner - +1.0f, +1.0f, 0.0f, 1.0f, topV, // top-right corner - +1.0f, -1.0f, 0.0f, 1.0f, botV, // bottom-right corner - -1.0f, -1.0f, 0.0f, 0.0f, botV // bottom-left corner - }; - - // indices - uint16_t indices[] = { - 0, 2, 1, // topleft -> bottomright -> topright - 0, 3, 2, // topleft -> bottomleft -> bottomright - }; - - // create vertex and index buffer - mesh.d3d11VertexBuffer = this->createBuffer(vertices, sizeof(vertices), D3D11_BIND_VERTEX_BUFFER, mesh.vertexBufferAttrs.BufferUsage); - mesh.d3d11IndexBuffer = this->createBuffer(indices, sizeof(indices), D3D11_BIND_INDEX_BUFFER, mesh.indexBufferAttrs.BufferUsage); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initStdMesh(mesh& mesh, const void* data, int size) { - o_assert_dbg(nullptr == mesh.d3d11VertexBuffer); - o_assert_dbg(nullptr == mesh.d3d11IndexBuffer); - - VertexBufferAttrs vbAttrs; - vbAttrs.NumVertices = mesh.Setup.NumVertices; - vbAttrs.Layout = mesh.Setup.Layout; - vbAttrs.BufferUsage = mesh.Setup.VertexUsage; - mesh.vertexBufferAttrs = vbAttrs; - - IndexBufferAttrs ibAttrs; - ibAttrs.NumIndices = mesh.Setup.NumIndices; - ibAttrs.Type = mesh.Setup.IndicesType; - ibAttrs.BufferUsage = mesh.Setup.IndexUsage; - mesh.indexBufferAttrs = ibAttrs; - - mesh.numPrimGroups = mesh.Setup.NumPrimitiveGroups(); - o_assert_dbg(mesh.numPrimGroups < GfxConfig::MaxNumPrimGroups); - for (int i = 0; i < mesh.numPrimGroups; i++) { - mesh.primGroups[i] = mesh.Setup.PrimitiveGroup(i); - } - - if (mesh.Setup.NumVertices > 0) { - const int vbSize = vbAttrs.NumVertices * vbAttrs.Layout.ByteSize(); - const uint8_t* vertices = nullptr; - if (InvalidIndex != mesh.Setup.VertexDataOffset) { - const uint8_t* ptr = (const uint8_t*)data; - o_assert_dbg(ptr && (size > 0)); - vertices = ptr + mesh.Setup.VertexDataOffset; - o_assert_dbg((ptr + size) >= (vertices + vbSize)); - } - mesh.d3d11VertexBuffer = this->createBuffer(vertices, vbSize, D3D11_BIND_VERTEX_BUFFER, vbAttrs.BufferUsage); - } - if (IndexType::None != ibAttrs.Type) { - const int ibSize = ibAttrs.NumIndices * IndexType::ByteSize(ibAttrs.Type); - const uint8_t* indices = nullptr; - if (InvalidIndex != mesh.Setup.IndexDataOffset) { - const uint8_t* ptr = (const uint8_t*)data; - o_assert_dbg(ptr && (size > 0)); - indices = ((const uint8_t*)ptr) + mesh.Setup.IndexDataOffset; - o_assert_dbg((ptr + size) >= (indices + ibSize)); - } - mesh.d3d11IndexBuffer = this->createBuffer(indices, ibSize, D3D11_BIND_INDEX_BUFFER, ibAttrs.BufferUsage); - } - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -static ID3D11ShaderResourceView* -createShaderResourceView(ID3D11Device* d3d11Device, const texture& tex, ID3D11Resource* d3d11Tex, DXGI_FORMAT d3d11Format) { - D3D11_SHADER_RESOURCE_VIEW_DESC shdResViewDesc = { }; - shdResViewDesc.Format = d3d11Format; - switch (tex.Setup.Type) { - case TextureType::Texture2D: - shdResViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; - shdResViewDesc.Texture2D.MostDetailedMip = 0; - shdResViewDesc.Texture2D.MipLevels = tex.Setup.NumMipMaps; - break; - case TextureType::TextureCube: - shdResViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE; - shdResViewDesc.TextureCube.MostDetailedMip = 0; - shdResViewDesc.TextureCube.MipLevels = tex.Setup.NumMipMaps; - break; - case TextureType::Texture3D: - shdResViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE3D; - shdResViewDesc.Texture3D.MostDetailedMip = 0; - shdResViewDesc.Texture3D.MipLevels = tex.Setup.NumMipMaps; - break; - case TextureType::TextureArray: - shdResViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; - shdResViewDesc.Texture2DArray.MostDetailedMip = 0; - shdResViewDesc.Texture2DArray.MipLevels = tex.Setup.NumMipMaps; - shdResViewDesc.Texture2DArray.FirstArraySlice = 0; - shdResViewDesc.Texture2DArray.ArraySize = tex.Setup.Depth; - break; - default: - o_error("d3d11TextureFactory::createShaderResourceView: invalid texture type!\n"); - break; - } - ID3D11ShaderResourceView* d3d11ShaderResourceView = nullptr; - HRESULT hr = d3d11Device->CreateShaderResourceView(d3d11Tex, &shdResViewDesc, &d3d11ShaderResourceView); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(nullptr != d3d11ShaderResourceView); - return d3d11ShaderResourceView; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initTexture(texture& tex, const void* data, int size) { - o_assert_dbg(this->subResourceData); - o_assert_dbg(!tex.d3d11Texture2D); - o_assert_dbg(!tex.d3d11Texture3D); - o_assert_dbg(!tex.d3d11ShaderResourceView); - o_assert_dbg(!tex.d3d11SamplerState); - o_assert_dbg(!tex.d3d11DepthStencilTexture); - o_assert_dbg(!tex.d3d11MSAATexture2D); - ID3D11Device* d3d11Device = this->pointers.renderer->d3d11Device; - - const TextureSetup& setup = tex.Setup; - o_assert_dbg(!setup.ShouldSetupFromNativeTexture()); - - // subresourcedata array if initial data is provided - D3D11_SUBRESOURCE_DATA* pInitialData = nullptr; - if (data) { - const uint8_t* srcPtr = (const uint8_t*)data; - const int numFaces = setup.Type==TextureType::TextureCube ? 6:1; - const int numSlices = setup.Type==TextureType::TextureArray ? setup.Depth:1; - const int sliceSize = size / numSlices; - o_assert_dbg((numSlices * sliceSize) == size); - const int numMipMaps = setup.ImageData.NumMipMaps; - int subResourceDataIndex = 0; - for (int faceIndex = 0; faceIndex < numFaces; faceIndex++) { - for (int sliceIndex = 0; sliceIndex < numSlices; sliceIndex++) { - int sliceOffset = sliceIndex * sliceSize; - for (int mipIndex = 0; mipIndex < numMipMaps; mipIndex++, subResourceDataIndex++) { - o_assert_dbg(subResourceDataIndex < maxNumSubResourceData); - D3D11_SUBRESOURCE_DATA& subResData = this->subResourceData[subResourceDataIndex]; - subResData.pSysMem = srcPtr + sliceOffset + setup.ImageData.Offsets[faceIndex][mipIndex]; - const int mipWidth = std::max(setup.Width >> mipIndex, 1); - const int mipHeight = std::max(setup.Height >> mipIndex, 1); - subResData.SysMemPitch = PixelFormat::RowPitch(setup.ColorFormat, mipWidth); - if (setup.Type == TextureType::Texture3D) { - const int mipDepth = std::max(setup.Depth >> mipIndex, 1); - subResData.SysMemSlicePitch = PixelFormat::ImagePitch(setup.ColorFormat, mipWidth, mipHeight); - } - else { - subResData.SysMemSlicePitch = 0; - } - } - } - } - pInitialData = this->subResourceData; - } - - // create the color texture - HRESULT hr; - if (setup.Type != TextureType::Texture3D) { - // setup texture desc for 2D texture - D3D11_TEXTURE2D_DESC texDesc = { }; - texDesc.Width = setup.Width; - texDesc.Height = setup.Height; - texDesc.MipLevels = setup.NumMipMaps; - if (TextureType::TextureArray == setup.Type) { - texDesc.ArraySize = setup.Depth; - } - else if (TextureType::TextureCube == setup.Type) { - texDesc.ArraySize = 6; - } - else { - texDesc.ArraySize = 1; - } - if (setup.IsRenderTarget) { - texDesc.Format = tex.d3d11ColorFormat = d3d11Types::asRenderTargetFormat(setup.ColorFormat); - o_assert2_dbg(texDesc.Format != DXGI_FORMAT_UNKNOWN, "Invalid render target pixel format!"); - texDesc.Usage = D3D11_USAGE_DEFAULT; - texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_RENDER_TARGET; - texDesc.CPUAccessFlags = 0; - } - else { - texDesc.Format = tex.d3d11ColorFormat = d3d11Types::asTextureFormat(setup.ColorFormat); - if (DXGI_FORMAT_UNKNOWN == texDesc.Format) { - o_warn("d3d11TextureFactory: texture pixel format not supported in D3D11\n"); - return ResourceState::Failed; - } - texDesc.Usage = d3d11Types::asResourceUsage(setup.TextureUsage); - texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; - texDesc.CPUAccessFlags = d3d11Types::asResourceCPUAccessFlag(setup.TextureUsage); - } - texDesc.SampleDesc.Count = 1; - texDesc.SampleDesc.Quality = 0; - texDesc.MiscFlags = setup.Type == TextureType::TextureCube ? D3D11_RESOURCE_MISC_TEXTURECUBE : 0; - hr = d3d11Device->CreateTexture2D(&texDesc, pInitialData, &tex.d3d11Texture2D); - o_assert(SUCCEEDED(hr)); - - // also create an MSAA texture? - if (setup.SampleCount > 1) { - texDesc.SampleDesc.Count = setup.SampleCount; - texDesc.SampleDesc.Quality = 0; - hr = d3d11Device->CreateTexture2D(&texDesc, pInitialData, &tex.d3d11MSAATexture2D); - o_assert(SUCCEEDED(hr)); - } - - // shader-resource-view (always on the non-MSAA texture) - tex.d3d11ShaderResourceView = createShaderResourceView(d3d11Device, tex, tex.d3d11Texture2D, texDesc.Format); - o_assert(tex.d3d11ShaderResourceView); - } - else { - // 3D texture - D3D11_TEXTURE3D_DESC texDesc = { }; - texDesc.Width = setup.Width; - texDesc.Height = setup.Height; - texDesc.Depth = setup.Depth; - texDesc.MipLevels = setup.NumMipMaps; - if (setup.IsRenderTarget) { - texDesc.Format = tex.d3d11ColorFormat = d3d11Types::asRenderTargetFormat(setup.ColorFormat); - o_assert2_dbg(texDesc.Format != DXGI_FORMAT_UNKNOWN, "Invalid render target color pixel format!"); - texDesc.Usage = D3D11_USAGE_DEFAULT; - texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; - texDesc.CPUAccessFlags = 0; - } - else { - texDesc.Format = tex.d3d11ColorFormat = d3d11Types::asTextureFormat(setup.ColorFormat); - o_assert2_dbg(texDesc.Format != DXGI_FORMAT_UNKNOWN, "Invalid texture pixel format!"); - texDesc.Usage = d3d11Types::asResourceUsage(setup.TextureUsage); - texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; - texDesc.CPUAccessFlags = d3d11Types::asResourceCPUAccessFlag(setup.TextureUsage); - } - texDesc.MiscFlags = 0; - hr = d3d11Device->CreateTexture3D(&texDesc, pInitialData, &tex.d3d11Texture3D); - o_assert(SUCCEEDED(hr)); - tex.d3d11ShaderResourceView = createShaderResourceView(d3d11Device, tex, tex.d3d11Texture3D, texDesc.Format); - o_assert(tex.d3d11ShaderResourceView); - } - - // optional depth-stencil-buffer texture - if (setup.IsRenderTarget && (setup.DepthFormat != PixelFormat::InvalidPixelFormat)) { - // create depth-buffer-texture - D3D11_TEXTURE2D_DESC dsDesc = {}; - dsDesc.Width = setup.Width; - dsDesc.Height = setup.Height; - dsDesc.MipLevels = setup.NumMipMaps; - dsDesc.ArraySize = 1; - dsDesc.Format = d3d11Types::asRenderTargetFormat(setup.DepthFormat); - o_assert2_dbg(dsDesc.Format != DXGI_FORMAT_UNKNOWN, "Invalid render target depth pixel format!"); - dsDesc.Usage = D3D11_USAGE_DEFAULT; - dsDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; - dsDesc.CPUAccessFlags = 0; - dsDesc.SampleDesc.Count = setup.SampleCount; - dsDesc.SampleDesc.Quality = 0; - dsDesc.MiscFlags = 0; - hr = d3d11Device->CreateTexture2D(&dsDesc, nullptr, &tex.d3d11DepthStencilTexture); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(nullptr != tex.d3d11DepthStencilTexture); - } - - // create sampler object - D3D11_SAMPLER_DESC smpDesc = { }; - smpDesc.Filter = d3d11Types::asSamplerFilter(tex.Setup.Sampler.MagFilter, tex.Setup.Sampler.MinFilter); - smpDesc.AddressU = d3d11Types::asTextureAddressMode(tex.Setup.Sampler.WrapU); - smpDesc.AddressV = d3d11Types::asTextureAddressMode(tex.Setup.Sampler.WrapV); - smpDesc.AddressW = d3d11Types::asTextureAddressMode(tex.Setup.Sampler.WrapW); - smpDesc.MipLODBias = 0.0f; - smpDesc.MaxAnisotropy = 1; - smpDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; - smpDesc.BorderColor[0] = 1.0f; - smpDesc.BorderColor[1] = 1.0f; - smpDesc.BorderColor[2] = 1.0f; - smpDesc.BorderColor[3] = 1.0f; - smpDesc.MinLOD = -D3D11_FLOAT32_MAX; - smpDesc.MaxLOD = D3D11_FLOAT32_MAX; - ID3D11SamplerState* d3d11SamplerState = nullptr; - hr = d3d11Device->CreateSamplerState(&smpDesc, &tex.d3d11SamplerState); - o_assert(SUCCEEDED(hr)); - o_assert(tex.d3d11SamplerState); - - // fill texture attributes - o_assert_dbg(DXGI_FORMAT_UNKNOWN != tex.d3d11ColorFormat); - TextureAttrs attrs; - attrs.Locator = tex.Setup.Locator; - attrs.Type = tex.Setup.Type; - attrs.ColorFormat = tex.Setup.ColorFormat; - attrs.DepthFormat = tex.Setup.DepthFormat; - attrs.SampleCount = tex.Setup.SampleCount; - attrs.TextureUsage = tex.Setup.TextureUsage; - attrs.Width = tex.Setup.Width; - attrs.Height = tex.Setup.Height; - attrs.Depth = tex.Setup.Depth; - attrs.NumMipMaps = tex.Setup.NumMipMaps; - attrs.IsRenderTarget = tex.Setup.IsRenderTarget; - attrs.HasDepthBuffer = tex.Setup.HasDepth(); - tex.textureAttrs = attrs; - - // and done - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -d3d11Factory::destroyTexture(texture& tex) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateTextureState(); - if (tex.d3d11Texture2D) { - tex.d3d11Texture2D->Release(); - } - if (tex.d3d11Texture3D) { - tex.d3d11Texture3D->Release(); - } - if (tex.d3d11ShaderResourceView) { - tex.d3d11ShaderResourceView->Release(); - } - if (tex.d3d11SamplerState) { - tex.d3d11SamplerState->Release(); - } - if (tex.d3d11DepthStencilTexture) { - tex.d3d11DepthStencilTexture->Release(); - } - if (tex.d3d11MSAATexture2D) { - tex.d3d11MSAATexture2D->Release(); - } - tex.Clear(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initRenderPass(renderPass& rp) { - o_assert_dbg(this->isValid); - ID3D11Device* d3d11Device = this->pointers.renderer->d3d11Device; - - gfxFactoryBase::initRenderPass(rp); - o_assert_dbg(rp.colorTextures[0]); - const bool isMSAA = rp.colorTextures[0]->Setup.SampleCount > 1; - - // create render-target-view objects - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - o_assert_dbg(nullptr == rp.d3d11RenderTargetViews[i]); - texture* colorTex = rp.colorTextures[i]; - if (colorTex) { - D3D11_RENDER_TARGET_VIEW_DESC rtvDesc = { }; - ID3D11Resource* d3d11Res = nullptr; - if (colorTex->d3d11MSAATexture2D) { - d3d11Res = colorTex->d3d11MSAATexture2D; - D3D11_TEXTURE2D_DESC texDesc = { }; - colorTex->d3d11MSAATexture2D->GetDesc(&texDesc); - rtvDesc.Format = texDesc.Format; - } - else if (colorTex->d3d11Texture2D) { - d3d11Res = colorTex->d3d11Texture2D; - D3D11_TEXTURE2D_DESC texDesc = { }; - colorTex->d3d11Texture2D->GetDesc(&texDesc); - rtvDesc.Format = texDesc.Format; - } - else { - d3d11Res = colorTex->d3d11Texture3D; - D3D11_TEXTURE3D_DESC texDesc = { }; - colorTex->d3d11Texture3D->GetDesc(&texDesc); - rtvDesc.Format = texDesc.Format; - } - o_assert_dbg(d3d11Res); - switch (colorTex->Setup.Type) { - case TextureType::Texture2D: - if (isMSAA) { - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMS; - } - else { - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; - rtvDesc.Texture2D.MipSlice = rp.Setup.ColorAttachments[i].MipLevel; - } - break; - case TextureType::TextureCube: - if (isMSAA) { - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY; - rtvDesc.Texture2DMSArray.FirstArraySlice = rp.Setup.ColorAttachments[i].Slice; - rtvDesc.Texture2DMSArray.ArraySize = 1; - } - else { - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; - rtvDesc.Texture2DArray.MipSlice = rp.Setup.ColorAttachments[i].MipLevel; - rtvDesc.Texture2DArray.FirstArraySlice = rp.Setup.ColorAttachments[i].Slice; - rtvDesc.Texture2DArray.ArraySize = 1; - } - break; - case TextureType::Texture3D: - o_assert_dbg(!isMSAA); - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE3D; - rtvDesc.Texture3D.MipSlice = rp.Setup.ColorAttachments[i].MipLevel; - rtvDesc.Texture3D.FirstWSlice = rp.Setup.ColorAttachments[i].Slice; - rtvDesc.Texture3D.WSize = 1; - break; - case TextureType::TextureArray: - if (isMSAA) { - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY; - rtvDesc.Texture2DMSArray.FirstArraySlice = rp.Setup.ColorAttachments[i].Slice; - rtvDesc.Texture2DMSArray.ArraySize = 1; - } - else { - rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY; - rtvDesc.Texture2DArray.MipSlice = rp.Setup.ColorAttachments[i].MipLevel; - rtvDesc.Texture2DArray.FirstArraySlice = rp.Setup.ColorAttachments[i].Slice; - rtvDesc.Texture2DArray.ArraySize = 1; - } - default: - o_error("d3d11RenderPassFactory: invalid texture type\n"); - break; - } - HRESULT hr = d3d11Device->CreateRenderTargetView(d3d11Res, &rtvDesc, &(rp.d3d11RenderTargetViews[i])); - o_assert(SUCCEEDED(hr) && rp.d3d11RenderTargetViews[i]); - } - } - - // create optional depth-stencil-view object - if (rp.depthStencilTexture) { - o_assert_dbg(nullptr == rp.d3d11DepthStencilView); - texture* dsTex = rp.depthStencilTexture; - o_assert_dbg(dsTex->d3d11DepthStencilTexture); - D3D11_DEPTH_STENCIL_VIEW_DESC dsDesc = { }; - D3D11_TEXTURE2D_DESC texDesc = { }; - dsTex->d3d11DepthStencilTexture->GetDesc(&texDesc); - dsDesc.Format = texDesc.Format; - dsDesc.Flags = 0; - if (isMSAA) { - dsDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS; - dsDesc.Texture2D.MipSlice = 0; - } - else { - dsDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; - } - HRESULT hr = d3d11Device->CreateDepthStencilView(dsTex->d3d11DepthStencilTexture, &dsDesc, &rp.d3d11DepthStencilView); - o_assert(SUCCEEDED(hr) && rp.d3d11DepthStencilView); - } - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -d3d11Factory::destroyRenderPass(renderPass& rp) { - o_assert_dbg(this->isValid); - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - if (rp.d3d11RenderTargetViews[i]) { - rp.d3d11RenderTargetViews[i]->Release(); - } - } - if (rp.d3d11DepthStencilView) { - rp.d3d11DepthStencilView->Release(); - } - gfxFactoryBase::destroyRenderPass(rp); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initShader(shader& shd) { - o_assert_dbg(this->isValid); - o_assert_dbg(nullptr == shd.d3d11VertexShader); - o_assert_dbg(nullptr == shd.d3d11PixelShader); - ID3D11Device* d3d11Device = this->pointers.renderer->d3d11Device; - - this->pointers.renderer->invalidateShaderState(); - const ShaderLang::Code slang = ShaderLang::HLSL5; - const ShaderSetup& setup = shd.Setup; - - // create vertex shader - const void* vsPtr = nullptr; - uint32_t vsSize = 0; - setup.VertexShaderByteCode(slang, vsPtr, vsSize); - o_assert_dbg(vsPtr); - HRESULT hr = d3d11Device->CreateVertexShader(vsPtr, vsSize, NULL, &shd.d3d11VertexShader); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(shd.d3d11VertexShader); - - // create pixel shader - const void* psPtr = nullptr; - uint32_t psSize = 0; - setup.FragmentShaderByteCode(slang, psPtr, psSize); - o_assert_dbg(psPtr); - hr = d3d11Device->CreatePixelShader(psPtr, psSize, NULL, &shd.d3d11PixelShader); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(shd.d3d11PixelShader); - - // create constant buffers - D3D11_BUFFER_DESC cbDesc = { }; - for (int i = 0; i < setup.NumUniformBlocks(); i++) { - const ShaderStage::Code bindStage = setup.UniformBlockBindStage(i); - const int bindSlot = setup.UniformBlockBindSlot(i); - o_assert_dbg(InvalidIndex != bindSlot); - const uint32 byteSize = setup.UniformBlockByteSize(i); - o_assert_dbg(byteSize > 0); - - // NOTE: constant buffer size must be multiple of 16 bytes - cbDesc.ByteWidth = Memory::RoundUp(byteSize, 16); - cbDesc.Usage = D3D11_USAGE_DEFAULT; - cbDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER; - cbDesc.CPUAccessFlags = 0; - - ID3D11Buffer* d3d11ConstantBuffer = nullptr; - hr = d3d11Device->CreateBuffer(&cbDesc, nullptr, &d3d11ConstantBuffer); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(d3d11ConstantBuffer); - - // the d3d11ConstantBuffer ptr can be 0 at this point, if the - // uniform block only contains textures - shd.addUniformBlockEntry(bindStage, bindSlot, d3d11ConstantBuffer); - } - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -d3d11Factory::destroyShader(shader& shd) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateShaderState(); - if (shd.d3d11VertexShader) { - shd.d3d11VertexShader->Release(); - } - if (shd.d3d11PixelShader) { - shd.d3d11PixelShader->Release(); - } - for (int bindStage = 0; bindStage < ShaderStage::NumShaderStages; bindStage++) { - for (int bindSlot = 0; bindSlot < GfxConfig::MaxNumUniformBlocksPerStage; bindSlot++) { - ID3D11Buffer* cb = shd.getConstantBuffer((ShaderStage::Code)bindStage, bindSlot); - if (cb) { - cb->Release(); - } - } - } - shd.Clear(); -} - -//------------------------------------------------------------------------------ -static ID3D11InputLayout* -createInputLayout(ID3D11Device* d3d11Device, const pipeline& pip) { - o_assert_dbg(nullptr == pip.d3d11InputLayout); - - // create a new input layout object and add to cache - D3D11_INPUT_ELEMENT_DESC d3d11Comps[VertexAttr::NumVertexAttrs] = { 0 }; - int d3d11CompIndex = 0; - for (int mshSlotIndex = 0; mshSlotIndex < GfxConfig::MaxNumInputMeshes; mshSlotIndex++) { - const VertexLayout& layout = pip.Setup.Layouts[mshSlotIndex]; - for (int compIndex = 0; compIndex < layout.NumComponents(); compIndex++, d3d11CompIndex++) { - const auto& comp = layout.ComponentAt(compIndex); - o_assert_dbg(d3d11CompIndex < VertexAttr::NumVertexAttrs); - D3D11_INPUT_ELEMENT_DESC& d3d11Comp = d3d11Comps[d3d11CompIndex]; - d3d11Comp.SemanticName = d3d11Types::asSemanticName(comp.Attr); - d3d11Comp.SemanticIndex = d3d11Types::asSemanticIndex(comp.Attr); - d3d11Comp.Format = d3d11Types::asInputElementFormat(comp.Format); - d3d11Comp.InputSlot = mshSlotIndex; - d3d11Comp.AlignedByteOffset = layout.ComponentByteOffset(compIndex); - d3d11Comp.InputSlotClass = d3d11Types::asInputClassification(layout.StepFunction); - if (VertexStepFunction::PerVertex == layout.StepFunction) { - d3d11Comp.InstanceDataStepRate = 0; - } - else { - d3d11Comp.InstanceDataStepRate = layout.StepRate; - } - } - } - - // lookup the vertex shader bytecode - const void* vsByteCode = nullptr; - uint32_t vsSize = 0; - pip.shd->Setup.VertexShaderByteCode(ShaderLang::HLSL5, vsByteCode, vsSize); - o_assert_dbg(vsByteCode && (vsSize > 0)); - - // create d3d11 input layout object - ID3D11InputLayout* d3d11InputLayout = nullptr; - HRESULT hr = d3d11Device->CreateInputLayout( - d3d11Comps, // pInputElementDesc - d3d11CompIndex, // NumElements - vsByteCode, // pShaderBytecodeWithInputSignature - vsSize, // BytecodeLength - &d3d11InputLayout); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(nullptr != d3d11InputLayout); - return d3d11InputLayout; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -d3d11Factory::initPipeline(pipeline& pip) { - o_assert_dbg(nullptr == pip.d3d11InputLayout); - o_assert_dbg(nullptr == pip.d3d11RasterizerState); - o_assert_dbg(nullptr == pip.d3d11BlendState); - o_assert_dbg(nullptr == pip.d3d11DepthStencilState); - ID3D11Device* d3d11Device = this->pointers.renderer->d3d11Device; - HRESULT hr; - - gfxFactoryBase::initPipeline(pip); - o_assert_dbg(pip.shd); - - pip.d3d11InputLayout = createInputLayout(d3d11Device, pip); - pip.d3d11PrimTopology = d3d11Types::asPrimitiveTopology(pip.Setup.PrimType); - o_assert_dbg(pip.d3d11InputLayout); - - // create state objects (NOTE: creating the same state will return - // the same d3d11 state object, so no need to implement our own reuse) - const RasterizerState& rastState = pip.Setup.RasterizerState; - D3D11_RASTERIZER_DESC rastDesc = { }; - rastDesc.FillMode = D3D11_FILL_SOLID; - rastDesc.CullMode = d3d11Types::asCullMode(rastState.CullFaceEnabled, rastState.CullFace); - rastDesc.FrontCounterClockwise = FALSE; // OpenGL convention - rastDesc.DepthBias = 0; - rastDesc.DepthBiasClamp = 0.0f; - rastDesc.DepthClipEnable = TRUE; - rastDesc.ScissorEnable = rastState.ScissorTestEnabled; - rastDesc.MultisampleEnable = rastState.SampleCount > 1; - rastDesc.AntialiasedLineEnable = FALSE; - hr = d3d11Device->CreateRasterizerState(&rastDesc, &pip.d3d11RasterizerState); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(nullptr != pip.d3d11RasterizerState); - - const DepthStencilState& dsState = pip.Setup.DepthStencilState; - D3D11_DEPTH_STENCIL_DESC dsDesc = { }; - dsDesc.DepthEnable = TRUE; // FIXME: have DepthTestEnable in RasterizerState? - dsDesc.DepthWriteMask = dsState.DepthWriteEnabled ? D3D11_DEPTH_WRITE_MASK_ALL : D3D11_DEPTH_WRITE_MASK_ZERO; - dsDesc.DepthFunc = d3d11Types::asComparisonFunc(dsState.DepthCmpFunc); - dsDesc.StencilEnable = dsState.StencilEnabled; - dsDesc.StencilReadMask = dsState.StencilReadMask; - dsDesc.StencilWriteMask = dsState.StencilWriteMask; - dsDesc.FrontFace.StencilFailOp = d3d11Types::asStencilOp(dsState.StencilFront.FailOp); - dsDesc.FrontFace.StencilDepthFailOp = d3d11Types::asStencilOp(dsState.StencilFront.DepthFailOp); - dsDesc.FrontFace.StencilPassOp = d3d11Types::asStencilOp(dsState.StencilFront.PassOp); - dsDesc.FrontFace.StencilFunc = d3d11Types::asComparisonFunc(dsState.StencilFront.CmpFunc); - dsDesc.BackFace.StencilFailOp = d3d11Types::asStencilOp(dsState.StencilBack.FailOp); - dsDesc.BackFace.StencilDepthFailOp = d3d11Types::asStencilOp(dsState.StencilBack.DepthFailOp); - dsDesc.BackFace.StencilPassOp = d3d11Types::asStencilOp(dsState.StencilBack.PassOp); - dsDesc.BackFace.StencilFunc = d3d11Types::asComparisonFunc(dsState.StencilBack.CmpFunc); - hr = d3d11Device->CreateDepthStencilState(&dsDesc, &pip.d3d11DepthStencilState); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(nullptr != pip.d3d11DepthStencilState); - - const BlendState& blendState = pip.Setup.BlendState; - o_assert(blendState.MRTCount < GfxConfig::MaxNumColorAttachments); - D3D11_BLEND_DESC blendDesc = { }; - blendDesc.AlphaToCoverageEnable = FALSE; - blendDesc.IndependentBlendEnable = FALSE; - blendDesc.RenderTarget[0].BlendEnable = blendState.BlendEnabled; - blendDesc.RenderTarget[0].SrcBlend = d3d11Types::asBlendFactor(blendState.SrcFactorRGB); - blendDesc.RenderTarget[0].DestBlend = d3d11Types::asBlendFactor(blendState.DstFactorRGB); - blendDesc.RenderTarget[0].BlendOp = d3d11Types::asBlendOp(blendState.OpRGB); - blendDesc.RenderTarget[0].SrcBlendAlpha = d3d11Types::asBlendFactor(blendState.SrcFactorAlpha); - blendDesc.RenderTarget[0].DestBlendAlpha = d3d11Types::asBlendFactor(blendState.DstFactorAlpha); - blendDesc.RenderTarget[0].BlendOpAlpha = d3d11Types::asBlendOp(blendState.OpAlpha); - blendDesc.RenderTarget[0].RenderTargetWriteMask = d3d11Types::asColorWriteMask(blendState.ColorWriteMask); - hr = d3d11Device->CreateBlendState(&blendDesc, &pip.d3d11BlendState); - o_assert(SUCCEEDED(hr)); - o_assert_dbg(nullptr != pip.d3d11BlendState); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -d3d11Factory::destroyPipeline(pipeline& pip) { - this->pointers.renderer->invalidatePipeline(); - if (nullptr != pip.d3d11InputLayout) { - pip.d3d11InputLayout->Release(); - } - if (nullptr != pip.d3d11RasterizerState) { - pip.d3d11RasterizerState->Release(); - } - if (nullptr != pip.d3d11BlendState) { - pip.d3d11BlendState->Release(); - } - if (nullptr != pip.d3d11DepthStencilState) { - pip.d3d11DepthStencilState->Release(); - } - gfxFactoryBase::destroyPipeline(pip); -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/d3d11/d3d11Factory.h b/code/Modules/Gfx/private/d3d11/d3d11Factory.h deleted file mode 100644 index 61c3a90e2..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Factory.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Factory - @ingroup _priv - @brief D3D11 implementation of gfxFactory -*/ -#include "Gfx/private/gfxFactoryBase.h" -#include "Gfx/private/d3d11/d3d11_decl.h" - -namespace Oryol { -namespace _priv { - -class mesh; -class texture; -class renderPass; -class shader; -class pipeline; - -class d3d11Factory : public gfxFactoryBase { -public: - /// setup the factory - void setup(const gfxPointers& ptrs); - /// discard the factory - void discard(); - - /// initialize new mesh object - ResourceState::Code initMesh(mesh& msh, const void* data, int size); - /// destroy a mesh object - void destroyMesh(mesh& msh); - /// initialize a new texture object - ResourceState::Code initTexture(texture& tex, const void* data, int size); - /// destroy a texture object - void destroyTexture(texture& tex); - /// initialize a new render pass object - ResourceState::Code initRenderPass(renderPass& rp); - /// destroy a render pass object - void destroyRenderPass(renderPass& rp); - /// initialize a new shader object - ResourceState::Code initShader(shader& shd); - /// destroy a shader object - void destroyShader(shader& shd); - /// initialize a new pipeline object - ResourceState::Code initPipeline(pipeline& pip); - /// destroy a pipeline object - void destroyPipeline(pipeline& pip); - - /// helper method to setup a mesh object as fullscreen quad - ResourceState::Code initFullscreenQuad(mesh& mesh); - /// helper method to create a standard mesh - ResourceState::Code initStdMesh(mesh& mesh, const void* data, int size); - /// helper method to create vertex or index buffer - ID3D11Buffer* createBuffer(const void* vertexData, uint32_t vertexDataSize, uint32_t d3d11BindFlags, Usage::Code usage); - - static const int maxNumSubResourceData = GfxConfig::MaxNumTextureArraySlices * GfxConfig::MaxNumTextureMipMaps; - D3D11_SUBRESOURCE_DATA* subResourceData = nullptr; -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/d3d11/d3d11Renderer.cc b/code/Modules/Gfx/private/d3d11/d3d11Renderer.cc deleted file mode 100644 index 73ec19666..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Renderer.cc +++ /dev/null @@ -1,745 +0,0 @@ -//------------------------------------------------------------------------------ -// d3d11Renderer.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "d3d11Renderer.h" -#include "Gfx/private/displayMgr.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/GfxTypes.h" -#include -#include -#include "d3d11_impl.h" -#include "d3d11Types.h" -#ifdef max -#undef max -#endif -#ifdef min -#undef min -#endif -#include // std::max() - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -d3d11Renderer::d3d11Renderer() : -d3d11Device(nullptr), -d3d11DeviceContext(nullptr), -valid(false), -rpValid(false), -frameIndex(0), -curRenderPass(nullptr), -curPipeline(nullptr), -curPrimaryMesh(nullptr), -numRTVs(0), -d3d11CurDSV(nullptr), -d3d11CurRasterizerState(nullptr), -d3d11CurDepthStencilState(nullptr), -d3d11CurBlendState(nullptr), -d3d11CurIndexBuffer(nullptr), -d3d11CurInputLayout(nullptr), -d3d11CurVertexShader(nullptr), -d3d11CurPixelShader(nullptr), -d3d11CurPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED), -curStencilRef(0xFFFF) { - this->d3d11CurRTVs.Fill(nullptr); - this->d3d11CurVSCBs.Fill(nullptr); - this->d3d11CurPSCBs.Fill(nullptr); - this->d3d11CurVBs.Fill(nullptr); - this->d3d11CurVSSRVs.Fill(nullptr); - this->d3d11CurPSSRVs.Fill(nullptr); - this->d3d11CurVSSamplers.Fill(nullptr); - this->d3d11CurPSSamplers.Fill(nullptr); - this->curVertexStrides.Fill(0); - this->curVertexOffsets.Fill(0); -} - -//------------------------------------------------------------------------------ -d3d11Renderer::~d3d11Renderer() { - o_assert_dbg(!this->valid); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::setup(const GfxSetup& setup, const gfxPointers& ptrs) { - o_assert_dbg(!this->valid); - - this->valid = true; - this->gfxSetup = setup; - this->pointers = ptrs; - this->d3d11Device = this->pointers.displayMgr->d3d11Device; - this->d3d11DeviceContext = this->pointers.displayMgr->d3d11DeviceContext; -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::discard() { - o_assert_dbg(this->valid); - - this->numRTVs = 0; - this->d3d11CurRTVs.Fill(nullptr); - this->d3d11CurDSV = nullptr; - this->d3d11CurRasterizerState = nullptr; - this->d3d11CurDepthStencilState = nullptr; - this->d3d11CurBlendState = nullptr; - this->d3d11CurIndexBuffer = nullptr; - this->d3d11CurInputLayout = nullptr; - this->d3d11CurVertexShader = nullptr; - this->d3d11CurPixelShader = nullptr; - this->d3d11CurPrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED; - this->d3d11CurVSCBs.Fill(nullptr); - this->d3d11CurPSCBs.Fill(nullptr); - this->d3d11CurVBs.Fill(nullptr); - this->d3d11CurVSSRVs.Fill(nullptr); - this->d3d11CurPSSRVs.Fill(nullptr); - this->d3d11CurVSSamplers.Fill(nullptr); - this->d3d11CurPSSamplers.Fill(nullptr); - this->curVertexStrides.Fill(0); - this->curVertexOffsets.Fill(0); - - this->curRenderPass = nullptr; - this->curPipeline = nullptr; - this->curPrimaryMesh = nullptr; - - this->d3d11DeviceContext = nullptr; - this->d3d11Device = nullptr; - - this->pointers = gfxPointers(); - this->valid = false; -} - -//------------------------------------------------------------------------------ -bool -d3d11Renderer::isValid() const { - return this->valid; -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::resetStateCache() { - o_assert_dbg(this->d3d11DeviceContext); - - this->d3d11DeviceContext->ClearState(); - this->curRenderPass = nullptr; - this->curPipeline = nullptr; - this->numRTVs = 0; - this->d3d11CurRTVs.Fill(nullptr); - this->d3d11CurDSV = nullptr; - this->d3d11CurDepthStencilState = nullptr; - this->d3d11CurRasterizerState = nullptr; - this->d3d11CurBlendState = nullptr; - this->d3d11CurIndexBuffer = nullptr; - this->d3d11CurInputLayout = nullptr; - this->d3d11CurVertexShader = nullptr; - this->d3d11CurPixelShader = nullptr; - this->d3d11CurPrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED; - this->d3d11CurVSCBs.Fill(nullptr); - this->d3d11CurPSCBs.Fill(nullptr); - this->d3d11CurVBs.Fill(nullptr); - this->d3d11CurVSSRVs.Fill(nullptr); - this->d3d11CurPSSRVs.Fill(nullptr); - this->d3d11CurVSSamplers.Fill(nullptr); - this->d3d11CurPSSamplers.Fill(nullptr); - this->curVertexStrides.Fill(0); - this->curVertexOffsets.Fill(0); - this->curStencilRef = 0xFFFF; - this->curBlendColor = glm::vec4(0.0f); -} - -//------------------------------------------------------------------------------ -bool -d3d11Renderer::queryFeature(GfxFeature::Code feat) const { - switch (feat) { - case GfxFeature::TextureCompressionDXT: - case GfxFeature::TextureFloat: - case GfxFeature::Instancing: - case GfxFeature::OriginTopLeft: - case GfxFeature::MSAARenderTargets: - case GfxFeature::MultipleRenderTarget: - case GfxFeature::Texture3D: - case GfxFeature::TextureArray: - return true; - default: - return false; - } -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::commitFrame() { - o_assert_dbg(this->valid); - this->rpValid = false; - this->curRenderPass = nullptr; - this->curPipeline = nullptr; - this->curPrimaryMesh = nullptr; - this->frameIndex++; -} - -//------------------------------------------------------------------------------ -const DisplayAttrs& -d3d11Renderer::renderPassAttrs() const { - return this->rpAttrs; -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::beginPass(renderPass* pass, const PassAction* action) { - o_assert_dbg(this->valid); - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(action); - - // don't keep texture binding across passes, bound texture might be render targets! - this->invalidateTextureState(); - this->d3d11CurRTVs.Fill(nullptr); - if (nullptr == pass) { - this->rpAttrs = this->pointers.displayMgr->GetDisplayAttrs(); - this->numRTVs = 1; - this->d3d11CurRTVs[0] = this->pointers.displayMgr->d3d11RenderTargetView; - this->d3d11CurDSV = this->pointers.displayMgr->d3d11DepthStencilView; - } - else { - o_assert_dbg(pass->colorTextures[0]); - this->rpAttrs = DisplayAttrs::FromTextureAttrs(pass->colorTextures[0]->textureAttrs); - int i; - for (i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - if (pass->d3d11RenderTargetViews[i]) { - this->d3d11CurRTVs[i] = pass->d3d11RenderTargetViews[i]; - } - else { - break; - } - } - this->numRTVs = i; - this->d3d11CurDSV = pass->d3d11DepthStencilView; - } - o_assert_dbg(nullptr == this->curRenderPass); - this->curRenderPass = pass; - this->rpValid = true; - - // actually set the render targets in the d3d11 device context - this->d3d11DeviceContext->OMSetRenderTargets(this->numRTVs, &(this->d3d11CurRTVs[0]), this->d3d11CurDSV); - - // set viewport to cover whole screen - this->applyViewPort(0, 0, this->rpAttrs.FramebufferWidth, this->rpAttrs.FramebufferHeight, true); - - // perform clear action - if (nullptr == this->curRenderPass) { - if (action->Flags & PassAction::ClearC0) { - if (this->d3d11CurRTVs[0]) { - this->d3d11DeviceContext->ClearRenderTargetView(this->d3d11CurRTVs[0], glm::value_ptr(action->Color[0])); - } - } - if (action->Flags & PassAction::ClearDS) { - if (this->d3d11CurDSV) { - const UINT f = D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL; - this->d3d11DeviceContext->ClearDepthStencilView(this->d3d11CurDSV, f, action->Depth, action->Stencil); - } - } - } - else { - for (int i = 0; i < this->numRTVs; i++) { - if (this->d3d11CurRTVs[i]) { - if (action->Flags & (PassAction::ClearC0<d3d11DeviceContext->ClearRenderTargetView(this->d3d11CurRTVs[i], glm::value_ptr(action->Color[i])); - } - } - else { - break; - } - } - if (this->d3d11CurDSV && (action->Flags & PassAction::ClearDS)) { - const UINT f = D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL; - this->d3d11DeviceContext->ClearDepthStencilView(this->d3d11CurDSV, f, action->Depth, action->Stencil); - } - } -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::endPass() { - o_assert_dbg(this->valid); - - const renderPass* rp = this->curRenderPass; - if (rp) { - const bool isMSAA = nullptr != rp->colorTextures[0]->d3d11MSAATexture2D; - if (isMSAA) { - // perform MSAA resolve on offscreen render targets - for (int i = 0; i < this->numRTVs; i++) { - texture* colorTex = rp->colorTextures[i]; - const auto& att = rp->Setup.ColorAttachments[i]; - o_assert_dbg(colorTex->d3d11MSAATexture2D && colorTex->d3d11Texture2D); - UINT subres = D3D11CalcSubresource(att.MipLevel, att.Slice, colorTex->textureAttrs.NumMipMaps); - this->d3d11DeviceContext->ResolveSubresource( - colorTex->d3d11Texture2D, // pDstResource - subres, // DstSubresource - colorTex->d3d11MSAATexture2D, // pSrcResource - subres, // SrcSubresource - colorTex->d3d11ColorFormat); - } - } - } - this->curRenderPass = nullptr; - this->rpValid = false; -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::applyViewPort(int x, int y, int width, int height, bool originTopLeft) { - o_assert_dbg(this->d3d11DeviceContext); - - D3D11_VIEWPORT vp; - vp.TopLeftX = (FLOAT) x; - vp.TopLeftY = (FLOAT) (originTopLeft ? y : (this->rpAttrs.FramebufferHeight - (y + height))); - vp.Width = (FLOAT) width; - vp.Height = (FLOAT) height; - vp.MinDepth = 0.0f; - vp.MaxDepth = 1.0f; - this->d3d11DeviceContext->RSSetViewports(1, &vp); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::applyScissorRect(int x, int y, int width, int height, bool originTopLeft) { - o_assert_dbg(this->d3d11DeviceContext); - - D3D11_RECT rect; - rect.left = x; - rect.top = originTopLeft ? y : this->rpAttrs.FramebufferHeight - (y + height); - rect.right = x + width; - rect.bottom = originTopLeft ? (y + height) : (this->rpAttrs.FramebufferHeight - y); - this->d3d11DeviceContext->RSSetScissorRects(1, &rect); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::applyDrawState(pipeline* pip, mesh** meshes, int numMeshes) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(pip); - o_assert_dbg(pip->shd); - o_assert_dbg(meshes && numMeshes > 0); - - // if any of the meshes are still loading, cancel the next draw state - for (int i = 0; i < numMeshes; i++) { - if (nullptr == meshes[i]) { - this->curPipeline = nullptr; - return; - } - } - o_assert_dbg(pip->d3d11DepthStencilState); - o_assert_dbg(pip->d3d11RasterizerState); - o_assert_dbg(pip->d3d11BlendState); - #if ORYOL_DEBUG - o_assert2(pip->Setup.BlendState.ColorFormat == this->rpAttrs.ColorPixelFormat, "ColorFormat in BlendState must match current render target!\n"); - o_assert2(pip->Setup.BlendState.DepthFormat == this->rpAttrs.DepthPixelFormat, "DepthFormat in BlendState must match current render target!\n"); - o_assert2(pip->Setup.RasterizerState.SampleCount == this->rpAttrs.SampleCount, "SampleCount in RasterizerState must match current render target!\n"); - if (this->curRenderPass) { - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - const texture* tex = this->curRenderPass->colorTextures[i]; - if (tex) { - o_assert2(pip->Setup.BlendState.ColorFormat == tex->textureAttrs.ColorFormat, "ColorFormat in BlendState must match MRT color attachments!\n"); - o_assert2(pip->Setup.RasterizerState.SampleCount == tex->textureAttrs.SampleCount, "SampleCount in RasterizerState must match MRT color attachments!\n"); - } - } - const texture* dsTex = this->curRenderPass->depthStencilTexture; - if (dsTex) { - o_assert2(pip->Setup.BlendState.DepthFormat == dsTex->textureAttrs.DepthFormat, "DepthFormat in BlendState must match depth/stencil attachment!\n"); - } - } - #endif - this->curPipeline = pip; - this->curPrimaryMesh = meshes[0]; - o_assert_dbg(this->curPrimaryMesh); - - // apply state objects (if state has changed) - if (pip->d3d11RasterizerState != this->d3d11CurRasterizerState) { - this->d3d11CurRasterizerState = pip->d3d11RasterizerState; - this->d3d11DeviceContext->RSSetState(pip->d3d11RasterizerState); - } - if ((pip->d3d11DepthStencilState != this->d3d11CurDepthStencilState) || - (pip->Setup.DepthStencilState.StencilRef != this->curStencilRef)) { - - this->d3d11CurDepthStencilState = pip->d3d11DepthStencilState; - this->curStencilRef = pip->Setup.DepthStencilState.StencilRef; - this->d3d11DeviceContext->OMSetDepthStencilState(pip->d3d11DepthStencilState, pip->Setup.DepthStencilState.StencilRef); - } - if ((pip->d3d11BlendState != this->d3d11CurBlendState) || - glm::any(glm::notEqual(pip->Setup.BlendColor, this->curBlendColor))) { - - this->d3d11CurBlendState = pip->d3d11BlendState; - this->curBlendColor = pip->Setup.BlendColor; - this->d3d11DeviceContext->OMSetBlendState(pip->d3d11BlendState, glm::value_ptr(pip->Setup.BlendColor), 0xFFFFFFFF); - } - - // apply vertex buffers - bool vbDirty = false; - for (int slotIndex = 0; slotIndex < GfxConfig::MaxNumInputMeshes; slotIndex++) { - const mesh* msh = slotIndex < numMeshes ? meshes[slotIndex] : nullptr; - if (msh) { - if (this->d3d11CurVBs[slotIndex] != msh->d3d11VertexBuffer) { - this->d3d11CurVBs[slotIndex] = msh->d3d11VertexBuffer; - vbDirty = true; - } - if (this->curVertexStrides[slotIndex] != msh->vertexBufferAttrs.Layout.ByteSize()) { - this->curVertexStrides[slotIndex] = msh->vertexBufferAttrs.Layout.ByteSize(); - vbDirty = true; - } - } - else if (this->d3d11CurVBs[slotIndex] != nullptr) { - vbDirty = true; - this->d3d11CurVBs[slotIndex] = nullptr; - this->curVertexStrides[slotIndex] = 0; - } - } - if (vbDirty) { - this->d3d11DeviceContext->IASetVertexBuffers( - 0, // StartSlot - GfxConfig::MaxNumInputMeshes, // NumBuffers - &(this->d3d11CurVBs[0]), // ppVertexBuffers - &(this->curVertexStrides[0]), // pStrides - &(this->curVertexOffsets[0])); // pOffsets - } - if (this->d3d11CurPrimitiveTopology != pip->d3d11PrimTopology) { - this->d3d11CurPrimitiveTopology = pip->d3d11PrimTopology; - this->d3d11DeviceContext->IASetPrimitiveTopology(pip->d3d11PrimTopology); - } - - // apply optional index buffer (can be nullptr!) - if (this->d3d11CurIndexBuffer != this->curPrimaryMesh->d3d11IndexBuffer) { - this->d3d11CurIndexBuffer = this->curPrimaryMesh->d3d11IndexBuffer; - DXGI_FORMAT d3d11IndexFormat = d3d11Types::asIndexType(this->curPrimaryMesh->indexBufferAttrs.Type); - this->d3d11DeviceContext->IASetIndexBuffer(this->curPrimaryMesh->d3d11IndexBuffer, d3d11IndexFormat, 0); - } - - // apply input layout and shaders - if (this->d3d11CurInputLayout != pip->d3d11InputLayout) { - this->d3d11CurInputLayout = pip->d3d11InputLayout; - this->d3d11DeviceContext->IASetInputLayout(pip->d3d11InputLayout); - } - - // apply shaders - if (this->d3d11CurVertexShader != pip->shd->d3d11VertexShader) { - this->d3d11CurVertexShader = pip->shd->d3d11VertexShader; - this->d3d11DeviceContext->VSSetShader(pip->shd->d3d11VertexShader, NULL, 0); - } - if (this->d3d11CurPixelShader != pip->shd->d3d11PixelShader) { - this->d3d11CurPixelShader = pip->shd->d3d11PixelShader; - this->d3d11DeviceContext->PSSetShader(pip->shd->d3d11PixelShader, NULL, 0); - } - - // apply vertex-shader-stage constant buffers - for (int bindSlot = 0; bindSlot < GfxConfig::MaxNumUniformBlocksPerStage; bindSlot++) { - // NOTE: cb can be nullptr! - ID3D11Buffer* cb = pip->shd->getConstantBuffer(ShaderStage::VS, bindSlot); - if (this->d3d11CurVSCBs[bindSlot] != cb) { - this->d3d11CurVSCBs[bindSlot] = cb; - this->d3d11DeviceContext->VSSetConstantBuffers(bindSlot, 1, &cb); - } - } - - // apply fragment-shader-stage constant buffers - for (int bindSlot = 0; bindSlot < GfxConfig::MaxNumUniformBlocksPerStage; bindSlot++) { - // NOTE: cb can be nullptr! - ID3D11Buffer* cb = pip->shd->getConstantBuffer(ShaderStage::FS, bindSlot); - if (this->d3d11CurPSCBs[bindSlot] != cb) { - this->d3d11CurPSCBs[bindSlot] = cb; - this->d3d11DeviceContext->PSSetConstantBuffers(bindSlot, 1, &cb); - } - } -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t typeHash, const uint8_t* ptr, int byteSize) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(0 != typeHash); - if (nullptr == this->curPipeline) { - // currently no valid draw state set - return; - } - - const shader* shd = this->curPipeline->shd; - o_assert_dbg(shd); - - #if ORYOL_DEBUG - // check whether the provided struct is type-compatible with the - // expected uniform-block-layout, the size-check shouldn't be necessary - // since the hash should already bail out, but it doesn't hurt either - int ubIndex = shd->Setup.UniformBlockIndexByStageAndSlot(bindStage, bindSlot); - o_assert(InvalidIndex != ubIndex); - const uint32_t ubTypeHash = shd->Setup.UniformBlockTypeHash(ubIndex); - const int ubByteSize = shd->Setup.UniformBlockByteSize(ubIndex); - o_assert(ubTypeHash == typeHash); - o_assert(ubByteSize >= byteSize); - #endif - - // NOTE: UpdateSubresource() and map-discard are equivalent (at least on nvidia) - ID3D11Buffer* cb = shd->getConstantBuffer(bindStage, bindSlot); - o_assert_dbg(cb); - this->d3d11DeviceContext->UpdateSubresource(cb, 0, nullptr, ptr, 0, 0); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::applyTextures(ShaderStage::Code bindStage, texture** textures, int numTextures) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(this->valid); - if (nullptr == this->curPipeline) { - return; - } - - // if any of the provided texture pointers are not valid, this means one of the - // textures isn't valid yet, in this case, disable rendering for the next draw call - for (int i = 0; i < numTextures; i++) { - if (nullptr == textures[i]) { - this->curPipeline = nullptr; - return; - } - } - - // apply textures and samplers - if (ShaderStage::VS == bindStage) { - o_assert_dbg(numTextures <= GfxConfig::MaxNumVertexTextures); - for (int i = 0; i < numTextures; i++) { - if (textures[i]->d3d11ShaderResourceView != this->d3d11CurVSSRVs[i]) { - this->d3d11CurVSSRVs[i] = textures[i]->d3d11ShaderResourceView; - this->d3d11DeviceContext->VSSetShaderResources(i, 1, &(textures[i]->d3d11ShaderResourceView)); - } - if (textures[i]->d3d11SamplerState != this->d3d11CurVSSamplers[i]) { - this->d3d11CurVSSamplers[i] = textures[i]->d3d11SamplerState; - this->d3d11DeviceContext->VSSetSamplers(i, 1, &(textures[i]->d3d11SamplerState)); - } - } - } - else { - o_assert_dbg(numTextures <= GfxConfig::MaxNumFragmentTextures); - for (int i = 0; i < numTextures; i++) { - if (textures[i]->d3d11ShaderResourceView != this->d3d11CurPSSRVs[i]) { - this->d3d11CurPSSRVs[i] = textures[i]->d3d11ShaderResourceView; - this->d3d11DeviceContext->PSSetShaderResources(i, 1, &(textures[i]->d3d11ShaderResourceView)); - } - if (textures[i]->d3d11SamplerState != this->d3d11CurPSSamplers[i]) { - this->d3d11CurPSSamplers[i] = textures[i]->d3d11SamplerState; - this->d3d11DeviceContext->PSSetSamplers(i, 1, &(textures[i]->d3d11SamplerState)); - } - } - } -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::draw(int baseElementIndex, int numElements, int numInstances) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(numInstances >= 1); - o_assert2_dbg(this->rpValid, "No render target set!\n"); - if (nullptr == this->curPipeline) { - return; - } - const mesh* msh = this->curPrimaryMesh; - o_assert_dbg(msh); - const IndexType::Code indexType = msh->indexBufferAttrs.Type; - if (indexType != IndexType::None) { - if (numInstances == 1) { - this->d3d11DeviceContext->DrawIndexed(numElements, baseElementIndex, 0); - } - else { - this->d3d11DeviceContext->DrawIndexedInstanced(numElements, numInstances, baseElementIndex, 0, 0); - } - } - else { - if (numInstances == 1) { - this->d3d11DeviceContext->Draw(numElements, baseElementIndex); - } - else { - this->d3d11DeviceContext->DrawInstanced(numElements, numInstances, baseElementIndex, 0); - } - } -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::draw(int primGroupIndex, int numInstances) { - o_assert_dbg(this->valid); - if (nullptr == this->curPipeline) { - return; - } - const mesh* msh = this->curPrimaryMesh; - o_assert_dbg(msh); - if (primGroupIndex >= msh->numPrimGroups) { - // this may happen if trying to render a placeholder which doesn't - // have as many materials as the original mesh, anyway, this isn't - // a serious error - return; - } - const PrimitiveGroup& primGroup = msh->primGroups[primGroupIndex]; - this->draw(primGroup.BaseElement, primGroup.NumElements, numInstances); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::updateVertices(mesh* msh, const void* data, int numBytes) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(nullptr != msh); - o_assert_dbg(msh->d3d11VertexBuffer); - o_assert_dbg(numBytes > 0); - - o_assert_dbg((numBytes > 0) && (numBytes <= msh->vertexBufferAttrs.ByteSize())); - o_assert_dbg(Usage::Immutable != msh->vertexBufferAttrs.BufferUsage); - - o_assert2(msh->vbUpdateFrameIndex != this->frameIndex, "Only one data update allowed per buffer and frame!\n"); - msh->vbUpdateFrameIndex = this->frameIndex; - - D3D11_MAPPED_SUBRESOURCE mapped; - HRESULT hr = this->d3d11DeviceContext->Map(msh->d3d11VertexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped); - o_assert_dbg(SUCCEEDED(hr)); - std::memcpy(mapped.pData, data, numBytes); - this->d3d11DeviceContext->Unmap(msh->d3d11VertexBuffer, 0); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::updateIndices(mesh* msh, const void* data, int numBytes) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(nullptr != msh); - o_assert_dbg(msh->d3d11IndexBuffer); - o_assert_dbg(numBytes > 0); - - o_assert_dbg((numBytes > 0) && (numBytes <= msh->indexBufferAttrs.ByteSize())); - o_assert_dbg(Usage::Immutable != msh->indexBufferAttrs.BufferUsage); - - o_assert2(msh->ibUpdateFrameIndex != this->frameIndex, "Only one data update allowed per buffer and frame!\n"); - msh->ibUpdateFrameIndex = this->frameIndex; - - D3D11_MAPPED_SUBRESOURCE mapped; - HRESULT hr = this->d3d11DeviceContext->Map(msh->d3d11IndexBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mapped); - o_assert_dbg(SUCCEEDED(hr)); - std::memcpy(mapped.pData, data, numBytes); - this->d3d11DeviceContext->Unmap(msh->d3d11IndexBuffer, 0); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::updateTexture(texture* tex, const void* data, const ImageDataAttrs& offsetsAndSizes) { - o_assert_dbg(this->d3d11DeviceContext); - o_assert_dbg(tex); - o_assert_dbg(data); - o_assert_dbg(tex->d3d11Texture2D); - - // only accept 2D textures for now - const TextureAttrs& attrs = tex->textureAttrs; - o_assert_dbg(TextureType::Texture2D == attrs.Type); - o_assert_dbg(Usage::Immutable != attrs.TextureUsage); - o_assert_dbg(!PixelFormat::IsCompressedFormat(attrs.ColorFormat)); - o_assert_dbg(offsetsAndSizes.NumMipMaps == attrs.NumMipMaps); - o_assert_dbg(offsetsAndSizes.NumFaces == 1); - - D3D11_MAPPED_SUBRESOURCE mapped; - for (int mipIndex = 0; mipIndex < attrs.NumMipMaps; mipIndex++) { - o_assert_dbg(offsetsAndSizes.Sizes[0][mipIndex] > 0); - const int mipWidth = std::max(attrs.Width >> mipIndex, 1); - const int mipHeight = std::max(attrs.Height >> mipIndex, 1); - const int srcPitch = PixelFormat::RowPitch(attrs.ColorFormat, mipWidth); - HRESULT hr = this->d3d11DeviceContext->Map( - tex->d3d11Texture2D, // pResource - mipIndex, // Subresource - D3D11_MAP_WRITE_DISCARD, // MapType - 0, // MapFlags - &mapped); // pMappedResource - o_assert_dbg(SUCCEEDED(hr)); - o_assert_dbg(srcPitch <= (int)mapped.RowPitch); - uint8_t* dstPtr = (uint8_t*)mapped.pData; - const uint8_t* srcPtr = ((const uint8_t*)data) + offsetsAndSizes.Offsets[0][mipIndex]; - if (srcPitch == mapped.RowPitch) { - const int mipSize = offsetsAndSizes.Sizes[0][mipIndex]; - o_assert_dbg(mipSize <= (srcPitch*mipHeight)); - std::memcpy(dstPtr, srcPtr, mipSize); - } - else { - o_error("d3dRenderer::updateTexture(): srcPitch!=dstPitch, FIXME UNTESTED!\n"); - for (int rowIndex = 0; rowIndex < mipHeight; rowIndex++) { - std::memcpy(dstPtr, srcPtr, srcPitch); - dstPtr += mapped.RowPitch; - srcPtr += srcPitch; - } - } - this->d3d11DeviceContext->Unmap(tex->d3d11Texture2D, mipIndex); - } -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::invalidateMeshState() { - o_assert_dbg(this->d3d11DeviceContext); - - Log::Info("d3d11Renderer::invalidateMeshState()\n"); - - this->d3d11CurIndexBuffer = nullptr; - this->d3d11CurInputLayout = nullptr; - this->d3d11CurVBs.Fill(nullptr); - this->curVertexStrides.Fill(0); - this->curVertexOffsets.Fill(0); - this->d3d11CurPrimitiveTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED; - this->d3d11DeviceContext->IASetInputLayout(nullptr); - this->d3d11DeviceContext->IASetIndexBuffer(nullptr, DXGI_FORMAT_UNKNOWN, 0); - this->d3d11DeviceContext->IASetVertexBuffers( - 0, - this->d3d11CurVBs.Size(), - &(this->d3d11CurVBs[0]), - &(this->curVertexStrides[0]), - &(this->curVertexOffsets[0])); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::invalidateShaderState() { - o_assert_dbg(this->d3d11DeviceContext); - - Log::Info("d3d11Renderer::invalidateProgramState()\n"); - - this->d3d11CurVertexShader = nullptr; - this->d3d11CurPixelShader = nullptr; - this->d3d11CurVSCBs.Fill(nullptr); - this->d3d11CurPSCBs.Fill(nullptr); - this->d3d11DeviceContext->VSSetShader(nullptr, nullptr, 0); - this->d3d11DeviceContext->PSSetShader(nullptr, nullptr, 0); - this->d3d11DeviceContext->VSSetConstantBuffers(0, GfxConfig::MaxNumUniformBlocksPerStage, &this->d3d11CurVSCBs[0]); - this->d3d11DeviceContext->PSSetConstantBuffers(0, GfxConfig::MaxNumUniformBlocksPerStage, &this->d3d11CurPSCBs[0]); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::invalidatePipeline() { - o_assert_dbg(this->d3d11DeviceContext); - - Log::Info("d3d11Renderer::invalidatePipeline()\n"); - - this->d3d11CurBlendState = nullptr; - this->d3d11CurDepthStencilState = nullptr; - this->d3d11CurRasterizerState = nullptr; - this->d3d11DeviceContext->OMSetBlendState(nullptr, glm::value_ptr(this->curBlendColor), 0xFFFFFFFF); - this->d3d11DeviceContext->OMSetDepthStencilState(nullptr, 0xFF); - this->d3d11DeviceContext->RSSetState(nullptr); -} - -//------------------------------------------------------------------------------ -void -d3d11Renderer::invalidateTextureState() { - o_assert_dbg(this->d3d11DeviceContext); - - ID3D11ShaderResourceView* const nullVSSRVs[GfxConfig::MaxNumVertexTextures] = { 0 }; - ID3D11ShaderResourceView* const nullFSSRVs[GfxConfig::MaxNumFragmentTextures] = { 0 }; - this->d3d11DeviceContext->VSSetShaderResources(0, GfxConfig::MaxNumVertexTextures, nullVSSRVs); - this->d3d11DeviceContext->PSSetShaderResources(0, GfxConfig::MaxNumFragmentTextures, nullFSSRVs); - - ID3D11SamplerState* const nullVSSamplers[GfxConfig::MaxNumVertexTextures] = { 0 }; - ID3D11SamplerState* const nullFSSamplers[GfxConfig::MaxNumFragmentTextures] = { 0 }; - this->d3d11DeviceContext->VSSetSamplers(0, GfxConfig::MaxNumVertexTextures, nullVSSamplers); - this->d3d11DeviceContext->PSSetSamplers(0, GfxConfig::MaxNumFragmentTextures, nullFSSamplers); - - this->d3d11CurVSSRVs.Fill(nullptr); - this->d3d11CurPSSRVs.Fill(nullptr); - this->d3d11CurVSSamplers.Fill(nullptr); - this->d3d11CurPSSamplers.Fill(nullptr); -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/d3d11/d3d11Renderer.h b/code/Modules/Gfx/private/d3d11/d3d11Renderer.h deleted file mode 100644 index 3388faf10..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Renderer.h +++ /dev/null @@ -1,123 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Renderer - @ingroup _priv - @brief D3D11 implementation of renderer -*/ -#include "Core/Types.h" -#include "Core/Containers/StaticArray.h" -#include "Gfx/GfxTypes.h" -#include -#include "Gfx/private/d3d11/d3d11_decl.h" -#include "Gfx/private/gfxPointers.h" - -namespace Oryol { -namespace _priv { - -class texture; -class pipeline; -class mesh; -class textureBlock; -class renderPass; - -class d3d11Renderer { -public: - /// constructor - d3d11Renderer(); - /// destructor - ~d3d11Renderer(); - - /// setup the renderer - void setup(const GfxSetup& setup, const gfxPointers& ptrs); - /// discard the renderer - void discard(); - /// return true if renderer has been setup - bool isValid() const; - - /// reset the internal state cache - void resetStateCache(); - /// test if a feature is supported - bool queryFeature(GfxFeature::Code feat) const; - /// commit current frame - void commitFrame(); - /// get the current render pass attributes - const DisplayAttrs& renderPassAttrs() const; - - /// begin rendering pass (both ptrs can be nullptr) - void beginPass(renderPass* pass, const PassAction* action); - /// end current rendering pass - void endPass(); - /// apply viewport - void applyViewPort(int x, int y, int width, int height, bool originTopLeft); - /// apply scissor rect - void applyScissorRect(int x, int y, int width, int height, bool originTopLeft); - /// apply draw state - void applyDrawState(pipeline* pip, mesh** meshes, int numMeshes); - /// apply a shader uniform block - void applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t layoutHash, const uint8_t* ptr, int byteSize); - /// apply a textures - void applyTextures(ShaderStage::Code bindStage, texture** textures, int numTextures); - /// submit a draw call with primitive group index in current mesh - void draw(int primGroupIndex, int numInstances); - /// submit a draw call with element range - void draw(int baseElementIndex, int numElements, int numInstances); - /// update vertex data - void updateVertices(mesh* msh, const void* data, int numBytes); - /// update index data - void updateIndices(mesh* msh, const void* data, int numBytes); - /// update texture data - void updateTexture(texture* tex, const void* data, const ImageDataAttrs& offsetsAndSizes); - - /// invalidate currently bound mesh state - void invalidateMeshState(); - /// invalidate currently bound shader program state - void invalidateShaderState(); - /// invalidate currently bound draw state - void invalidatePipeline(); - /// invalidate currently bound texture state - void invalidateTextureState(); - - /// pointer to d3d11 device - ID3D11Device* d3d11Device; - /// pointer to immediate mode device context - ID3D11DeviceContext* d3d11DeviceContext; - - bool valid; - bool rpValid; - int frameIndex; - GfxSetup gfxSetup; - gfxPointers pointers; - DisplayAttrs rpAttrs; - - renderPass* curRenderPass; - pipeline* curPipeline; - mesh* curPrimaryMesh; - - int numRTVs; - StaticArray d3d11CurRTVs; - ID3D11DepthStencilView* d3d11CurDSV; - ID3D11RasterizerState* d3d11CurRasterizerState; - ID3D11DepthStencilState* d3d11CurDepthStencilState; - ID3D11BlendState* d3d11CurBlendState; - ID3D11Buffer* d3d11CurIndexBuffer; - ID3D11InputLayout* d3d11CurInputLayout; - ID3D11VertexShader* d3d11CurVertexShader; - ID3D11PixelShader* d3d11CurPixelShader; - D3D_PRIMITIVE_TOPOLOGY d3d11CurPrimitiveTopology; - StaticArray d3d11CurVSCBs; - StaticArray d3d11CurPSCBs; - StaticArray d3d11CurVBs; - StaticArray curVertexStrides; - StaticArray curVertexOffsets; - StaticArray d3d11CurVSSRVs; - StaticArray d3d11CurPSSRVs; - StaticArray d3d11CurVSSamplers; - StaticArray d3d11CurPSSamplers; - - uint16_t curStencilRef; - glm::vec4 curBlendColor; -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/d3d11/d3d11Resource.cc b/code/Modules/Gfx/private/d3d11/d3d11Resource.cc deleted file mode 100644 index 28a4624b8..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Resource.cc +++ /dev/null @@ -1,144 +0,0 @@ -//------------------------------------------------------------------------------ -// d3d11Resource.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "d3d11Resource.h" -#include "d3d11_impl.h" - -namespace Oryol { -namespace _priv { - -//============================================================================== -d3d11Mesh::~d3d11Mesh() { - o_assert_dbg(nullptr == this->d3d11VertexBuffer); - o_assert_dbg(nullptr == this->d3d11IndexBuffer); -} - -//------------------------------------------------------------------------------ -void - d3d11Mesh::Clear() { - this->d3d11VertexBuffer = nullptr; - this->d3d11IndexBuffer = nullptr; - this->vbUpdateFrameIndex = -1; - this->ibUpdateFrameIndex = -1; - meshBase::Clear(); -} - -//============================================================================== -d3d11Pipeline::d3d11Pipeline() : - d3d11InputLayout(nullptr), - d3d11PrimTopology(D3D_PRIMITIVE_TOPOLOGY_UNDEFINED), - d3d11RasterizerState(nullptr), - d3d11DepthStencilState(nullptr), - d3d11BlendState(nullptr) { - // empty -} - -//------------------------------------------------------------------------------ -d3d11Pipeline::~d3d11Pipeline() { -#if ORYOL_DEBUG - o_assert_dbg(nullptr == this->d3d11InputLayout); - o_assert_dbg(nullptr == this->d3d11RasterizerState); - o_assert_dbg(nullptr == this->d3d11DepthStencilState); - o_assert_dbg(nullptr == this->d3d11BlendState); -#endif -} - -//------------------------------------------------------------------------------ -void -d3d11Pipeline::Clear() { - this->d3d11InputLayout = nullptr; - this->d3d11PrimTopology = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED; - this->d3d11RasterizerState = nullptr; - this->d3d11DepthStencilState = nullptr; - this->d3d11BlendState = nullptr; - pipelineBase::Clear(); -} - -//============================================================================== -d3d11Shader::d3d11Shader() { - this->Clear(); -} - -//------------------------------------------------------------------------------ -d3d11Shader::~d3d11Shader() { -#if ORYOL_DEBUG - o_assert_dbg(nullptr == this->d3d11VertexShader); - o_assert_dbg(nullptr == this->d3d11PixelShader); - for (auto cb : this->constantBuffers) { - o_assert_dbg(nullptr == cb); - } -#endif -} - -//------------------------------------------------------------------------------ -void -d3d11Shader::Clear() { - this->d3d11VertexShader = nullptr; - this->d3d11PixelShader = nullptr; - this->constantBuffers.Fill(nullptr); - shaderBase::Clear(); -} - -//------------------------------------------------------------------------------ -void -d3d11Shader::addUniformBlockEntry(ShaderStage::Code bindStage, int bindSlot, ID3D11Buffer* cb) { - o_assert_dbg(cb); - const int cbIndex = (GfxConfig::MaxNumUniformBlocksPerStage * bindStage) + bindSlot; - this->constantBuffers[cbIndex] = cb; -} - -//------------------------------------------------------------------------------ -ID3D11Buffer* -d3d11Shader::getConstantBuffer(ShaderStage::Code bindStage, int bindSlot) const { - const int cbIndex = (GfxConfig::MaxNumUniformBlocksPerStage * bindStage) + bindSlot; - return this->constantBuffers[cbIndex]; -} - -//============================================================================== -d3d11Texture::~d3d11Texture() { - o_assert_dbg(nullptr == this->d3d11Texture2D); - o_assert_dbg(nullptr == this->d3d11ShaderResourceView); - o_assert_dbg(nullptr == this->d3d11SamplerState); - o_assert_dbg(nullptr == this->d3d11DepthStencilTexture); - o_assert_dbg(nullptr == this->d3d11MSAATexture2D); - o_assert_dbg(DXGI_FORMAT_UNKNOWN == this->d3d11ColorFormat); -} - -//------------------------------------------------------------------------------ -void -d3d11Texture::Clear() { - textureBase::Clear(); - this->d3d11Texture2D = nullptr; - this->d3d11ShaderResourceView = nullptr; - this->d3d11SamplerState = nullptr; - this->d3d11DepthStencilTexture = nullptr; - this->d3d11MSAATexture2D = nullptr; - this->d3d11ColorFormat = DXGI_FORMAT_UNKNOWN; -} - -//============================================================================== -d3d11RenderPass::d3d11RenderPass() { - this->d3d11RenderTargetViews.Fill(nullptr); -} - -//------------------------------------------------------------------------------ -d3d11RenderPass::~d3d11RenderPass() { - #if ORYOL_DEBUG - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - o_assert(nullptr == this->d3d11RenderTargetViews[i]); - } - o_assert(nullptr == this->d3d11DepthStencilView); - #endif -} - -//------------------------------------------------------------------------------ -void -d3d11RenderPass::Clear() { - renderPassBase::Clear(); - this->d3d11RenderTargetViews.Fill(nullptr); - this->d3d11DepthStencilView = nullptr; -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/d3d11/d3d11Resource.h b/code/Modules/Gfx/private/d3d11/d3d11Resource.h deleted file mode 100644 index ccc0b61f2..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Resource.h +++ /dev/null @@ -1,142 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -#include "Gfx/private/resourceBase.h" -#include "Gfx/GfxConfig.h" -#include "Core/Containers/StaticArray.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/d3d11/d3d11_decl.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Mesh - @ingroup _priv - @brief D3D11 implementation of mesh -*/ -class d3d11Mesh : public meshBase { -public: - /// destructor - ~d3d11Mesh(); - - /// clear the object (called from meshFactory::DestroyResource()) - void Clear(); - - ID3D11Buffer* d3d11VertexBuffer = nullptr; - ID3D11Buffer* d3d11IndexBuffer = nullptr; - int vbUpdateFrameIndex = -1; - int ibUpdateFrameIndex = -1; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Pipeline - @ingroup _priv - @brief D3D11 implementation of pipeline -*/ -class d3d11Pipeline : public pipelineBase { -public: - /// constructor - d3d11Pipeline(); - /// destructor - ~d3d11Pipeline(); - - /// clear the object (called from pipelineFactory::DestroyResource()) - void Clear(); - - /// pointer to input layout object - ID3D11InputLayout* d3d11InputLayout; - /// rasterize state object - ID3D11RasterizerState* d3d11RasterizerState; - /// primitive topology - D3D_PRIMITIVE_TOPOLOGY d3d11PrimTopology; - /// depth-stencil state object - ID3D11DepthStencilState* d3d11DepthStencilState; - /// blend state object - ID3D11BlendState* d3d11BlendState; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Shader - @ingroup _priv - @brief D3D11 implementation of shader -*/ -class d3d11Shader : public shaderBase { -public: - /// constructor - d3d11Shader(); - /// destructor - ~d3d11Shader(); - - /// clear the object - void Clear(); - - /// the D3D11 vertex shader - ID3D11VertexShader* d3d11VertexShader; - /// the D3D1 pixel shader - ID3D11PixelShader* d3d11PixelShader; - /// add a uniform block entry - void addUniformBlockEntry(ShaderStage::Code bindStage, int bindSlot, ID3D11Buffer* cb); - /// get uniform block constant buffer at bind stage and slot (can return nullptr) - ID3D11Buffer* getConstantBuffer(ShaderStage::Code bindStage, int bindSlot) const; - - static const int NumConstantBuffers = ShaderStage::NumShaderStages * GfxConfig::MaxNumUniformBlocksPerStage; - StaticArray constantBuffers; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Texture - @ingroup _priv - @brief D3D11 implementation of texture -*/ -class d3d11Texture : public textureBase { -public: - /// destructor - ~d3d11Texture(); - - /// clear the object - void Clear(); - - /// d3d11 2D texture object - ID3D11Texture2D* d3d11Texture2D = nullptr; - /// d3d11 3D texture object - ID3D11Texture3D* d3d11Texture3D = nullptr; - /// d3d11 shader resource view object - ID3D11ShaderResourceView* d3d11ShaderResourceView = nullptr; - /// d3d11 sampler state object - ID3D11SamplerState* d3d11SamplerState = nullptr; - /// d3d11 depth-stencil texture (if render target with depth buffer) - ID3D11Texture2D* d3d11DepthStencilTexture = nullptr; - /// d3d11 MSAA texture (optional) - ID3D11Texture2D* d3d11MSAATexture2D = nullptr; - /// d3d11 color texture format - DXGI_FORMAT d3d11ColorFormat = (DXGI_FORMAT) 0; // DXGI_FORMAT_UNKNOWN -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11RenderPass - @ingroup _priv - @brief D3D11 implementation of renderPass -*/ -class d3d11RenderPass : public renderPassBase { -public: - /// constructor - d3d11RenderPass(); - /// destructor - ~d3d11RenderPass(); - - /// clear the object - void Clear(); - - /// the d3d11 render-target-view objects - StaticArray d3d11RenderTargetViews; - /// the optional depth-stencil view object - ID3D11DepthStencilView* d3d11DepthStencilView = nullptr; -}; - -} // namespace Oryol -} // namespace _priv diff --git a/code/Modules/Gfx/private/d3d11/d3d11Types.cc b/code/Modules/Gfx/private/d3d11/d3d11Types.cc deleted file mode 100644 index 5f0634722..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Types.cc +++ /dev/null @@ -1,305 +0,0 @@ -//------------------------------------------------------------------------------ -// d3d11Types.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "d3d11Types.h" -#include "d3d11_impl.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -DXGI_FORMAT -d3d11Types::asSwapChainFormat(PixelFormat::Code pf) { - switch (pf) { - case PixelFormat::RGBA8: - return DXGI_FORMAT_R8G8B8A8_UNORM; - default: - o_error("d3d11Types::asSwapChainFormat: not a valid D3D11 display pixel format\n"); - return DXGI_FORMAT_UNKNOWN; - } -} - -//------------------------------------------------------------------------------ -DXGI_FORMAT -d3d11Types::asRenderTargetFormat(PixelFormat::Code pf) { - switch (pf) { - case PixelFormat::RGBA8: return DXGI_FORMAT_R8G8B8A8_UNORM; - case PixelFormat::RGBA32F: return DXGI_FORMAT_R32G32B32A32_FLOAT; - case PixelFormat::RGBA16F: return DXGI_FORMAT_R16G16B16A16_FLOAT; - case PixelFormat::R10G10B10A2: return DXGI_FORMAT_R10G10B10A2_UNORM; - case PixelFormat::DEPTH: return DXGI_FORMAT_D16_UNORM; - case PixelFormat::DEPTHSTENCIL: return DXGI_FORMAT_D24_UNORM_S8_UINT; - default: - o_error("d3d11Types::asRenderTargetFormat(): invalid pixel format!\n"); - return DXGI_FORMAT_UNKNOWN; - } -} - -//------------------------------------------------------------------------------ -DXGI_FORMAT -d3d11Types::asTextureFormat(PixelFormat::Code pf) { - switch(pf) { - case PixelFormat::RGBA8: return DXGI_FORMAT_R8G8B8A8_UNORM; - case PixelFormat::RGBA4: return DXGI_FORMAT_B4G4R4A4_UNORM; - case PixelFormat::R5G6B5: return DXGI_FORMAT_B5G6R5_UNORM; - case PixelFormat::R5G5B5A1: return DXGI_FORMAT_B5G5R5A1_UNORM; - case PixelFormat::RGBA32F: return DXGI_FORMAT_R32G32B32A32_FLOAT; - case PixelFormat::RGBA16F: return DXGI_FORMAT_R16G16B16A16_FLOAT; - case PixelFormat::R10G10B10A2: return DXGI_FORMAT_R10G10B10A2_UNORM; - case PixelFormat::L8: return DXGI_FORMAT_R8_UNORM; - case PixelFormat::DXT1: return DXGI_FORMAT_BC1_UNORM; - case PixelFormat::DXT3: return DXGI_FORMAT_BC2_UNORM; - case PixelFormat::DXT5: return DXGI_FORMAT_BC3_UNORM; - case PixelFormat::DEPTH: return DXGI_FORMAT_D16_UNORM; - case PixelFormat::DEPTHSTENCIL: return DXGI_FORMAT_D24_UNORM_S8_UINT; - default: - return DXGI_FORMAT_UNKNOWN; - } -} - -//------------------------------------------------------------------------------ -D3D11_USAGE -d3d11Types::asResourceUsage(Usage::Code usage) { - switch (usage) { - case Usage::Immutable: return D3D11_USAGE_IMMUTABLE; - case Usage::Dynamic: return D3D11_USAGE_DYNAMIC; - case Usage::Stream: return D3D11_USAGE_DYNAMIC; - default: - o_error("invalid usage\n"); - return D3D11_USAGE_IMMUTABLE; - } -} - -//------------------------------------------------------------------------------ -uint32_t -d3d11Types::asResourceCPUAccessFlag(Usage::Code usage) { - switch (usage) { - case Usage::Immutable: return 0; - case Usage::Dynamic: return D3D11_CPU_ACCESS_WRITE; - case Usage::Stream: return D3D11_CPU_ACCESS_WRITE; - default: - o_error("invalid usage\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -const char* -d3d11Types::asSemanticName(VertexAttr::Code attr) { - // not a bug, SPIRV-Cross uses TEXCOORD as universal semantic name - return "TEXCOORD"; -} - -//------------------------------------------------------------------------------ -uint32_t -d3d11Types::asSemanticIndex(VertexAttr::Code attr) { - // not a bug, see oryol-shdc tool - return (uint32_t) attr; -} - -//------------------------------------------------------------------------------ -DXGI_FORMAT -d3d11Types::asInputElementFormat(VertexFormat::Code fmt) { - switch (fmt) { - case VertexFormat::Short2: return DXGI_FORMAT_R16G16_SINT; - case VertexFormat::Float: return DXGI_FORMAT_R32_FLOAT; - case VertexFormat::Float2: return DXGI_FORMAT_R32G32_FLOAT; - case VertexFormat::Float3: return DXGI_FORMAT_R32G32B32_FLOAT; - case VertexFormat::Float4: return DXGI_FORMAT_R32G32B32A32_FLOAT; - case VertexFormat::Byte4: return DXGI_FORMAT_R8G8B8A8_SINT; - case VertexFormat::Byte4N: return DXGI_FORMAT_R8G8B8A8_SNORM; - case VertexFormat::UByte4: return DXGI_FORMAT_R8G8B8A8_UINT; - case VertexFormat::UByte4N: return DXGI_FORMAT_R8G8B8A8_UNORM; - case VertexFormat::Short2N: return DXGI_FORMAT_R16G16_SNORM; - case VertexFormat::Short4: return DXGI_FORMAT_R16G16B16A16_SINT; - case VertexFormat::Short4N: return DXGI_FORMAT_R16G16B16A16_SNORM; - default: - o_error("d3d11Types::asInputElementFormat: invalid vertex format!\n"); - return DXGI_FORMAT_UNKNOWN; - } -} - -//------------------------------------------------------------------------------ -D3D11_CULL_MODE -d3d11Types::asCullMode(bool cullEnabled, Face::Code face) { - if (cullEnabled) { - if (Face::Front == face) { - return D3D11_CULL_FRONT; - } - else { - return D3D11_CULL_BACK; - } - } - else { - return D3D11_CULL_NONE; - } -} - -//------------------------------------------------------------------------------ -D3D11_COMPARISON_FUNC -d3d11Types::asComparisonFunc(CompareFunc::Code func) { - switch (func) { - case CompareFunc::Never: return D3D11_COMPARISON_NEVER; - case CompareFunc::Less: return D3D11_COMPARISON_LESS; - case CompareFunc::Equal: return D3D11_COMPARISON_EQUAL; - case CompareFunc::LessEqual: return D3D11_COMPARISON_LESS_EQUAL; - case CompareFunc::Greater: return D3D11_COMPARISON_GREATER; - case CompareFunc::NotEqual: return D3D11_COMPARISON_NOT_EQUAL; - case CompareFunc::GreaterEqual: return D3D11_COMPARISON_GREATER_EQUAL; - default: return D3D11_COMPARISON_ALWAYS; - } -} - -//------------------------------------------------------------------------------ -D3D11_STENCIL_OP -d3d11Types::asStencilOp(StencilOp::Code op) { - switch (op) { - case StencilOp::Keep: return D3D11_STENCIL_OP_KEEP; - case StencilOp::Zero: return D3D11_STENCIL_OP_ZERO; - case StencilOp::Replace: return D3D11_STENCIL_OP_REPLACE; - case StencilOp::IncrClamp: return D3D11_STENCIL_OP_INCR_SAT; - case StencilOp::DecrClamp: return D3D11_STENCIL_OP_DECR_SAT; - case StencilOp::Invert: return D3D11_STENCIL_OP_INVERT; - case StencilOp::IncrWrap: return D3D11_STENCIL_OP_INCR; - default: return D3D11_STENCIL_OP_DECR; - } -} - -//------------------------------------------------------------------------------ -D3D11_BLEND -d3d11Types::asBlendFactor(BlendFactor::Code b) { - switch (b) { - case BlendFactor::Zero: return D3D11_BLEND_ZERO; - case BlendFactor::One: return D3D11_BLEND_ONE; - case BlendFactor::SrcColor: return D3D11_BLEND_SRC_COLOR; - case BlendFactor::OneMinusSrcColor: return D3D11_BLEND_INV_SRC_COLOR; - case BlendFactor::SrcAlpha: return D3D11_BLEND_SRC_ALPHA; - case BlendFactor::OneMinusSrcAlpha: return D3D11_BLEND_INV_SRC_ALPHA; - case BlendFactor::DstColor: return D3D11_BLEND_DEST_COLOR; - case BlendFactor::OneMinusDstColor: return D3D11_BLEND_INV_DEST_COLOR; - case BlendFactor::DstAlpha: return D3D11_BLEND_DEST_ALPHA; - case BlendFactor::OneMinusDstAlpha: return D3D11_BLEND_INV_DEST_ALPHA; - case BlendFactor::SrcAlphaSaturated: return D3D11_BLEND_SRC_ALPHA_SAT; - case BlendFactor::BlendColor: return D3D11_BLEND_BLEND_FACTOR; - case BlendFactor::OneMinusBlendColor: return D3D11_BLEND_INV_BLEND_FACTOR; - case BlendFactor::BlendAlpha: return D3D11_BLEND_BLEND_FACTOR; - case BlendFactor::OneMinusBlendAlpha: return D3D11_BLEND_INV_BLEND_FACTOR; - default: return D3D11_BLEND_ONE; - } -} - -//------------------------------------------------------------------------------ -D3D11_BLEND_OP -d3d11Types::asBlendOp(BlendOperation::Code op) { - // FIXME: D3D11 also has MIN and MAX - switch (op) { - case BlendOperation::Add: return D3D11_BLEND_OP_ADD; - case BlendOperation::Subtract: return D3D11_BLEND_OP_SUBTRACT; - case BlendOperation::ReverseSubtract: return D3D11_BLEND_OP_REV_SUBTRACT; - default: return D3D11_BLEND_OP_ADD; - } -} - -//------------------------------------------------------------------------------ -uint8_t -d3d11Types::asColorWriteMask(PixelChannel::Mask mask) { - uint8_t res = 0; - if (mask & PixelChannel::Red) res |= D3D11_COLOR_WRITE_ENABLE_RED; - if (mask & PixelChannel::Green) res |= D3D11_COLOR_WRITE_ENABLE_GREEN; - if (mask & PixelChannel::Blue) res |= D3D11_COLOR_WRITE_ENABLE_BLUE; - if (mask & PixelChannel::Alpha) res |= D3D11_COLOR_WRITE_ENABLE_ALPHA; - return res; -} - -//------------------------------------------------------------------------------ -D3D11_INPUT_CLASSIFICATION -d3d11Types::asInputClassification(VertexStepFunction::Code func) { - return func == VertexStepFunction::PerVertex ? D3D11_INPUT_PER_VERTEX_DATA : D3D11_INPUT_PER_INSTANCE_DATA; -} - -//------------------------------------------------------------------------------ -D3D11_FILTER -d3d11Types::asSamplerFilter(TextureFilterMode::Code magFilter, TextureFilterMode::Code minFilter) { - if (TextureFilterMode::Nearest == magFilter) { - switch (minFilter) { - case TextureFilterMode::Nearest: - case TextureFilterMode::NearestMipmapNearest: - return D3D11_FILTER_MIN_MAG_MIP_POINT; - case TextureFilterMode::Linear: - case TextureFilterMode::LinearMipmapNearest: - return D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT; - case TextureFilterMode::NearestMipmapLinear: - return D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR; - case TextureFilterMode::LinearMipmapLinear: - return D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR; - default: - break; - } - } - else if (TextureFilterMode::Linear == magFilter) { - switch (magFilter) { - case TextureFilterMode::Nearest: - case TextureFilterMode::NearestMipmapNearest: - return D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT; - case TextureFilterMode::Linear: - case TextureFilterMode::LinearMipmapNearest: - return D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT; - case TextureFilterMode::NearestMipmapLinear: - return D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR; - case TextureFilterMode::LinearMipmapLinear: - return D3D11_FILTER_MIN_MAG_MIP_LINEAR; - default: - break; - } - } - // fallthrough: invalid filter combination - o_error("d3d11Types::asFilter(): invalid filter combination!\n"); - return D3D11_FILTER_MIN_MAG_MIP_POINT; -} - -//------------------------------------------------------------------------------ -D3D11_TEXTURE_ADDRESS_MODE -d3d11Types::asTextureAddressMode(TextureWrapMode::Code mode) { - switch (mode) { - case TextureWrapMode::ClampToEdge: - return D3D11_TEXTURE_ADDRESS_CLAMP; - case TextureWrapMode::Repeat: - return D3D11_TEXTURE_ADDRESS_WRAP; - case TextureWrapMode::MirroredRepeat: - return D3D11_TEXTURE_ADDRESS_MIRROR; - default: - return D3D11_TEXTURE_ADDRESS_CLAMP; - } -} - -//------------------------------------------------------------------------------ -DXGI_FORMAT -d3d11Types::asIndexType(IndexType::Code c) { - switch (c) { - case IndexType::None: return DXGI_FORMAT_UNKNOWN; // this is a valid return type! - case IndexType::Index16: return DXGI_FORMAT_R16_UINT; - case IndexType::Index32: return DXGI_FORMAT_R32_UINT; - default: - o_error("d3d11Types::asIndexType(): invalid value!\n"); - return DXGI_FORMAT_UNKNOWN; - } -} - -//------------------------------------------------------------------------------ -D3D11_PRIMITIVE_TOPOLOGY -d3d11Types::asPrimitiveTopology(PrimitiveType::Code c) { - switch (c) { - case PrimitiveType::Points: return D3D11_PRIMITIVE_TOPOLOGY_POINTLIST; - case PrimitiveType::Lines: return D3D11_PRIMITIVE_TOPOLOGY_LINELIST; - case PrimitiveType::LineStrip: return D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP; - case PrimitiveType::Triangles: return D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST; - case PrimitiveType::TriangleStrip: return D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP; - default: - o_error("d3d11Types::asPrimitiveTopology(): invalid value!\n"); - return D3D11_PRIMITIVE_TOPOLOGY_POINTLIST; - } -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/d3d11/d3d11Types.h b/code/Modules/Gfx/private/d3d11/d3d11Types.h deleted file mode 100644 index 00433e3c3..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11Types.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::d3d11Types - @ingroup _priv - @brief D3D11 enum conversion helpers -*/ -#include "Core/Types.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/d3d11/d3d11_decl.h" - -namespace Oryol { -namespace _priv { - -class d3d11Types { -public: - /// convert PixelFormat to a display DXGI format - static DXGI_FORMAT asSwapChainFormat(PixelFormat::Code pixelFormat); - /// convert PixelFormat to a rendertarget DXGI format - static DXGI_FORMAT asRenderTargetFormat(PixelFormat::Code pixelFormat); - /// convert PixelFormat to a D3D11 texture format - static DXGI_FORMAT asTextureFormat(PixelFormat::Code pixelFormat); - /// convert Usage to a d3d11 usage for buffers and textures - static D3D11_USAGE asResourceUsage(Usage::Code usage); - /// convert Usage to a d3d11 CPU access flags mask - static uint32_t asResourceCPUAccessFlag(Usage::Code usage); - /// convert vertex attribute to d3d11 semantic name - static const char* asSemanticName(VertexAttr::Code attr); - /// convert vertex attribute to d3d11 semantic index - static uint32_t asSemanticIndex(VertexAttr::Code attr); - /// convert vertex component format to d3d11 input element DXGI_FORMAT - static DXGI_FORMAT asInputElementFormat(VertexFormat::Code fmt); - /// convert polygon face to d3d11 cull mode - static D3D11_CULL_MODE asCullMode(bool cullEnabled, Face::Code face); - /// convert CompareFunc to d3d11 comparison func - static D3D11_COMPARISON_FUNC asComparisonFunc(CompareFunc::Code func); - /// convert stencil-op to d3d11 stencil-op - static D3D11_STENCIL_OP asStencilOp(StencilOp::Code op); - /// convert blend factor to d3d11 blend factor - static D3D11_BLEND asBlendFactor(BlendFactor::Code b); - /// convert blend operation to d3d11 blend op - static D3D11_BLEND_OP asBlendOp(BlendOperation::Code op); - /// convert PixelChannel::Mask to d3d11 color write mask - static uint8_t asColorWriteMask(PixelChannel::Mask mask); - /// convert VertexStepFunction to d3d11 input classification - static D3D11_INPUT_CLASSIFICATION asInputClassification(VertexStepFunction::Code func); - /// convert min/mag filters to d3d11 filter - static D3D11_FILTER asSamplerFilter(TextureFilterMode::Code magFilter, TextureFilterMode::Code minFilter); - /// convert texture wrap mode to d3d11 texture address mode - static D3D11_TEXTURE_ADDRESS_MODE asTextureAddressMode(TextureWrapMode::Code mode); - /// convert vertex index type to dxgi format - static DXGI_FORMAT asIndexType(IndexType::Code c); - /// convert primitive type - static D3D11_PRIMITIVE_TOPOLOGY asPrimitiveTopology(PrimitiveType::Code c); -}; - -} // namespace _priv -} // namespace Oryol \ No newline at end of file diff --git a/code/Modules/Gfx/private/d3d11/d3d11_decl.h b/code/Modules/Gfx/private/d3d11/d3d11_decl.h deleted file mode 100644 index e30cd73ca..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11_decl.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @file d3d11_decl.h - @brief D3D11 forward declarations - - Try to use this as much as possible in headers instead of including - the full d3d11 headers. -*/ -#include "Gfx/private/win/win_decl.h" - -struct IDXGISwapChain; -struct IDXGISwapChain1; -struct DXGI_SWAP_CHAIN_DESC; -struct DXGI_SWAP_CHAIN_DESC1; - -struct ID3D11Device; -struct ID3D11DeviceContext; -struct ID3D11Resource; -struct ID3D11Texture2D; -struct ID3D11Texture3D; -struct ID3D11ShaderResourceView; -struct ID3D11RenderTargetView; -struct ID3D11DepthStencilView; -struct ID3D11Buffer; -struct ID3D11VertexShader; -struct ID3D11PixelShader; -struct ID3D11InputLayout; -struct ID3D11RasterizerState; -struct ID3D11DepthStencilState; -struct ID3D11BlendState; -struct ID3D11SamplerState; -typedef struct D3D11_TEXTURE2D_DESC D3D11_TEXTURE2D_DESC; - -enum D3D11_USAGE; -typedef enum DXGI_FORMAT DXGI_FORMAT; -typedef enum D3D11_CULL_MODE D3D11_CULL_MODE; -typedef enum D3D11_COMPARISON_FUNC D3D11_COMPARISON_FUNC; -typedef enum D3D11_STENCIL_OP D3D11_STENCIL_OP; -typedef enum D3D11_BLEND D3D11_BLEND; -typedef enum D3D11_BLEND_OP D3D11_BLEND_OP; -typedef enum D3D11_INPUT_CLASSIFICATION D3D11_INPUT_CLASSIFICATION; -typedef enum D3D11_FILTER D3D11_FILTER; -typedef enum D3D11_TEXTURE_ADDRESS_MODE D3D11_TEXTURE_ADDRESS_MODE; -typedef enum D3D_PRIMITIVE_TOPOLOGY D3D_PRIMITIVE_TOPOLOGY; -typedef D3D_PRIMITIVE_TOPOLOGY D3D11_PRIMITIVE_TOPOLOGY; -typedef struct D3D11_SUBRESOURCE_DATA D3D11_SUBRESOURCE_DATA; diff --git a/code/Modules/Gfx/private/d3d11/d3d11_impl.h b/code/Modules/Gfx/private/d3d11/d3d11_impl.h deleted file mode 100644 index e4f75abe5..000000000 --- a/code/Modules/Gfx/private/d3d11/d3d11_impl.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @file d3d11_impl.h - @brief includes the D3D11 headers - - Include this file in sources, and d3d11_decl.h in headers. -*/ -#define NOMINMAX -#include \ No newline at end of file diff --git a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc b/code/Modules/Gfx/private/d3d11DisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc rename to code/Modules/Gfx/private/d3d11DisplayMgr.cc diff --git a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h b/code/Modules/Gfx/private/d3d11DisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h rename to code/Modules/Gfx/private/d3d11DisplayMgr.h diff --git a/code/Modules/Gfx/private/egl/eglDisplayMgr.cc b/code/Modules/Gfx/private/eglDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/egl/eglDisplayMgr.cc rename to code/Modules/Gfx/private/eglDisplayMgr.cc diff --git a/code/Modules/Gfx/private/egl/eglDisplayMgr.h b/code/Modules/Gfx/private/eglDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/egl/eglDisplayMgr.h rename to code/Modules/Gfx/private/eglDisplayMgr.h diff --git a/code/Modules/Gfx/private/emsc/emscDisplayMgr.cc b/code/Modules/Gfx/private/emscDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/emsc/emscDisplayMgr.cc rename to code/Modules/Gfx/private/emscDisplayMgr.cc diff --git a/code/Modules/Gfx/private/emsc/emscDisplayMgr.h b/code/Modules/Gfx/private/emscDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/emsc/emscDisplayMgr.h rename to code/Modules/Gfx/private/emscDisplayMgr.h diff --git a/code/Modules/Gfx/private/gfxFactory.h b/code/Modules/Gfx/private/gfxFactory.h deleted file mode 100644 index f71dd983e..000000000 --- a/code/Modules/Gfx/private/gfxFactory.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -#if ORYOL_OPENGL -#include "Gfx/private/gl/glFactory.h" -#elif ORYOL_D3D11 -#include "Gfx/private/d3d11/d3d11Factory.h" -#elif ORYOL_METAL -#include "Gfx/private/mtl/mtlFactory.h" -#else -#error "Platform not yet supported!" -#endif - -namespace Oryol { -namespace _priv { -#if ORYOL_OPENGL -class gfxFactory : public glFactory { }; -#elif ORYOL_D3D11 -class gfxFactory : public d3d11Factory { }; -#elif ORYOL_METAL -class gfxFactory : public mtlFactory { }; -#endif - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gfxFactoryBase.cc b/code/Modules/Gfx/private/gfxFactoryBase.cc deleted file mode 100644 index cc50e9283..000000000 --- a/code/Modules/Gfx/private/gfxFactoryBase.cc +++ /dev/null @@ -1,86 +0,0 @@ -//------------------------------------------------------------------------------ -// gfxFactoryBase.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "gfxFactoryBase.h" -#include "Gfx/private/resource.h" -#include "Gfx/private/resourcePools.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -gfxFactoryBase::~gfxFactoryBase() { - o_assert_dbg(!this->isValid); -} - -//------------------------------------------------------------------------------ -void -gfxFactoryBase::setup(const gfxPointers& ptrs) { - o_assert_dbg(!this->isValid); - this->pointers = ptrs; - this->isValid = true; -} - -//------------------------------------------------------------------------------ -void -gfxFactoryBase::discard() { - o_assert_dbg(this->isValid); - this->pointers = gfxPointers(); - this->isValid = false; -} - -//------------------------------------------------------------------------------ -void -gfxFactoryBase::garbageCollect() { - // this is only implemented in some subclasses, depending on - // rendering backend -} - -//------------------------------------------------------------------------------ -ResourceState::Code -gfxFactoryBase::initPipeline(pipeline& pip) { - o_assert_dbg(this->isValid); - pip.shd = this->pointers.shaderPool->Lookup(pip.Setup.Shader); - o_assert_dbg(pip.shd && (ResourceState::Valid == pip.shd->State)); - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -gfxFactoryBase::destroyPipeline(pipeline& pip) { - o_assert_dbg(this->isValid); - pip.Clear(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -gfxFactoryBase::initRenderPass(renderPass& rp) { - o_assert_dbg(this->isValid); - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - o_assert_dbg(nullptr == rp.colorTextures[i]); - Id id = rp.Setup.ColorAttachments[i].Texture; - if (id.IsValid()) { - rp.colorTextures[i] = this->pointers.texturePool->Lookup(id); - o_assert_dbg(rp.colorTextures[i] && (ResourceState::Valid == rp.colorTextures[i]->State)); - } - } - o_assert_dbg(nullptr == rp.depthStencilTexture); - Id id = rp.Setup.DepthStencilTexture; - if (id.IsValid()) { - rp.depthStencilTexture = this->pointers.texturePool->Lookup(id); - o_assert_dbg(rp.depthStencilTexture && (ResourceState::Valid == rp.depthStencilTexture->State)); - } - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -gfxFactoryBase::destroyRenderPass(renderPass& rp) { - o_assert_dbg(this->isValid); - rp.Clear(); -} - -} // namespace _priv -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/gfxFactoryBase.h b/code/Modules/Gfx/private/gfxFactoryBase.h deleted file mode 100644 index b93cebcb4..000000000 --- a/code/Modules/Gfx/private/gfxFactoryBase.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::gfxFactoryBase - @ingroup _priv - @brief base class for Gfx resource factories -*/ -#include "Resource/ResourceState.h" -#include "Gfx/private/gfxPointers.h" -#include "Gfx/GfxTypes.h" - -namespace Oryol { -namespace _priv { - -class pipeline; -class renderPass; - -class gfxFactoryBase { -public: - /// destructor - ~gfxFactoryBase(); - - /// setup the factory - void setup(const gfxPointers& ptrs); - /// discard the factory - void discard(); - /// optional garbage-collect released resources (not implemented on all platforms) - void garbageCollect(); - /// initialize pipeline object - ResourceState::Code initPipeline(pipeline& pip); - /// destroy pipeline object - void destroyPipeline(pipeline& pip); - /// initialize renderPass object - ResourceState::Code initRenderPass(renderPass& rp); - /// destroy renderPass object - void destroyRenderPass(renderPass& rp); - - gfxPointers pointers; - bool isValid = false; -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glCaps.cc b/code/Modules/Gfx/private/gl/glCaps.cc deleted file mode 100644 index 8c4a82370..000000000 --- a/code/Modules/Gfx/private/gl/glCaps.cc +++ /dev/null @@ -1,349 +0,0 @@ -//------------------------------------------------------------------------------ -// glCaps.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "gl_impl.h" -#include "Core/Assertion.h" -#include "Core/String/StringBuilder.h" -#include "glCaps.h" - -namespace Oryol { -namespace _priv { - -glCaps::state_t glCaps::state; - -//------------------------------------------------------------------------------ -void -glCaps::Setup(Flavour flav) { - o_assert_dbg(!state.isValid); - state = state_t(); - state.isValid = true; - state.flavour = flav; - - setupFeatures(flav); - setupLimits(flav); - printInfo(flav); -} - -//------------------------------------------------------------------------------ -void -glCaps::Discard() { - o_assert_dbg(state.isValid); - state.isValid = false; -} - -//------------------------------------------------------------------------------ -bool -glCaps::IsValid() { - return state.isValid; -} - -//------------------------------------------------------------------------------ -void -glCaps::setupLimits(Flavour flav) { - ORYOL_GL_CHECK_ERROR(); - ::glGetIntegerv(GL_MAX_TEXTURE_SIZE, &state.intLimits[MaxTextureSize]); - ::glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &state.intLimits[MaxCubeMapTextureSize]); - ::glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &state.intLimits[MaxViewPortWidth]); - ::glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &state.intLimits[MaxVertexAttribs]); - ::glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &state.intLimits[MaxCombinedTextureImageUnits]); - ::glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &state.intLimits[MaxVertexTextureImageUnits]); - ORYOL_GL_CHECK_ERROR(); - #if ORYOL_OPENGLES2 - if (flav == GLES2) { - ::glGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, &state.intLimits[MaxVertexUniformComponents]); - ::glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_VECTORS, &state.intLimits[MaxFragmentUniformComponents]); - } - #endif - #if !ORYOL_OPENGLES2 - if (flav != GLES2) { - ::glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, &state.intLimits[MaxVertexUniformComponents]); - ::glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, &state.intLimits[MaxFragmentUniformComponents]); - } - #endif - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glCaps::setupFeatures(Flavour flav) { - ORYOL_GL_CHECK_ERROR(); - if (flav != GL_3_3_CORE) { - // non-core GL, check extensions - StringBuilder strBuilder((const char*)::glGetString(GL_EXTENSIONS)); - ORYOL_GL_CHECK_ERROR(); - state.features[TextureCompressionDXT] = strBuilder.Contains("_texture_compression_s3tc") || - strBuilder.Contains("_compressed_texture_s3tc") || - strBuilder.Contains("_texture_compression_dxt1"); - state.features[TextureCompressionPVRTC] = strBuilder.Contains("_texture_compression_pvrtc") || - strBuilder.Contains("_compressed_texture_pvrtc"); - state.features[TextureCompressionATC] = strBuilder.Contains("_compressed_ATC_texture") || - strBuilder.Contains("_compressed_texture_atc"); - state.features[TextureFloat] = strBuilder.Contains("_texture_float"); - state.features[InstancedArrays] = strBuilder.Contains("_instanced_arrays"); - state.features[DebugOutput] = strBuilder.Contains("_debug_output"); - if (flav == GLES2) { - state.features[TextureHalfFloat] = strBuilder.Contains("_texture_half_float"); - } - else { - state.features[TextureHalfFloat] = state.features[TextureFloat]; - } - // FIXME: check for EXT_draw_buffers - } - if (flav == GL_3_3_CORE) { - // GL 3.3 Core - state.features[InstancedArrays] = true; - state.features[TextureFloat] = true; - state.features[MultipleRenderTarget] = true; - state.features[MSAARenderTargets] = true; - state.features[PackedVertexFormat_10_2] = true; - state.features[MapBuffer] = true; - state.features[TextureCompressionDXT] = true; - state.features[Texture3D] = true; - state.features[TextureArray] = true; - } - else if (flav == GLES3) { - state.features[InstancedArrays] = true; - state.features[TextureFloat] = true; - state.features[MultipleRenderTarget] = true; - state.features[MSAARenderTargets] = true; - state.features[PackedVertexFormat_10_2] = true; - #if !ORYOL_EMSCRIPTEN - state.features[MapBuffer] = true; - #endif - state.features[TextureCompressionETC2] = true; - state.features[Texture3D] = true; - state.features[TextureArray] = true; - } - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -bool -glCaps::HasTextureFormat(PixelFormat::Code fmt) { - if (PixelFormat::IsCompressedFormat(fmt)) { - switch (fmt) { - case PixelFormat::DXT1: - case PixelFormat::DXT3: - case PixelFormat::DXT5: - return HasFeature(TextureCompressionDXT); - case PixelFormat::PVRTC2_RGB: - case PixelFormat::PVRTC4_RGB: - case PixelFormat::PVRTC2_RGBA: - case PixelFormat::PVRTC4_RGBA: - return HasFeature(TextureCompressionPVRTC); - case PixelFormat::ETC2_RGB8: - case PixelFormat::ETC2_SRGB8: - return HasFeature(TextureCompressionETC2); - default: - return false; - } - } - else { - // non compressed format, always supported - return true; - } -} - -//------------------------------------------------------------------------------ -void -glCaps::VertexAttribDivisor(GLuint index, GLuint divisor) { - if (state.features[InstancedArrays]) { - #if ORYOL_IOS && ORYOL_OPENGLES2 - ::glVertexAttribDivisorEXT(index, divisor); - #elif ORYOL_RASPBERRYPI - o_error("glCaps::VertexAttribDivisor() called!\n"); - #elif ORYOL_OPENGLES2 && !ORYOL_EMSCRIPTEN - ::glVertexAttribDivisorANGLE(index, divisor); - #else - ::glVertexAttribDivisor(index, divisor); - #endif - } -} - -//------------------------------------------------------------------------------ -void -glCaps::DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { - if (state.features[InstancedArrays]) { - #if ORYOL_IOS && ORYOL_OPENGLES2 - ::glDrawArraysInstancedEXT(mode, first, count, primcount); - #elif ORYOL_RASPBERRYPI - o_error("glCaps::DrawArraysInstanced() called!\n"); - #elif ORYOL_OPENGLES2 && !ORYOL_EMSCRIPTEN - ::glDrawArraysInstancedANGLE(mode, first, count, primcount); - #else - ::glDrawArraysInstanced(mode, first, count, primcount); - #endif - } -} - -//------------------------------------------------------------------------------ -void -glCaps::DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) { - if (state.features[InstancedArrays]) { - #if ORYOL_IOS && ORYOL_OPENGLES2 - ::glDrawElementsInstancedEXT(mode, count, type, indices, primcount); - #elif ORYOL_RASPBERRYPI - o_error("glCaps::DrawElementsInstanced() called!\n"); - #elif ORYOL_OPENGLES2 && !ORYOL_EMSCRIPTEN - ::glDrawElementsInstancedANGLE(mode, count, type, indices, primcount); - #else - ::glDrawElementsInstanced(mode, count, type, indices, primcount); - #endif - } -} - -//------------------------------------------------------------------------------ -void -glCaps::printInfo(Flavour flav) { - ORYOL_GL_CHECK_ERROR(); - printString(GL_VERSION, "GL_VERSION", false); - printString(GL_VENDOR, "GL_VENDOR", false); - printString(GL_RENDERER, "GL_RENDERER", false); - printString(GL_SHADING_LANGUAGE_VERSION, "GL_SHADING_LANGUAGE_VERSION", false); - printInt(GL_MAX_TEXTURE_SIZE, "GL_MAX_TEXTURE_SIZE", 1); - printInt(GL_MAX_CUBE_MAP_TEXTURE_SIZE, "GL_MAX_CUBE_MAP_TEXTURE_SIZE", 1); - printInt(GL_MAX_VIEWPORT_DIMS, "GL_MAX_VIEWPORT_DIMS", 2); - printInt(GL_MAX_VERTEX_ATTRIBS, "GL_MAX_VERTEX_ATTRIBS", 1); - printInt(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS", 1); - printInt(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS", 1); - #if ORYOL_OPENGLES2 - if (flav == GLES2) { - printInt(GL_MAX_VERTEX_UNIFORM_VECTORS, "GL_MAX_VERTEX_UNIFORM_VECTORS", 1); - printInt(GL_MAX_FRAGMENT_UNIFORM_VECTORS, "GL_MAX_FRAGMENT_UNIFORM_VECTORS", 1); - } - #endif - #if !ORYOL_OPENGLES2 - if (flav != GLES2) { - printInt(GL_MAX_VERTEX_UNIFORM_COMPONENTS, "GL_MAX_VERTEX_UNIFORM_COMPONENTS", 1); - printInt(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS", 1); - } - if (HasFeature(MultipleRenderTarget)) { - printInt(GL_MAX_COLOR_ATTACHMENTS, "GL_MAX_COLOR_ATTACHMENTS", 1); - } - if (HasFeature(Texture3D)) { - printInt(GL_MAX_3D_TEXTURE_SIZE, "GL_MAX_3D_TEXTURE_SIZE", 1); - } - #endif - if (flav != GL_3_3_CORE) { - printString(GL_EXTENSIONS, "GL_EXTENSIONS", true); - } - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glCaps::printString(GLenum glEnum, const char* name, bool replaceSpaceWithNewLine) { - o_assert(name); - const char* rawStr = (const char*) ::glGetString(glEnum); - if (rawStr) { - String str(rawStr); - if (replaceSpaceWithNewLine) { - StringBuilder strBuilder; - strBuilder.Append(" "); - strBuilder.Append(str); - strBuilder.SubstituteAll(" ", "\n"); - str = strBuilder.GetString(); - } - Log::Info("%s: %s\n", name, str.AsCStr()); - } - else { - o_warn("::glGetString() returned nullptr!\n"); - } -} - -//------------------------------------------------------------------------------ -void -glCaps::printInt(GLenum glEnum, const char* name, int dim) { - o_assert(name); - o_assert_range(dim, 4); - GLint value[4]; - ::glGetIntegerv(glEnum, &(value[0])); - if (1 == dim) Log::Info("%s: %d\n", name, value[0]); - else if (2 == dim) Log::Info("%s: %d %d\n", name, value[0], value[1]); - else if (3 == dim) Log::Info("%s: %d %d %d\n", name, value[0], value[1], value[2]); - else if (4 == dim) Log::Info("%s: %d %d %d %d\n", name, value[0], value[1], value[2], value[3]); -} - -//------------------------------------------------------------------------------ -#if !ORYOL_EMSCRIPTEN -#if defined(GL_ARB_debug_output) -#if ORYOL_WINDOWS -void __stdcall -#else -void -#endif -debugOutputCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const GLvoid* userParam) -{ - const char* typeStr; - switch (type) - { - case GL_DEBUG_TYPE_ERROR_ARB: typeStr = "ERROR"; break; - case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: typeStr = "DEPRECATED_BEHAVIOR"; break; - case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: typeStr = "UNDEFINED_BEHAVIOR"; break; - case GL_DEBUG_TYPE_PORTABILITY_ARB: typeStr = "PORTABILITY"; break; - case GL_DEBUG_TYPE_PERFORMANCE_ARB: typeStr = "PERFORMANCE"; break; - case GL_DEBUG_TYPE_OTHER_ARB: typeStr = "OTHER"; break; - default: typeStr = ""; break; - } - const char* sevStr; - switch (severity) - { - case GL_DEBUG_SEVERITY_LOW_ARB: sevStr = "LOW"; break; - case GL_DEBUG_SEVERITY_MEDIUM_ARB: sevStr = "MEDIUM"; break; - case GL_DEBUG_SEVERITY_HIGH_ARB: sevStr = "HIGH"; break; - default: sevStr = ""; break; - } - o_warn("##### OpenGL Debug Message:\n" - "type: %s, id: %d, severity: %s\nmsg: %s\n", - typeStr, id, sevStr, message); -} -#endif -#endif - -//------------------------------------------------------------------------------ -void -glCaps::EnableDebugOutput(Severity s) { - #if defined(GL_ARB_debug_output) && !ORYOL_EMSCRIPTEN - if (HasFeature(DebugOutput)) { - GLenum glSeverity = GL_DONT_CARE; - switch (s) { - case SeverityHigh: glSeverity = GL_DEBUG_SEVERITY_HIGH_ARB; break; - case SeverityMedium: glSeverity = GL_DEBUG_SEVERITY_MEDIUM_ARB; break; - case SeverityLow: glSeverity = GL_DEBUG_SEVERITY_LOW_ARB; break; - } - ::glDebugMessageControlARB(GL_DONT_CARE, // source - GL_DONT_CARE, // type - glSeverity, // severity - 0, // count - nullptr, // ids - GL_TRUE); // enabled - if (!state.isDebugOutputEnabled) { - ::glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB); - ::glDebugMessageCallbackARB(debugOutputCallback, nullptr); - state.isDebugOutputEnabled = true; - } - } - #endif -} - -//------------------------------------------------------------------------------ -void -glCaps::DisableDebugOutput() { - #if defined(GL_ARB_debug_output) && !ORYOL_EMSCRIPTEN - if (glCaps::HasFeature(glCaps::DebugOutput)) { - ::glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB); - state.isDebugOutputEnabled = false; - } - #endif -} - -//------------------------------------------------------------------------------ -bool -glCaps::IsDebugOutputEnabled() { - return state.isDebugOutputEnabled; -} - -} // namespace _priv -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/gl/glCaps.h b/code/Modules/Gfx/private/gl/glCaps.h deleted file mode 100644 index 0d6474d23..000000000 --- a/code/Modules/Gfx/private/gl/glCaps.h +++ /dev/null @@ -1,141 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glCaps - @ingroup _priv - @brief GL capabilities and extension wrapper -*/ -#include "Core/Types.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/gl/gl_decl.h" - -namespace Oryol { -namespace _priv { - -class glCaps { -public: - enum Limit { - MaxTextureSize = 0, - MaxCubeMapTextureSize, - MaxViewPortWidth, - MaxViewPortHeight, - MaxVertexAttribs, - MaxVertexUniformComponents, - MaxVaryingComponents, - MaxCombinedTextureImageUnits, - MaxVertexTextureImageUnits, - MaxFragmentUniformComponents, - MaxUniformBufferBindings, - UniformBufferOffsetAlignment, - - NumLimits, - }; - - enum Feature { - TextureCompressionDXT, - TextureCompressionPVRTC, - TextureCompressionETC2, - TextureCompressionATC, - TextureFloat, - TextureHalfFloat, - InstancedArrays, - DebugOutput, - MSAARenderTargets, - MapBuffer, - PackedVertexFormat_10_2, - MultipleRenderTarget, - Texture3D, - TextureArray, - - NumFeatures, - }; - - enum Severity { - SeverityHigh, - SeverityMedium, - SeverityLow, - }; - - enum Flavour { - GL_3_3_CORE, - GLES2, - GLES3, - - InvalidFlavour, - }; - - /// setup the info values - static void Setup(Flavour flav); - /// discard the info values - static void Discard(); - /// check if object has been setup - static bool IsValid(); - - /// get an integer limit value - static int IntLimit(Limit c); - /// test if the GL implementation has a feature - static bool HasFeature(Feature f); - /// test if a texture format is supported - static bool HasTextureFormat(PixelFormat::Code fmt); - /// return true if GL version matches 'flavour' - static bool IsFlavour(Flavour flav); - - /// enable debug output (GL_ARB_debug_output) - static void EnableDebugOutput(Severity s); - /// disable debug output - static void DisableDebugOutput(); - /// return true if debug output is enabled - static bool IsDebugOutputEnabled(); - - /// wrapper function for glVertexAttribDivisor - static void VertexAttribDivisor(GLuint index, GLuint divisor); - /// wrapper function for glDrawArraysInstanced - static void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount); - /// wrapper function for glDrawElementsInstanced - static void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); - - /// setup the limit values - static void setupLimits(Flavour flav); - /// setup the feature flags - static void setupFeatures(Flavour flav); - /// dump general GL info (extensions, constants, ...) - static void printInfo(Flavour flav); - /// print a GL string, optionally replace spaces with newlines - static void printString(GLenum glEnum, const char* name, bool replaceSpaceWithNewLine); - /// print a 1..4 dimensional integer value - static void printInt(GLenum glEnum, const char* name, int dim); - - static struct state_t { - bool isValid = false; - bool isDebugOutputEnabled = false; - Flavour flavour = InvalidFlavour; - int intLimits[NumLimits] = { }; - bool features[NumFeatures] = { }; - } state; -}; - -//------------------------------------------------------------------------------ -inline int -glCaps::IntLimit(Limit l) { - o_assert_dbg(state.isValid); - o_assert_range_dbg(l, NumLimits); - return state.intLimits[l]; -} - -//------------------------------------------------------------------------------ -inline bool -glCaps::HasFeature(Feature f) { - o_assert_dbg(state.isValid); - o_assert_dbg(f < NumFeatures); - return state.features[f]; -} - -//------------------------------------------------------------------------------ -inline bool -glCaps::IsFlavour(Flavour flav) { - o_assert_dbg(state.isValid); - return flav == state.flavour; -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glFactory.cc b/code/Modules/Gfx/private/gl/glFactory.cc deleted file mode 100644 index 2221c9b00..000000000 --- a/code/Modules/Gfx/private/gl/glFactory.cc +++ /dev/null @@ -1,887 +0,0 @@ -//------------------------------------------------------------------------------ -// glFactory.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "glFactory.h" -#include "gl_impl.h" -#include "glTypes.h" -#include "glCaps.h" -#include "Gfx/private/renderer.h" -#include "Gfx/private/resource.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initMesh(mesh& msh, const void* data, int size) { - o_assert_dbg(this->isValid); - if (msh.Setup.ShouldSetupFullScreenQuad()) { - return this->initFullscreenQuad(msh); - } - else { - return this->initStdMesh(msh, data, size); - } -} - -//------------------------------------------------------------------------------ -void -glFactory::destroyMesh(mesh& mesh) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateMeshState(); - for (auto& buf : mesh.buffers) { - for (int i = 0; i < buf.numSlots; i++) { - GLuint glBuf = buf.glBuffers[i]; - if (0 != glBuf) { - ::glDeleteBuffers(1, &glBuf); - } - } - } - mesh.Clear(); -} - -//------------------------------------------------------------------------------ -GLuint -glFactory::createBuffer(GLenum type, const void* data, uint32_t bufSize, Usage::Code usage) { - o_assert_dbg((type == GL_ARRAY_BUFFER) || (type == GL_ELEMENT_ARRAY_BUFFER)); - o_assert_dbg(bufSize > 0); - this->pointers.renderer->invalidateMeshState(); - GLuint buf = 0; - ::glGenBuffers(1, &buf); - ORYOL_GL_CHECK_ERROR(); - o_assert_dbg(0 != buf); - ::glBindBuffer(type, buf); - ::glBufferData(type, bufSize, data, glTypes::asGLBufferUsage(usage)); - ORYOL_GL_CHECK_ERROR(); - this->pointers.renderer->invalidateMeshState(); - return buf; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initStdMesh(mesh& msh, const void* data, int size) { - o_assert_dbg(0 == msh.buffers[mesh::vb].glBuffers[0]); - o_assert_dbg(0 == msh.buffers[mesh::ib].glBuffers[0]); - o_assert_dbg(1 == msh.buffers[mesh::vb].numSlots); - o_assert_dbg(1 == msh.buffers[mesh::ib].numSlots); - - VertexBufferAttrs vbAttrs; - vbAttrs.NumVertices = msh.Setup.NumVertices; - vbAttrs.Layout = msh.Setup.Layout; - vbAttrs.BufferUsage = msh.Setup.VertexUsage; - msh.vertexBufferAttrs = vbAttrs; - - IndexBufferAttrs ibAttrs; - ibAttrs.NumIndices = msh.Setup.NumIndices; - ibAttrs.Type = msh.Setup.IndicesType; - ibAttrs.BufferUsage = msh.Setup.IndexUsage; - msh.indexBufferAttrs = ibAttrs; - - msh.numPrimGroups = msh.Setup.NumPrimitiveGroups(); - o_assert_dbg(msh.numPrimGroups < GfxConfig::MaxNumPrimGroups); - for (int i = 0; i < msh.numPrimGroups; i++) { - msh.primGroups[i] = msh.Setup.PrimitiveGroup(i); - } - - const uint8_t* ptr = (const uint8_t*)data; - - // create vertex buffer(s) - if (msh.Setup.NumVertices > 0) { - const int vbSize = vbAttrs.NumVertices * vbAttrs.Layout.ByteSize(); - msh.buffers[mesh::vb].numSlots = Usage::Stream == vbAttrs.BufferUsage ? 2 : 1; - const uint8_t* vertices = nullptr; - if (ptr) { - o_assert_dbg(msh.Setup.VertexDataOffset >= 0); - vertices = ptr + msh.Setup.VertexDataOffset; - o_assert_dbg((ptr + size) >= (vertices + vbSize)); - } - for (uint8_t slotIndex = 0; slotIndex < msh.buffers[mesh::vb].numSlots; slotIndex++) { - msh.buffers[mesh::vb].glBuffers[slotIndex] = this->createBuffer(GL_ARRAY_BUFFER, vertices, vbSize, vbAttrs.BufferUsage); - o_assert_dbg(0 != msh.buffers[mesh::vb].glBuffers[slotIndex]); - } - } - - // create optional index buffer(s) - if (ibAttrs.Type != IndexType::None) { - const int ibSize = ibAttrs.NumIndices * IndexType::ByteSize(ibAttrs.Type); - msh.buffers[mesh::ib].numSlots = Usage::Stream == ibAttrs.BufferUsage ? 2 : 1; - const uint8_t* indices = nullptr; - if (ptr) { - o_assert_dbg(msh.Setup.IndexDataOffset >= 0); - indices = ptr + msh.Setup.IndexDataOffset; - o_assert_dbg((ptr + size) >= (indices + ibSize)); - } - for (uint8_t slotIndex = 0; slotIndex < msh.buffers[mesh::ib].numSlots; slotIndex++) { - msh.buffers[mesh::ib].glBuffers[slotIndex] = this->createBuffer(GL_ELEMENT_ARRAY_BUFFER, indices, ibSize, ibAttrs.BufferUsage); - o_assert_dbg(0 != msh.buffers[mesh::ib].glBuffers[slotIndex]); - } - } - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initFullscreenQuad(mesh& mesh) { - o_assert_dbg(mesh.Setup.Layout.NumComponents() == 2); - o_assert_dbg(mesh.Setup.Layout.ComponentAt(0).Attr == VertexAttr::Position); - o_assert_dbg(mesh.Setup.Layout.ComponentAt(1).Attr == VertexAttr::TexCoord0); - o_assert_dbg(mesh.Setup.Layout.ComponentAt(0).Format == VertexFormat::Float3); - o_assert_dbg(mesh.Setup.Layout.ComponentAt(1).Format == VertexFormat::Float2); - - VertexBufferAttrs vbAttrs; - vbAttrs.NumVertices = 4; - vbAttrs.BufferUsage = Usage::Immutable; - vbAttrs.Layout = mesh.Setup.Layout; - mesh.vertexBufferAttrs = vbAttrs; - - IndexBufferAttrs ibAttrs; - ibAttrs.NumIndices = 6; - ibAttrs.Type = IndexType::Index16; - ibAttrs.BufferUsage = Usage::Immutable; - mesh.indexBufferAttrs = ibAttrs; - - mesh.numPrimGroups = 1; - mesh.primGroups[0] = PrimitiveGroup(0, 6); - - // vertices - const float topV = mesh.Setup.FullScreenQuadFlipV ? 0.0f : 1.0f; - const float botV = mesh.Setup.FullScreenQuadFlipV ? 1.0f : 0.0f; - float vertices[] = { - -1.0f, +1.0f, 0.0f, 0.0f, topV, // top-left corner - +1.0f, +1.0f, 0.0f, 1.0f, topV, // top-right corner - +1.0f, -1.0f, 0.0f, 1.0f, botV, // bottom-right corner - -1.0f, -1.0f, 0.0f, 0.0f, botV // bottom-left corner - }; - - // indices - uint16_t indices[] = { - 0, 2, 1, // topleft -> bottomright -> topright - 0, 3, 2, // topleft -> bottomleft -> bottomright - }; - - // create vertex and index buffer - o_assert_dbg(1 == mesh.buffers[mesh::vb].numSlots); - o_assert_dbg(1 == mesh.buffers[mesh::ib].numSlots); - mesh.buffers[mesh::vb].glBuffers[0] = this->createBuffer(GL_ARRAY_BUFFER, vertices, sizeof(vertices), mesh.vertexBufferAttrs.BufferUsage); - mesh.buffers[mesh::ib].glBuffers[0] = this->createBuffer(GL_ELEMENT_ARRAY_BUFFER, indices, sizeof(indices), mesh.indexBufferAttrs.BufferUsage); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initTexture(texture& tex, const void* data, int size) { - o_assert_dbg(this->isValid); - o_assert_dbg(0 == tex.glTextures[0]); - o_assert_dbg(0 == tex.glTextures[1]); - ORYOL_GL_CHECK_ERROR(); - - const TextureSetup& setup = tex.Setup; - - // test if the texture format is actually supported - if (!glCaps::HasTextureFormat(setup.ColorFormat)) { - o_warn("glTextureFactory: unsupported texture format for resource '%s'\n", setup.Locator.Location().AsCStr()); - return ResourceState::Failed; - } - - // check required features - if ((setup.Type == TextureType::Texture3D) && (!glCaps::HasFeature(glCaps::Texture3D))) { - o_warn("glTextureFactory: 3D textures not supported\n"); - return ResourceState::Failed; - } - if ((setup.Type == TextureType::TextureArray) && (!glCaps::HasFeature(glCaps::TextureArray))) { - o_warn("glTextureFactory: array textures not supported\n"); - return ResourceState::Failed; - } - - // create one or two texture object - tex.numSlots = (Usage::Stream == setup.TextureUsage) ? 2 : 1; - #if ORYOL_DEBUG - // initialize with data is only allowed for immutable texture - if (data) { - o_assert_dbg(setup.TextureUsage == Usage::Immutable); - o_assert_dbg(setup.ImageData.NumMipMaps > 0); - o_assert_dbg(setup.ImageData.NumFaces > 0); - } - #endif - const GLenum glTexImageInternalFormat = glTypes::asGLTexImageInternalFormat(setup.ColorFormat); - const GLenum glTexTarget = glTypes::asGLTextureTarget(setup.Type); - if (tex.Setup.ShouldSetupFromNativeTexture()) { - // existing native GL texture object provided - tex.nativeHandles = true; - tex.glTextures[0] = (GLuint) tex.Setup.NativeHandle[0]; - tex.glTextures[1] = (GLuint) tex.Setup.NativeHandle[1]; - } - else { - // create GL texture objects - const GLenum glTexImageFormat = glTypes::asGLTexImageFormat(setup.ColorFormat); - const bool isCompressed = PixelFormat::IsCompressedFormat(setup.ColorFormat); - const uint8_t* srcPtr = (const uint8_t*) data; - for (int slotIndex = 0; slotIndex < tex.numSlots; slotIndex++) { - - this->pointers.renderer->invalidateTextureState(); - ::glGenTextures(1, &tex.glTextures[slotIndex]); - ::glActiveTexture(GL_TEXTURE0); - ::glBindTexture(glTexTarget, tex.glTextures[slotIndex]); - ORYOL_GL_CHECK_ERROR(); - - GLenum glMinFilter = glTypes::asGLTexFilterMode(setup.Sampler.MinFilter); - GLenum glMagFilter = glTypes::asGLTexFilterMode(setup.Sampler.MagFilter); - if (1 == setup.NumMipMaps) { - #if !ORYOL_OPENGLES2 - if (!glCaps::IsFlavour(glCaps::GLES2)) { - ::glTexParameteri(glTexTarget, GL_TEXTURE_MAX_LEVEL, 0); // see: http://www.opengl.org/wiki/Hardware_specifics:_NVidia - } - #endif - if ((glMinFilter == GL_NEAREST_MIPMAP_NEAREST) || (glMinFilter == GL_NEAREST_MIPMAP_LINEAR)) { - glMinFilter = GL_NEAREST; - } - else if ((glMinFilter == GL_LINEAR_MIPMAP_NEAREST) || (glMinFilter == GL_LINEAR_MIPMAP_LINEAR)) { - glMinFilter = GL_LINEAR; - } - } - ::glTexParameteri(glTexTarget, GL_TEXTURE_MIN_FILTER, glMinFilter); - ::glTexParameteri(glTexTarget, GL_TEXTURE_MAG_FILTER, glMagFilter); - if (setup.Type == TextureType::TextureCube) { - ::glTexParameteri(glTexTarget, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - ::glTexParameteri(glTexTarget, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - } - else { - ::glTexParameteri(glTexTarget, GL_TEXTURE_WRAP_S, glTypes::asGLTexWrapMode(setup.Sampler.WrapU)); - ::glTexParameteri(glTexTarget, GL_TEXTURE_WRAP_T, glTypes::asGLTexWrapMode(setup.Sampler.WrapV)); - #if !ORYOL_OPENGLES2 - if (!glCaps::IsFlavour(glCaps::GLES2)) { - if (setup.Type == TextureType::Texture3D) { - ::glTexParameteri(glTexTarget, GL_TEXTURE_WRAP_R, glTypes::asGLTexWrapMode(setup.Sampler.WrapW)); - } - } - #endif - } - ORYOL_GL_CHECK_ERROR(); - - const int numFaces = setup.Type == TextureType::TextureCube ? 6 : 1; - for (int faceIndex = 0; faceIndex < numFaces; faceIndex++) { - GLenum glImgTarget; - if (TextureType::TextureCube == setup.Type) { - glImgTarget = glTypes::asGLCubeFaceTarget(faceIndex); - } - else { - glImgTarget = glTexTarget; - } - for (int mipIndex = 0; mipIndex < setup.NumMipMaps; mipIndex++) { - GLvoid* mipDataPtr = nullptr; - int mipDataSize = 0; - if (srcPtr) { - if (mipIndex < setup.ImageData.NumMipMaps) { - mipDataPtr = (GLvoid*)(srcPtr + setup.ImageData.Offsets[faceIndex][mipIndex]); - mipDataSize = setup.ImageData.Sizes[faceIndex][mipIndex]; - o_assert_dbg(mipDataSize > 0); - } - } - int mipWidth = setup.Width >> mipIndex; - if (mipWidth == 0) { - mipWidth = 1; - } - int mipHeight = setup.Height >> mipIndex; - if (mipHeight == 0) { - mipHeight = 1; - } - if ((TextureType::Texture2D == setup.Type) || (TextureType::TextureCube == setup.Type)) { - if (isCompressed) { - ::glCompressedTexImage2D(glImgTarget, - mipIndex, - glTexImageInternalFormat, - mipWidth, mipHeight, - 0, - mipDataSize, mipDataPtr); - ORYOL_GL_CHECK_ERROR(); - } - else { - const GLenum glTexImageType = glTypes::asGLTexImageType(setup.ColorFormat); - ::glTexImage2D(glImgTarget, - mipIndex, - glTexImageInternalFormat, - mipWidth, mipHeight, - 0, - glTexImageFormat, - glTexImageType, - mipDataPtr); - ORYOL_GL_CHECK_ERROR(); - } - } - #if !ORYOL_OPENGLES2 - else if ((TextureType::Texture3D == setup.Type) || (TextureType::TextureArray == setup.Type)) { - int mipDepth = setup.Depth >> mipIndex; - if (mipDepth == 0) { - mipDepth = 1; - } - if (isCompressed) { - ::glCompressedTexImage3D(glImgTarget, - mipIndex, - glTexImageInternalFormat, - mipWidth, mipHeight, mipDepth, - 0, - mipDataSize, mipDataPtr); - ORYOL_GL_CHECK_ERROR(); - } - else { - const GLenum glTexImageType = glTypes::asGLTexImageType(setup.ColorFormat); - ::glTexImage3D(glImgTarget, - mipIndex, - glTexImageInternalFormat, - mipWidth, mipHeight, mipDepth, - 0, - glTexImageFormat, - glTexImageType, - mipDataPtr); - ORYOL_GL_CHECK_ERROR(); - } - } - #endif - } - } - } - } - - // additional render target stuff - if (setup.IsRenderTarget) { - // create MSAA renderbuffer - #if !ORYOL_OPENGLES2 - const bool msaa = (setup.SampleCount > 1) && glCaps::HasFeature(glCaps::MSAARenderTargets); - if (msaa) { - ::glGenRenderbuffers(1, &tex.glMSAARenderbuffer); - o_assert_dbg(0 != tex.glMSAARenderbuffer); - ::glBindRenderbuffer(GL_RENDERBUFFER, tex.glMSAARenderbuffer); - ::glRenderbufferStorageMultisample(GL_RENDERBUFFER, setup.SampleCount, glTexImageInternalFormat, setup.Width, setup.Height); - } - #endif - ORYOL_GL_CHECK_ERROR(); - - // create depth buffer - if (setup.HasDepth()) { - o_assert_dbg(PixelFormat::IsValidTextureDepthFormat(setup.DepthFormat)); - ::glGenRenderbuffers(1, &tex.glDepthRenderbuffer); - o_assert_dbg(0 != tex.glDepthRenderbuffer); - ::glBindRenderbuffer(GL_RENDERBUFFER, tex.glDepthRenderbuffer); - GLenum glDepthFormat = glTypes::asGLDepthAttachmentFormat(setup.DepthFormat); - #if !ORYOL_OPENGLES2 - if (msaa) { - ::glRenderbufferStorageMultisample(GL_RENDERBUFFER, setup.SampleCount, glDepthFormat, setup.Width, setup.Height); - } - else - #endif - { - ::glRenderbufferStorage(GL_RENDERBUFFER, glDepthFormat, setup.Width, setup.Height); - } - ORYOL_GL_CHECK_ERROR(); - } - } - - // setup texture object - TextureAttrs attrs; - attrs.Locator = tex.Setup.Locator; - attrs.Type = tex.Setup.Type; - attrs.ColorFormat = tex.Setup.ColorFormat; - attrs.DepthFormat = tex.Setup.DepthFormat; - attrs.SampleCount = tex.Setup.SampleCount; - attrs.TextureUsage = tex.Setup.TextureUsage; - attrs.Width = tex.Setup.Width; - attrs.Height = tex.Setup.Height; - attrs.Depth = tex.Setup.Depth; - attrs.NumMipMaps = tex.Setup.NumMipMaps; - attrs.IsRenderTarget = tex.Setup.IsRenderTarget; - attrs.HasDepthBuffer = tex.Setup.HasDepth(); - tex.textureAttrs = attrs; - tex.glTarget = glTexTarget; - - this->pointers.renderer->invalidateTextureState(); - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -glFactory::destroyTexture(texture& tex) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateTextureState(); - if (!tex.nativeHandles) { - for (auto& glTex : tex.glTextures) { - if (0 != glTex) { - ::glDeleteTextures(1, &glTex); - ORYOL_GL_CHECK_ERROR(); - } - } - } - if (0 != tex.glMSAARenderbuffer) { - ::glDeleteRenderbuffers(1, &tex.glMSAARenderbuffer); - ORYOL_GL_CHECK_ERROR(); - } - if (0 != tex.glDepthRenderbuffer) { - ::glDeleteRenderbuffers(1, &tex.glDepthRenderbuffer); - ORYOL_GL_CHECK_ERROR(); - } - tex.Clear(); -} - -//------------------------------------------------------------------------------ -static void -attachFramebufferTextures(const renderPass& rp) { - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - texture* colorTex = rp.colorTextures[i]; - if (colorTex) { - const GLuint glTex = colorTex->glTextures[0]; - o_assert_dbg(glTex); - const auto& att = rp.Setup.ColorAttachments[i]; - switch (colorTex->textureAttrs.Type) { - case TextureType::Texture2D: - ::glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0+i, - GL_TEXTURE_2D, - glTex, - att.MipLevel); - break; - case TextureType::TextureCube: - ::glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0+i, - glTypes::asGLCubeFaceTarget(att.Slice), - glTex, - att.MipLevel); - break; - default: - #if !ORYOL_OPENGLES2 - // 3D- and 2D-array-texture - ::glFramebufferTextureLayer(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0+i, - glTex, - att.MipLevel, - att.Slice); - #endif - break; - } - } - } - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -static void -attachFramebufferRenderbuffers(const renderPass& rp) { - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - texture* colorTex = rp.colorTextures[i]; - if (colorTex) { - const GLuint glRenderBuf = colorTex->glMSAARenderbuffer; - o_assert_dbg(glRenderBuf); - ::glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0+i, GL_RENDERBUFFER, glRenderBuf); - } - } - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -static void -attachFramebufferDepthStencilBuffer(const renderPass& rp) { - texture* dsTex = rp.depthStencilTexture; - if (dsTex) { - const GLuint glDepthRenderBuffer = dsTex->glDepthRenderbuffer; - o_assert_dbg(glDepthRenderBuffer); - ::glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, glDepthRenderBuffer); - if (PixelFormat::IsDepthStencilFormat(dsTex->Setup.DepthFormat)) { - ::glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, glDepthRenderBuffer); - } - } -} - -//------------------------------------------------------------------------------ -static void -checkFramebufferCompleteness() { - const GLenum status = ::glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (status != GL_FRAMEBUFFER_COMPLETE) { - const char* reason; - switch (status) { - #if !ORYOL_OPENGLES2 - case GL_FRAMEBUFFER_UNDEFINED: reason = "GL_FRAMEBUFFER_UNDEFINED"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: reason = "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"; break; - #endif - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: reason = "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT"; break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: reason = "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"; break; - case GL_FRAMEBUFFER_UNSUPPORTED: reason = "GL_FRAMEBUFFER_UNSUPPORTED"; break; - #if ORYOL_OPENGLES2 && !ORYOL_EMSCRIPTEN - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: reason = "GL_FRAMEBUFFER_IMCOMPLETE_DIMENSIONS"; break; - #endif - default: reason = "unknown"; - } - o_warn("glRenderPassFactory: framebuffer completeness check failed with '%s'\n", reason); - } -} - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initRenderPass(renderPass& rp) { - o_assert_dbg(this->isValid); - o_assert_dbg(0 == rp.glFramebuffer); - - gfxFactoryBase::initRenderPass(rp); - o_assert_dbg(rp.colorTextures[0]); - const bool isMSAA = 0 != rp.colorTextures[0]->glMSAARenderbuffer; - - GLint glOrigFramebuffer = 0; - ::glGetIntegerv(GL_FRAMEBUFFER_BINDING, &glOrigFramebuffer); - ORYOL_GL_CHECK_ERROR(); - - // create new framebuffer object - ::glGenFramebuffers(1, &rp.glFramebuffer); - o_assert_dbg(0 != rp.glFramebuffer); - ::glBindFramebuffer(GL_FRAMEBUFFER, rp.glFramebuffer); - ORYOL_GL_CHECK_ERROR(); - - // attach color textures or MSAA render buffers, and depth-stencil buffer - if (isMSAA) { - attachFramebufferRenderbuffers(rp); - } - else { - attachFramebufferTextures(rp); - } - attachFramebufferDepthStencilBuffer(rp); - - // check framebuffer completeness - checkFramebufferCompleteness(); - - // for MSAA, need to create resolve-framebuffers... - if (isMSAA) { - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - texture* colorTex = rp.colorTextures[i]; - if (colorTex) { - ::glGenFramebuffers(1, &rp.glMSAAResolveFramebuffers[i]); - ::glBindFramebuffer(GL_FRAMEBUFFER, rp.glMSAAResolveFramebuffers[i]); - const GLuint glTex = colorTex->glTextures[0]; - o_assert_dbg(glTex); - const auto& att = rp.Setup.ColorAttachments[i]; - switch (colorTex->textureAttrs.Type) { - case TextureType::Texture2D: - ::glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, - glTex, - att.MipLevel); - break; - case TextureType::TextureCube: - ::glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - glTypes::asGLCubeFaceTarget(att.Slice), - glTex, - att.MipLevel); - break; - default: - #if !ORYOL_OPENGLES2 - // 2D-array and 3D texture - ::glFramebufferTextureLayer(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - glTex, - att.MipLevel, - att.Slice); - #endif - break; - } - checkFramebufferCompleteness(); - } - } - } - - // restore default framebuffer binding - ::glBindFramebuffer(GL_FRAMEBUFFER, glOrigFramebuffer); - ORYOL_GL_CHECK_ERROR(); - this->pointers.renderer->invalidateTextureState(); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -glFactory::destroyRenderPass(renderPass& rp) { - o_assert_dbg(this->isValid); - if (0 != rp.glFramebuffer) { - ::glDeleteFramebuffers(1, &rp.glFramebuffer); - } - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - if (rp.glMSAAResolveFramebuffers[i]) { - ::glDeleteFramebuffers(1, &(rp.glMSAAResolveFramebuffers[i])); - } - } - ORYOL_GL_CHECK_ERROR(); - gfxFactoryBase::destroyRenderPass(rp); -} - -//------------------------------------------------------------------------------ -static GLuint -compileShader(ShaderStage::Code stage, const char* sourceString, int sourceLen) { - o_assert_dbg(sourceString && (sourceLen > 0)); - - GLuint glShader = ::glCreateShader(glTypes::asGLShaderStage(stage)); - o_assert_dbg(0 != glShader); - ORYOL_GL_CHECK_ERROR(); - - // attach source to shader object - ::glShaderSource(glShader, 1, &sourceString, &sourceLen); - ORYOL_GL_CHECK_ERROR(); - - // compile the shader - ::glCompileShader(glShader); - ORYOL_GL_CHECK_ERROR(); - - // compilation failed? - GLint compileStatus = 0; - ::glGetShaderiv(glShader, GL_COMPILE_STATUS, &compileStatus); - ORYOL_GL_CHECK_ERROR(); - - #if ORYOL_DEBUG - GLint logLength = 0; - ::glGetShaderiv(glShader, GL_INFO_LOG_LENGTH, &logLength); - ORYOL_GL_CHECK_ERROR(); - if (logLength > 0) { - - // first print the shader source - Log::Info("SHADER SOURCE:\n%s\n\n", sourceString); - - // now print the info log - GLchar* shdLogBuf = (GLchar*) Memory::Alloc(logLength); - ::glGetShaderInfoLog(glShader, logLength, &logLength, shdLogBuf); - ORYOL_GL_CHECK_ERROR(); - Log::Info("SHADER LOG: %s\n\n", shdLogBuf); - Memory::Free(shdLogBuf); - } - #endif - - if (!compileStatus) { - // compiling failed - ::glDeleteShader(glShader); - ORYOL_GL_CHECK_ERROR(); - glShader = 0; - } - return glShader; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initShader(shader& shd) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateShaderState(); - - #if ORYOL_OPENGLES2 - const ShaderLang::Code slang = ShaderLang::GLSL100; - #elif ORYOL_OPENGLES3 - const ShaderLang::Code slang = glCaps::IsFlavour(glCaps::GLES3) ? ShaderLang::GLSLES3 : ShaderLang::GLSL100; - #elif ORYOL_OPENGL_CORE_PROFILE - const ShaderLang::Code slang = ShaderLang::GLSL330; - #else - #error "Unsupported GL profile" - #endif - const ShaderSetup& setup = shd.Setup; - - o_assert_dbg(setup.VertexShaderSource(slang).IsValid()); - o_assert_dbg(setup.FragmentShaderSource(slang).IsValid()); - - // compile vertex shader - const String& vsSource = setup.VertexShaderSource(slang); - GLuint glVertexShader = compileShader(ShaderStage::VS, vsSource.AsCStr(), vsSource.Length()); - o_assert_dbg(0 != glVertexShader); - - // compile fragment shader - const String& fsSource = setup.FragmentShaderSource(slang); - GLuint glFragmentShader = compileShader(ShaderStage::FS, fsSource.AsCStr(), fsSource.Length()); - o_assert_dbg(0 != glFragmentShader); - - // create GL program object and attach vertex/fragment shader - GLuint glProg = ::glCreateProgram(); - ::glAttachShader(glProg, glVertexShader); - ORYOL_GL_CHECK_ERROR(); - ::glAttachShader(glProg, glFragmentShader); - ORYOL_GL_CHECK_ERROR(); - - // bind vertex attribute locations - #if !ORYOL_GL_USE_GETATTRIBLOCATION - o_assert_dbg(VertexAttr::NumVertexAttrs <= glCaps::IntLimit(glCaps::MaxVertexAttribs)); - const VertexLayout& vsInputLayout = setup.InputLayout(); - for (int i = 0; i < VertexAttr::NumVertexAttrs; i++) { - VertexAttr::Code attr = (VertexAttr::Code)i; - if (vsInputLayout.Contains(attr)) { - ::glBindAttribLocation(glProg, i, VertexAttr::ToString(attr)); - } - } - ORYOL_GL_CHECK_ERROR(); - #endif - - // link the program - ::glLinkProgram(glProg); - ORYOL_GL_CHECK_ERROR(); - - // can discard shaders now if we compiled them ourselves - ::glDeleteShader(glVertexShader); - ::glDeleteShader(glFragmentShader); - - // linking successful? - GLint linkStatus; - ::glGetProgramiv(glProg, GL_LINK_STATUS, &linkStatus); - #if ORYOL_DEBUG - GLint logLength; - ::glGetProgramiv(glProg, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) { - GLchar* logBuffer = (GLchar*) Memory::Alloc(logLength); - ::glGetProgramInfoLog(glProg, logLength, &logLength, logBuffer); - Log::Info("%s\n", logBuffer); - Memory::Free(logBuffer); - } - #endif - ORYOL_GL_CHECK_ERROR(); - if (!linkStatus) { - o_warn("Failed to link program '%s'\n", setup.Locator.Location().AsCStr()); - return ResourceState::Failed; - } - - // linking succeeded, store GL program - shd.glProgram = glProg; - this->pointers.renderer->useProgram(glProg); - - // lookup uniform locations (one vec4[] per uniform block) - const int numUniformBlocks = setup.NumUniformBlocks(); - for (int ubIndex = 0; ubIndex < numUniformBlocks; ubIndex++) { - ShaderStage::Code ubBindStage = setup.UniformBlockBindStage(ubIndex); - int ubBindSlot = setup.UniformBlockBindSlot(ubIndex); - const StringAtom& ubName = setup.UniformBlockType(ubIndex); - GLint glUniformLocation = ::glGetUniformLocation(glProg, ubName.AsCStr()); - if (-1 != glUniformLocation) { - shd.bindUniformBlock(ubBindStage, ubBindSlot, glUniformLocation); - } - else { - Log::Warn("Uniform '%s' not found on shader, will be ignored!\n", ubName.AsCStr()); - } - } - - // resolve texture locations - int glTextureLocation = 0; - const int numTextures = setup.NumTextures(); - for (int texIndex = 0; texIndex < numTextures; texIndex++) { - ShaderStage::Code bindStage = setup.TexBindStage(texIndex); - int bindSlot = setup.TexBindSlot(texIndex); - const StringAtom& name = setup.TexName(texIndex); - const GLint glUniformLocation = ::glGetUniformLocation(glProg, name.AsCStr()); - if (-1 != glUniformLocation) { - shd.bindSampler(bindStage, bindSlot, glTextureLocation); - // set the sampler index in the shader program, this will never change - ::glUniform1i(glUniformLocation, glTextureLocation); - glTextureLocation++; - } - else { - Log::Warn("Sampler uniform '%s' not found on shader, will be ignored!\n", name.AsCStr()); - } - } - ORYOL_GL_CHECK_ERROR(); - - #if ORYOL_GL_USE_GETATTRIBLOCATION - // resolve attrib locations - for (int32 i = 0; i < VertexAttr::NumVertexAttrs; i++) { - GLint loc = ::glGetAttribLocation(glProg, VertexAttr::ToString((VertexAttr::Code)i)); - shd.bindAttribLocation((VertexAttr::Code)i, loc); - } - #endif - - this->pointers.renderer->invalidateShaderState(); - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -glFactory::destroyShader(shader& shd) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateShaderState(); - if (0 != shd.glProgram) { - ::glDeleteProgram(shd.glProgram); - ORYOL_GL_CHECK_ERROR(); - } - shd.Clear(); -} - -//------------------------------------------------------------------------------ -// map Oryol VertexFormats to GL vertex attributes -struct { - GLint size; - GLenum type; - GLboolean normalized; -} const vertexFormatTable[VertexFormat::NumVertexFormats] = { - { 1, GL_FLOAT, GL_FALSE }, // VertexFormat::Float - { 2, GL_FLOAT, GL_FALSE }, // VertexFormat::Float2 - { 3, GL_FLOAT, GL_FALSE }, // VertexFormat::Float3 - { 4, GL_FLOAT, GL_FALSE }, // VertexFormat::Float4 - { 4, GL_BYTE, GL_FALSE }, // VertexFormat::Byte4 - { 4, GL_BYTE, GL_TRUE }, // VertexFormat::Byte4N - { 4, GL_UNSIGNED_BYTE, GL_FALSE }, // VertexFormat::UByte4 - { 4, GL_UNSIGNED_BYTE, GL_TRUE }, // VertexFormat::UByte4N - { 2, GL_SHORT, GL_FALSE }, // VertexFormat::Short2 - { 2, GL_SHORT, GL_TRUE }, // VertexFormat::Short2N - { 4, GL_SHORT, GL_FALSE }, // VertexFormat::Short4 - { 4, GL_SHORT, GL_TRUE }, // VertexFormat::Short4N - { 4, GL_UNSIGNED_INT_2_10_10_10_REV, GL_TRUE }, // VertexFormat::UInt10_2N -}; - -//------------------------------------------------------------------------------ -static void -initVertexAttrs(pipeline& pip) { - // first disable all vertex attrs - for (int attrIndex = 0; attrIndex < VertexAttr::NumVertexAttrs; attrIndex++) { - pip.glAttrs[attrIndex] = pipeline::vertexAttr(); - pip.glAttrs[attrIndex].index = attrIndex; - } - - // convert input mesh vertex layout components to GL vertex attr - const VertexLayout& vsInputLayout = pip.shd->Setup.InputLayout(); - for (int layoutIndex = 0; layoutIndex < GfxConfig::MaxNumInputMeshes; layoutIndex++) { - const VertexLayout& layout = pip.Setup.Layouts[layoutIndex]; - const int numComps = layout.NumComponents(); - if (numComps > 0) { - for (int compIndex = 0; compIndex < numComps; compIndex++) { - const VertexLayout::Component& comp = layout.ComponentAt(compIndex); - if (vsInputLayout.Contains(comp.Attr)) { - o_assert_dbg(comp.Format < VertexFormat::NumVertexFormats); - auto& glAttr = pip.glAttrs[comp.Attr]; - o_assert_dbg(!glAttr.enabled); - glAttr.enabled = GL_TRUE; - glAttr.vbIndex = layoutIndex; - if (VertexStepFunction::PerVertex == layout.StepFunction) { - glAttr.divisor = 0; - } - else { - glAttr.divisor = layout.StepRate; - } - glAttr.stride = layout.ByteSize(); - glAttr.offset = layout.ComponentByteOffset(compIndex); - glAttr.size = vertexFormatTable[comp.Format].size; - glAttr.type = vertexFormatTable[comp.Format].type; - glAttr.normalized = vertexFormatTable[comp.Format].normalized; - } - } - } - } -} - -//------------------------------------------------------------------------------ -ResourceState::Code -glFactory::initPipeline(pipeline& pip) { - o_assert_dbg(this->isValid); - - gfxFactoryBase::initPipeline(pip); - o_assert_dbg(pip.shd); - initVertexAttrs(pip); - pip.glPrimType = glTypes::asGLPrimitiveType(pip.Setup.PrimType); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -glFactory::destroyPipeline(pipeline& pip) { - o_assert_dbg(this->isValid); - this->pointers.renderer->invalidateMeshState(); - pip.Clear(); -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glFactory.h b/code/Modules/Gfx/private/gl/glFactory.h deleted file mode 100644 index 9420d508d..000000000 --- a/code/Modules/Gfx/private/gl/glFactory.h +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glFactory.h - @ingroup _priv - @brief GL implementation of gfxFactory -*/ -#include "Gfx/private/gfxFactoryBase.h" -#include "Gfx/private/gl/gl_decl.h" - -namespace Oryol { -namespace _priv { - -class mesh; -class texture; -class renderPass; -class shader; -class pipeline; - -class glFactory : public gfxFactoryBase { -public: - /// initialize new mesh object - ResourceState::Code initMesh(mesh& msh, const void* data, int size); - /// destroy a mesh object - void destroyMesh(mesh& msh); - /// initialize a new texture object - ResourceState::Code initTexture(texture& tex, const void* data, int size); - /// destroy a texture object - void destroyTexture(texture& tex); - /// initialize a new render pass object - ResourceState::Code initRenderPass(renderPass& rp); - /// destroy a render pass object - void destroyRenderPass(renderPass& rp); - /// initialize a new shader object - ResourceState::Code initShader(shader& shd); - /// destroy a shader object - void destroyShader(shader& shd); - /// initialize a new pipeline object - ResourceState::Code initPipeline(pipeline& pip); - /// destroy a pipeline object - void destroyPipeline(pipeline& pip); - - /// helper method to setup a mesh object as fullscreen quad - ResourceState::Code initFullscreenQuad(mesh& mesh); - /// helper method to create a standard mesh - ResourceState::Code initStdMesh(mesh& mesh, const void* data, int size); - /// helper method to create vertex or index buffer - GLuint createBuffer(GLenum type, const void* data, uint32_t dataSize, Usage::Code usage); -}; - -} -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glRenderer.cc b/code/Modules/Gfx/private/gl/glRenderer.cc deleted file mode 100644 index 9a15f8298..000000000 --- a/code/Modules/Gfx/private/gl/glRenderer.cc +++ /dev/null @@ -1,1073 +0,0 @@ -//------------------------------------------------------------------------------ -// glRenderer.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "Core/Core.h" -#include "Gfx/private/displayMgr.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/private/resource.h" -#include "gl_impl.h" -#include "glRenderer.h" -#include "glTypes.h" -#include "glCaps.h" -#include "glm/vec4.hpp" -#include "glm/gtc/type_ptr.hpp" - -namespace Oryol { -namespace _priv { - -GLenum glRenderer::mapCompareFunc[CompareFunc::NumCompareFuncs] = { - GL_NEVER, - GL_LESS, - GL_EQUAL, - GL_LEQUAL, - GL_GREATER, - GL_NOTEQUAL, - GL_GEQUAL, - GL_ALWAYS -}; - -GLenum glRenderer::mapStencilOp[StencilOp::NumStencilOperations] = { - GL_KEEP, - GL_ZERO, - GL_REPLACE, - GL_INCR, - GL_DECR, - GL_INVERT, - GL_INCR_WRAP, - GL_DECR_WRAP -}; - -GLenum glRenderer::mapBlendFactor[BlendFactor::NumBlendFactors] = { - GL_ZERO, - GL_ONE, - GL_SRC_COLOR, - GL_ONE_MINUS_SRC_COLOR, - GL_SRC_ALPHA, - GL_ONE_MINUS_SRC_ALPHA, - GL_DST_COLOR, - GL_ONE_MINUS_DST_COLOR, - GL_DST_ALPHA, - GL_ONE_MINUS_DST_ALPHA, - GL_SRC_ALPHA_SATURATE, - GL_CONSTANT_COLOR, - GL_ONE_MINUS_CONSTANT_COLOR, - GL_CONSTANT_ALPHA, - GL_ONE_MINUS_CONSTANT_ALPHA, -}; - -GLenum glRenderer::mapBlendOp[BlendOperation::NumBlendOperations] = { - GL_FUNC_ADD, - GL_FUNC_SUBTRACT, - GL_FUNC_REVERSE_SUBTRACT, -}; - -GLenum glRenderer::mapCullFace[Face::NumFaceCodes] = { - GL_FRONT, - GL_BACK, - GL_FRONT_AND_BACK, -}; - -//------------------------------------------------------------------------------ -glRenderer::glRenderer() { - this->blendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - this->samplers.Fill(0); - this->glAttrVBs.Fill(0); -} - -//------------------------------------------------------------------------------ -glRenderer::~glRenderer() { - o_assert_dbg(!this->valid); -} - -//------------------------------------------------------------------------------ -void -glRenderer::setup(const GfxSetup& setup, const gfxPointers& ptrs) { - o_assert_dbg(!this->valid); - - this->valid = true; - this->pointers = ptrs; - this->gfxSetup = setup; - this->frameIndex = 0; - - #if ORYOL_GL_USE_GETATTRIBLOCATION - o_warn("glRenderer: ORYOL_GL_USE_GETATTRIBLOCATION is ON\n"); - #endif - - // in case we are on a Core Profile, create a global Vertex Array Object - #if !ORYOL_OPENGLES2 - if (!glCaps::IsFlavour(glCaps::GLES2)) { - ::glGenVertexArrays(1, &this->globalVAO); - ::glBindVertexArray(this->globalVAO); - ORYOL_GL_CHECK_ERROR(); - } - #endif - - #if !(ORYOL_OPENGLES2 || ORYOL_OPENGLES3) - ::glEnable(GL_PROGRAM_POINT_SIZE); - ORYOL_GL_CHECK_ERROR(); - #endif - - this->setupDepthStencilState(); - this->setupBlendState(); - this->setupRasterizerState(); - this->invalidateMeshState(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::discard() { - o_assert_dbg(this->valid); - - this->invalidateMeshState(); - this->invalidateShaderState(); - this->invalidateTextureState(); - this->curRenderPass = nullptr; - this->curPipeline = nullptr; - - #if !ORYOL_OPENGLES2 - if (!glCaps::IsFlavour(glCaps::GLES2)) { - ::glDeleteVertexArrays(1, &this->globalVAO); - this->globalVAO = 0; - } - #endif - - this->pointers = gfxPointers(); - this->valid = false; -} - -//------------------------------------------------------------------------------ -bool -glRenderer::isValid() const { - return this->valid; -} - -//------------------------------------------------------------------------------ -void -glRenderer::resetStateCache() { - o_assert_dbg(this->valid); - - this->setupDepthStencilState(); - this->setupBlendState(); - this->setupRasterizerState(); - this->invalidateMeshState(); - this->invalidateShaderState(); - this->invalidateTextureState(); -} - -//------------------------------------------------------------------------------ -bool -glRenderer::queryFeature(GfxFeature::Code feat) const { - o_assert_dbg(this->valid); - - switch (feat) { - case GfxFeature::TextureCompressionDXT: - return glCaps::HasFeature(glCaps::TextureCompressionDXT); - case GfxFeature::TextureCompressionPVRTC: - return glCaps::HasFeature(glCaps::TextureCompressionPVRTC); - case GfxFeature::TextureCompressionATC: - return glCaps::HasFeature(glCaps::TextureCompressionATC); - case GfxFeature::TextureCompressionETC2: - return glCaps::HasFeature(glCaps::TextureCompressionETC2); - case GfxFeature::TextureFloat: - return glCaps::HasFeature(glCaps::TextureFloat); - case GfxFeature::TextureHalfFloat: - return glCaps::HasFeature(glCaps::TextureHalfFloat); - case GfxFeature::Instancing: - return glCaps::HasFeature(glCaps::InstancedArrays); - case GfxFeature::OriginBottomLeft: - case GfxFeature::NativeTexture: - return true; - case GfxFeature::MSAARenderTargets: - return glCaps::HasFeature(glCaps::MSAARenderTargets); - case GfxFeature::PackedVertexFormat_10_2: - return glCaps::HasFeature(glCaps::PackedVertexFormat_10_2); - case GfxFeature::MultipleRenderTarget: - return glCaps::HasFeature(glCaps::MultipleRenderTarget); - case GfxFeature::Texture3D: - return glCaps::HasFeature(glCaps::Texture3D); - case GfxFeature::TextureArray: - return glCaps::HasFeature(glCaps::TextureArray); - default: - return false; - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::commitFrame() { - o_assert_dbg(this->valid); - this->rpValid = false; - this->curRenderPass = nullptr; - this->curPipeline = nullptr; - this->curPrimaryMesh = nullptr; - this->frameIndex++; -} - -//------------------------------------------------------------------------------ -void -glRenderer::applyViewPort(int x, int y, int width, int height, bool originTopLeft) { - o_assert_dbg(this->valid); - - // flip origin top/bottom if requested (this is a D3D/GL compatibility thing) - y = originTopLeft ? (this->rpAttrs.FramebufferHeight - (y + height)) : y; - - if ((x != this->viewPortX) || - (y != this->viewPortY) || - (width != this->viewPortWidth) || - (height != this->viewPortHeight)) { - - this->viewPortX = x; - this->viewPortY = y; - this->viewPortWidth = width; - this->viewPortHeight = height; - #if ORYOL_IOS - // fix iOS high-dpi coordinates (only for default rendertarget) - if (!this->curRenderPass && this->gfxSetup.HighDPI) { - x*=2; y*=2; width*=2; height*=2; - } - #endif - ::glViewport(x, y, width, height); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::applyScissorRect(int x, int y, int width, int height, bool originTopLeft) { - o_assert_dbg(this->valid); - - // flip origin top/bottom if requested (this is a D3D/GL compatibility thing) - y = originTopLeft ? (this->rpAttrs.FramebufferHeight - (y + height)) : y; - - if ((x != this->scissorX) || - (y != this->scissorY) || - (width != this->scissorWidth) || - (height != this->scissorHeight)) { - - this->scissorX = x; - this->scissorY = y; - this->scissorWidth = width; - this->scissorHeight = height; - #if ORYOL_IOS - // fix iOS high-dpi coordinates (only for default rendertarget) - if (!this->curRenderPass && this->gfxSetup.HighDPI) { - x*=2; y*=2; width*=2; height*=2; - } - #endif - ::glScissor(x, y, width, height); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::beginPass(renderPass* pass, const PassAction* action) { - o_assert_dbg(this->valid); - o_assert_dbg(action); - ORYOL_GL_CHECK_ERROR(); - - if (nullptr == pass) { - this->rpAttrs = this->pointers.displayMgr->GetDisplayAttrs(); - } - else { - o_assert_dbg(pass->colorTextures[0]); - this->rpAttrs = DisplayAttrs::FromTextureAttrs(pass->colorTextures[0]->textureAttrs); - } - - o_assert_dbg(nullptr == this->curRenderPass); - if (nullptr == pass) { - this->pointers.displayMgr->glBindDefaultFramebuffer(); - } - else { - ::glBindFramebuffer(GL_FRAMEBUFFER, pass->glFramebuffer); - ORYOL_GL_CHECK_ERROR(); - #if !ORYOL_OPENGLES2 - if (!glCaps::IsFlavour(glCaps::GLES2)) { - int numAtts = 0; - GLenum att[GfxConfig::MaxNumColorAttachments] = { }; - for (; numAtts < GfxConfig::MaxNumColorAttachments; numAtts++) { - if (pass->colorTextures[numAtts]) { - att[numAtts] = GL_COLOR_ATTACHMENT0 + numAtts; - } - else { - break; - } - } - ::glDrawBuffers(numAtts, att); - ORYOL_GL_CHECK_ERROR(); - } - #endif - } - ORYOL_GL_CHECK_ERROR(); - this->curRenderPass = pass; - this->rpValid = true; - - // prepare state for clear operations - this->applyViewPort(0, 0, this->rpAttrs.FramebufferWidth, this->rpAttrs.FramebufferHeight, false); - if (this->rasterizerState.ScissorTestEnabled) { - this->rasterizerState.ScissorTestEnabled = false; - ::glDisable(GL_SCISSOR_TEST); - } - if (PixelChannel::RGBA != this->blendState.ColorWriteMask) { - this->blendState.ColorWriteMask = PixelChannel::RGBA; - ::glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - } - if (!this->depthStencilState.DepthWriteEnabled) { - this->depthStencilState.DepthWriteEnabled = true; - ::glDepthMask(GL_TRUE); - } - if (this->depthStencilState.StencilWriteMask != 0xFF) { - this->depthStencilState.StencilWriteMask = 0xFF; - ::glStencilMask(0xFF); - } - ORYOL_GL_CHECK_ERROR(); - - // perform clear actions on render targets - // FIXME: GL_EXT_discard_framebuffer for DontCare - if ((nullptr == pass) || glCaps::IsFlavour(glCaps::GLES2)) { - // special case: default render pass or no MRT support - GLbitfield clearMask = 0; - if (action->Flags & PassAction::ClearC0) { - clearMask |= GL_COLOR_BUFFER_BIT; - const auto& c = action->Color[0]; - ::glClearColor(c.x, c.y, c.z, c.w); - } - if (action->Flags & PassAction::ClearDS) { - clearMask |= GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT; - #if (ORYOL_OPENGLES2 || ORYOL_OPENGLES3) - ::glClearDepthf(action->Depth); - #else - ::glClearDepth(action->Depth); - #endif - ::glClearStencil(action->Stencil); - } - if (0 != clearMask) { - ::glClear(clearMask); - } - ORYOL_GL_CHECK_ERROR(); - } - #if !ORYOL_OPENGLES2 - else { - o_assert_dbg(pass); - // GLES3 / GL3 potential MRT - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - if (pass->colorTextures[i]) { - if (action->Flags & (PassAction::ClearC0<Color[i]); - ::glClearBufferfv(GL_COLOR, i, c); - } - } - } - if (pass->depthStencilTexture && (action->Flags & PassAction::ClearDS)) { - ::glClearBufferfi(GL_DEPTH_STENCIL, 0, action->Depth, action->Stencil); - } - ORYOL_GL_CHECK_ERROR(); - } - #endif -} - -//------------------------------------------------------------------------------ -void -glRenderer::endPass() { - o_assert_dbg(this->valid); - - // perform the MSAA resolve if necessary - #if !ORYOL_OPENGLES2 - if (!glCaps::IsFlavour(glCaps::GLES2)) { - const renderPass* rp = this->curRenderPass; - if (rp) { - const bool isMSAA = 0 != rp->colorTextures[0]->glMSAARenderbuffer; - if (isMSAA) { - ::glBindFramebuffer(GL_READ_FRAMEBUFFER, rp->glFramebuffer); - o_assert_dbg(rp->colorTextures[0]); - const int w = rp->colorTextures[0]->textureAttrs.Width; - const int h = rp->colorTextures[0]->textureAttrs.Height; - for (int attIndex = 0; attIndex < GfxConfig::MaxNumColorAttachments; attIndex++) { - if (rp->colorTextures[attIndex]) { - o_assert_dbg(rp->glMSAAResolveFramebuffers[attIndex]); - ::glBindFramebuffer(GL_DRAW_FRAMEBUFFER, rp->glMSAAResolveFramebuffers[attIndex]); - ::glReadBuffer(GL_COLOR_ATTACHMENT0+attIndex); - const GLenum att = GL_COLOR_ATTACHMENT0; - ::glDrawBuffers(1, &att); - ::glBlitFramebuffer(0, 0, w, h, 0, 0, w, h, GL_COLOR_BUFFER_BIT, GL_NEAREST); - } - else { - break; - } - } - ORYOL_GL_CHECK_ERROR(); - } - } - } - #endif - this->pointers.displayMgr->glBindDefaultFramebuffer(); - ORYOL_GL_CHECK_ERROR(); - this->curRenderPass = nullptr; - this->rpValid = false; -} - -//------------------------------------------------------------------------------ -void -glRenderer::applyDrawState(pipeline* pip, mesh** meshes, int numMeshes) { - o_assert_dbg(this->valid); - o_assert_dbg(pip); - o_assert_dbg(meshes && (numMeshes > 0)); - - // do debug validation before record/playback, simplifies debugging - const PipelineSetup& setup = pip->Setup; - #if ORYOL_DEBUG - o_assert2(setup.BlendState.ColorFormat == this->rpAttrs.ColorPixelFormat, "ColorFormat in BlendState must match current render target!\n"); - o_assert2(setup.BlendState.DepthFormat == this->rpAttrs.DepthPixelFormat, "DepthFormat in BlendState must match current render target!\n"); - o_assert2(setup.RasterizerState.SampleCount == this->rpAttrs.SampleCount, "SampleCount in RasterizerState must match current render target!\n"); - if (this->curRenderPass) { - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - const texture* tex = this->curRenderPass->colorTextures[i]; - if (tex) { - o_assert2(setup.BlendState.ColorFormat == tex->textureAttrs.ColorFormat, "ColorFormat in BlendState must match MRT color attachments!\n"); - o_assert2(setup.RasterizerState.SampleCount == tex->textureAttrs.SampleCount, "SampleCount in RasterizerState must match MRT color attachments!\n"); - } - } - const texture* dsTex = this->curRenderPass->depthStencilTexture; - if (dsTex) { - o_assert2(setup.BlendState.DepthFormat == dsTex->textureAttrs.DepthFormat, "DepthFormat in BlendState must match depth/stencil attachment!\n"); - } - } - #endif - - // if any of the meshes is still loading, cancel the next draw state - for (int i = 0; i < numMeshes; i++) { - if (nullptr == meshes[i]) { - this->curPipeline = nullptr; - return; - } - } - - // draw state is valid, ready for rendering - this->curPipeline = pip; - o_assert_dbg(pip->shd); - - // apply DepthStencilState changes - if (setup.DepthStencilState != this->depthStencilState) { - - const DepthStencilState& curState = this->depthStencilState; - const DepthStencilState& newState = setup.DepthStencilState; - - // apply common depth-stencil state if changed - bool depthStencilChanged = false; - if (curState.Hash != newState.Hash) { - const CompareFunc::Code depthCmpFunc = newState.DepthCmpFunc; - if (depthCmpFunc != curState.DepthCmpFunc) { - o_assert_range_dbg(int(depthCmpFunc), CompareFunc::NumCompareFuncs); - ::glDepthFunc(mapCompareFunc[depthCmpFunc]); - } - const bool depthWriteEnabled = newState.DepthWriteEnabled; - if (depthWriteEnabled != curState.DepthWriteEnabled) { - ::glDepthMask(depthWriteEnabled); - } - const bool stencilEnabled = newState.StencilEnabled; - if (stencilEnabled != curState.StencilEnabled) { - if (stencilEnabled) ::glEnable(GL_STENCIL_TEST); - else ::glDisable(GL_STENCIL_TEST); - } - depthStencilChanged = true; - } - - // apply front and back stencil state - bool frontChanged = false; - const StencilState& newFront = newState.StencilFront; - const StencilState& curFront = curState.StencilFront; - if (curFront.Hash != newFront.Hash) { - frontChanged = true; - this->applyStencilState(newState, curState, GL_FRONT); - } - bool backChanged = false; - const StencilState& newBack = newState.StencilBack; - const StencilState& curBack = curState.StencilBack; - if (curBack.Hash != newBack.Hash) { - backChanged = true; - this->applyStencilState(newState, curState, GL_BACK); - } - - // update state cache - if (depthStencilChanged || frontChanged || backChanged) { - this->depthStencilState = newState; - } - } - if (setup.BlendState != this->blendState) { - - const BlendState& curState = this->blendState; - const BlendState& newState = setup.BlendState; - - if (newState.BlendEnabled != curState.BlendEnabled) { - if (newState.BlendEnabled) ::glEnable(GL_BLEND); - else ::glDisable(GL_BLEND); - } - - if ((newState.SrcFactorRGB != curState.SrcFactorRGB) || - (newState.DstFactorRGB != curState.DstFactorRGB) || - (newState.SrcFactorAlpha != curState.SrcFactorAlpha) || - (newState.DstFactorAlpha != curState.DstFactorAlpha)) { - - o_assert_dbg(newState.SrcFactorRGB < BlendFactor::NumBlendFactors); - o_assert_dbg(newState.DstFactorRGB < BlendFactor::NumBlendFactors); - o_assert_dbg(newState.SrcFactorAlpha < BlendFactor::NumBlendFactors); - o_assert_dbg(newState.DstFactorAlpha < BlendFactor::NumBlendFactors); - - ::glBlendFuncSeparate(mapBlendFactor[newState.SrcFactorRGB], - mapBlendFactor[newState.DstFactorRGB], - mapBlendFactor[newState.SrcFactorAlpha], - mapBlendFactor[newState.DstFactorAlpha]); - } - if ((newState.OpRGB != curState.OpRGB) || - (newState.OpAlpha != curState.OpAlpha)) { - - o_assert_dbg(curState.OpRGB < BlendOperation::NumBlendOperations); - o_assert_dbg(curState.OpAlpha < BlendOperation::NumBlendOperations); - - ::glBlendEquationSeparate(mapBlendOp[newState.OpRGB], mapBlendOp[newState.OpAlpha]); - } - - if (newState.ColorWriteMask != curState.ColorWriteMask) { - ::glColorMask((newState.ColorWriteMask & PixelChannel::R) != 0, - (newState.ColorWriteMask & PixelChannel::G) != 0, - (newState.ColorWriteMask & PixelChannel::B) != 0, - (newState.ColorWriteMask & PixelChannel::A) != 0); - } - - this->blendState = newState; - ORYOL_GL_CHECK_ERROR(); - } - if (setup.BlendColor != this->blendColor) { - this->blendColor = setup.BlendColor; - ::glBlendColor(this->blendColor.x, this->blendColor.y, this->blendColor.z, this->blendColor.w); - } - if (setup.RasterizerState != this->rasterizerState) { - - const RasterizerState& curState = this->rasterizerState; - const RasterizerState& newState = setup.RasterizerState; - - const bool cullFaceEnabled = newState.CullFaceEnabled; - if (cullFaceEnabled != curState.CullFaceEnabled) { - if (cullFaceEnabled) ::glEnable(GL_CULL_FACE); - else ::glDisable(GL_CULL_FACE); - } - const Face::Code cullFace = newState.CullFace; - if (cullFace != curState.CullFace) { - o_assert_range_dbg(cullFace, Face::NumFaceCodes); - ::glCullFace(mapCullFace[cullFace]); - } - const bool scissorTestEnabled = newState.ScissorTestEnabled; - if (scissorTestEnabled != curState.ScissorTestEnabled) { - if (scissorTestEnabled) ::glEnable(GL_SCISSOR_TEST); - else ::glDisable(GL_SCISSOR_TEST); - } - const bool ditherEnabled = newState.DitherEnabled; - if (ditherEnabled != curState.DitherEnabled) { - if (ditherEnabled) ::glEnable(GL_DITHER); - else ::glDisable(GL_DITHER); - } - #if !(ORYOL_OPENGLES2 || ORYOL_OPENGLES3) - const uint16_t sampleCount = newState.SampleCount; - if (sampleCount != curState.SampleCount) { - if (sampleCount > 1) ::glEnable(GL_MULTISAMPLE); - else ::glDisable(GL_MULTISAMPLE); - } - #endif - this->rasterizerState = newState; - ORYOL_GL_CHECK_ERROR(); - } - - // bind program and uniform buffers - this->useProgram(pip->shd->glProgram); - - // need to store primary mesh with primitive group defs for later draw call - this->curPrimaryMesh = meshes[0]; - - // apply meshes - #if !ORYOL_GL_USE_GETATTRIBLOCATION - // this is the default vertex attribute code path for most desktop and mobile platforms - const auto& ib = this->curPrimaryMesh->buffers[mesh::ib]; - this->bindIndexBuffer(ib.glBuffers[ib.activeSlot]); // can be 0 if mesh has no index buffer - for (int attrIndex = 0; attrIndex < VertexAttr::NumVertexAttrs; attrIndex++) { - const auto& attr = pip->glAttrs[attrIndex]; - o_assert_dbg(attr.vbIndex < numMeshes); - auto& curAttr = this->glAttrs[attrIndex]; - const mesh* msh = meshes[attr.vbIndex]; - o_assert_dbg(msh); - const auto& vb = msh->buffers[mesh::vb]; - const GLuint glVB = vb.glBuffers[vb.activeSlot]; - - bool vbChanged = (glVB != this->glAttrVBs[attrIndex]); - bool attrChanged = (attr != curAttr); - if (vbChanged || attrChanged) { - if (attr.enabled) { - this->glAttrVBs[attrIndex] = glVB; - this->bindVertexBuffer(glVB); - ::glVertexAttribPointer(attr.index, attr.size, attr.type, attr.normalized, attr.stride, (const GLvoid*)(GLintptr)attr.offset); - ORYOL_GL_CHECK_ERROR(); - if (!curAttr.enabled) { - ::glEnableVertexAttribArray(attr.index); - ORYOL_GL_CHECK_ERROR(); - } - } - else { - if (curAttr.enabled) { - ::glDisableVertexAttribArray(attr.index); - ORYOL_GL_CHECK_ERROR(); - } - } - if (curAttr.divisor != attr.divisor) { - glCaps::VertexAttribDivisor(attr.index, attr.divisor); - ORYOL_GL_CHECK_ERROR(); - } - curAttr = attr; - } - } - #else - // this uses glGetAttribLocation for platforms which don't support - // glBindAttribLocation (e.g. RaspberryPi) - // FIXME: currently this doesn't use state-caching - const auto& ib = this->curPrimaryMesh->buffers[mesh::ib]; - this->bindIndexBuffer(ib.glBuffers[ib.activeSlot]); // can be 0 - int maxUsedAttrib = 0; - for (int attrIndex = 0; attrIndex < VertexAttr::NumVertexAttrs; attrIndex++) { - const auto& attr = pip->glAttrs[attrIndex]; - const GLint glAttribIndex = pip->shd->getAttribLocation((VertexAttr::Code)attrIndex); - if (glAttribIndex >= 0) { - o_assert_dbg(attr.enabled); - const mesh* msh = meshes[attr.vbIndex]; - const auto& vb = msh->buffers[mesh::vb]; - const GLuint glVB = vb.glBuffers[vb.activeSlot]; - this->bindVertexBuffer(glVB); - ::glVertexAttribPointer(glAttribIndex, attr.size, attr.type, attr.normalized, attr.stride, (const GLvoid*)(GLintptr)attr.offset); - ORYOL_GL_CHECK_ERROR(); - ::glEnableVertexAttribArray(glAttribIndex); - ORYOL_GL_CHECK_ERROR(); - glCaps::VertexAttribDivisor(glAttribIndex, attr.divisor); - ORYOL_GL_CHECK_ERROR(); - maxUsedAttrib++; - } - } - int maxNumAttribs = glCaps::IntLimit(glCaps::MaxVertexAttribs); - if (VertexAttr::NumVertexAttrs < maxNumAttribs) { - maxNumAttribs = VertexAttr::NumVertexAttrs; - } - for (int i = maxUsedAttrib; i < maxNumAttribs; i++) { - ::glDisableVertexAttribArray(i); - ORYOL_GL_CHECK_ERROR(); - } - #endif - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::draw(int baseElementIndex, int numElements, int numInstances) { - o_assert_dbg(this->valid); - o_assert_dbg(numInstances >= 1); - - o_assert2_dbg(this->rpValid, "Not inside BeginPass / EndPass!"); - if (nullptr == this->curPipeline) { - return; - } - ORYOL_GL_CHECK_ERROR(); - const mesh* msh = this->curPrimaryMesh; - o_assert_dbg(msh); - const IndexType::Code indexType = msh->indexBufferAttrs.Type; - const GLenum glPrimType = this->curPipeline->glPrimType; - if (IndexType::None != indexType) { - // indexed geometry - const int indexByteSize = IndexType::ByteSize(indexType); - const GLvoid* indices = (const GLvoid*) (GLintptr) (baseElementIndex * indexByteSize); - const GLenum glIndexType = glTypes::asGLIndexType(indexType); - if (numInstances == 1) { - ::glDrawElements(glPrimType, numElements, glIndexType, indices); - } - else { - glCaps::DrawElementsInstanced(glPrimType, numElements, glIndexType, indices, numInstances); - } - } - else { - // non-indexed geometry - if (numInstances == 1) { - ::glDrawArrays(glPrimType, baseElementIndex, numElements); - } - else { - glCaps::DrawArraysInstanced(glPrimType, baseElementIndex, numElements, numInstances); - } - } - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::draw(int primGroupIndex, int numInstances) { - o_assert_dbg(this->valid); - o_assert2_dbg(this->rpValid, "Not inside BeginPass / EndPass!"); - if (nullptr == this->curPipeline) { - return; - } - const mesh* msh = this->curPrimaryMesh; - o_assert_dbg(msh); - if (primGroupIndex >= msh->numPrimGroups) { - // this may happen if trying to render a placeholder which doesn't - // have as many materials as the original mesh, anyway, this isn't - // a serious error - return; - } - const PrimitiveGroup& primGroup = msh->primGroups[primGroupIndex]; - this->draw(primGroup.BaseElement, primGroup.NumElements, numInstances); -} - -//------------------------------------------------------------------------------ -static GLuint -obtainUpdateBuffer(mesh::buffer& buf, int frameIndex) { - // helper function to get the right GL buffer for a vertex- - // or index-buffer update, this is implemented with - // double-buffer to prevent a sync-stall with the GPU - - // restrict buffer updates to once per frame per mesh, this isn't - // strictly required on GL, but we want the same restrictions across all 3D APIs - o_assert2(buf.updateFrameIndex != frameIndex, "Only one data update allowed per buffer and frame!\n"); - buf.updateFrameIndex = frameIndex; - - // rotate slot index to next dynamic vertex buffer - // to implement double/multi-buffering because the previous buffer - // might still be in-flight on the GPU - // NOTE: buf.numSlots can also be 1 if this is a Dynamic buffer (not a Stream buffer) - if (++buf.activeSlot >= buf.numSlots) { - buf.activeSlot = 0; - } - return buf.glBuffers[buf.activeSlot]; -} - -//------------------------------------------------------------------------------ -void -glRenderer::updateVertices(mesh* msh, const void* data, int numBytes) { - o_assert_dbg(this->valid); - o_assert_dbg(nullptr != msh); - o_assert_dbg(nullptr != data); - o_assert_dbg((numBytes > 0) && (numBytes <= msh->vertexBufferAttrs.ByteSize())); - o_assert_dbg(Usage::Immutable != msh->vertexBufferAttrs.BufferUsage); - - auto& vb = msh->buffers[mesh::vb]; - GLuint glBuffer = obtainUpdateBuffer(vb, (int)this->frameIndex); - o_assert_dbg(0 != glBuffer); - this->bindVertexBuffer(glBuffer); - ::glBufferSubData(GL_ARRAY_BUFFER, 0, numBytes, data); - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::updateIndices(mesh* msh, const void* data, int numBytes) { - o_assert_dbg(this->valid); - o_assert_dbg(nullptr != msh); - o_assert_dbg(nullptr != data); - - o_assert_dbg(IndexType::None != msh->indexBufferAttrs.Type); - o_assert_dbg((numBytes > 0) && (numBytes <= msh->indexBufferAttrs.ByteSize())); - o_assert_dbg(Usage::Immutable != msh->indexBufferAttrs.BufferUsage); - - auto& ib = msh->buffers[mesh::ib]; - GLuint glBuffer = obtainUpdateBuffer(ib, (int)this->frameIndex); - o_assert_dbg(0 != glBuffer); - this->bindIndexBuffer(glBuffer); - ::glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, numBytes, data); - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -static GLuint -obtainUpdateTexture(texture* tex, int frameIndex) { - // same as obtainUpdateBuffer, but for texture - o_assert2(tex->updateFrameIndex != frameIndex, "Only one data update allowed per texture and frame!\n"); - tex->updateFrameIndex = frameIndex; - o_assert_dbg(tex->numSlots > 1); - if (++tex->activeSlot >= tex->numSlots) { - tex->activeSlot = 0; - } - return tex->glTextures[tex->activeSlot]; -} - -//------------------------------------------------------------------------------ -void -glRenderer::updateTexture(texture* tex, const void* data, const ImageDataAttrs& offsetsAndSizes) { - o_assert_dbg(this->valid); - o_assert_dbg(nullptr != tex); - o_assert_dbg(nullptr != data); - ORYOL_GL_CHECK_ERROR(); - - // only accept 2D textures for now - const TextureAttrs& attrs = tex->textureAttrs; - o_assert_dbg(TextureType::Texture2D == attrs.Type); - o_assert_dbg(Usage::Immutable != attrs.TextureUsage); - o_assert_dbg(!PixelFormat::IsCompressedFormat(attrs.ColorFormat)); - o_assert_dbg(offsetsAndSizes.NumMipMaps <= attrs.NumMipMaps); - o_assert_dbg(offsetsAndSizes.NumFaces == 1); - - GLuint glTex = obtainUpdateTexture(tex, int(this->frameIndex)); - this->bindTexture(0, tex->glTarget, glTex); - uint8_t* srcPtr = (uint8_t*)data; - GLenum glTexImageFormat = glTypes::asGLTexImageFormat(attrs.ColorFormat); - GLenum glTexImageType = glTypes::asGLTexImageType(attrs.ColorFormat); - for (int mipIndex = 0; mipIndex < offsetsAndSizes.NumMipMaps; mipIndex++) { - o_assert_dbg(offsetsAndSizes.Sizes[0][mipIndex] > 0); - int mipWidth = attrs.Width >> mipIndex; - if (mipWidth == 0) mipWidth = 1; - int mipHeight = attrs.Height >> mipIndex; - if (mipHeight == 0) mipHeight = 1; - ::glTexSubImage2D(tex->glTarget, // target - mipIndex, // level - 0, // xoffset - 0, // yoffset - mipWidth, // width - mipHeight, // height - glTexImageFormat, // format - glTexImageType, // type - srcPtr + offsetsAndSizes.Offsets[0][mipIndex]); - ORYOL_GL_CHECK_ERROR(); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::invalidateMeshState() { - o_assert_dbg(this->valid); - - ::glBindBuffer(GL_ARRAY_BUFFER, 0); - ::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - this->vertexBuffer = 0; - this->indexBuffer = 0; - for (int i = 0; i < VertexAttr::NumVertexAttrs; i++) { - this->glAttrs[i] = pipeline::vertexAttr(); - this->glAttrVBs[i] = 0; - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::bindVertexBuffer(GLuint vb) { - o_assert_dbg(this->valid); - - if (vb != this->vertexBuffer) { - this->vertexBuffer = vb; - ::glBindBuffer(GL_ARRAY_BUFFER, vb); - ORYOL_GL_CHECK_ERROR(); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::bindIndexBuffer(GLuint ib) { - o_assert_dbg(this->valid); - - if (ib != this->indexBuffer) { - this->indexBuffer = ib; - ::glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ib); - ORYOL_GL_CHECK_ERROR(); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::invalidateShaderState() { - o_assert_dbg(this->valid); - - ORYOL_GL_CHECK_ERROR(); - ::glUseProgram(0); - ORYOL_GL_CHECK_ERROR(); - this->program = 0; -} - -//------------------------------------------------------------------------------ -void -glRenderer::useProgram(GLuint prog) { - o_assert_dbg(this->valid); - if (prog != this->program) { - this->program = prog; - ::glUseProgram(prog); - ORYOL_GL_CHECK_ERROR(); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::invalidateTextureState() { - o_assert_dbg(this->valid); - for (int i = 0; i < MaxTextureSamplers; i++) { - this->samplers[i] = 0; - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::bindTexture(int samplerIndex, GLenum target, GLuint tex) { - o_assert_dbg(this->valid); - o_assert_range_dbg(samplerIndex, MaxTextureSamplers); - #if ORYOL_OPENGLES2 - o_assert_dbg((target == GL_TEXTURE_2D) || (target == GL_TEXTURE_CUBE_MAP)); - #else - o_assert_dbg((target == GL_TEXTURE_2D) || (target == GL_TEXTURE_CUBE_MAP) || - (target == GL_TEXTURE_3D) || (target == GL_TEXTURE_2D_ARRAY)); - #endif - - if (tex != this->samplers[samplerIndex]) { - this->samplers[samplerIndex] = tex; - ::glActiveTexture(GL_TEXTURE0 + samplerIndex); - ORYOL_GL_CHECK_ERROR(); - ::glBindTexture(target, tex); - ORYOL_GL_CHECK_ERROR(); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::setupDepthStencilState() { - o_assert_dbg(this->valid); - - this->depthStencilState = DepthStencilState(); - - ::glEnable(GL_DEPTH_TEST); - ::glDepthFunc(GL_ALWAYS); - ::glDepthMask(GL_FALSE); - ::glDisable(GL_STENCIL_TEST); - ::glStencilFunc(GL_ALWAYS, 0, 0xFFFFFFFF); - ::glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - ::glStencilMask(0xFFFFFFFF); - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::applyStencilState(const DepthStencilState& newState, const DepthStencilState& curState, GLenum glFace) { - o_assert_dbg(this->valid); - - const StencilState& newStencilState = (glFace == GL_FRONT) ? newState.StencilFront : newState.StencilBack; - const StencilState& curStencilState = (glFace == GL_FRONT) ? curState.StencilFront : curState.StencilBack; - - const CompareFunc::Code cmpFunc = newStencilState.CmpFunc; - const uint32_t readMask = newState.StencilReadMask; - const int stencilRef = newState.StencilRef; - if ((cmpFunc != curStencilState.CmpFunc) || (readMask != curState.StencilReadMask) || (stencilRef != curState.StencilRef)) { - o_assert_range_dbg(int(cmpFunc), CompareFunc::NumCompareFuncs); - ::glStencilFuncSeparate(glFace, mapCompareFunc[cmpFunc], stencilRef, readMask); - } - - const StencilOp::Code sFailOp = newStencilState.FailOp; - const StencilOp::Code dFailOp = newStencilState.DepthFailOp; - const StencilOp::Code passOp = newStencilState.PassOp; - if ((sFailOp != curStencilState.FailOp) || (dFailOp != curStencilState.DepthFailOp) || (passOp != curStencilState.PassOp)) { - o_assert_range_dbg(int(sFailOp), StencilOp::NumStencilOperations); - o_assert_range_dbg(int(dFailOp), StencilOp::NumStencilOperations); - o_assert_range_dbg(int(passOp), StencilOp::NumStencilOperations); - ::glStencilOpSeparate(glFace, mapStencilOp[sFailOp], mapStencilOp[dFailOp], mapStencilOp[passOp]); - } - - const uint32_t writeMask = newState.StencilWriteMask; - if (writeMask != curState.StencilWriteMask) { - ::glStencilMaskSeparate(glFace, writeMask); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::setupBlendState() { - o_assert_dbg(this->valid); - - this->blendState = BlendState(); - ::glDisable(GL_BLEND); - ::glBlendFuncSeparate(GL_ONE, GL_ZERO, GL_ONE, GL_ZERO); - ::glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD); - ::glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - this->blendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - ::glBlendColor(1.0f, 1.0f, 1.0f, 1.0f); - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::setupRasterizerState() { - o_assert_dbg(this->valid); - - this->rasterizerState = RasterizerState(); - - ::glDisable(GL_CULL_FACE); - ::glFrontFace(GL_CW); - ::glCullFace(GL_BACK); - ::glDisable(GL_POLYGON_OFFSET_FILL); - ::glDisable(GL_SCISSOR_TEST); - ::glEnable(GL_DITHER); - #if !(ORYOL_OPENGLES2 || ORYOL_OPENGLES3) - ::glEnable(GL_MULTISAMPLE); - #endif - ORYOL_GL_CHECK_ERROR(); -} - -//------------------------------------------------------------------------------ -void -glRenderer::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t typeHash, const uint8_t* ptr, int byteSize) { - o_assert_dbg(this->valid); - // bytesize must be a multiple of sizeof(vec4) - o_assert_dbg((byteSize & 15) == 0); - if (!this->curPipeline) { - // currently no valid draw state set - return; - } - - // get the uniform layout object for this uniform block - const shader* shd = this->curPipeline->shd; - o_assert_dbg(shd); - - #if ORYOL_DEBUG - // check whether the provided struct is type-compatible with the - // expected uniform-block-layout, the size-check shouldn't be necessary - // since the hash should already bail out, but it doesn't hurt either - int ubIndex = shd->Setup.UniformBlockIndexByStageAndSlot(bindStage, bindSlot); - o_assert(InvalidIndex != ubIndex); - const uint32_t ubTypeHash = shd->Setup.UniformBlockTypeHash(ubIndex); - const int ubByteSize = shd->Setup.UniformBlockByteSize(ubIndex); - o_assert(ubTypeHash == typeHash); - o_assert(ubByteSize >= byteSize); - #endif - - GLint glLoc = shd->getUniformBlockLocation(bindStage, bindSlot); - if (-1 != glLoc) { - int vec4Count = byteSize / 16; - ::glUniform4fv(glLoc, vec4Count, (const GLfloat*)ptr); - } -} - -//------------------------------------------------------------------------------ -void -glRenderer::applyTextures(ShaderStage::Code bindStage, Oryol::_priv::texture **textures, int numTextures) { - o_assert_dbg(this->valid); - o_assert_dbg(((ShaderStage::VS == bindStage) && (numTextures <= GfxConfig::MaxNumVertexTextures)) || - ((ShaderStage::FS == bindStage) && (numTextures <= GfxConfig::MaxNumFragmentTextures))); - if (nullptr == this->curPipeline) { - return; - } - - // if any of the provided texture pointers are not valid, this means - // that a texture hasn't been loaded yet (or has failed loading), in this - // case, disable rendering for next draw call - for (int i = 0; i < numTextures; i++) { - if (nullptr == textures[i]) { - this->curPipeline = nullptr; - return; - } - } - - // apply textures and samplers - const shader* shd = this->curPipeline->shd; - o_assert_dbg(shd); - for (int i = 0; i < numTextures; i++) { - const texture* tex = textures[i]; - const int samplerIndex = shd->getSamplerIndex(bindStage, i); - if (-1 != samplerIndex) { - this->bindTexture(samplerIndex, tex->glTarget, tex->glTextures[tex->activeSlot]); - } - } -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glRenderer.h b/code/Modules/Gfx/private/gl/glRenderer.h deleted file mode 100644 index 5dd7e166f..000000000 --- a/code/Modules/Gfx/private/gl/glRenderer.h +++ /dev/null @@ -1,149 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::glRenderer - @brief OpenGL wrapper and state cache -*/ -#include "Core/Types.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/gfxPointers.h" -#include "Gfx/private/gl/gl_decl.h" -#include "glm/vec4.hpp" -#include "Gfx/private/resource.h" - -namespace Oryol { -namespace _priv { - -class glRenderer { -public: - /// constructor - glRenderer(); - /// destructor - ~glRenderer(); - - /// setup the renderer - void setup(const GfxSetup& setup, const gfxPointers& ptrs); - /// discard the renderer - void discard(); - /// return true if renderer has been setup - bool isValid() const; - - /// reset GL state cache - void resetStateCache(); - /// test if a feature is supported - bool queryFeature(GfxFeature::Code feat) const; - /// commit current frame - void commitFrame(); - /// get the current render pass attributes - const DisplayAttrs& renderPassAttrs() const; - - /// begin rendering pass (pass can be nullptr for default framebuffer) - void beginPass(renderPass* pass, const PassAction* action); - /// end current rendering pass - void endPass(); - - /// apply viewport - void applyViewPort(int x, int y, int width, int height, bool originTopLeft); - /// apply scissor rect - void applyScissorRect(int x, int y, int width, int height, bool originTopLeft); - /// apply draw state - void applyDrawState(pipeline* pip, mesh** meshes, int numMeshes); - /// apply a shader uniform block (called after applyDrawState) - void applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t typeHash, const uint8_t* ptr, int byteSize); - /// apply a group of textures - void applyTextures(ShaderStage::Code bindStage, texture** textures, int numTextures); - - /// submit a draw call with primitive group index in current mesh - void draw(int primGroupIndex, int numInstances); - /// submit a draw call with element range - void draw(int baseElementIndex, int numElements, int numInstances); - - /// update vertex data - void updateVertices(mesh* msh, const void* data, int numBytes); - /// update index data - void updateIndices(mesh* msh, const void* data, int numBytes); - /// update texture pixel data - void updateTexture(texture* tex, const void* data, const ImageDataAttrs& offsetsAndSizes); - - /// invalidate bound mesh state - void invalidateMeshState(); - /// bind vertex buffer with state caching - void bindVertexBuffer(GLuint vb); - /// bind index buffer with state caching - void bindIndexBuffer(GLuint ib); - - /// invalidate shader state - void invalidateShaderState(); - /// invoke glUseProgram (if changed) - void useProgram(GLuint prog); - - /// invalidate texture state - void invalidateTextureState(); - /// bind a texture to a sampler index - void bindTexture(int samplerIndex, GLenum target, GLuint tex); - - /// setup the initial depth-stencil-state - void setupDepthStencilState(); - /// setup the initial blend-state - void setupBlendState(); - /// setup rasterizer state - void setupRasterizerState(); - /// apply front/back side stencil state - void applyStencilState(const DepthStencilState& state, const DepthStencilState& curState, GLenum glFace); - - bool valid = false; - gfxPointers pointers; - #if !ORYOL_OPENGLES2 - GLuint globalVAO = 0; - #endif - uint64_t frameIndex = 0; - - static GLenum mapCompareFunc[CompareFunc::NumCompareFuncs]; - static GLenum mapStencilOp[StencilOp::NumStencilOperations]; - static GLenum mapBlendFactor[BlendFactor::NumBlendFactors]; - static GLenum mapBlendOp[BlendOperation::NumBlendOperations]; - static GLenum mapCullFace[Face::NumFaceCodes]; - - bool rpValid = false; - DisplayAttrs rpAttrs; - GfxSetup gfxSetup; - - // high-level state cache - renderPass* curRenderPass = nullptr; - pipeline* curPipeline = nullptr; - mesh* curPrimaryMesh = nullptr; - - // GL state cache - BlendState blendState; - DepthStencilState depthStencilState; - RasterizerState rasterizerState; - - GLint scissorX = 0; - GLint scissorY = 0; - GLsizei scissorWidth = 0; - GLsizei scissorHeight = 0; - GLint viewPortX = 0; - GLint viewPortY = 0; - GLsizei viewPortWidth = 0; - GLsizei viewPortHeight = 0; - - glm::vec4 blendColor; - - GLuint vertexBuffer = 0; - GLuint indexBuffer = 0; - GLuint program = 0; - - static const int MaxTextureSamplers = 16; - StaticArray samplers; - StaticArray glAttrs; - StaticArray glAttrVBs; -}; - -//------------------------------------------------------------------------------ -inline const DisplayAttrs& -glRenderer::renderPassAttrs() const { - return this->rpAttrs; -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glResource.cc b/code/Modules/Gfx/private/gl/glResource.cc deleted file mode 100644 index e9bff06e4..000000000 --- a/code/Modules/Gfx/private/gl/glResource.cc +++ /dev/null @@ -1,130 +0,0 @@ -//------------------------------------------------------------------------------ -// glResource.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "glResource.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -glMesh::~glMesh() { - #if ORYOL_DEBUG - for (const auto& buf : this->buffers) { - for (int i = 0; i < MaxNumSlots; i++) { - o_assert_dbg(0 == buf.glBuffers[i]); - } - } - #endif -} - -//------------------------------------------------------------------------------ -void -glMesh::Clear() { - for (auto& buf : this->buffers) { - buf = buffer(); - } - meshBase::Clear(); -} - -//------------------------------------------------------------------------------ -void -glPipeline::Clear() { - this->glAttrs.Fill(glPipeline::vertexAttr()); - this->glPrimType = 0; - pipelineBase::Clear(); -} - -//------------------------------------------------------------------------------ -glShader::glShader() { - this->Clear(); -} - -//------------------------------------------------------------------------------ -glShader::~glShader() { - o_assert_dbg(0 == this->glProgram); -} - -//------------------------------------------------------------------------------ -void -glShader::Clear() { - this->glProgram = 0; - this->samplerMappings.Fill(InvalidIndex); - #if ORYOL_GL_USE_GETATTRIBLOCATION - this->attribMapping.Fill(-1); - #endif - this->uniformBlockMappings.Fill(0); - shaderBase::Clear(); -} - -//------------------------------------------------------------------------------ -void -glShader::bindUniformBlock(ShaderStage::Code bindStage, int bindSlot, GLint glUniformLocation) { - this->uniformBlockMappings[uniformBlockArrayIndex(bindStage, bindSlot)] = glUniformLocation; -} - -//------------------------------------------------------------------------------ -void -glShader::bindSampler(ShaderStage::Code bindStage, int bindSlot, int textureIndex) { - this->samplerMappings[samplerArrayIndex(bindStage, bindSlot)] = textureIndex; -} - -//------------------------------------------------------------------------------ -#if ORYOL_GL_USE_GETATTRIBLOCATION -void -glShader::bindAttribLocation(VertexAttr::Code attr, GLint location) { - this->attribMapping[attr] = location; -} -#endif - -//------------------------------------------------------------------------------ -glTexture::glTexture() { - this->glTextures.Fill(0); -} - -//------------------------------------------------------------------------------ -glTexture::~glTexture() { - o_assert_dbg(0 == this->glTarget); - o_assert_dbg(0 == this->glDepthRenderbuffer); - o_assert_dbg(0 == this->glMSAARenderbuffer); - #if ORYOL_DEBUG - for (const auto& glTex : this->glTextures) { - o_assert_dbg(0 == glTex); - } - #endif -} - -//------------------------------------------------------------------------------ -void -glTexture::Clear() { - textureBase::Clear(); - this->glTarget = 0; - this->glDepthRenderbuffer = 0; - this->glMSAARenderbuffer = 0; - this->updateFrameIndex = -1; - this->numSlots = 1; - this->activeSlot = 0; - this->glTextures.Fill(0); -} - -//------------------------------------------------------------------------------ -glRenderPass::glRenderPass() { - this->glMSAAResolveFramebuffers.Fill(0); -} - -//------------------------------------------------------------------------------ -glRenderPass::~glRenderPass() { - o_assert_dbg(0 == this->glFramebuffer); -} - -//------------------------------------------------------------------------------ -void -glRenderPass::Clear() { - this->glFramebuffer = 0; - this->glMSAAResolveFramebuffers.Fill(0); - renderPassBase::Clear(); -} - -} // namespace _priv -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/gl/glResource.h b/code/Modules/Gfx/private/gl/glResource.h deleted file mode 100644 index 79f9c1e54..000000000 --- a/code/Modules/Gfx/private/gl/glResource.h +++ /dev/null @@ -1,215 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -#include "Gfx/private/resourceBase.h" -#include "Core/Containers/StaticArray.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/gl/gl_decl.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glMesh - @ingroup _priv - @brief GL implementation of mesh -*/ -class glMesh : public meshBase { -public: - /// destructor - ~glMesh(); - - /// clear the object (called from meshFactory::DestroyResource()) - void Clear(); - - static const int MaxNumSlots = 2; - struct buffer { - buffer() : updateFrameIndex(-1), numSlots(1), activeSlot(0) { - this->glBuffers.Fill(0); - } - int updateFrameIndex; - uint8_t numSlots; - uint8_t activeSlot; - StaticArray glBuffers; - }; - static const int vb = 0; - static const int ib = 1; - StaticArray buffers; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glPipeline - @ingroup _priv - @brief GL implementation of pipeline -*/ -class glPipeline : public pipelineBase { -public: - /// clear the object (called from pipelineFactory::DestroyResource() - void Clear(); - - struct vertexAttr { - /// test for equality - bool operator==(const vertexAttr& rhs) const { - return (this->index == rhs.index) && - (this->enabled == rhs.enabled) && - (this->vbIndex == rhs.vbIndex) && - (this->divisor == rhs.divisor) && - (this->stride == rhs.stride) && - (this->size == rhs.size) && - (this->normalized == rhs.normalized) && - (this->offset == rhs.offset) && - (this->type == rhs.type); - }; - /// test for inequality - bool operator!=(const vertexAttr& rhs) const { - return !operator==(rhs); - }; - - uint8_t index = 0; - uint8_t enabled = 0; - uint8_t vbIndex = 0; - uint8_t divisor = 0; - uint8_t stride = 0; - uint8_t size = 0; - uint8_t normalized = 0; - uint32_t offset = 0; - GLenum type = 0; - }; - StaticArray glAttrs; - GLenum glPrimType = 0; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glShader - @ingroup _priv - @brief GL implementation of shader -*/ -class glShader : public shaderBase { -public: - /// constructor - glShader(); - /// destructor - ~glShader(); - - /// clear the object - void Clear(); - - /// bind a uniform location to a slot index - void bindUniformBlock(ShaderStage::Code bindStage, int bindSlot, GLint glUniformLocation); - /// bind a sampler uniform location to a slot index - void bindSampler(ShaderStage::Code bindStage, int textureIndex, int samplerIndex); - #if ORYOL_GL_USE_GETATTRIBLOCATION - /// bind a vertex attribute location - void bindAttribLocation(VertexAttr::Code attrib, GLint attribLocation); - /// get a vertex attribute location - GLint getAttribLocation(VertexAttr::Code attrib) const; - #endif - - /// compute uniform block index - static int uniformBlockArrayIndex(ShaderStage::Code bindStage, int bindSlot); - /// get location of GL uniform block vec4 array - GLint getUniformBlockLocation(ShaderStage::Code bindStage, int bindSlot) const; - /// get the data size of an uniform block - GLint getUniformBlockSize(ShaderStage::Code bindStage, int bindSlot) const; - /// get sampler index (InvalidIndex if not exists) - int getSamplerIndex(ShaderStage::Code bindStage, int bindSlot) const; - /// compute sampler array index - static int samplerArrayIndex(ShaderStage::Code bindStage, int bindSlot); - - /// the GL shader program - GLuint glProgram = 0; - - static const int MaxTextures = GfxConfig::MaxNumVertexTextures+GfxConfig::MaxNumFragmentTextures; - static const int MaxUBsPerStage = GfxConfig::MaxNumUniformBlocksPerStage; - static const int MaxStages = ShaderStage::NumShaderStages; - - StaticArray uniformBlockMappings; - StaticArray samplerMappings; - #if ORYOL_GL_USE_GETATTRIBLOCATION - StaticArray attribMapping; - #endif -}; - -//------------------------------------------------------------------------------ -inline int -glShader::uniformBlockArrayIndex(ShaderStage::Code bindStage, int bindSlot) { - return bindSlot + bindStage*MaxUBsPerStage; -} - -//------------------------------------------------------------------------------ -inline GLint -glShader::getUniformBlockLocation(ShaderStage::Code bindStage, int bindSlot) const { - return this->uniformBlockMappings[uniformBlockArrayIndex(bindStage, bindSlot)]; -} - -//------------------------------------------------------------------------------ -inline int -glShader::samplerArrayIndex(ShaderStage::Code bindStage, int bindSlot) { - return bindSlot + (bindStage==ShaderStage::FS ? GfxConfig::MaxNumVertexTextures:0); -} - -//------------------------------------------------------------------------------ -inline int -glShader::getSamplerIndex(ShaderStage::Code bindStage, int bindSlot) const { - return this->samplerMappings[samplerArrayIndex(bindStage, bindSlot)]; -} - -//------------------------------------------------------------------------------ -#if ORYOL_GL_USE_GETATTRIBLOCATION -inline GLint -glShader::getAttribLocation(VertexAttr::Code attrib) const { - return this->attribMapping[attrib]; -} -#endif - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glTexture - @ingroup _priv - @brief GL implementation of texture class -*/ -class glTexture : public textureBase { -public: - /// constructor - glTexture(); - /// destructor - ~glTexture(); - - /// clear the object - void Clear(); - - GLenum glTarget = 0; - GLuint glDepthRenderbuffer = 0; - GLuint glMSAARenderbuffer = 0; - - static const int MaxNumSlots = 2; - int updateFrameIndex = -1; - uint8_t numSlots = 1; - uint8_t activeSlot = 0; - StaticArray glTextures; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glRenderPass - @ingroup _priv - @brief GL implementation of renderPass -*/ -class glRenderPass : public renderPassBase { -public: - /// constructor - glRenderPass(); - /// destructor - ~glRenderPass(); - - /// clear the object - void Clear(); - - GLuint glFramebuffer = 0; - StaticArray glMSAAResolveFramebuffers; -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glTypes.cc b/code/Modules/Gfx/private/gl/glTypes.cc deleted file mode 100644 index 8e18ac7df..000000000 --- a/code/Modules/Gfx/private/gl/glTypes.cc +++ /dev/null @@ -1,327 +0,0 @@ -//------------------------------------------------------------------------------ -// glTypes.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "gl_impl.h" -#include "Core/Assertion.h" -#include "glTypes.h" -#include "glCaps.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLTexImageFormat(PixelFormat::Code c) { - switch (c) { - case PixelFormat::RGBA8: - case PixelFormat::R5G5B5A1: - case PixelFormat::RGBA4: - case PixelFormat::RGBA32F: - case PixelFormat::RGBA16F: - case PixelFormat::R10G10B10A2: - return GL_RGBA; - - case PixelFormat::RGB8: - case PixelFormat::R5G6B5: - return GL_RGB; - - case PixelFormat::L8: - case PixelFormat::R32F: - case PixelFormat::R16F: - if (glCaps::IsFlavour(glCaps::GLES2)) { - return GL_LUMINANCE; - } - else - { - return GL_RED; - } - - case PixelFormat::DEPTH: - return GL_DEPTH_COMPONENT; - - case PixelFormat::DEPTHSTENCIL: - return GL_DEPTH_STENCIL; - - case PixelFormat::DXT1: - return 0x83F1; // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT - case PixelFormat::DXT3: - return 0x83F2; // GL_COMPRESSED_RGBA_S3TC_DXT3_EXT - case PixelFormat::DXT5: - return 0x83F3; // GL_COMPRESSED_RGBA_S3TC_DXT5_EXT - case PixelFormat::PVRTC2_RGB: - return 0x8C01; // GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG - case PixelFormat::PVRTC4_RGB: - return 0x8C00; // GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG - case PixelFormat::PVRTC2_RGBA: - return 0x8C03; // GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG - case PixelFormat::PVRTC4_RGBA: - return 0x8C02; // GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG - case PixelFormat::ETC2_RGB8: - return 0x9274; // GL_COMPRESSED_RGB8_ETC2 - case PixelFormat::ETC2_SRGB8: - return 0x9275; // GL_COMPRESSED_SRGB8_ETC2 - - default: - o_error("glTypes::asGLTexImageFormat(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLTexImageInternalFormat(PixelFormat::Code c) { - #if ORYOL_OPENGLES2 - return glTypes::asGLTexImageFormat(c); - #else - if (glCaps::IsFlavour(glCaps::GLES2)) { - return glTypes::asGLTexImageFormat(c); - } - else - { - switch (c) { - case PixelFormat::RGBA8: - return GL_RGBA8; - case PixelFormat::R5G5B5A1: - return GL_RGB5_A1; - case PixelFormat::RGBA4: - return GL_RGBA4; - case PixelFormat::R10G10B10A2: - return GL_RGB10_A2; - case PixelFormat::RGBA32F: - return GL_RGBA32F; - case PixelFormat::RGBA16F: - return GL_RGBA16F; - case PixelFormat::R32F: - return GL_R32F; - case PixelFormat::R16F: - return GL_R16F; - case PixelFormat::RGB8: - return GL_RGB8; - case PixelFormat::L8: - return GL_R8; - case PixelFormat::DEPTH: - return GL_DEPTH_COMPONENT16; - case PixelFormat::DEPTHSTENCIL: - return GL_DEPTH24_STENCIL8; - case PixelFormat::R5G6B5: - #if ORYOL_OPENGLES3 - return GL_RGB565; - #else - return GL_RGB5; - #endif - case PixelFormat::DXT1: - return 0x83F1; // GL_COMPRESSED_RGBA_S3TC_DXT1_EXT - case PixelFormat::DXT3: - return 0x83F2; // GL_COMPRESSED_RGBA_S3TC_DXT3_EXT - case PixelFormat::DXT5: - return 0x83F3; // GL_COMPRESSED_RGBA_S3TC_DXT5_EXT - case PixelFormat::PVRTC2_RGB: - return 0x8C01; // GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG - case PixelFormat::PVRTC4_RGB: - return 0x8C00; // GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG - case PixelFormat::PVRTC2_RGBA: - return 0x8C03; // GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG - case PixelFormat::PVRTC4_RGBA: - return 0x8C02; // GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG - case PixelFormat::ETC2_RGB8: - return 0x9274; // GL_COMPRESSED_RGB8_ETC2 - case PixelFormat::ETC2_SRGB8: - return 0x9275; // GL_COMPRESSED_SRGB8_ETC2 - - default: - o_error("glTypes::asGLTexImageFormat(): invalid param!\n"); - return 0; - } - } - #endif -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLTexImageType(PixelFormat::Code c) { - switch (c) { - case PixelFormat::RGBA32F: - case PixelFormat::R32F: - return GL_FLOAT; - - case PixelFormat::RGBA16F: - case PixelFormat::R16F: - return GL_HALF_FLOAT; - - case PixelFormat::RGBA8: - case PixelFormat::RGB8: - case PixelFormat::L8: - return GL_UNSIGNED_BYTE; - - #if !ORYOL_OPENGLES2 - case PixelFormat::R10G10B10A2: - return GL_UNSIGNED_INT_2_10_10_10_REV; - #endif - - case PixelFormat::R5G5B5A1: - return GL_UNSIGNED_SHORT_5_5_5_1; - - case PixelFormat::R5G6B5: - return GL_UNSIGNED_SHORT_5_6_5; - - case PixelFormat::RGBA4: - return GL_UNSIGNED_SHORT_4_4_4_4; - - case PixelFormat::DEPTH: - return GL_UNSIGNED_SHORT; - - case PixelFormat::DEPTHSTENCIL: - return GL_UNSIGNED_INT_24_8; - - default: - o_error("glTypes::asGLTexImageType(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLDepthAttachmentFormat(PixelFormat::Code c) { - o_assert_dbg(PixelFormat::IsValidTextureDepthFormat(c)); - switch (c) { - case PixelFormat::DEPTH: - return GL_DEPTH_COMPONENT16; - case PixelFormat::DEPTHSTENCIL: - return GL_DEPTH24_STENCIL8; - default: - o_error("glTypes::asGLRenderbufferFormat(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLIndexType(IndexType::Code c) { - switch (c) { - case IndexType::Index16: return GL_UNSIGNED_SHORT; - case IndexType::Index32: return GL_UNSIGNED_INT; - default: - o_error("glTypes::asGLIndexType(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLPrimitiveType(PrimitiveType::Code c) { - switch (c) { - case PrimitiveType::Points: return GL_POINTS; - case PrimitiveType::Lines: return GL_LINES; - case PrimitiveType::LineStrip: return GL_LINE_STRIP; - case PrimitiveType::Triangles: return GL_TRIANGLES; - case PrimitiveType::TriangleStrip: return GL_TRIANGLE_STRIP; - default: - o_error("glTypes::asGLPrimitiveType(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLPrimitiveMode(PrimitiveType::Code c) { - switch (c) { - case PrimitiveType::Points: - return GL_POINTS; - case PrimitiveType::Lines: - case PrimitiveType::LineStrip: - return GL_LINES; - case PrimitiveType::Triangles: - case PrimitiveType::TriangleStrip: - return GL_TRIANGLES; - default: - o_error("glTypes::asGLPrimitiveMode(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLShaderStage(ShaderStage::Code c) { - switch (c) { - case ShaderStage::VS: return GL_VERTEX_SHADER; - case ShaderStage::FS: return GL_FRAGMENT_SHADER; - default: - o_error("glTypes::asGLShaderType(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLTexFilterMode(TextureFilterMode::Code c) { - switch (c) { - case TextureFilterMode::Nearest: return GL_NEAREST; - case TextureFilterMode::Linear: return GL_LINEAR; - case TextureFilterMode::NearestMipmapNearest: return GL_NEAREST_MIPMAP_NEAREST; - case TextureFilterMode::NearestMipmapLinear: return GL_NEAREST_MIPMAP_LINEAR; - case TextureFilterMode::LinearMipmapNearest: return GL_LINEAR_MIPMAP_NEAREST; - case TextureFilterMode::LinearMipmapLinear: return GL_LINEAR_MIPMAP_LINEAR; - default: - o_error("glTypes::asGLTexFilterMode(): invalid param!\n"); - return 0; - }; -}; - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLTexWrapMode(TextureWrapMode::Code c) { - switch (c) { - case TextureWrapMode::ClampToEdge: return GL_CLAMP_TO_EDGE; - case TextureWrapMode::Repeat: return GL_REPEAT; - case TextureWrapMode::MirroredRepeat: return GL_MIRRORED_REPEAT; - default: - o_error("glTypes::asGLTexWrapMode(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLTextureTarget(TextureType::Code c) { - switch (c) { - case TextureType::Texture2D: return GL_TEXTURE_2D; - case TextureType::TextureCube: return GL_TEXTURE_CUBE_MAP; - #if !ORYOL_OPENGLES2 - case TextureType::Texture3D: return GL_TEXTURE_3D; - case TextureType::TextureArray: return GL_TEXTURE_2D_ARRAY; - #endif - default: - o_error("glTypes::asGLTextureTarget(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLBufferUsage(Usage::Code c) { - switch (c) { - case Usage::Immutable: return GL_STATIC_DRAW; - case Usage::Dynamic: return GL_DYNAMIC_DRAW; - case Usage::Stream: return GL_STREAM_DRAW; - default: - o_error("glTypes::asGLBufferUsage(): invalid param!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -GLenum -glTypes::asGLCubeFaceTarget(int faceIndex) { - switch (faceIndex) { - case 0: return GL_TEXTURE_CUBE_MAP_POSITIVE_X; - case 1: return GL_TEXTURE_CUBE_MAP_NEGATIVE_X; - case 2: return GL_TEXTURE_CUBE_MAP_POSITIVE_Y; - case 3: return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y; - case 4: return GL_TEXTURE_CUBE_MAP_POSITIVE_Z; - default: return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; - } -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/glTypes.h b/code/Modules/Gfx/private/gl/glTypes.h deleted file mode 100644 index 7d1f98dfd..000000000 --- a/code/Modules/Gfx/private/gl/glTypes.h +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::glTypes - @ingroup _priv - @brief OpenGL type conversion helpers -*/ -#include "Core/Types.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/gl/gl_decl.h" - -namespace Oryol { -namespace _priv { - -class glTypes { -public: - /// convert Oryol pixel format to glTexImage format - static GLenum asGLTexImageFormat(PixelFormat::Code c); - /// convert Oryol pixel format to glTexImage format, this is == TexImageFormat on GLES but may be different on desktop GL - static GLenum asGLTexImageInternalFormat(PixelFormat::Code c); - /// convert Oryol pixel format to glTexImage type - static GLenum asGLTexImageType(PixelFormat::Code c); - /// convert Oryol pixel format to depth attachment format - static GLenum asGLDepthAttachmentFormat(PixelFormat::Code c); - /// convert Oryol index type to GL index type - static GLenum asGLIndexType(IndexType::Code c); - /// convert Oryol primitive type to GL primitive type - static GLenum asGLPrimitiveType(PrimitiveType::Code c); - /// convert Oryol primitive type to GL primitive mode (points, lines, triangles) - static GLenum asGLPrimitiveMode(PrimitiveType::Code c); - /// convert Oryol shader type to GL shader type - static GLenum asGLShaderStage(ShaderStage::Code c); - /// convert Oryol texture filter to GL texture filter - static GLenum asGLTexFilterMode(TextureFilterMode::Code c); - /// convert Oryol texture wrap mode to GL texture wrap mode - static GLenum asGLTexWrapMode(TextureWrapMode::Code c); - /// convert Oryol texture type to GL texture target - static GLenum asGLTextureTarget(TextureType::Code c); - /// convert Oryol usage to GL buffer usage - static GLenum asGLBufferUsage(Usage::Code c); - /// convert cubemap face index to texture target - static GLenum asGLCubeFaceTarget(int faceIndex); -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gl/gl_decl.h b/code/Modules/Gfx/private/gl/gl_decl.h deleted file mode 100644 index 5c9042af0..000000000 --- a/code/Modules/Gfx/private/gl/gl_decl.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - Minimal GL declaration file. Include this in headers for fast compilation - and move actual GL code out of headers. -*/ - -#ifndef GL_VERSION_1_1 -typedef unsigned int GLenum; -typedef unsigned int GLbitfield; -typedef unsigned int GLuint; -typedef int GLint; -typedef int GLsizei; -typedef unsigned char GLboolean; -typedef signed char GLbyte; -typedef short GLshort; -typedef unsigned char GLubyte; -typedef unsigned short GLushort; -typedef unsigned long GLulong; -typedef float GLfloat; -typedef float GLclampf; -typedef double GLdouble; -typedef double GLclampd; -typedef void GLvoid; -#ifndef GL_INVALID_INDEX -#define GL_INVALID_INDEX 0xFFFFFFFFu -#endif -#endif - diff --git a/code/Modules/Gfx/private/gl/gl_impl.h b/code/Modules/Gfx/private/gl/gl_impl.h deleted file mode 100644 index cf850383c..000000000 --- a/code/Modules/Gfx/private/gl/gl_impl.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - Central GL header file, this is BIG, make sure to only include - this in implementation files, not header files. -*/ -#if ORYOL_RASPBERRYPI -#define GL_GLEXT_PROTOTYPES -#include "GLES2/gl2.h" -#include "GLES2/gl2ext.h" -#elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS -#include "Gfx/private/flextgl/flextGL.h" -#elif ORYOL_IOS -#include -#include -#elif ORYOL_EMSCRIPTEN - #if ORYOL_OPENGLES2 - #define GL_GLEXT_PROTOTYPES - #include - #include - #else - #include - #endif -#elif ORYOL_ANDROID -#define GL_GLEXT_PROTOTYPES -#include -#include -#else -#error "Missing platform for GL header include!" -#endif - -#ifndef GL_UNSIGNED_INT_24_8 - #define GL_UNSIGNED_INT_24_8 GL_UNSIGNED_INT_24_8_OES -#endif -#ifndef GL_TEXTURE_3D - #define GL_TEXTURE_3D GL_TEXTURE_3D_OES -#endif -#ifndef GL_DEPTH_STENCIL - #define GL_DEPTH_STENCIL GL_DEPTH_STENCIL_OES -#endif -#ifndef GL_DEPTH24_STENCIL8 - #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES -#endif -#ifndef GL_HALF_FLOAT - #define GL_HALF_FLOAT GL_HALF_FLOAT_OES -#endif -#ifndef GL_INT_2_10_10_10_REV - #define GL_INT_2_10_10_10_REV 0x8D9F -#endif -#ifndef GL_UNSIGNED_INT_2_10_10_10_REV - #define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#endif -#ifndef GL_RED - #define GL_RED 0x1903 -#endif -#ifndef GL_LUMINANCE - #define GL_LUMINANCE 0x1909 -#endif - -// Oryol GL error checking macro -#if ORYOL_DEBUG -#define ORYOL_GL_CHECK_ERROR() o_assert(glGetError() == GL_NO_ERROR) -#else -#define ORYOL_GL_CHECK_ERROR() ((void)0) -#endif diff --git a/code/Modules/Gfx/private/glfw/glfwDisplayMgr.cc b/code/Modules/Gfx/private/glfwDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/glfw/glfwDisplayMgr.cc rename to code/Modules/Gfx/private/glfwDisplayMgr.cc diff --git a/code/Modules/Gfx/private/glfw/glfwDisplayMgr.h b/code/Modules/Gfx/private/glfwDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/glfw/glfwDisplayMgr.h rename to code/Modules/Gfx/private/glfwDisplayMgr.h diff --git a/code/Modules/Gfx/private/ios/iosDisplayMgr.h b/code/Modules/Gfx/private/iosDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/ios/iosDisplayMgr.h rename to code/Modules/Gfx/private/iosDisplayMgr.h diff --git a/code/Modules/Gfx/private/ios/iosDisplayMgr.mm b/code/Modules/Gfx/private/iosDisplayMgr.mm similarity index 100% rename from code/Modules/Gfx/private/ios/iosDisplayMgr.mm rename to code/Modules/Gfx/private/iosDisplayMgr.mm diff --git a/code/Modules/Gfx/private/mtl/mtlFactory.h b/code/Modules/Gfx/private/mtl/mtlFactory.h deleted file mode 100644 index 1498716f8..000000000 --- a/code/Modules/Gfx/private/mtl/mtlFactory.h +++ /dev/null @@ -1,81 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlFactory - @ingroup _priv - @brief Metal implementation of gfxFactory -*/ -#include "Gfx/private/gfxFactoryBase.h" -#include "Gfx/private/mtl/mtl_decl.h" -#include "Core/Containers/Queue.h" -#include "Core/Containers/Map.h" - -namespace Oryol { -namespace _priv { - -class mesh; -class texture; -class renderPass; -class shader; -class pipeline; - -class mtlFactory : public gfxFactoryBase { -public: - /// setup the factory - void setup(const gfxPointers& ptrs); - /// discard the factory - void discard(); - /// initialize new mesh object - ResourceState::Code initMesh(mesh& msh, const void* data, int size); - /// destroy a mesh object - void destroyMesh(mesh& msh); - /// initialize a new texture object - ResourceState::Code initTexture(texture& tex, const void* data, int size); - /// destroy a texture object - void destroyTexture(texture& tex); - /// initialize a new shader object - ResourceState::Code initShader(shader& shd); - /// destroy a shader object - void destroyShader(shader& shd); - /// initialize a new pipeline object - ResourceState::Code initPipeline(pipeline& pip); - /// destroy a pipeline object - void destroyPipeline(pipeline& pip); - - /// add an id to be released when no longer used by GPU - void releaseDeferred(ORYOL_OBJC_ID obj); - /// garbage collect deferred-released Metal resources - void garbageCollect(); - - /// helper method to setup a mesh object as fullscreen quad - ResourceState::Code initFullscreenQuad(mesh& mesh); - /// helper method to create a standard mesh - ResourceState::Code initStdMesh(mesh& mesh, const void* data, int size); - /// helper method to create a vertex buffer object - ORYOL_OBJC_TYPED_ID(MTLBuffer) createBuffer(const void* data, uint32_t dataSize, Usage::Code usage); - - /// helper method to create a sampler state object and set in texture object - void createSamplerState(texture& tex); - /// helper method to release sampler state object of texture - void releaseSamplerState(texture& tex); - - struct freeItem { - freeItem(); - freeItem(int frameIndex, ORYOL_OBJC_ID obj); - ~freeItem(); - - int frameIndex; - ORYOL_OBJC_ID obj; - }; - Queue releaseQueue; - - struct SamplerCacheItem { - ORYOL_OBJC_TYPED_ID(MTLSamplerState) mtlSamplerState; - int useCount; - }; - Map samplerCache; -}; - -} // namespace _priv -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/mtl/mtlFactory.mm b/code/Modules/Gfx/private/mtl/mtlFactory.mm deleted file mode 100644 index 5738d241e..000000000 --- a/code/Modules/Gfx/private/mtl/mtlFactory.mm +++ /dev/null @@ -1,625 +0,0 @@ -//------------------------------------------------------------------------------ -// mtlFactory.mm -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "mtl_impl.h" -#include "mtlFactory.h" -#include "mtlTypes.h" -#include "Gfx/private/renderer.h" -#include "Gfx/private/resource.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -void -mtlFactory::setup(const gfxPointers& ptrs) { - o_assert(!this->isValid); - gfxFactoryBase::setup(ptrs); - this->samplerCache.Reserve(64); - this->releaseQueue.Reserve(256); -} - -//------------------------------------------------------------------------------ -void -mtlFactory::discard() { - o_assert(this->isValid); - this->releaseQueue.Clear(); - this->samplerCache.Clear(); - gfxFactoryBase::discard(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -mtlFactory::initMesh(mesh& msh, const void* data, int size) { - o_assert_dbg(this->isValid); - if (msh.Setup.ShouldSetupFullScreenQuad()) { - return this->initFullscreenQuad(msh); - } - else { - return this->initStdMesh(msh, data, size); - } -} - -//------------------------------------------------------------------------------ -void -mtlFactory::destroyMesh(mesh& msh) { - o_assert_dbg(this->isValid); - for (auto& buf : msh.buffers) { - for (auto& mtlBuf : buf.mtlBuffers) { - if (nil != mtlBuf) { - this->releaseDeferred(mtlBuf); - } - } - } - msh.Clear(); -} - -//------------------------------------------------------------------------------ -id -mtlFactory::createBuffer(const void* data, uint32 bufSize, Usage::Code usage) { - o_assert_dbg(bufSize > 0); - MTLResourceOptions options = mtlTypes::asBufferResourceOptions(usage); - id buf; - if (data) { - buf = [this->pointers.renderer->mtlDevice newBufferWithBytes:data length:bufSize options:options]; - } - else { - buf = [this->pointers.renderer->mtlDevice newBufferWithLength:bufSize options:options]; - } - return buf; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -mtlFactory::initStdMesh(mesh& msh, const void* data, int size) { - o_assert_dbg(nil == msh.buffers[mesh::vb].mtlBuffers[0]); - o_assert_dbg(nil == msh.buffers[mesh::ib].mtlBuffers[0]); - o_assert_dbg(1 == msh.buffers[mesh::vb].numSlots); - o_assert_dbg(1 == msh.buffers[mesh::ib].numSlots); - - VertexBufferAttrs vbAttrs; - vbAttrs.NumVertices = msh.Setup.NumVertices; - vbAttrs.BufferUsage = msh.Setup.VertexUsage; - vbAttrs.Layout = msh.Setup.Layout; - msh.vertexBufferAttrs = vbAttrs; - - IndexBufferAttrs ibAttrs; - ibAttrs.NumIndices = msh.Setup.NumIndices; - ibAttrs.Type = msh.Setup.IndicesType; - ibAttrs.BufferUsage = msh.Setup.IndexUsage; - msh.indexBufferAttrs = ibAttrs; - - msh.numPrimGroups = msh.Setup.NumPrimitiveGroups(); - o_assert_dbg(msh.numPrimGroups < GfxConfig::MaxNumPrimGroups); - for (int i = 0; i < msh.numPrimGroups; i++) { - msh.primGroups[i] = msh.Setup.PrimitiveGroup(i); - } - - const uint8* ptr = (const uint8*) data; - - // create vertex buffer - if (msh.Setup.NumVertices > 0) { - const auto& vbAttrs = msh.vertexBufferAttrs; - const int vbSize = vbAttrs.NumVertices * msh.Setup.Layout.ByteSize(); - msh.buffers[mesh::vb].numSlots = Usage::Immutable == vbAttrs.BufferUsage ? 1 : 2; - const uint8* vertices = nullptr; - if (data) { - o_assert((msh.Setup.VertexDataOffset >= 0) && (size > 0)); - vertices = ptr + msh.Setup.VertexDataOffset; - o_assert_dbg((ptr + size) >= (vertices + vbSize)); - } - for (uint8 slotIndex = 0; slotIndex < msh.buffers[mesh::vb].numSlots; slotIndex++) { - msh.buffers[mesh::vb].mtlBuffers[slotIndex] = this->createBuffer(vertices, vbSize, vbAttrs.BufferUsage); - o_assert_dbg(nil != msh.buffers[mesh::vb].mtlBuffers[slotIndex]); - } - } - - // create optional index buffer - if (msh.indexBufferAttrs.Type != IndexType::None) { - const auto& ibAttrs = msh.indexBufferAttrs; - const int ibSize = ibAttrs.NumIndices * IndexType::ByteSize(ibAttrs.Type); - msh.buffers[mesh::ib].numSlots = Usage::Immutable == ibAttrs.BufferUsage ? 1 : 2; - const uint8* indices = nullptr; - if (data) { - o_assert((msh.Setup.IndexDataOffset >= 0) && (size > 0)); - indices = ptr + msh.Setup.IndexDataOffset; - o_assert_dbg((ptr + size) >= (indices + ibSize)); - } - for (uint8 slotIndex = 0; slotIndex < msh.buffers[mesh::ib].numSlots; slotIndex++) { - msh.buffers[mesh::ib].mtlBuffers[slotIndex] = this->createBuffer(indices, ibSize, ibAttrs.BufferUsage); - o_assert_dbg(nil != msh.buffers[mesh::ib].mtlBuffers[slotIndex]); - } - } - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -mtlFactory::initFullscreenQuad(mesh& msh) { - - VertexBufferAttrs vbAttrs; - vbAttrs.NumVertices = 4; - vbAttrs.BufferUsage = Usage::Immutable; - vbAttrs.Layout.Add(VertexAttr::Position, VertexFormat::Float3); - vbAttrs.Layout.Add(VertexAttr::TexCoord0, VertexFormat::Float2); - msh.vertexBufferAttrs = vbAttrs; - - IndexBufferAttrs ibAttrs; - ibAttrs.NumIndices = 6; - ibAttrs.Type = IndexType::Index16; - ibAttrs.BufferUsage = Usage::Immutable; - msh.indexBufferAttrs = ibAttrs; - - msh.numPrimGroups = 1; - msh.primGroups[0] = PrimitiveGroup(0, 6); - - const float topV = msh.Setup.FullScreenQuadFlipV ? 0.0f : 1.0f; - const float botV = msh.Setup.FullScreenQuadFlipV ? 1.0f : 0.0f; - float vertices[] = { - -1.0f, +1.0f, 0.0f, 0.0f, topV, // top-left corner - +1.0f, +1.0f, 0.0f, 1.0f, topV, // top-right corner - +1.0f, -1.0f, 0.0f, 1.0f, botV, // bottom-right corner - -1.0f, -1.0f, 0.0f, 0.0f, botV, // bottom-left corner - }; - - uint16_t indices[] = { - 0, 2, 1, // topleft -> bottomright -> topright - 0, 3, 2, // topleft -> bottomleft -> bottomright - }; - - msh.buffers[mesh::vb].mtlBuffers[0] = this->createBuffer(vertices, sizeof(vertices), Usage::Immutable); - msh.buffers[mesh::ib].mtlBuffers[0] = this->createBuffer(indices, sizeof(indices), Usage::Immutable); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -mtlFactory::initTexture(texture& tex, const void* data, int size) { - o_assert_dbg(this->isValid); - o_assert_dbg(nil == tex.mtlTextures[0]); - o_assert_dbg(nil == tex.mtlSamplerState); - - const TextureSetup& setup = tex.Setup; - #if ORYOL_DEBUG - o_assert(setup.NumMipMaps > 0); - if (setup.IsRenderTarget) { - o_assert(PixelFormat::IsValidRenderTargetColorFormat(setup.ColorFormat)); - } - #endif - - // create one or two texture objects - tex.numSlots = Usage::Immutable == setup.TextureUsage ? 1 : 2; - - // create metal texture object - MTLTextureDescriptor* texDesc = [[MTLTextureDescriptor alloc] init]; - texDesc.textureType = mtlTypes::asTextureType(setup.Type); - if (setup.IsRenderTarget) { - texDesc.pixelFormat = mtlTypes::asRenderTargetColorFormat(setup.ColorFormat); - } - else { - texDesc.pixelFormat = mtlTypes::asTextureFormat(setup.ColorFormat); - } - if (MTLPixelFormatInvalid == texDesc.pixelFormat) { - o_warn("mtlTextureFactory: texture pixel format not supported in Metal!\n"); - return ResourceState::Failed; - } - texDesc.width = setup.Width; - texDesc.height = setup.Height; - if (setup.Type == TextureType::Texture3D) { - texDesc.depth = setup.Depth; - } - else { - texDesc.depth = 1; - } - texDesc.mipmapLevelCount = setup.NumMipMaps; - if (setup.Type == TextureType::TextureArray) { - texDesc.arrayLength = setup.Depth; - } - else { - texDesc.arrayLength = 1; - } - texDesc.usage = MTLTextureUsageShaderRead; - if (setup.IsRenderTarget) { - texDesc.resourceOptions = MTLResourceStorageModePrivate; - texDesc.cpuCacheMode = MTLCPUCacheModeDefaultCache; - texDesc.storageMode = MTLStorageModePrivate; - texDesc.usage |= MTLTextureUsageRenderTarget; - } - - const int numFaces = setup.Type == TextureType::TextureCube ? 6 : 1; - const int numSlices = setup.Type == TextureType::TextureArray ? setup.Depth : 1; - for (int slotIndex = 0; slotIndex < tex.numSlots; slotIndex++) { - tex.mtlTextures[slotIndex] = [this->pointers.renderer->mtlDevice newTextureWithDescriptor:texDesc]; - o_assert(nil != tex.mtlTextures[slotIndex]); - - // copy optional data bytes into texture - if (data) { - o_assert_dbg(size > 0); - const uint8* srcPtr = (const uint8*) data; - for (int faceIndex = 0; faceIndex < numFaces; faceIndex++) { - for (int mipIndex = 0; mipIndex < setup.ImageData.NumMipMaps; mipIndex++) { - o_assert_dbg(mipIndex <= setup.NumMipMaps); - int mipWidth = std::max(setup.Width >> mipIndex, 1); - int mipHeight = std::max(setup.Height >> mipIndex, 1); - // special case PVRTC formats: bytesPerRow must be 0 - int bytesPerRow = 0; - int bytesPerImage = 0; - if (!PixelFormat::IsPVRTC(setup.ColorFormat)) { - bytesPerRow = PixelFormat::RowPitch(setup.ColorFormat, mipWidth); - } - MTLRegion region; - if (setup.Type == TextureType::Texture3D) { - int mipDepth = std::max(setup.Depth >> mipIndex, 1); - region = MTLRegionMake3D(0, 0, 0, mipWidth, mipHeight, mipDepth); - bytesPerImage = bytesPerRow * mipHeight; - if (bytesPerImage < 4096) { - o_warn("FIXME: bytesPerImage < 4096, this must be fixed in code by copying the data\n" - "into a temp buffer with the right image alignment!\n"); - } - } - else { - region = MTLRegionMake2D(0, 0, mipWidth, mipHeight); - } - for (int sliceIndex = 0; sliceIndex < numSlices; sliceIndex++) { - const int mtlSliceIndex = setup.Type == TextureType::TextureCube ? faceIndex : sliceIndex; - const int sliceDataOffset = sliceIndex * PixelFormat::ImagePitch(setup.ColorFormat, mipWidth, mipHeight); - [tex.mtlTextures[slotIndex] replaceRegion:region - mipmapLevel:mipIndex - slice:mtlSliceIndex - withBytes:srcPtr + setup.ImageData.Offsets[faceIndex][mipIndex] + sliceDataOffset - bytesPerRow:bytesPerRow - bytesPerImage:bytesPerImage]; - } - } - } - } - } - - if (setup.IsRenderTarget) { - // prepare texture descriptor for optional MSAA and depth texture - texDesc.textureType = MTLTextureType2D; - texDesc.depth = 1; - texDesc.mipmapLevelCount = 1; - texDesc.arrayLength = 1; - - // create optional MSAA texture where offscreen rendering will go to, - // the 'default' Metal texture will serve as resolve-texture - if (setup.SampleCount > 1) { - texDesc.textureType = MTLTextureType2DMultisample; - texDesc.sampleCount = setup.SampleCount; - tex.mtlMSAATex = [this->pointers.renderer->mtlDevice newTextureWithDescriptor:texDesc]; - o_assert(nil != tex.mtlMSAATex); - } - - // create optional depth buffer texture (may be MSAA) - if (setup.HasDepth()) { - o_assert_dbg(setup.IsRenderTarget); - o_assert_dbg(PixelFormat::IsValidRenderTargetDepthFormat(setup.DepthFormat)); - o_assert_dbg(PixelFormat::None != setup.DepthFormat); - texDesc.pixelFormat = mtlTypes::asRenderTargetDepthFormat(setup.DepthFormat); - tex.mtlDepthTex = [this->pointers.renderer->mtlDevice newTextureWithDescriptor:texDesc]; - o_assert(nil != tex.mtlDepthTex); - } - } - - // create sampler object - this->createSamplerState(tex); - o_assert(nil != tex.mtlSamplerState); - - // setup texture attributes - TextureAttrs attrs; - attrs.Locator = setup.Locator; - attrs.Type = setup.Type; - attrs.ColorFormat = setup.ColorFormat; - attrs.DepthFormat = setup.DepthFormat; - attrs.SampleCount = setup.SampleCount; - attrs.TextureUsage = setup.TextureUsage; - attrs.Width = setup.Width; - attrs.Height = setup.Height; - attrs.Depth = setup.Depth; - attrs.NumMipMaps = setup.NumMipMaps; - attrs.IsRenderTarget = setup.IsRenderTarget; - attrs.HasDepthBuffer = setup.HasDepth(); - tex.textureAttrs = attrs; - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -mtlFactory::destroyTexture(texture& tex) { - o_assert_dbg(this->isValid); - for (auto& mtlTex : tex.mtlTextures) { - if (nil != mtlTex) { - this->releaseDeferred(mtlTex); - } - } - if (nil != tex.mtlDepthTex) { - this->releaseDeferred(tex.mtlDepthTex); - } - if (nil != tex.mtlMSAATex) { - this->releaseDeferred(tex.mtlMSAATex); - } - if (nil != tex.mtlSamplerState) { - this->releaseSamplerState(tex); - } - tex.Clear(); -} - -//------------------------------------------------------------------------------ -void -mtlFactory::createSamplerState(texture& tex) { - o_assert_dbg(nil == tex.mtlSamplerState); - - // check if an identical state already exists - const int cacheIndex = this->samplerCache.FindIndex(tex.Setup.Sampler.Hash); - if (InvalidIndex != cacheIndex) { - // re-use existing sampler-state object - SamplerCacheItem& item = this->samplerCache.ValueAtIndex(cacheIndex); - item.useCount++; - tex.mtlSamplerState = item.mtlSamplerState; - } - else { - // create new sampler-state object - MTLSamplerDescriptor* desc = [[MTLSamplerDescriptor alloc] init]; - desc.sAddressMode = mtlTypes::asSamplerAddressMode(tex.Setup.Sampler.WrapU); - desc.tAddressMode = mtlTypes::asSamplerAddressMode(tex.Setup.Sampler.WrapV); - if (TextureType::Texture3D == tex.Setup.Type) { - desc.rAddressMode = mtlTypes::asSamplerAddressMode(tex.Setup.Sampler.WrapW); - } - desc.minFilter = mtlTypes::asSamplerMinMagFilter(tex.Setup.Sampler.MinFilter); - desc.magFilter = mtlTypes::asSamplerMinMagFilter(tex.Setup.Sampler.MagFilter); - desc.mipFilter = mtlTypes::asSamplerMipFilter(tex.Setup.Sampler.MinFilter); - desc.lodMinClamp = 0.0f; - desc.lodMaxClamp = FLT_MAX; - desc.maxAnisotropy = 1; - desc.normalizedCoordinates = YES; - tex.mtlSamplerState = [this->pointers.renderer->mtlDevice newSamplerStateWithDescriptor:desc]; - o_assert(nil != tex.mtlSamplerState); - - // add new cache entry - SamplerCacheItem item; - item.mtlSamplerState = tex.mtlSamplerState; - item.useCount = 1; - this->samplerCache.Add(tex.Setup.Sampler.Hash, item); - } -} - -//------------------------------------------------------------------------------ -void -mtlFactory::releaseSamplerState(texture& tex) { - o_assert_dbg(nil != tex.mtlSamplerState); - - // find cache entry (linear search is ok, since total number of - // sampler state will be low - for (int index = this->samplerCache.Size()-1; index >= 0; index--) { - SamplerCacheItem& item = this->samplerCache.ValueAtIndex(index); - if (item.mtlSamplerState == tex.mtlSamplerState) { - o_assert_dbg(item.useCount > 0); - if (--item.useCount == 0) { - this->releaseDeferred(item.mtlSamplerState); - this->samplerCache.EraseIndex(index); - } - break; - } - } -} - -//------------------------------------------------------------------------------ -ResourceState::Code -mtlFactory::initShader(shader& shd) { - o_assert_dbg(this->isValid); - o_assert_dbg(nil == shd.mtlVertexShaderLibrary); - o_assert_dbg(nil == shd.mtlFragmentShaderLibrary); - - const ShaderLang::Code slang = ShaderLang::Metal; - const ShaderSetup& setup = shd.Setup; - const void* vsLibraryByteCode = nullptr; - uint32_t vsLibraryByteCodeSize = 0; - setup.VertexShaderByteCode(slang, vsLibraryByteCode, vsLibraryByteCodeSize); - o_assert_dbg(vsLibraryByteCode && (vsLibraryByteCodeSize > 0)); - const void* fsLibraryByteCode = nullptr; - uint32_t fsLibraryByteCodeSize = 0; - setup.FragmentShaderByteCode(slang, fsLibraryByteCode, fsLibraryByteCodeSize); - o_assert_dbg(fsLibraryByteCode && (fsLibraryByteCodeSize > 0)); - - // first create the shader library (one library per bundle) - NSError* err = 0; - dispatch_data_t vsLibData = dispatch_data_create(vsLibraryByteCode, vsLibraryByteCodeSize, NULL, DISPATCH_DATA_DESTRUCTOR_DEFAULT); - shd.mtlVertexShaderLibrary = [this->pointers.renderer->mtlDevice newLibraryWithData:vsLibData error:&err]; - o_assert(nil == err); - dispatch_data_t fsLibData = dispatch_data_create(fsLibraryByteCode, fsLibraryByteCodeSize, NULL, DISPATCH_DATA_DESTRUCTOR_DEFAULT); - shd.mtlFragmentShaderLibrary = [this->pointers.renderer->mtlDevice newLibraryWithData:fsLibData error:&err]; - o_assert(nil == err); - - // create vertex and fragment shader function objects - const StringAtom& vsName = setup.VertexShaderFunc(slang); - shd.mtlVertexShader = [shd.mtlVertexShaderLibrary newFunctionWithName:[NSString stringWithUTF8String:vsName.AsCStr()]]; - const StringAtom& fsName = setup.FragmentShaderFunc(slang); - shd.mtlFragmentShader = [shd.mtlFragmentShaderLibrary newFunctionWithName:[NSString stringWithUTF8String:fsName.AsCStr()]]; - - // get the vertex shader attribute locations - shd.vsAttrIndices.Fill(InvalidIndex); - for (MTLVertexAttribute* mtlAttr in shd.mtlVertexShader.vertexAttributes) { - if (mtlAttr.active) { - VertexAttr::Code attr = VertexAttr::FromString(mtlAttr.name.UTF8String); - if (VertexAttr::InvalidVertexAttr != attr) { - shd.vsAttrIndices[attr] = int(mtlAttr.attributeIndex); - } - else { - o_error("Invalid vertex attribute name '%s'!\n", mtlAttr.name.UTF8String); - } - } - } - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -mtlFactory::destroyShader(shader& shd) { - o_assert_dbg(this->isValid); - if (nil != shd.mtlVertexShader) { - this->releaseDeferred(shd.mtlVertexShader); - } - if (nil != shd.mtlFragmentShader) { - this->releaseDeferred(shd.mtlFragmentShader); - } - if (nil != shd.mtlVertexShaderLibrary) { - this->releaseDeferred(shd.mtlVertexShaderLibrary); - } - if (nil != shd.mtlFragmentShaderLibrary) { - this->releaseDeferred(shd.mtlFragmentShaderLibrary); - } - shd.Clear(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -mtlFactory::initPipeline(pipeline& pip) { - o_assert_dbg(this->isValid); - o_assert_dbg(nil == pip.mtlRenderPipelineState); - o_assert_dbg(nil == pip.mtlDepthStencilState); - - gfxFactoryBase::initPipeline(pip); - o_assert_dbg(pip.shd); - - // create vertex-descriptor object - MTLVertexDescriptor* vtxDesc = [MTLVertexDescriptor vertexDescriptor]; - for (int meshSlotIndex = 0; meshSlotIndex < GfxConfig::MaxNumInputMeshes; meshSlotIndex++) { - // NOTE: vertex buffers are located after constant buffers - const int vbSlotIndex = meshSlotIndex + GfxConfig::MaxNumUniformBlocksPerStage; - const VertexLayout& meshLayout = pip.Setup.Layouts[meshSlotIndex]; - for (int meshCompIndex = 0; meshCompIndex < meshLayout.NumComponents(); meshCompIndex++) { - const auto& comp = meshLayout.ComponentAt(meshCompIndex); - // find the vertex attribute index in the shader - int mtlAttrIndex = pip.shd->vsAttrIndices[comp.Attr]; - if (InvalidIndex != mtlAttrIndex) { - vtxDesc.attributes[mtlAttrIndex].format = mtlTypes::asVertexFormat(comp.Format); - vtxDesc.attributes[mtlAttrIndex].bufferIndex = vbSlotIndex; - vtxDesc.attributes[mtlAttrIndex].offset = meshLayout.ComponentByteOffset(meshCompIndex); - } - } - vtxDesc.layouts[vbSlotIndex].stride = meshLayout.ByteSize(); - vtxDesc.layouts[vbSlotIndex].stepFunction = mtlTypes::asVertexStepFunc(meshLayout.StepFunction); - vtxDesc.layouts[vbSlotIndex].stepRate = meshLayout.StepRate; - } - - // create renderpipeline-state - const BlendState& blendState = pip.Setup.BlendState; - MTLRenderPipelineDescriptor* rpDesc = [[MTLRenderPipelineDescriptor alloc] init]; - o_assert(blendState.MRTCount <= GfxConfig::MaxNumColorAttachments); - for (int i = 0; i < blendState.MRTCount; i++) { - rpDesc.colorAttachments[i].pixelFormat = mtlTypes::asRenderTargetColorFormat(blendState.ColorFormat); - rpDesc.colorAttachments[i].writeMask = mtlTypes::asColorWriteMask(blendState.ColorWriteMask); - rpDesc.colorAttachments[i].blendingEnabled = blendState.BlendEnabled; - rpDesc.colorAttachments[i].alphaBlendOperation = mtlTypes::asBlendOp(blendState.OpAlpha); - rpDesc.colorAttachments[i].rgbBlendOperation = mtlTypes::asBlendOp(blendState.OpRGB); - rpDesc.colorAttachments[i].destinationAlphaBlendFactor = mtlTypes::asBlendFactor(blendState.DstFactorAlpha); - rpDesc.colorAttachments[i].destinationRGBBlendFactor = mtlTypes::asBlendFactor(blendState.DstFactorRGB); - rpDesc.colorAttachments[i].sourceAlphaBlendFactor = mtlTypes::asBlendFactor(blendState.SrcFactorAlpha); - rpDesc.colorAttachments[i].sourceRGBBlendFactor = mtlTypes::asBlendFactor(blendState.SrcFactorRGB); - } - rpDesc.depthAttachmentPixelFormat = mtlTypes::asRenderTargetDepthFormat(blendState.DepthFormat); - rpDesc.stencilAttachmentPixelFormat = mtlTypes::asRenderTargetStencilFormat(blendState.DepthFormat); - rpDesc.fragmentFunction = pip.shd->mtlFragmentShader; - rpDesc.vertexFunction = pip.shd->mtlVertexShader; - rpDesc.vertexDescriptor = vtxDesc; - rpDesc.rasterizationEnabled = YES; - rpDesc.alphaToCoverageEnabled = pip.Setup.RasterizerState.AlphaToCoverageEnabled; - rpDesc.alphaToOneEnabled = NO; - rpDesc.sampleCount = pip.Setup.RasterizerState.SampleCount; - NSError* err = NULL; - pip.mtlRenderPipelineState = [this->pointers.renderer->mtlDevice newRenderPipelineStateWithDescriptor:rpDesc error:&err]; - if (!pip.mtlRenderPipelineState) { - o_error("mtlPipelineFactory: failed to create MTLRenderPipelineState with:\n %s\n", err.localizedDescription.UTF8String); - } - - // create depth-stencil-state - const DepthStencilState& dss = pip.Setup.DepthStencilState; - MTLDepthStencilDescriptor* dsDesc = [[MTLDepthStencilDescriptor alloc] init]; - dsDesc.depthCompareFunction = mtlTypes::asCompareFunc(dss.DepthCmpFunc); - dsDesc.depthWriteEnabled = dss.DepthWriteEnabled; - if (dss.StencilEnabled) { - dsDesc.backFaceStencil = [[MTLStencilDescriptor alloc] init]; - dsDesc.backFaceStencil.stencilFailureOperation = mtlTypes::asStencilOp(dss.StencilBack.FailOp); - dsDesc.backFaceStencil.depthFailureOperation = mtlTypes::asStencilOp(dss.StencilBack.DepthFailOp); - dsDesc.backFaceStencil.depthStencilPassOperation = mtlTypes::asStencilOp(dss.StencilBack.PassOp); - dsDesc.backFaceStencil.stencilCompareFunction = mtlTypes::asCompareFunc(dss.StencilBack.CmpFunc); - dsDesc.backFaceStencil.readMask = dss.StencilReadMask; - dsDesc.backFaceStencil.writeMask = dss.StencilWriteMask; - - dsDesc.frontFaceStencil = [[MTLStencilDescriptor alloc] init]; - dsDesc.frontFaceStencil.stencilFailureOperation = mtlTypes::asStencilOp(dss.StencilFront.FailOp); - dsDesc.frontFaceStencil.depthFailureOperation = mtlTypes::asStencilOp(dss.StencilFront.DepthFailOp); - dsDesc.frontFaceStencil.depthStencilPassOperation = mtlTypes::asStencilOp(dss.StencilFront.PassOp); - dsDesc.frontFaceStencil.stencilCompareFunction = mtlTypes::asCompareFunc(dss.StencilFront.CmpFunc); - dsDesc.frontFaceStencil.readMask = dss.StencilReadMask; - dsDesc.frontFaceStencil.writeMask = dss.StencilWriteMask; - } - pip.mtlDepthStencilState = [this->pointers.renderer->mtlDevice newDepthStencilStateWithDescriptor:dsDesc]; - o_assert(nil != pip.mtlDepthStencilState); - - return ResourceState::Valid; -} - -//------------------------------------------------------------------------------ -void -mtlFactory::destroyPipeline(pipeline& pip) { - o_assert_dbg(this->isValid); - if (nil != pip.mtlRenderPipelineState) { - this->releaseDeferred(pip.mtlRenderPipelineState); - } - if (nil != pip.mtlDepthStencilState) { - this->releaseDeferred(pip.mtlDepthStencilState); - } - gfxFactoryBase::destroyPipeline(pip); -} - -//------------------------------------------------------------------------------ -mtlFactory::freeItem::freeItem() : -frameIndex(0), -obj(nil) { - // empty -} - -//------------------------------------------------------------------------------ -mtlFactory::freeItem::freeItem(int frameIndex_, ORYOL_OBJC_ID obj_) : -frameIndex(frameIndex_), -obj(obj_) { - // empty -} - -//------------------------------------------------------------------------------ -mtlFactory::freeItem::~freeItem() { - if (nil != this->obj) { - ORYOL_OBJC_RELEASE(this->obj); - this->obj = nil; - } -} - -//------------------------------------------------------------------------------ -void -mtlFactory::garbageCollect() { - o_assert_dbg(this->isValid); - const int frameIndex = this->pointers.renderer->frameIndex; - const int safeNumFrames = GfxConfig::MaxInflightFrames + 1; - if (frameIndex > safeNumFrames) { - const int minReleaseFrame = frameIndex - GfxConfig::MaxInflightFrames; - while (!this->releaseQueue.Empty() && (this->releaseQueue.Front().frameIndex < minReleaseFrame)) { - this->releaseQueue.Dequeue(); - } - } -} - -//------------------------------------------------------------------------------ -void -mtlFactory::releaseDeferred(ORYOL_OBJC_ID obj) { - o_assert_dbg(this->isValid); - const int frameIndex = this->pointers.renderer->frameIndex; - this->releaseQueue.Enqueue(frameIndex, obj); -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/mtl/mtlRenderer.h b/code/Modules/Gfx/private/mtl/mtlRenderer.h deleted file mode 100644 index 71405198f..000000000 --- a/code/Modules/Gfx/private/mtl/mtlRenderer.h +++ /dev/null @@ -1,107 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlRenderer - @ingroup _priv - @brief Metal implementation of class 'renderer' -*/ -#include "Core/Types.h" -#include "Core/Containers/StaticArray.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/GfxConfig.h" -#include "Gfx/private/gfxPointers.h" -#include "Gfx/private/resource.h" -#include "Gfx/private/mtl/mtl_decl.h" -#include "glm/vec4.hpp" - -namespace Oryol { -namespace _priv { - -class mtlRenderer { -public: - /// constructor - mtlRenderer(); - /// destructor - ~mtlRenderer(); - - /// setup the renderer - void setup(const GfxSetup& setup, const gfxPointers& ptrs); - /// discard the renderer - void discard(); - /// return true if renderer has been setup - bool isValid() const; - - /// reset the internal state cache - void resetStateCache(); - /// test if a feature is supported - bool queryFeature(GfxFeature::Code feat) const; - /// commit current frame - void commitFrame(); - /// get the current render pass attributes - const DisplayAttrs& renderPassAttrs() const; - - /// begin rendering pass (both ptrs can be nullptr) - void beginPass(renderPass* pass, const PassAction* action); - /// end current rendering pass - void endPass(); - - /// apply viewport - void applyViewPort(int x, int y, int width, int height, bool originTopLeft); - /// apply scissor rect - void applyScissorRect(int x, int y, int width, int height, bool originTopLeft); - /// apply draw state - void applyDrawState(pipeline* pip, mesh** meshes, int numMeshes); - /// apply a shader uniform block - void applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t typeHash, const uint8_t* ptr, int byteSize); - /// apply a texture block - void applyTextures(ShaderStage::Code bindStage, texture** textures, int numTextures); - - /// submit a draw call with primitive group index in current mesh - void draw(int primGroupIndex, int numInstances); - /// submit a draw call with direct primitive group - void draw(int baseElementIndex, int numElements, int numInstances); - - /// update vertex data - void updateVertices(mesh* msh, const void* data, int numBytes); - /// update index data - void updateIndices(mesh* msh, const void* data, int numBytes); - /// update texture data - void updateTexture(texture* tex, const void* data, const ImageDataAttrs& offsetsAndSizes); - - /// check if command buffer exists, create if not - void checkCreateCommandBuffer(); - - #if ORYOL_MACOS - static const int MtlUniformAlignment = 256; - #else - static const int MtlUniformAlignment = 16; - #endif - - bool valid; - GfxSetup gfxSetup; - gfxPointers pointers; - - int frameIndex; - int curFrameRotateIndex; - - bool rpValid; - DisplayAttrs rpAttrs; - - pipeline* curPipeline; - mesh* curPrimaryMesh; - unsigned long curMTLPrimitiveType; - unsigned long curMTLIndexType; - - ORYOL_OBJC_TYPED_ID(MTLDevice) mtlDevice; - ORYOL_OBJC_TYPED_ID(MTLCommandQueue) commandQueue; - ORYOL_OBJC_TYPED_ID(MTLCommandBuffer) curCommandBuffer; - ORYOL_OBJC_TYPED_ID(MTLRenderCommandEncoder) curRenderCmdEncoder; - - // rotated global uniform buffers - uint8_t* curUniformBufferPtr; - int curUniformBufferOffset; - StaticArray uniformBuffers; -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/mtl/mtlRenderer.mm b/code/Modules/Gfx/private/mtl/mtlRenderer.mm deleted file mode 100644 index 4114fa7e8..000000000 --- a/code/Modules/Gfx/private/mtl/mtlRenderer.mm +++ /dev/null @@ -1,655 +0,0 @@ -//------------------------------------------------------------------------------ -// mtlRenderer.mm -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "mtlRenderer.h" -#include "mtlTypes.h" -#include "Gfx/private/displayMgr.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/private/resource.h" -#include "Gfx/GfxTypes.h" - -namespace Oryol { -namespace _priv { - -dispatch_semaphore_t mtlInflightSemaphore; - -//------------------------------------------------------------------------------ -mtlRenderer::mtlRenderer() : -valid(false), -frameIndex(0), -curFrameRotateIndex(0), -rpValid(false), -curPipeline(nullptr), -curPrimaryMesh(nullptr), -curMTLPrimitiveType(MTLPrimitiveTypeTriangle), -curMTLIndexType(MTLIndexTypeUInt16), -mtlDevice(nil), -commandQueue(nil), -curCommandBuffer(nil), -curRenderCmdEncoder(nil), -curUniformBufferPtr(nullptr), -curUniformBufferOffset(0) { - // empty -} - -//------------------------------------------------------------------------------ -mtlRenderer::~mtlRenderer() { - o_assert_dbg(!this->valid); -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::setup(const GfxSetup& setup, const gfxPointers& ptrs) { - o_assert_dbg(!this->valid); - - this->valid = true; - this->pointers = ptrs; - this->gfxSetup = setup; - - // frame-sync semaphore - mtlInflightSemaphore = dispatch_semaphore_create(GfxConfig::MaxInflightFrames); - - // setup central metal objects - this->mtlDevice = osBridge::ptr()->mtlDevice; - this->commandQueue = [this->mtlDevice newCommandQueue]; - - // create global rotated uniform buffers - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - this->uniformBuffers[i] = [this->mtlDevice - newBufferWithLength:setup.GlobalUniformBufferSize - options:mtlTypes::asBufferResourceOptions(Usage::Stream)]; - } - this->curFrameRotateIndex = 0; - this->curUniformBufferOffset = 0; -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::discard() { - o_assert_dbg(this->valid); - - // wait for the final frame to finish - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - dispatch_semaphore_wait(mtlInflightSemaphore, DISPATCH_TIME_FOREVER); - } - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - this->uniformBuffers[i] = nil; - } - this->commandQueue = nil; - this->mtlDevice = nil; - this->pointers = gfxPointers(); - this->valid = false; -} - -//------------------------------------------------------------------------------ -bool -mtlRenderer::isValid() const { - return this->valid; -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::resetStateCache() { - o_assert_dbg(this->valid); - o_warn("mtlRenderer::resetStateCache()\n"); -} - -//------------------------------------------------------------------------------ -bool -mtlRenderer::queryFeature(GfxFeature::Code feat) const { - switch(feat) { - #if ORYOL_MACOS - case GfxFeature::TextureCompressionDXT: - #else - case GfxFeature::TextureCompressionPVRTC: - #endif - case GfxFeature::TextureFloat: - case GfxFeature::Instancing: - case GfxFeature::OriginTopLeft: - case GfxFeature::MSAARenderTargets: - case GfxFeature::PackedVertexFormat_10_2: - case GfxFeature::MultipleRenderTarget: - case GfxFeature::Texture3D: - case GfxFeature::TextureArray: - return true; - default: - return false; - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::commitFrame() { - o_assert_dbg(this->valid); - o_assert_dbg(nil == this->curRenderCmdEncoder); - o_assert_dbg(nil != this->curCommandBuffer); - - this->rpValid = false; - - // commit the global uniform buffer updates - #if ORYOL_MACOS - [this->uniformBuffers[this->curFrameRotateIndex] didModifyRange:NSMakeRange(0, this->curUniformBufferOffset)]; - #endif - [this->curCommandBuffer presentDrawable:[osBridge::ptr()->mtkView currentDrawable]]; - __block dispatch_semaphore_t blockSema = mtlInflightSemaphore; - [this->curCommandBuffer addCompletedHandler:^(id buffer) { - dispatch_semaphore_signal(blockSema); - }]; - [this->curCommandBuffer commit]; - - // rotate to next uniform buffer - if (++this->curFrameRotateIndex >= GfxConfig::MaxInflightFrames) { - this->curFrameRotateIndex = 0; - } - - this->frameIndex++; - this->curUniformBufferOffset = 0; - this->curRenderCmdEncoder = nil; - this->curCommandBuffer = nil; - this->curUniformBufferPtr = nullptr; - this->curPipeline = nullptr; - this->curPrimaryMesh = nullptr; -} - -//------------------------------------------------------------------------------ -const DisplayAttrs& -mtlRenderer::renderPassAttrs() const { - o_assert_dbg(this->valid); - return this->rpAttrs; -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::applyViewPort(int x, int y, int width, int height, bool originTopLeft) { - o_assert_dbg(this->valid); - if (nil == this->curRenderCmdEncoder) { - return; - } - - MTLViewport vp; - vp.originX = (double) x; - vp.originY = (double) (originTopLeft ? y : (this->rpAttrs.FramebufferHeight - (y + height))); - vp.width = (double) width; - vp.height = (double) height; - vp.znear = 0.0; - vp.zfar = 1.0; - [this->curRenderCmdEncoder setViewport:vp]; -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::applyScissorRect(int x, int y, int width, int height, bool originTopLeft) { - o_assert_dbg(this->valid); - o_assert_dbg(width >= 0); - o_assert_dbg(height >= 0); - - if (nil == this->curRenderCmdEncoder) { - return; - } - - // clip against frame buffer size - x = std::min(std::max(0, x), this->rpAttrs.FramebufferWidth - 1); - y = std::min(std::max(0, y), this->rpAttrs.FramebufferHeight - 1); - if ((x + width) > this->rpAttrs.FramebufferWidth) { - width = this->rpAttrs.FramebufferWidth - x; - } - if ((y + height) > this->rpAttrs.FramebufferHeight) { - height = this->rpAttrs.FramebufferHeight - y; - } - if (width <= 0) { - width = 1; - } - if (height <= 0) { - height = 1; - } - - MTLScissorRect rect; - rect.x = x; - rect.y = originTopLeft ? y : this->rpAttrs.FramebufferHeight - (y + height); - rect.width = width; - rect.height = height; - - // need to clip against render target - [this->curRenderCmdEncoder setScissorRect:rect]; -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::checkCreateCommandBuffer() { - o_assert_dbg(this->valid); - if (nil == this->curCommandBuffer) { - // block until the oldest frame in flight has finished - dispatch_semaphore_wait(mtlInflightSemaphore, DISPATCH_TIME_FOREVER); - // get a new command buffer - this->curCommandBuffer = [this->commandQueue commandBufferWithUnretainedReferences]; - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::beginPass(renderPass* pass, const PassAction* action) { - o_assert_dbg(this->valid); - o_assert_dbg(nil == this->curRenderCmdEncoder); - o_assert_dbg(action); - - // create command buffer if this is the first call in the current frame - this->checkCreateCommandBuffer(); - - // get the base pointer for the uniform buffer, this only happens once per frame - if (nullptr == this->curUniformBufferPtr) { - this->curUniformBufferPtr = (uint8*)[this->uniformBuffers[this->curFrameRotateIndex] contents]; - } - - // default, or offscreen render target? - MTLRenderPassDescriptor* passDesc = nil; - if (nullptr == pass) { - // default render target - passDesc = [osBridge::ptr()->mtkView currentRenderPassDescriptor]; - this->rpAttrs = this->pointers.displayMgr->GetDisplayAttrs(); - } - else { - passDesc = [MTLRenderPassDescriptor renderPassDescriptor]; - o_assert_dbg(pass->colorTextures[0]); - this->rpAttrs = DisplayAttrs::FromTextureAttrs(pass->colorTextures[0]->textureAttrs); - } - if (passDesc) { - this->rpValid = true; - } - else { - // pass descriptor will not be valid if window is minimized - return; - } - - // initialize renderpass descriptor - if (pass) { - // offscreen, might be multiple-rendertarget - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - if (pass->colorTextures[i]) { - const auto& colorAtt = pass->Setup.ColorAttachments[i]; - bool isMSAA = pass->colorTextures[i]->textureAttrs.SampleCount > 1; - passDesc.colorAttachments[i].loadAction = mtlTypes::asLoadAction(action, i, false); - passDesc.colorAttachments[i].storeAction = isMSAA ? MTLStoreActionMultisampleResolve:MTLStoreActionStore; - const glm::vec4& c = action->Color[i]; - passDesc.colorAttachments[i].clearColor = MTLClearColorMake(c.x, c.y, c.z, c.w); - if (isMSAA) { - // render to MSAA render target... - o_assert_dbg(pass->colorTextures[i]->mtlMSAATex); - passDesc.colorAttachments[i].texture = pass->colorTextures[i]->mtlMSAATex; - passDesc.colorAttachments[i].resolveTexture = pass->colorTextures[i]->mtlTextures[0]; - passDesc.colorAttachments[i].resolveLevel = colorAtt.MipLevel; - } - else { - // render to non-MSAA render target... - passDesc.colorAttachments[i].texture = pass->colorTextures[i]->mtlTextures[0]; - passDesc.colorAttachments[i].level = colorAtt.MipLevel; - } - switch (pass->colorTextures[i]->textureAttrs.Type) { - case TextureType::TextureCube: - case TextureType::TextureArray: - passDesc.colorAttachments[i].slice = pass->Setup.ColorAttachments[i].Slice; - break; - case TextureType::Texture3D: - passDesc.colorAttachments[i].depthPlane = pass->Setup.ColorAttachments[i].Slice; - break; - default: - break; - } - } - } - if (PixelFormat::IsDepthFormat(this->rpAttrs.DepthPixelFormat)) { - passDesc.depthAttachment.texture = pass->depthStencilTexture->mtlDepthTex; - passDesc.depthAttachment.loadAction = mtlTypes::asLoadAction(action, 0, true); - passDesc.depthAttachment.clearDepth = action->Depth; - } - else if (PixelFormat::IsDepthStencilFormat(this->rpAttrs.DepthPixelFormat)) { - passDesc.depthAttachment.texture = pass->depthStencilTexture->mtlDepthTex; - passDesc.depthAttachment.loadAction = mtlTypes::asLoadAction(action, 0, true); - passDesc.depthAttachment.clearDepth = action->Depth; - passDesc.stencilAttachment.texture = pass->depthStencilTexture->mtlDepthTex; - passDesc.stencilAttachment.loadAction = mtlTypes::asLoadAction(action, 0, true); - passDesc.stencilAttachment.clearStencil = action->Stencil; - } - } - else { - // default framebuffer - passDesc.colorAttachments[0].loadAction = mtlTypes::asLoadAction(action, 0, false); - const glm::vec4& c = action->Color[0]; - passDesc.colorAttachments[0].clearColor = MTLClearColorMake(c.x, c.y, c.z, c.w); - if (PixelFormat::IsDepthFormat(this->gfxSetup.DepthFormat)) { - passDesc.depthAttachment.loadAction = mtlTypes::asLoadAction(action, 0, true); - passDesc.depthAttachment.clearDepth = action->Depth; - } - else if (PixelFormat::IsDepthStencilFormat(this->gfxSetup.DepthFormat)) { - passDesc.depthAttachment.loadAction = mtlTypes::asLoadAction(action, 0, true); - passDesc.depthAttachment.clearDepth = action->Depth; - passDesc.stencilAttachment.loadAction = mtlTypes::asLoadAction(action, 0, true); - passDesc.stencilAttachment.clearStencil = action->Stencil; - } - } - - // create command encoder for this render pass - // this might return nil if the window is minimized - this->curRenderCmdEncoder = [this->curCommandBuffer renderCommandEncoderWithDescriptor:passDesc]; - if (nil != this->curRenderCmdEncoder) { - for (int bindSlot = 0; bindSlot < GfxConfig::MaxNumUniformBlocksPerStage; bindSlot++) { - [this->curRenderCmdEncoder - setVertexBuffer:this->uniformBuffers[this->curFrameRotateIndex] - offset:0 - atIndex:bindSlot]; - [this->curRenderCmdEncoder - setFragmentBuffer:this->uniformBuffers[this->curFrameRotateIndex] - offset:0 - atIndex:bindSlot]; - } - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::endPass() { - o_assert_dbg(this->valid); - if (nil != this->curRenderCmdEncoder) { - [this->curRenderCmdEncoder endEncoding]; - this->curRenderCmdEncoder = nil; - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::applyDrawState(pipeline* pip, mesh** meshes, int numMeshes) { - o_assert_dbg(this->valid); - o_assert_dbg(pip); - o_assert_dbg(meshes && (numMeshes > 0)); - - if (nil == this->curRenderCmdEncoder) { - return; - } - // if any of the meshes are still loading, cancel the next draw-call - for (int i = 0; i < numMeshes; i++) { - if (nullptr == meshes[i]) { - this->curPipeline = nullptr; - return; - } - } - o_assert_dbg(pip->mtlRenderPipelineState); - o_assert_dbg(pip->mtlDepthStencilState); - o_assert2_dbg(pip->Setup.BlendState.ColorFormat == this->rpAttrs.ColorPixelFormat, "ColorFormat in BlendState must match current render target!\n"); - o_assert2_dbg(pip->Setup.BlendState.DepthFormat == this->rpAttrs.DepthPixelFormat, "DepthFormat in BlendSTate must match current render target!\n"); - o_assert2_dbg(pip->Setup.RasterizerState.SampleCount == this->rpAttrs.SampleCount, "SampleCount in RasterizerState must match current render target!\n"); - - // need to store draw state and first mesh for later draw call - this->curPipeline = pip; - this->curPrimaryMesh = meshes[0]; - o_assert_dbg(this->curPrimaryMesh); - - // apply general state - const glm::vec4& bc = pip->Setup.BlendColor; - const RasterizerState& rs = pip->Setup.RasterizerState; - const DepthStencilState& dss = pip->Setup.DepthStencilState; - [this->curRenderCmdEncoder setBlendColorRed:bc.x green:bc.y blue:bc.z alpha:bc.w]; - [this->curRenderCmdEncoder setCullMode:mtlTypes::asCullMode(rs.CullFaceEnabled, rs.CullFace)]; - [this->curRenderCmdEncoder setStencilReferenceValue:dss.StencilRef]; - - // apply state objects - [this->curRenderCmdEncoder setRenderPipelineState:pip->mtlRenderPipelineState]; - [this->curRenderCmdEncoder setDepthStencilState:pip->mtlDepthStencilState]; - - // apply vertex buffers - for (int meshIndex = 0; meshIndex < GfxConfig::MaxNumInputMeshes; meshIndex++) { - const mesh* msh = meshIndex < numMeshes ? meshes[meshIndex] : nullptr; - // NOTE: vertex buffers are located after constant buffers - const int vbSlotIndex = meshIndex + GfxConfig::MaxNumUniformBlocksPerStage; - if (msh) { - // note: vb.mtlBuffers[vb.activeSlot] can be nil! - const auto& vb = msh->buffers[mesh::vb]; - [this->curRenderCmdEncoder setVertexBuffer:vb.mtlBuffers[vb.activeSlot] offset:0 atIndex:vbSlotIndex]; - } - else { - [this->curRenderCmdEncoder setVertexBuffer:nil offset:0 atIndex:vbSlotIndex]; - } - } - - // store additional state for following draw calls - this->curMTLPrimitiveType = mtlTypes::asPrimitiveType(pip->Setup.PrimType); - if (this->curPrimaryMesh->indexBufferAttrs.Type != IndexType::None) { - this->curMTLIndexType = mtlTypes::asIndexType(this->curPrimaryMesh->indexBufferAttrs.Type); - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t typeHash, const uint8_t* ptr, int byteSize) { - o_assert_dbg(this->valid); - if (nil == this->curRenderCmdEncoder) { - return; - } - if (nullptr == this->curPipeline) { - return; - } - - #if ORYOL_DEBUG - // check whether the provided struct is type-compatible with the uniform layout - shader* shd = this->curPipeline->shd; - o_assert_dbg(shd); - int ubIndex = shd->Setup.UniformBlockIndexByStageAndSlot(bindStage, bindSlot); - o_assert(InvalidIndex != ubIndex); - const uint32_t ubTypeHash = shd->Setup.UniformBlockTypeHash(ubIndex); - const int ubByteSize = shd->Setup.UniformBlockByteSize(ubIndex); - o_assert(ubTypeHash == typeHash); - o_assert(ubByteSize >= byteSize); - o_assert2_dbg((this->curUniformBufferOffset + byteSize) <= this->gfxSetup.GlobalUniformBufferSize, "Global uniform buffer exhausted!\n"); - o_assert_dbg((this->curUniformBufferOffset & (MtlUniformAlignment-1)) == 0); - #endif - - // write uniforms into global uniform buffer, advance buffer offset - // and set current uniform buffer location on command-encoder - // NOTE: we'll call didModifyRange only ONCE inside commitFrame! - uint8* dstPtr = this->curUniformBufferPtr + this->curUniformBufferOffset; - std::memcpy(dstPtr, ptr, byteSize); - if (ShaderStage::VS == bindStage) { - [this->curRenderCmdEncoder setVertexBufferOffset:this->curUniformBufferOffset atIndex:bindSlot]; - } - else { - [this->curRenderCmdEncoder setFragmentBufferOffset:this->curUniformBufferOffset atIndex:bindSlot]; - } - this->curUniformBufferOffset = Memory::RoundUp(this->curUniformBufferOffset + byteSize, MtlUniformAlignment); -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::applyTextures(ShaderStage::Code bindStage, texture** textures, int numTextures) { - o_assert_dbg(this->valid); - o_assert_dbg(((ShaderStage::VS == bindStage) && (numTextures <= GfxConfig::MaxNumVertexTextures)) || - ((ShaderStage::FS == bindStage) && (numTextures <= GfxConfig::MaxNumFragmentTextures))); - if (nil == this->curRenderCmdEncoder) { - return; - } - if (nullptr == this->curPipeline) { - return; - } - - // if any of the texture pointers is null, this means the texture hasn't loaded - // yet or has failed loading, in this case, disable the next draw call - for (int i = 0; i < numTextures; i++) { - if (nullptr == textures[i]) { - this->curPipeline = nullptr; - return; - } - } - - // apply textures and samplers - if (ShaderStage::VS == bindStage) { - for (int i = 0; i < numTextures; i++) { - texture* tex = textures[i]; - [this->curRenderCmdEncoder setVertexTexture:tex->mtlTextures[tex->activeSlot] atIndex:i]; - [this->curRenderCmdEncoder setVertexSamplerState:tex->mtlSamplerState atIndex:i]; - } - } - else { - for (int i = 0; i < numTextures; i++) { - texture* tex = textures[i]; - [this->curRenderCmdEncoder setFragmentTexture:tex->mtlTextures[tex->activeSlot] atIndex:i]; - [this->curRenderCmdEncoder setFragmentSamplerState:tex->mtlSamplerState atIndex:i]; - } - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::draw(int baseElementIndex, int numElements, int numInstances) { - o_assert_dbg(this->valid); - if (nil == this->curRenderCmdEncoder) { - return; - } - if (nullptr == this->curPipeline) { - return; - } - const mesh* msh = this->curPrimaryMesh; - o_assert_dbg(msh); - if (IndexType::None == msh->indexBufferAttrs.Type) { - [this->curRenderCmdEncoder drawPrimitives:(MTLPrimitiveType)this->curMTLPrimitiveType - vertexStart:baseElementIndex - vertexCount:numElements - instanceCount:numInstances]; - } - else { - const auto& ib = msh->buffers[mesh::ib]; - o_assert_dbg(nil != ib.mtlBuffers[ib.activeSlot]); - NSUInteger indexBufferOffset = baseElementIndex * IndexType::ByteSize(msh->indexBufferAttrs.Type); - [this->curRenderCmdEncoder drawIndexedPrimitives:(MTLPrimitiveType)this->curMTLPrimitiveType - indexCount:numElements - indexType:(MTLIndexType)this->curMTLIndexType - indexBuffer:ib.mtlBuffers[ib.activeSlot] - indexBufferOffset:indexBufferOffset - instanceCount:numInstances ]; - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::draw(int primGroupIndex, int numInstances) { - if (nil == this->curRenderCmdEncoder) { - return; - } - if (nullptr == this->curPipeline) { - return; - } - const mesh* msh = this->curPrimaryMesh; - o_assert_dbg(msh); - if (primGroupIndex >= msh->numPrimGroups) { - // this may happen if rendering a placeholder which doesn't have - // as many materials as the original mesh - return; - } - const PrimitiveGroup& primGroup = msh->primGroups[primGroupIndex]; - this->draw(primGroup.BaseElement, primGroup.NumElements, numInstances); -} - -//------------------------------------------------------------------------------ -void -meshBufferRotateActiveSlot(mesh::buffer& buf, int frameIndex) { - // helper function to get the right double-buffered - // vertex or index buffer for a buffer update - - // restrict buffer updates to once per frame per mesh, this isn't - // strictly required on GL, but we want the same restrictions across all 3D APIs - o_assert2(buf.updateFrameIndex != frameIndex, "Only one data update allowed per buffer and frame!\n"); - buf.updateFrameIndex = frameIndex; - - // if usage is streaming, rotate slot index to next dynamic vertex buffer - // to implement double/multi-buffering because the previous buffer - // might still be in-flight on the GPU - o_assert_dbg(buf.numSlots > 1); - if (++buf.activeSlot >= buf.numSlots) { - buf.activeSlot = 0; - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::updateVertices(mesh* msh, const void* data, int numBytes) { - o_assert_dbg(this->valid); - o_assert_dbg(nullptr != msh); - o_assert_dbg(nullptr != data); - o_assert_dbg((numBytes > 0) && (numBytes <= msh->vertexBufferAttrs.ByteSize())); - o_assert_dbg(Usage::Immutable != msh->vertexBufferAttrs.BufferUsage); - - auto& vb = msh->buffers[mesh::vb]; - meshBufferRotateActiveSlot(vb, this->frameIndex); - o_assert_dbg(nil != vb.mtlBuffers[vb.activeSlot]); - o_assert_dbg(numBytes <= int([vb.mtlBuffers[vb.activeSlot] length])); - void* dstPtr = [vb.mtlBuffers[vb.activeSlot] contents]; - std::memcpy(dstPtr, data, numBytes); - #if ORYOL_MACOS - [vb.mtlBuffers[vb.activeSlot] didModifyRange:NSMakeRange(0, numBytes)]; - #endif -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::updateIndices(mesh* msh, const void* data, int numBytes) { - o_assert_dbg(this->valid); - o_assert_dbg(nullptr != msh); - o_assert_dbg(nullptr != data); - o_assert_dbg((numBytes > 0) && (numBytes <= msh->indexBufferAttrs.ByteSize())); - o_assert_dbg(Usage::Immutable != msh->indexBufferAttrs.BufferUsage); - - auto& ib = msh->buffers[mesh::ib]; - meshBufferRotateActiveSlot(ib, this->frameIndex); - o_assert_dbg(nil != ib.mtlBuffers[ib.activeSlot]); - o_assert_dbg(numBytes <= int([ib.mtlBuffers[ib.activeSlot] length])); - void* dstPtr = [ib.mtlBuffers[ib.activeSlot] contents]; - std::memcpy(dstPtr, data, numBytes); - #if ORYOL_MACOS - [ib.mtlBuffers[ib.activeSlot] didModifyRange:NSMakeRange(0, numBytes)]; - #endif -} - -//------------------------------------------------------------------------------ -void -texRotateActiveSlot(texture* tex, int frameIndex) { - o_assert2(tex->updateFrameIndex != frameIndex, "Only one data update allowed per texture and frame!\n"); - tex->updateFrameIndex = frameIndex; - o_assert_dbg(tex->numSlots > 1); - if (++tex->activeSlot >= tex->numSlots) { - tex->activeSlot = 0; - } -} - -//------------------------------------------------------------------------------ -void -mtlRenderer::updateTexture(texture* tex, const void* data, const ImageDataAttrs& offsetsAndSizes) { - o_assert_dbg(this->valid); - o_assert_dbg(nullptr != tex); - o_assert_dbg(nullptr != data); - - const TextureAttrs& attrs = tex->textureAttrs; - o_assert_dbg(TextureType::Texture2D == attrs.Type); - o_assert_dbg(Usage::Immutable != attrs.TextureUsage); - o_assert_dbg(!PixelFormat::IsCompressedFormat(attrs.ColorFormat)); - o_assert_dbg(offsetsAndSizes.NumMipMaps <= attrs.NumMipMaps); - o_assert_dbg(offsetsAndSizes.NumFaces == 1); - - texRotateActiveSlot(tex, this->frameIndex); - o_assert_dbg(nil != tex->mtlTextures[tex->activeSlot]); - - // copy data bytes into texture - const uint8* srcPtr = (const uint8*) data; - for (int mipIndex = 0; mipIndex < attrs.NumMipMaps; mipIndex++) { - int mipWidth = std::max(attrs.Width >> mipIndex, 1); - int mipHeight = std::max(attrs.Height >> mipIndex, 1); - // special case PVRTC formats: bytesPerRow must be 0 - int bytesPerRow = PixelFormat::RowPitch(attrs.ColorFormat, mipWidth); - MTLRegion region = MTLRegionMake2D(0, 0, mipWidth, mipHeight); - [tex->mtlTextures[tex->activeSlot] replaceRegion:region - mipmapLevel:mipIndex - slice:0 - withBytes:srcPtr+offsetsAndSizes.Offsets[0][mipIndex] - bytesPerRow:bytesPerRow - bytesPerImage:0]; - } -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/mtl/mtlResource.h b/code/Modules/Gfx/private/mtl/mtlResource.h deleted file mode 100644 index a7d9e0df3..000000000 --- a/code/Modules/Gfx/private/mtl/mtlResource.h +++ /dev/null @@ -1,127 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -#include "Gfx/private/resourceBase.h" -#include "Gfx/private/mtl/mtl_decl.h" -#include "Core/Containers/StaticArray.h" -#include "Gfx/GfxConfig.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlMesh - @ingroup _priv - @brief Metal implementation of class mesh -*/ -class mtlMesh : public meshBase { -public: - /// destructor - ~mtlMesh(); - - /// clear the object (called from meshFactory::DestroyResource()) - void Clear(); - - static const int NumSlots = GfxConfig::MaxInflightFrames; - struct buffer { - buffer(); - int updateFrameIndex; - uint8_t numSlots; - uint8_t activeSlot; - StaticArray mtlBuffers; - }; - // indices into buffers array (first entry is vertex buffers, second entry is index buffers - static const int vb = 0; - static const int ib = 1; - StaticArray buffers; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlPipeline - @ingroup _priv - @brief Metal implementation of class pipeline -*/ -class mtlPipeline : public pipelineBase { -public: - /// constructor - mtlPipeline(); - /// destructor - ~mtlPipeline(); - - /// clear the object (called from pipelineFactory::DestroyResource()) - void Clear(); - - /// render-pipeline state - ORYOL_OBJC_TYPED_ID(MTLRenderPipelineState) mtlRenderPipelineState; - /// depth-stencil state - ORYOL_OBJC_TYPED_ID(MTLDepthStencilState) mtlDepthStencilState; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlShader - @ingroup _priv - @brief Metal implementation of class shader -*/ -class mtlShader : public shaderBase { -public: - /// constructor - mtlShader(); - /// destructor - ~mtlShader(); - - /// clear the object - void Clear(); - - ORYOL_OBJC_TYPED_ID(MTLLibrary) mtlVertexShaderLibrary; - ORYOL_OBJC_TYPED_ID(MTLLibrary) mtlFragmentShaderLibrary; - ORYOL_OBJC_TYPED_ID(MTLFunction) mtlVertexShader; - ORYOL_OBJC_TYPED_ID(MTLFunction) mtlFragmentShader; - - /// bind slots for vertex attributes (InvalidIndex if not used) - StaticArray vsAttrIndices; - -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlTexture - @ingroup _priv - @brief Metal implementation of class texture -*/ -class mtlTexture : public textureBase { -public: - /// constructor - mtlTexture(); - /// destructor - ~mtlTexture(); - - /// clear the object - void Clear(); - - static const int NumSlots = GfxConfig::MaxInflightFrames; - int updateFrameIndex; - uint8_t numSlots; - uint8_t activeSlot; - StaticArray mtlTextures; - - ORYOL_OBJC_TYPED_ID(MTLSamplerState) mtlSamplerState; - ORYOL_OBJC_TYPED_ID(MTLTexture) mtlDepthTex; - ORYOL_OBJC_TYPED_ID(MTLTexture) mtlMSAATex; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlRenderPass - @ingroup _priv - @brief Metal implementation of renderPass -*/ -class mtlRenderPass : public renderPassBase { - // empty -}; - -} // namespace _priv -} // namespace Oryol - - diff --git a/code/Modules/Gfx/private/mtl/mtlResource.mm b/code/Modules/Gfx/private/mtl/mtlResource.mm deleted file mode 100644 index 9db5b873e..000000000 --- a/code/Modules/Gfx/private/mtl/mtlResource.mm +++ /dev/null @@ -1,122 +0,0 @@ -//------------------------------------------------------------------------------ -// mtlResource.mm -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "mtl_impl.h" -#include "mtlResource.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -mtlMesh::buffer::buffer() : -updateFrameIndex(-1), -numSlots(1), -activeSlot(0) { - this->mtlBuffers.Fill(nil); -} - -//------------------------------------------------------------------------------ -mtlMesh::~mtlMesh() { - #if ORYOL_DEBUG - for (const auto& buf : this->buffers) { - for (int i = 0; i < NumSlots; i++) { - o_assert_dbg(buf.mtlBuffers[i] == nil); - } - } - #endif -} - -//------------------------------------------------------------------------------ -void -mtlMesh::Clear() { - for (auto& buf : this->buffers) { - buf = buffer(); - } - meshBase::Clear(); -} - -//------------------------------------------------------------------------------ -mtlPipeline::mtlPipeline() : -mtlRenderPipelineState(nil), -mtlDepthStencilState(nil) { - // empty -} - -//------------------------------------------------------------------------------ -mtlPipeline::~mtlPipeline() { - o_assert_dbg(nil == this->mtlRenderPipelineState); - o_assert_dbg(nil == this->mtlDepthStencilState); -} - -//------------------------------------------------------------------------------ -void -mtlPipeline::Clear() { - this->mtlRenderPipelineState = nil; - this->mtlDepthStencilState = nil; - pipelineBase::Clear(); -} - -//------------------------------------------------------------------------------ -mtlShader::mtlShader() { - this->Clear(); -} - -//------------------------------------------------------------------------------ -mtlShader::~mtlShader() { -#if ORYOL_DEBUG - o_assert_dbg(nil == this->mtlVertexShaderLibrary); - o_assert_dbg(nil == this->mtlFragmentShaderLibrary); - o_assert_dbg(nil == this->mtlVertexShader); - o_assert_dbg(nil == this->mtlFragmentShader); -#endif -} - -//------------------------------------------------------------------------------ -void -mtlShader::Clear() { - this->mtlVertexShaderLibrary = nil; - this->mtlFragmentShaderLibrary = nil; - this->mtlVertexShader = nil; - this->mtlFragmentShader = nil; - this->vsAttrIndices.Fill(InvalidIndex); - shaderBase::Clear(); -} - -//------------------------------------------------------------------------------ -mtlTexture::mtlTexture() : -updateFrameIndex(-1), -numSlots(1), -activeSlot(0), -mtlSamplerState(nil), -mtlDepthTex(nil) { - this->mtlTextures.Fill(nil); -} - -//------------------------------------------------------------------------------ -mtlTexture::~mtlTexture() { - o_assert_dbg(nil == this->mtlSamplerState); - o_assert_dbg(nil == this->mtlDepthTex); - #if ORYOL_DEBUG - for (int i = 0; i < NumSlots; i++) { - o_assert_dbg(this->mtlTextures[i] == nil); - } - #endif -} - -//------------------------------------------------------------------------------ -void -mtlTexture::Clear() { - textureBase::Clear(); - this->updateFrameIndex = -1; - this->numSlots = 1; - this->activeSlot = 0; - this->mtlTextures.Fill(nil); - this->mtlSamplerState = nil; - this->mtlDepthTex = nil; - this->mtlMSAATex = nil; -} - -} // namespace _priv -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/mtl/mtlTypes.h b/code/Modules/Gfx/private/mtl/mtlTypes.h deleted file mode 100644 index 09b21a465..000000000 --- a/code/Modules/Gfx/private/mtl/mtlTypes.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::mtlTypes - @ingroup _priv - @brief Oryol to Metal type mapping - - NOTE: only include this file from a Objective-C(++) file! -*/ -#include "Gfx/GfxTypes.h" -#include "Gfx/private/mtl/mtl_decl.h" - -#if !defined(__OBJC__) -#error "mtlTypes.h: Must be included from Obj-C source!" -#endif - -namespace Oryol { -namespace _priv { - -class mtlTypes { -public: - /// convert color render target pixel format - static MTLPixelFormat asRenderTargetColorFormat(PixelFormat::Code fmt); - /// convert depth render target pixel format - static MTLPixelFormat asRenderTargetDepthFormat(PixelFormat::Code fmt); - /// convert stencil render target pixel format - static MTLPixelFormat asRenderTargetStencilFormat(PixelFormat::Code fmt); - /// convert texture pixel format - static MTLPixelFormat asTextureFormat(PixelFormat::Code fmt); - /// convert texture type - static MTLTextureType asTextureType(TextureType::Code type); - /// convert texture address mode - static MTLSamplerAddressMode asSamplerAddressMode(TextureWrapMode::Code mode); - /// convert to sampler min/mag filter - static MTLSamplerMinMagFilter asSamplerMinMagFilter(TextureFilterMode::Code f); - /// convert to sampler mip filter - static MTLSamplerMipFilter asSamplerMipFilter(TextureFilterMode::Code f); - /// convert usage to MTLResourceOptions bit mask - static MTLResourceOptions asBufferResourceOptions(Usage::Code usage); - /// convert compare function enum value - static MTLCompareFunction asCompareFunc(CompareFunc::Code cmp); - /// convert stencil operation enum value - static MTLStencilOperation asStencilOp(StencilOp::Code op); - /// convert color-write-mask - static MTLColorWriteMask asColorWriteMask(PixelChannel::Mask mask); - /// convert blend operation - static MTLBlendOperation asBlendOp(BlendOperation::Code op); - /// convert blend factor - static MTLBlendFactor asBlendFactor(BlendFactor::Code factor); - /// convert vertex format - static MTLVertexFormat asVertexFormat(VertexFormat::Code fmt); - /// convert vertex step function - static MTLVertexStepFunction asVertexStepFunc(VertexStepFunction::Code func); - /// convert cullmode - static MTLCullMode asCullMode(bool cullEnabled, Face::Code face); - /// convert vertex index type - static MTLIndexType asIndexType(IndexType::Code c); - /// convert primitive type - static MTLPrimitiveType asPrimitiveType(PrimitiveType::Code c); - /// convert render pass load action from PassAction flags - static MTLLoadAction asLoadAction(const PassAction* action, int colorIndex, bool depthStencil); -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/mtl/mtlTypes.mm b/code/Modules/Gfx/private/mtl/mtlTypes.mm deleted file mode 100644 index e22c93ca2..000000000 --- a/code/Modules/Gfx/private/mtl/mtlTypes.mm +++ /dev/null @@ -1,359 +0,0 @@ -//------------------------------------------------------------------------------ -// mtlTypes.mm -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "mtlTypes.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -MTLPixelFormat -mtlTypes::asRenderTargetColorFormat(PixelFormat::Code fmt) { - // see the capability table for the list of renderable pixel formats: - // https://developer.apple.com/library/prerelease/ios/documentation/Metal/Reference/MetalConstants_Ref/index.html - // - switch (fmt) { - case PixelFormat::RGBA8: - // this is a bit of a hack since the default backbuffer format is BGRA8 - return MTLPixelFormatBGRA8Unorm; - case PixelFormat::RGBA32F: - return MTLPixelFormatRGBA32Float; - case PixelFormat::RGBA16F: - return MTLPixelFormatRGBA16Float; - case PixelFormat::R10G10B10A2: - return MTLPixelFormatRGB10A2Unorm; - default: - return MTLPixelFormatInvalid; - } -} - -//------------------------------------------------------------------------------ -MTLPixelFormat -mtlTypes::asRenderTargetDepthFormat(PixelFormat::Code fmt) { - switch (fmt) { - case PixelFormat::DEPTH: - return MTLPixelFormatDepth32Float; - case PixelFormat::DEPTHSTENCIL: - // NOTE: MTLPixelFormatDepth24Unorm_Stencil8 isn't universally supported, - // instead always use Depth32Float_Stencil8 - return MTLPixelFormatDepth32Float_Stencil8; - default: - return MTLPixelFormatInvalid; - } -} - -//------------------------------------------------------------------------------ -MTLPixelFormat -mtlTypes::asRenderTargetStencilFormat(PixelFormat::Code fmt) { - switch (fmt) { - case PixelFormat::DEPTHSTENCIL: - return MTLPixelFormatDepth32Float_Stencil8; - default: - return MTLPixelFormatInvalid; - } -} - -//------------------------------------------------------------------------------ -MTLPixelFormat -mtlTypes::asTextureFormat(PixelFormat::Code fmt) { - switch (fmt) { - case PixelFormat::RGBA8: return MTLPixelFormatRGBA8Unorm; - case PixelFormat::R10G10B10A2: return MTLPixelFormatRGB10A2Unorm; - case PixelFormat::RGBA32F: return MTLPixelFormatRGBA32Float; - case PixelFormat::RGBA16F: return MTLPixelFormatRGBA16Float; - case PixelFormat::L8: return MTLPixelFormatR8Unorm; - #if ORYOL_MACOS - case PixelFormat::DXT1: return MTLPixelFormatBC1_RGBA; - case PixelFormat::DXT3: return MTLPixelFormatBC2_RGBA; - case PixelFormat::DXT5: return MTLPixelFormatBC3_RGBA; - #elif ORYOL_IOS - case PixelFormat::PVRTC2_RGB: return MTLPixelFormatPVRTC_RGB_2BPP; - case PixelFormat::PVRTC2_RGBA: return MTLPixelFormatPVRTC_RGBA_2BPP; - case PixelFormat::PVRTC4_RGB: return MTLPixelFormatPVRTC_RGB_4BPP; - case PixelFormat::PVRTC4_RGBA: return MTLPixelFormatPVRTC_RGBA_4BPP; - #endif - default: return MTLPixelFormatInvalid; - } -} - -//------------------------------------------------------------------------------ -MTLTextureType -mtlTypes::asTextureType(TextureType::Code type) { - switch (type) { - case TextureType::Texture2D: return MTLTextureType2D; - case TextureType::Texture3D: return MTLTextureType3D; - case TextureType::TextureCube: return MTLTextureTypeCube; - case TextureType::TextureArray: return MTLTextureType2DArray; - default: - o_error("mtlTypes::asTextureType(): invalid value!\n"); - return MTLTextureType1D; - } -} - -//------------------------------------------------------------------------------ -MTLSamplerAddressMode -mtlTypes::asSamplerAddressMode(TextureWrapMode::Code mode) { - switch (mode) { - case TextureWrapMode::ClampToEdge: return MTLSamplerAddressModeClampToEdge; - case TextureWrapMode::Repeat: return MTLSamplerAddressModeRepeat; - case TextureWrapMode::MirroredRepeat: return MTLSamplerAddressModeMirrorRepeat; - default: - o_error("mtlTypes::asSamplerAddressMode(): invalid value!\n"); - return MTLSamplerAddressModeRepeat; - } -} - -//------------------------------------------------------------------------------ -MTLSamplerMinMagFilter -mtlTypes::asSamplerMinMagFilter(TextureFilterMode::Code f) { - switch (f) { - case TextureFilterMode::Nearest: - case TextureFilterMode::NearestMipmapNearest: - case TextureFilterMode::NearestMipmapLinear: - return MTLSamplerMinMagFilterNearest; - case TextureFilterMode::Linear: - case TextureFilterMode::LinearMipmapNearest: - case TextureFilterMode::LinearMipmapLinear: - return MTLSamplerMinMagFilterLinear; - default: - o_error("mtlTypes::asSamplerMinMagFilter(): invalid value!\n"); - return MTLSamplerMinMagFilterNearest; - } -} - -//------------------------------------------------------------------------------ -MTLSamplerMipFilter -mtlTypes::asSamplerMipFilter(TextureFilterMode::Code f) { - switch (f) { - case TextureFilterMode::Nearest: - case TextureFilterMode::Linear: - return MTLSamplerMipFilterNotMipmapped; - case TextureFilterMode::NearestMipmapNearest: - case TextureFilterMode::LinearMipmapNearest: - return MTLSamplerMipFilterNearest; - case TextureFilterMode::NearestMipmapLinear: - case TextureFilterMode::LinearMipmapLinear: - return MTLSamplerMipFilterLinear; - default: - o_error("mtlTypes::asSamplerMipFilter(): invalid value!\n"); - return MTLSamplerMipFilterNotMipmapped; - } -} - -//------------------------------------------------------------------------------ -MTLResourceOptions -mtlTypes::asBufferResourceOptions(Usage::Code usage) { - switch (usage) { - case Usage::Immutable: return MTLResourceStorageModeShared; - // FIXME: are these the right dynamic access flags? - #if ORYOL_MACOS - case Usage::Dynamic: return MTLResourceCPUCacheModeWriteCombined | MTLResourceStorageModeManaged; - case Usage::Stream: return MTLResourceCPUCacheModeWriteCombined | MTLResourceStorageModeManaged; - #else - case Usage::Dynamic: return MTLResourceCPUCacheModeWriteCombined; - case Usage::Stream: return MTLResourceCPUCacheModeWriteCombined; - #endif - default: - o_error("mtlTypes::asBufferResourceOptions(): invalid value!\n"); - return 0; - } -} - -//------------------------------------------------------------------------------ -MTLCompareFunction -mtlTypes::asCompareFunc(CompareFunc::Code cmp) { - switch (cmp) { - case CompareFunc::Never: return MTLCompareFunctionNever; - case CompareFunc::Less: return MTLCompareFunctionLess; - case CompareFunc::Equal: return MTLCompareFunctionEqual; - case CompareFunc::LessEqual: return MTLCompareFunctionLessEqual; - case CompareFunc::Greater: return MTLCompareFunctionGreater; - case CompareFunc::NotEqual: return MTLCompareFunctionNotEqual; - case CompareFunc::GreaterEqual: return MTLCompareFunctionGreaterEqual; - case CompareFunc::Always: return MTLCompareFunctionAlways; - default: - o_error("mtlTypes::asCompareFunc(): invalid value!\n"); - return MTLCompareFunctionAlways; - } -} - -//------------------------------------------------------------------------------ -MTLStencilOperation -mtlTypes::asStencilOp(StencilOp::Code op) { - switch (op) { - case StencilOp::Keep: return MTLStencilOperationKeep; - case StencilOp::Zero: return MTLStencilOperationZero; - case StencilOp::Replace: return MTLStencilOperationReplace; - case StencilOp::IncrClamp: return MTLStencilOperationIncrementClamp; - case StencilOp::DecrClamp: return MTLStencilOperationDecrementClamp; - case StencilOp::Invert: return MTLStencilOperationInvert; - case StencilOp::IncrWrap: return MTLStencilOperationIncrementWrap; - case StencilOp::DecrWrap: return MTLStencilOperationDecrementWrap; - default: - o_error("mtlTypes::asStencilOp(): invalid value!\n"); - return MTLStencilOperationKeep; - } -} - -//------------------------------------------------------------------------------ -MTLColorWriteMask -mtlTypes::asColorWriteMask(PixelChannel::Mask mask) { - MTLColorWriteMask mtlMask = MTLColorWriteMaskNone; - if (mask & PixelChannel::Red) { - mtlMask |= MTLColorWriteMaskRed; - } - if (mask & PixelChannel::Green) { - mtlMask |= MTLColorWriteMaskGreen; - } - if (mask & PixelChannel::Blue) { - mtlMask |= MTLColorWriteMaskBlue; - } - if (mask & PixelChannel::Alpha) { - mtlMask |= MTLColorWriteMaskAlpha; - } - return mtlMask; -} - -//------------------------------------------------------------------------------ -MTLBlendOperation -mtlTypes::asBlendOp(BlendOperation::Code op) { - switch (op) { - case BlendOperation::Add: return MTLBlendOperationAdd; - case BlendOperation::Subtract: return MTLBlendOperationSubtract; - case BlendOperation::ReverseSubtract: return MTLBlendOperationReverseSubtract; - default: - o_error("mtlTypes::asBlendOp(): invalid value!\n"); - return MTLBlendOperationAdd; - } -} - -//------------------------------------------------------------------------------ -MTLBlendFactor -mtlTypes::asBlendFactor(BlendFactor::Code factor) { - switch (factor) { - case BlendFactor::Zero: return MTLBlendFactorZero; - case BlendFactor::One: return MTLBlendFactorOne; - case BlendFactor::SrcColor: return MTLBlendFactorSourceColor; - case BlendFactor::OneMinusSrcColor: return MTLBlendFactorOneMinusSourceColor; - case BlendFactor::SrcAlpha: return MTLBlendFactorSourceAlpha; - case BlendFactor::OneMinusSrcAlpha: return MTLBlendFactorOneMinusSourceAlpha; - case BlendFactor::DstColor: return MTLBlendFactorDestinationColor; - case BlendFactor::OneMinusDstColor: return MTLBlendFactorOneMinusDestinationColor; - case BlendFactor::DstAlpha: return MTLBlendFactorDestinationAlpha; - case BlendFactor::OneMinusDstAlpha: return MTLBlendFactorOneMinusDestinationAlpha; - case BlendFactor::SrcAlphaSaturated: return MTLBlendFactorSourceAlphaSaturated; - case BlendFactor::BlendColor: return MTLBlendFactorBlendColor; - case BlendFactor::OneMinusBlendColor: return MTLBlendFactorOneMinusBlendColor; - case BlendFactor::BlendAlpha: return MTLBlendFactorBlendAlpha; - case BlendFactor::OneMinusBlendAlpha: return MTLBlendFactorOneMinusBlendAlpha; - default: - o_error("mtlTypes::asBlendFactor(): invalid value!\n"); - return MTLBlendFactorOne; - } -} - -//------------------------------------------------------------------------------ -MTLVertexFormat -mtlTypes::asVertexFormat(VertexFormat::Code fmt) { - switch (fmt) { - case VertexFormat::Float: return MTLVertexFormatFloat; - case VertexFormat::Float2: return MTLVertexFormatFloat2; - case VertexFormat::Float3: return MTLVertexFormatFloat3; - case VertexFormat::Float4: return MTLVertexFormatFloat4; - case VertexFormat::Byte4: return MTLVertexFormatChar4; - case VertexFormat::Byte4N: return MTLVertexFormatChar4Normalized; - case VertexFormat::UByte4: return MTLVertexFormatUChar4; - case VertexFormat::UByte4N: return MTLVertexFormatUChar4Normalized; - case VertexFormat::Short2: return MTLVertexFormatShort2; - case VertexFormat::Short2N: return MTLVertexFormatShort2Normalized; - case VertexFormat::Short4: return MTLVertexFormatShort4; - case VertexFormat::Short4N: return MTLVertexFormatShort4Normalized; - case VertexFormat::UInt10_2N: return MTLVertexFormatUInt1010102Normalized; - default: - o_error("mtlTypes::asVertexFormat(): invalid value!\n"); - return MTLVertexFormatFloat; - } -} - -//------------------------------------------------------------------------------ -MTLVertexStepFunction -mtlTypes::asVertexStepFunc(VertexStepFunction::Code func) { - switch (func) { - case VertexStepFunction::PerVertex: return MTLVertexStepFunctionPerVertex; - case VertexStepFunction::PerInstance: return MTLVertexStepFunctionPerInstance; - default: - o_error("mtlTypes::asVertexStepFunc(): invalid value!\n"); - return MTLVertexStepFunctionPerVertex; - } -} - -//------------------------------------------------------------------------------ -MTLCullMode -mtlTypes::asCullMode(bool cullEnabled, Face::Code face) { - if (cullEnabled) { - return (Face::Front == face) ? MTLCullModeFront : MTLCullModeBack; - } - else { - return MTLCullModeNone; - } -} - -//------------------------------------------------------------------------------ -MTLIndexType -mtlTypes::asIndexType(IndexType::Code c) { - switch (c) { - case IndexType::Index16: return MTLIndexTypeUInt16; - case IndexType::Index32: return MTLIndexTypeUInt32; - default: - o_error("mtlTypes::asIndexType(): invalid value!\n"); - return MTLIndexTypeUInt16; - } -} - -//------------------------------------------------------------------------------ -MTLPrimitiveType -mtlTypes::asPrimitiveType(PrimitiveType::Code c) { - switch (c) { - case PrimitiveType::Points: return MTLPrimitiveTypePoint; - case PrimitiveType::Lines: return MTLPrimitiveTypeLine; - case PrimitiveType::LineStrip: return MTLPrimitiveTypeLineStrip; - case PrimitiveType::Triangles: return MTLPrimitiveTypeTriangle; - case PrimitiveType::TriangleStrip: return MTLPrimitiveTypeTriangleStrip; - default: - o_error("mtlTypes::asPrimitiveType(): invalid value!\n"); - return MTLPrimitiveTypePoint; - } -} - -//------------------------------------------------------------------------------ -MTLLoadAction -mtlTypes::asLoadAction(const PassAction* action, int colorIndex, bool depthStencil) { - o_assert_dbg(action); - o_assert_range_dbg(colorIndex, GfxConfig::MaxNumColorAttachments); - if (depthStencil) { - if (action->Flags & PassAction::ClearDS) { - return MTLLoadActionClear; - } - else if (action->Flags & PassAction::LoadDS) { - return MTLLoadActionLoad; - } - else { - return MTLLoadActionDontCare; - } - } - else { - if (action->Flags & (PassAction::ClearC0<Flags & (PassAction::LoadC0<Setup = ShaderSetup(); -} - -//------------------------------------------------------------------------------ -void -textureBase::Clear() { - this->Setup = TextureSetup(); - this->textureAttrs = TextureAttrs(); -} - -//------------------------------------------------------------------------------ -void -meshBase::Clear() { - this->Setup = MeshSetup(); - this->vertexBufferAttrs = VertexBufferAttrs(); - this->indexBufferAttrs = IndexBufferAttrs(); - this->primGroups.Fill(PrimitiveGroup()); - this->numPrimGroups = 0; -} - -//------------------------------------------------------------------------------ -void -pipelineBase::Clear() { - this->Setup = PipelineSetup(); - this->shd = nullptr; -} - -//------------------------------------------------------------------------------ -void -renderPassBase::Clear() { - this->Setup = PassSetup(); - this->colorTextures.Fill(nullptr); - this->depthStencilTexture = nullptr; -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/resourceBase.h b/code/Modules/Gfx/private/resourceBase.h deleted file mode 100644 index 9cd9f609f..000000000 --- a/code/Modules/Gfx/private/resourceBase.h +++ /dev/null @@ -1,109 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @file Gfx/Resource/resourceBase.h - @brief Gfx module resource classes -*/ -#include "Resource/ResourceBase.h" -#include "Gfx/GfxTypes.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::shaderBase - @ingroup _priv - @brief shader resource base class -*/ -class shaderBase : public ResourceBase { -public: - /// the original setup object - ShaderSetup Setup; - /// clear the object - void Clear(); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::textureBase - @ingroup _priv - @brief base class for platform-specific texture implementation -*/ -class textureBase : public ResourceBase { -public: - /// the original setup object - TextureSetup Setup; - /// texture attributes - TextureAttrs textureAttrs; - /// was created from native texture handles - bool nativeHandles = false; - /// clear the object - void Clear(); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::meshBase - @ingroup _priv - @brief base class for platform-specific mesh implementations -*/ -class meshBase : public ResourceBase { -public: - /// the original setup object - MeshSetup Setup; - /// vertex buffer attributes - VertexBufferAttrs vertexBufferAttrs; - /// index buffer attributes - IndexBufferAttrs indexBufferAttrs; - /// number of primitive groups - int numPrimGroups = 0; - /// primitive groups - StaticArray primGroups; - /// clear the object - void Clear(); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::pipelineBase - @ingroup _priv - @brief base class for pipeline implementations -*/ -class shader; -class pipelineBase : public ResourceBase { -public: - /// the original setup object - PipelineSetup Setup; - /// shader pointer - shader* shd = nullptr; - /// clear the object - void Clear(); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::renderPassBase - @ingroup _priv - @brief base class for render-pass implementations -*/ -class texture; -class renderPassBase : public ResourceBase { -public: - /// constructor - renderPassBase() { - colorTextures.Fill(nullptr); - } - /// the original setup object - PassSetup Setup; - /// color texture pointers - StaticArray colorTextures; - /// depth-stencil texture pointer - texture* depthStencilTexture = nullptr; - /// clear the object - void Clear(); -}; - -} // namespace _priv -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/resourcePools.h b/code/Modules/Gfx/private/resourcePools.h deleted file mode 100644 index e47d36abe..000000000 --- a/code/Modules/Gfx/private/resourcePools.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @file Gfx/Resource/resourcePools.h - @ingroup _priv - @brief Gfx module resource pool classes -*/ -#include "Resource/ResourcePool.h" -#include "Gfx/private/resource.h" - -namespace Oryol { -namespace _priv { - -class pipelinePool : public ResourcePool { }; -class meshPool : public ResourcePool { }; -class shaderPool : public ResourcePool { }; -class texturePool : public ResourcePool { }; -class renderPassPool : public ResourcePool { }; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/win/winDisplayMgr.cc b/code/Modules/Gfx/private/winDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/win/winDisplayMgr.cc rename to code/Modules/Gfx/private/winDisplayMgr.cc diff --git a/code/Modules/Gfx/private/win/winDisplayMgr.h b/code/Modules/Gfx/private/winDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/win/winDisplayMgr.h rename to code/Modules/Gfx/private/winDisplayMgr.h diff --git a/code/Modules/Gfx/private/win/winInputDefs.h b/code/Modules/Gfx/private/winInputDefs.h similarity index 100% rename from code/Modules/Gfx/private/win/winInputDefs.h rename to code/Modules/Gfx/private/winInputDefs.h diff --git a/code/Modules/Gfx/private/win/win_decl.h b/code/Modules/Gfx/private/win_decl.h similarity index 100% rename from code/Modules/Gfx/private/win/win_decl.h rename to code/Modules/Gfx/private/win_decl.h From ee141a7728a24e911a4faa1d554f95af57e8a64e Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 8 Jan 2018 17:49:46 +0100 Subject: [PATCH 07/91] more Gfx file cleanup --- code/Modules/Gfx/private/d3d11DisplayMgr.h | 8 + code/Modules/Gfx/private/winDisplayMgr.h | 175 ++++++++++++++++++++- code/Modules/Gfx/private/winInputDefs.h | 162 ------------------- code/Modules/Gfx/private/win_decl.h | 28 ---- 4 files changed, 181 insertions(+), 192 deletions(-) delete mode 100644 code/Modules/Gfx/private/winInputDefs.h delete mode 100644 code/Modules/Gfx/private/win_decl.h diff --git a/code/Modules/Gfx/private/d3d11DisplayMgr.h b/code/Modules/Gfx/private/d3d11DisplayMgr.h index 498f5d504..e149f0b55 100644 --- a/code/Modules/Gfx/private/d3d11DisplayMgr.h +++ b/code/Modules/Gfx/private/d3d11DisplayMgr.h @@ -8,6 +8,14 @@ #include "Gfx/private/win/winDisplayMgr.h" #include "Gfx/private/d3d11/d3d11_decl.h" +// d3d11 forward declarations +struct IDXGISwapChain; +struct ID3D11Device; +struct ID3D11DeviceContext; +struct ID3D11Texture2D; +struct ID3D11RenderTargetView; +struct ID3D11DepthStencilView; + namespace Oryol { namespace _priv { diff --git a/code/Modules/Gfx/private/winDisplayMgr.h b/code/Modules/Gfx/private/winDisplayMgr.h index d150ebef5..57e913836 100644 --- a/code/Modules/Gfx/private/winDisplayMgr.h +++ b/code/Modules/Gfx/private/winDisplayMgr.h @@ -8,8 +8,179 @@ NOTE: most of the window and messaging code is taken from GLFW3! */ #include "Gfx/private/displayMgrBase.h" -#include "Gfx/private/win/win_decl.h" -#include "Gfx/private/win/winInputDefs.h" + +// Windows.h forward declarations +#if defined(_WIN64) +typedef __int64 INT_PTR, *PINT_PTR; +typedef unsigned __int64 UINT_PTR, *PUINT_PTR; +typedef __int64 LONG_PTR, *PLONG_PTR; +typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; +#define __int3264 __int64 +#else +typedef int INT_PTR, *PINT_PTR; +typedef unsigned int UINT_PTR, *PUINT_PTR; +typedef long LONG_PTR, *PLONG_PTR; +typedef unsigned long ULONG_PTR, *PULONG_PTR; +#define __int3264 __int32 +#endif +typedef void* HANDLE; +typedef unsigned long DWORD; +struct HWND__; +typedef HWND__* HWND; +typedef UINT_PTR WPARAM; +typedef LONG_PTR LPARAM; +typedef LONG_PTR LRESULT; +typedef ULONG_PTR SIZE_T, *PSIZE_T; + +#define ORYOL_WIN_WHEEL_DELTA 120 +#define ORYOL_WIN_MOD_SHIFT 0x0001 +#define ORYOL_WIN_MOD_CONTROL 0x0002 +#define ORYOL_WIN_MOD_ALT 0x0004 +#define ORYOL_WIN_MOD_SUPER 0x0008 +#define ORYOL_WIN_MOUSE_BUTTON_1 0 +#define ORYOL_WIN_MOUSE_BUTTON_2 1 +#define ORYOL_WIN_MOUSE_BUTTON_3 2 +#define ORYOL_WIN_MOUSE_BUTTON_4 3 +#define ORYOL_WIN_MOUSE_BUTTON_5 4 +#define ORYOL_WIN_MOUSE_BUTTON_6 5 +#define ORYOL_WIN_MOUSE_BUTTON_7 6 +#define ORYOL_WIN_MOUSE_BUTTON_8 7 +#define ORYOL_WIN_MOUSE_BUTTON_LAST ORYOL_WIN_MOUSE_BUTTON_8 +#define ORYOL_WIN_MOUSE_BUTTON_LEFT ORYOL_WIN_MOUSE_BUTTON_1 +#define ORYOL_WIN_MOUSE_BUTTON_RIGHT ORYOL_WIN_MOUSE_BUTTON_2 +#define ORYOL_WIN_MOUSE_BUTTON_MIDDLE ORYOL_WIN_MOUSE_BUTTON_3 +#define ORYOL_WIN_RELEASE 0 +#define ORYOL_WIN_PRESS 1 +#define ORYOL_WIN_REPEAT 2 +#define ORYOL_WIN_CURSOR 0x00033001 +#define ORYOL_WIN_STICKY_KEYS 0x00033002 +#define ORYOL_WIN_STICKY_MOUSE_BUTTONS 0x00033003 +#define ORYOL_WIN_CURSOR_NORMAL 0x00034001 +#define ORYOL_WIN_CURSOR_HIDDEN 0x00034002 +#define ORYOL_WIN_CURSOR_DISABLED 0x00034003 +#define ORYOL_WIN_KEY_INVALID -2 +#define ORYOL_WIN_KEY_UNKNOWN -1 +#define ORYOL_WIN_KEY_SPACE 32 +#define ORYOL_WIN_KEY_APOSTROPHE 39 /* ' */ +#define ORYOL_WIN_KEY_COMMA 44 /* , */ +#define ORYOL_WIN_KEY_MINUS 45 /* - */ +#define ORYOL_WIN_KEY_PERIOD 46 /* . */ +#define ORYOL_WIN_KEY_SLASH 47 /* / */ +#define ORYOL_WIN_KEY_0 48 +#define ORYOL_WIN_KEY_1 49 +#define ORYOL_WIN_KEY_2 50 +#define ORYOL_WIN_KEY_3 51 +#define ORYOL_WIN_KEY_4 52 +#define ORYOL_WIN_KEY_5 53 +#define ORYOL_WIN_KEY_6 54 +#define ORYOL_WIN_KEY_7 55 +#define ORYOL_WIN_KEY_8 56 +#define ORYOL_WIN_KEY_9 57 +#define ORYOL_WIN_KEY_SEMICOLON 59 /* ; */ +#define ORYOL_WIN_KEY_EQUAL 61 /* = */ +#define ORYOL_WIN_KEY_A 65 +#define ORYOL_WIN_KEY_B 66 +#define ORYOL_WIN_KEY_C 67 +#define ORYOL_WIN_KEY_D 68 +#define ORYOL_WIN_KEY_E 69 +#define ORYOL_WIN_KEY_F 70 +#define ORYOL_WIN_KEY_G 71 +#define ORYOL_WIN_KEY_H 72 +#define ORYOL_WIN_KEY_I 73 +#define ORYOL_WIN_KEY_J 74 +#define ORYOL_WIN_KEY_K 75 +#define ORYOL_WIN_KEY_L 76 +#define ORYOL_WIN_KEY_M 77 +#define ORYOL_WIN_KEY_N 78 +#define ORYOL_WIN_KEY_O 79 +#define ORYOL_WIN_KEY_P 80 +#define ORYOL_WIN_KEY_Q 81 +#define ORYOL_WIN_KEY_R 82 +#define ORYOL_WIN_KEY_S 83 +#define ORYOL_WIN_KEY_T 84 +#define ORYOL_WIN_KEY_U 85 +#define ORYOL_WIN_KEY_V 86 +#define ORYOL_WIN_KEY_W 87 +#define ORYOL_WIN_KEY_X 88 +#define ORYOL_WIN_KEY_Y 89 +#define ORYOL_WIN_KEY_Z 90 +#define ORYOL_WIN_KEY_LEFT_BRACKET 91 /* [ */ +#define ORYOL_WIN_KEY_BACKSLASH 92 /* \ */ +#define ORYOL_WIN_KEY_RIGHT_BRACKET 93 /* ] */ +#define ORYOL_WIN_KEY_GRAVE_ACCENT 96 /* ` */ +#define ORYOL_WIN_KEY_WORLD_1 161 /* non-US #1 */ +#define ORYOL_WIN_KEY_WORLD_2 162 /* non-US #2 */ +#define ORYOL_WIN_KEY_ESCAPE 256 +#define ORYOL_WIN_KEY_ENTER 257 +#define ORYOL_WIN_KEY_TAB 258 +#define ORYOL_WIN_KEY_BACKSPACE 259 +#define ORYOL_WIN_KEY_INSERT 260 +#define ORYOL_WIN_KEY_DELETE 261 +#define ORYOL_WIN_KEY_RIGHT 262 +#define ORYOL_WIN_KEY_LEFT 263 +#define ORYOL_WIN_KEY_DOWN 264 +#define ORYOL_WIN_KEY_UP 265 +#define ORYOL_WIN_KEY_PAGE_UP 266 +#define ORYOL_WIN_KEY_PAGE_DOWN 267 +#define ORYOL_WIN_KEY_HOME 268 +#define ORYOL_WIN_KEY_END 269 +#define ORYOL_WIN_KEY_CAPS_LOCK 280 +#define ORYOL_WIN_KEY_SCROLL_LOCK 281 +#define ORYOL_WIN_KEY_NUM_LOCK 282 +#define ORYOL_WIN_KEY_PRINT_SCREEN 283 +#define ORYOL_WIN_KEY_PAUSE 284 +#define ORYOL_WIN_KEY_F1 290 +#define ORYOL_WIN_KEY_F2 291 +#define ORYOL_WIN_KEY_F3 292 +#define ORYOL_WIN_KEY_F4 293 +#define ORYOL_WIN_KEY_F5 294 +#define ORYOL_WIN_KEY_F6 295 +#define ORYOL_WIN_KEY_F7 296 +#define ORYOL_WIN_KEY_F8 297 +#define ORYOL_WIN_KEY_F9 298 +#define ORYOL_WIN_KEY_F10 299 +#define ORYOL_WIN_KEY_F11 300 +#define ORYOL_WIN_KEY_F12 301 +#define ORYOL_WIN_KEY_F13 302 +#define ORYOL_WIN_KEY_F14 303 +#define ORYOL_WIN_KEY_F15 304 +#define ORYOL_WIN_KEY_F16 305 +#define ORYOL_WIN_KEY_F17 306 +#define ORYOL_WIN_KEY_F18 307 +#define ORYOL_WIN_KEY_F19 308 +#define ORYOL_WIN_KEY_F20 309 +#define ORYOL_WIN_KEY_F21 310 +#define ORYOL_WIN_KEY_F22 311 +#define ORYOL_WIN_KEY_F23 312 +#define ORYOL_WIN_KEY_F24 313 +#define ORYOL_WIN_KEY_F25 314 +#define ORYOL_WIN_KEY_KP_0 320 +#define ORYOL_WIN_KEY_KP_1 321 +#define ORYOL_WIN_KEY_KP_2 322 +#define ORYOL_WIN_KEY_KP_3 323 +#define ORYOL_WIN_KEY_KP_4 324 +#define ORYOL_WIN_KEY_KP_5 325 +#define ORYOL_WIN_KEY_KP_6 326 +#define ORYOL_WIN_KEY_KP_7 327 +#define ORYOL_WIN_KEY_KP_8 328 +#define ORYOL_WIN_KEY_KP_9 329 +#define ORYOL_WIN_KEY_KP_DECIMAL 330 +#define ORYOL_WIN_KEY_KP_DIVIDE 331 +#define ORYOL_WIN_KEY_KP_MULTIPLY 332 +#define ORYOL_WIN_KEY_KP_SUBTRACT 333 +#define ORYOL_WIN_KEY_KP_ADD 334 +#define ORYOL_WIN_KEY_KP_ENTER 335 +#define ORYOL_WIN_KEY_KP_EQUAL 336 +#define ORYOL_WIN_KEY_LEFT_SHIFT 340 +#define ORYOL_WIN_KEY_LEFT_CONTROL 341 +#define ORYOL_WIN_KEY_LEFT_ALT 342 +#define ORYOL_WIN_KEY_LEFT_SUPER 343 +#define ORYOL_WIN_KEY_RIGHT_SHIFT 344 +#define ORYOL_WIN_KEY_RIGHT_CONTROL 345 +#define ORYOL_WIN_KEY_RIGHT_ALT 346 +#define ORYOL_WIN_KEY_RIGHT_SUPER 347 +#define ORYOL_WIN_KEY_MENU 348 +#define ORYOL_WIN_KEY_LAST ORYOL_WIN_KEY_MENU namespace Oryol { namespace _priv { diff --git a/code/Modules/Gfx/private/winInputDefs.h b/code/Modules/Gfx/private/winInputDefs.h deleted file mode 100644 index abf9cc95d..000000000 --- a/code/Modules/Gfx/private/winInputDefs.h +++ /dev/null @@ -1,162 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @brief input-related defines on Windows (taken from and compatible with GLFW) -*/ -#define ORYOL_WIN_WHEEL_DELTA 120 - -#define ORYOL_WIN_MOD_SHIFT 0x0001 -#define ORYOL_WIN_MOD_CONTROL 0x0002 -#define ORYOL_WIN_MOD_ALT 0x0004 -#define ORYOL_WIN_MOD_SUPER 0x0008 - -#define ORYOL_WIN_MOUSE_BUTTON_1 0 -#define ORYOL_WIN_MOUSE_BUTTON_2 1 -#define ORYOL_WIN_MOUSE_BUTTON_3 2 -#define ORYOL_WIN_MOUSE_BUTTON_4 3 -#define ORYOL_WIN_MOUSE_BUTTON_5 4 -#define ORYOL_WIN_MOUSE_BUTTON_6 5 -#define ORYOL_WIN_MOUSE_BUTTON_7 6 -#define ORYOL_WIN_MOUSE_BUTTON_8 7 -#define ORYOL_WIN_MOUSE_BUTTON_LAST ORYOL_WIN_MOUSE_BUTTON_8 -#define ORYOL_WIN_MOUSE_BUTTON_LEFT ORYOL_WIN_MOUSE_BUTTON_1 -#define ORYOL_WIN_MOUSE_BUTTON_RIGHT ORYOL_WIN_MOUSE_BUTTON_2 -#define ORYOL_WIN_MOUSE_BUTTON_MIDDLE ORYOL_WIN_MOUSE_BUTTON_3 - -#define ORYOL_WIN_RELEASE 0 -#define ORYOL_WIN_PRESS 1 -#define ORYOL_WIN_REPEAT 2 - -#define ORYOL_WIN_CURSOR 0x00033001 -#define ORYOL_WIN_STICKY_KEYS 0x00033002 -#define ORYOL_WIN_STICKY_MOUSE_BUTTONS 0x00033003 - -#define ORYOL_WIN_CURSOR_NORMAL 0x00034001 -#define ORYOL_WIN_CURSOR_HIDDEN 0x00034002 -#define ORYOL_WIN_CURSOR_DISABLED 0x00034003 - -#define ORYOL_WIN_KEY_INVALID -2 -#define ORYOL_WIN_KEY_UNKNOWN -1 -#define ORYOL_WIN_KEY_SPACE 32 -#define ORYOL_WIN_KEY_APOSTROPHE 39 /* ' */ -#define ORYOL_WIN_KEY_COMMA 44 /* , */ -#define ORYOL_WIN_KEY_MINUS 45 /* - */ -#define ORYOL_WIN_KEY_PERIOD 46 /* . */ -#define ORYOL_WIN_KEY_SLASH 47 /* / */ -#define ORYOL_WIN_KEY_0 48 -#define ORYOL_WIN_KEY_1 49 -#define ORYOL_WIN_KEY_2 50 -#define ORYOL_WIN_KEY_3 51 -#define ORYOL_WIN_KEY_4 52 -#define ORYOL_WIN_KEY_5 53 -#define ORYOL_WIN_KEY_6 54 -#define ORYOL_WIN_KEY_7 55 -#define ORYOL_WIN_KEY_8 56 -#define ORYOL_WIN_KEY_9 57 -#define ORYOL_WIN_KEY_SEMICOLON 59 /* ; */ -#define ORYOL_WIN_KEY_EQUAL 61 /* = */ -#define ORYOL_WIN_KEY_A 65 -#define ORYOL_WIN_KEY_B 66 -#define ORYOL_WIN_KEY_C 67 -#define ORYOL_WIN_KEY_D 68 -#define ORYOL_WIN_KEY_E 69 -#define ORYOL_WIN_KEY_F 70 -#define ORYOL_WIN_KEY_G 71 -#define ORYOL_WIN_KEY_H 72 -#define ORYOL_WIN_KEY_I 73 -#define ORYOL_WIN_KEY_J 74 -#define ORYOL_WIN_KEY_K 75 -#define ORYOL_WIN_KEY_L 76 -#define ORYOL_WIN_KEY_M 77 -#define ORYOL_WIN_KEY_N 78 -#define ORYOL_WIN_KEY_O 79 -#define ORYOL_WIN_KEY_P 80 -#define ORYOL_WIN_KEY_Q 81 -#define ORYOL_WIN_KEY_R 82 -#define ORYOL_WIN_KEY_S 83 -#define ORYOL_WIN_KEY_T 84 -#define ORYOL_WIN_KEY_U 85 -#define ORYOL_WIN_KEY_V 86 -#define ORYOL_WIN_KEY_W 87 -#define ORYOL_WIN_KEY_X 88 -#define ORYOL_WIN_KEY_Y 89 -#define ORYOL_WIN_KEY_Z 90 -#define ORYOL_WIN_KEY_LEFT_BRACKET 91 /* [ */ -#define ORYOL_WIN_KEY_BACKSLASH 92 /* \ */ -#define ORYOL_WIN_KEY_RIGHT_BRACKET 93 /* ] */ -#define ORYOL_WIN_KEY_GRAVE_ACCENT 96 /* ` */ -#define ORYOL_WIN_KEY_WORLD_1 161 /* non-US #1 */ -#define ORYOL_WIN_KEY_WORLD_2 162 /* non-US #2 */ -#define ORYOL_WIN_KEY_ESCAPE 256 -#define ORYOL_WIN_KEY_ENTER 257 -#define ORYOL_WIN_KEY_TAB 258 -#define ORYOL_WIN_KEY_BACKSPACE 259 -#define ORYOL_WIN_KEY_INSERT 260 -#define ORYOL_WIN_KEY_DELETE 261 -#define ORYOL_WIN_KEY_RIGHT 262 -#define ORYOL_WIN_KEY_LEFT 263 -#define ORYOL_WIN_KEY_DOWN 264 -#define ORYOL_WIN_KEY_UP 265 -#define ORYOL_WIN_KEY_PAGE_UP 266 -#define ORYOL_WIN_KEY_PAGE_DOWN 267 -#define ORYOL_WIN_KEY_HOME 268 -#define ORYOL_WIN_KEY_END 269 -#define ORYOL_WIN_KEY_CAPS_LOCK 280 -#define ORYOL_WIN_KEY_SCROLL_LOCK 281 -#define ORYOL_WIN_KEY_NUM_LOCK 282 -#define ORYOL_WIN_KEY_PRINT_SCREEN 283 -#define ORYOL_WIN_KEY_PAUSE 284 -#define ORYOL_WIN_KEY_F1 290 -#define ORYOL_WIN_KEY_F2 291 -#define ORYOL_WIN_KEY_F3 292 -#define ORYOL_WIN_KEY_F4 293 -#define ORYOL_WIN_KEY_F5 294 -#define ORYOL_WIN_KEY_F6 295 -#define ORYOL_WIN_KEY_F7 296 -#define ORYOL_WIN_KEY_F8 297 -#define ORYOL_WIN_KEY_F9 298 -#define ORYOL_WIN_KEY_F10 299 -#define ORYOL_WIN_KEY_F11 300 -#define ORYOL_WIN_KEY_F12 301 -#define ORYOL_WIN_KEY_F13 302 -#define ORYOL_WIN_KEY_F14 303 -#define ORYOL_WIN_KEY_F15 304 -#define ORYOL_WIN_KEY_F16 305 -#define ORYOL_WIN_KEY_F17 306 -#define ORYOL_WIN_KEY_F18 307 -#define ORYOL_WIN_KEY_F19 308 -#define ORYOL_WIN_KEY_F20 309 -#define ORYOL_WIN_KEY_F21 310 -#define ORYOL_WIN_KEY_F22 311 -#define ORYOL_WIN_KEY_F23 312 -#define ORYOL_WIN_KEY_F24 313 -#define ORYOL_WIN_KEY_F25 314 -#define ORYOL_WIN_KEY_KP_0 320 -#define ORYOL_WIN_KEY_KP_1 321 -#define ORYOL_WIN_KEY_KP_2 322 -#define ORYOL_WIN_KEY_KP_3 323 -#define ORYOL_WIN_KEY_KP_4 324 -#define ORYOL_WIN_KEY_KP_5 325 -#define ORYOL_WIN_KEY_KP_6 326 -#define ORYOL_WIN_KEY_KP_7 327 -#define ORYOL_WIN_KEY_KP_8 328 -#define ORYOL_WIN_KEY_KP_9 329 -#define ORYOL_WIN_KEY_KP_DECIMAL 330 -#define ORYOL_WIN_KEY_KP_DIVIDE 331 -#define ORYOL_WIN_KEY_KP_MULTIPLY 332 -#define ORYOL_WIN_KEY_KP_SUBTRACT 333 -#define ORYOL_WIN_KEY_KP_ADD 334 -#define ORYOL_WIN_KEY_KP_ENTER 335 -#define ORYOL_WIN_KEY_KP_EQUAL 336 -#define ORYOL_WIN_KEY_LEFT_SHIFT 340 -#define ORYOL_WIN_KEY_LEFT_CONTROL 341 -#define ORYOL_WIN_KEY_LEFT_ALT 342 -#define ORYOL_WIN_KEY_LEFT_SUPER 343 -#define ORYOL_WIN_KEY_RIGHT_SHIFT 344 -#define ORYOL_WIN_KEY_RIGHT_CONTROL 345 -#define ORYOL_WIN_KEY_RIGHT_ALT 346 -#define ORYOL_WIN_KEY_RIGHT_SUPER 347 -#define ORYOL_WIN_KEY_MENU 348 -#define ORYOL_WIN_KEY_LAST ORYOL_WIN_KEY_MENU - - diff --git a/code/Modules/Gfx/private/win_decl.h b/code/Modules/Gfx/private/win_decl.h deleted file mode 100644 index 799169b97..000000000 --- a/code/Modules/Gfx/private/win_decl.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @file win_decl.h - @brief Windows forward declarations -*/ -#if defined(_WIN64) -typedef __int64 INT_PTR, *PINT_PTR; -typedef unsigned __int64 UINT_PTR, *PUINT_PTR; -typedef __int64 LONG_PTR, *PLONG_PTR; -typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; -#define __int3264 __int64 -#else -typedef int INT_PTR, *PINT_PTR; -typedef unsigned int UINT_PTR, *PUINT_PTR; -typedef long LONG_PTR, *PLONG_PTR; -typedef unsigned long ULONG_PTR, *PULONG_PTR; -#define __int3264 __int32 -#endif - -typedef void* HANDLE; -typedef unsigned long DWORD; -struct HWND__; -typedef HWND__* HWND; -typedef UINT_PTR WPARAM; -typedef LONG_PTR LPARAM; -typedef LONG_PTR LRESULT; -typedef ULONG_PTR SIZE_T, *PSIZE_T; \ No newline at end of file From a25d14ee2d8c17a2fc57853c3cccc01a3823d526 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 8 Jan 2018 19:04:08 +0100 Subject: [PATCH 08/91] more sokol_gfx integration --- code/Modules/Gfx/CMakeLists.txt | 20 - code/Modules/Gfx/Gfx.cc | 444 ++--------------- code/Modules/Gfx/Gfx.h | 33 +- code/Modules/Gfx/GfxTypes.h | 3 +- code/Modules/Gfx/private/displayMgr.h | 12 +- .../Gfx/private/{flextgl => }/flextGL.c | 0 .../Gfx/private/{flextgl => }/flextGL.h | 0 code/Modules/Gfx/private/flextgl.sh | 4 + code/Modules/Gfx/private/flextgl/flextgl.sh | 4 - .../private/{flextgl => }/flextgl_profile.txt | 0 code/Modules/Gfx/private/gfxPointers.h | 14 - .../Gfx/private/gfxResourceContainer.cc | 470 ------------------ .../Gfx/private/gfxResourceContainer.h | 123 ----- code/Modules/Gfx/private/glfwDisplayMgr.cc | 21 +- code/Modules/Gfx/private/glfwDisplayMgr.h | 4 - code/Modules/Gfx/private/sokolGfxBackend.cc | 144 ++++-- code/Modules/Gfx/private/sokolGfxBackend.h | 49 +- 17 files changed, 202 insertions(+), 1143 deletions(-) rename code/Modules/Gfx/private/{flextgl => }/flextGL.c (100%) rename code/Modules/Gfx/private/{flextgl => }/flextGL.h (100%) create mode 100755 code/Modules/Gfx/private/flextgl.sh delete mode 100755 code/Modules/Gfx/private/flextgl/flextgl.sh rename code/Modules/Gfx/private/{flextgl => }/flextgl_profile.txt (100%) delete mode 100644 code/Modules/Gfx/private/gfxResourceContainer.cc delete mode 100644 code/Modules/Gfx/private/gfxResourceContainer.h diff --git a/code/Modules/Gfx/CMakeLists.txt b/code/Modules/Gfx/CMakeLists.txt index a4a2cf851..b69289296 100644 --- a/code/Modules/Gfx/CMakeLists.txt +++ b/code/Modules/Gfx/CMakeLists.txt @@ -3,24 +3,6 @@ # #------------------------------------------------------------------------------- -if (ORYOL_OPENGL) -# -# This option forces the use of glGetAttribLocation() instead of -# glBindAttribLocation() to bind vertex components to shader -# vertex attributes. This must be used on platforms where -# GL_MAX_VERTEX_ATTRS is less then 16 (the only platform with this -# restriction so far seems to be the Raspberry Pi). This option -# is mutually exclusive with vertex array objects. -# -option(ORYOL_GL_USE_GETATTRIBLOCATION "Use glGetAttribLocation instead of glBindAttribLocation" OFF) -if (ORYOL_GL_USE_GETATTRIBLOCATION OR FIPS_RASPBERRYPI) - add_definitions(-DORYOL_GL_USE_GETATTRIBLOCATION=1) -else() - add_definitions(-DORYOL_GL_USE_GETATTRIBLOCATION=0) -endif() - -endif() # ORYOL_OPENGL - fips_begin_module(Gfx) fips_vs_warning_level(3) fips_files( @@ -35,7 +17,6 @@ fips_begin_module(Gfx) sokolGfxBackend.cc sokolGfxBackend.h displayMgrBase.cc displayMgrBase.h displayMgr.h - gfxResourceContainer.h gfxResourceContainer.cc ) if (ORYOL_D3D11) fips_files(winDisplayMgr.cc winDisplayMgr.h) @@ -61,7 +42,6 @@ fips_begin_module(Gfx) fips_libs(GLESv2 EGL bcm_host) elseif (FIPS_MACOS OR FIPS_WINDOWS OR FIPS_LINUX) fips_files(glfwDisplayMgr.cc glfwDisplayMgr.h) - fips_dir(private/flextgl) fips_files(flextGL.c flextGL.h) fips_deps(glfw3) endif() diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 1de43db29..20d3b408c 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -32,13 +32,6 @@ Gfx::Setup(const class GfxSetup& setup) { gfxPointers pointers; pointers.displayMgr = &state->backend.displayManager; - pointers.renderer = &state->backend.renderer; - pointers.resContainer = &state->backend.resourceContainer; - pointers.meshPool = &state->backend.resourceContainer.meshPool; - pointers.shaderPool = &state->backend.resourceContainer.shaderPool; - pointers.texturePool = &state->backend.resourceContainer.texturePool; - pointers.pipelinePool = &state->backend.resourceContainer.pipelinePool; - pointers.renderPassPool = &state->backend.resourceContainer.renderPassPool; state->backend.Setup(setup, pointers); state->runLoopId = Core::PreRunLoop()->Add([] { @@ -102,8 +95,10 @@ Gfx::DisplayAttrs() { //------------------------------------------------------------------------------ const DisplayAttrs& Gfx::PassAttrs() { - o_assert_dbg(IsValid()); - return state->backend.renderer.renderPassAttrs(); + o_assert_dbg(IsValid()); + // FIXME + return DisplayAttrs(); + //return state->backend.renderer.renderPassAttrs(); } //------------------------------------------------------------------------------ @@ -120,7 +115,7 @@ Gfx::BeginPass() { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - state->backend.renderer.beginPass(nullptr, &state->gfxSetup.DefaultPassAction); + state->backend.BeginPass(Id::InvalidId(), &state->gfxSetup.DefaultPassAction); } //------------------------------------------------------------------------------ @@ -130,19 +125,7 @@ Gfx::BeginPass(const PassAction& action) { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - state->backend.renderer.beginPass(nullptr, &action); -} - -//------------------------------------------------------------------------------ -void -Gfx::BeginPass(const Id& id) { - o_assert_dbg(IsValid()); - o_assert_dbg(!state->inPass); - state->inPass = true; - state->gfxFrameInfo.NumPasses++; - renderPass* pass = state->backend.resourceContainer.lookupRenderPass(id); - o_assert_dbg(pass); - state->backend.renderer.beginPass(pass, &pass->Setup.DefaultAction); + state->backend.BeginPass(Id::InvalidId(), &action); } //------------------------------------------------------------------------------ @@ -151,10 +134,8 @@ Gfx::BeginPass(const Id& id, const PassAction& passAction) { o_assert_dbg(IsValid()); o_assert_dbg(!state->inPass); state->inPass = true; - state->gfxFrameInfo.NumPasses++; - renderPass* pass = state->backend.resourceContainer.lookupRenderPass(id); - o_assert_dbg(pass); - state->backend.renderer.beginPass(pass, &passAction); + state->gfxFrameInfo.NumPasses++; + state->backend.BeginPass(id, &passAction); } //------------------------------------------------------------------------------ @@ -162,8 +143,8 @@ void Gfx::EndPass() { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); - state->inPass = false; - state->backend.renderer.endPass(); + state->inPass = false; + state->backend.EndPass(); } //------------------------------------------------------------------------------ @@ -172,64 +153,8 @@ Gfx::ApplyDrawState(const DrawState& drawState) { o_trace_scoped(Gfx_ApplyDrawState); o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); - o_assert_dbg(drawState.Pipeline.Type == GfxResourceType::Pipeline); - state->gfxFrameInfo.NumApplyDrawState++; - - // apply pipeline and meshes - pipeline* pip = state->backend.resourceContainer.lookupPipeline(drawState.Pipeline); - o_assert_dbg(pip); - mesh* meshes[GfxConfig::MaxNumInputMeshes] = { }; - int numMeshes = 0; - for (; numMeshes < GfxConfig::MaxNumInputMeshes; numMeshes++) { - if (drawState.Mesh[numMeshes].IsValid()) { - meshes[numMeshes] = state->backend.resourceContainer.lookupMesh(drawState.Mesh[numMeshes]); - } - else { - break; - } - } - #if ORYOL_DEBUG - validateMeshes(pip, meshes, numMeshes); - #endif - state->backend.renderer.applyDrawState(pip, meshes, numMeshes); - - // apply vertex textures if any - texture* vsTextures[GfxConfig::MaxNumVertexTextures] = { }; - int numVSTextures = 0; - for (; numVSTextures < GfxConfig::MaxNumVertexTextures; numVSTextures++) { - const Id& texId = drawState.VSTexture[numVSTextures]; - if (texId.IsValid()) { - vsTextures[numVSTextures] = state->backend.resourceContainer.lookupTexture(texId); - } - else { - break; - } - } - if (numVSTextures > 0) { - #if ORYOL_DEBUG - validateTextures(ShaderStage::VS, pip, vsTextures, numVSTextures); - #endif - state->backend.renderer.applyTextures(ShaderStage::VS, vsTextures, numVSTextures); - } - - // apply fragment textures if any - texture* fsTextures[GfxConfig::MaxNumFragmentTextures] = { }; - int numFSTextures = 0; - for (; numFSTextures < GfxConfig::MaxNumFragmentTextures; numFSTextures++) { - const Id& texId = drawState.FSTexture[numFSTextures]; - if (texId.IsValid()) { - fsTextures[numFSTextures] = state->backend.resourceContainer.lookupTexture(texId); - } - else { - break; - } - } - if (numFSTextures > 0) { - #if ORYOL_DEBUG - validateTextures(ShaderStage::FS, pip, fsTextures, numFSTextures); - #endif - state->backend.renderer.applyTextures(ShaderStage::FS, fsTextures, numFSTextures); - } + state->gfxFrameInfo.NumApplyDrawState++; + state->backend.ApplyDrawState(drawState); } //------------------------------------------------------------------------------ @@ -263,8 +188,9 @@ Gfx::PopResourceLabel() { //------------------------------------------------------------------------------ Id Gfx::LoadResource(const Ptr& loader) { - o_assert_dbg(IsValid()); - return state->backend.resourceContainer.Load(loader); + o_assert_dbg(IsValid()); + // FIXME + return Id::InvalidId(); } //------------------------------------------------------------------------------ @@ -277,22 +203,28 @@ Gfx::LookupResource(const Locator& locator) { //------------------------------------------------------------------------------ int Gfx::QueryFreeResourceSlots(GfxResourceType::Code resourceType) { - o_assert_dbg(IsValid()); - return state->backend.resourceContainer.QueryFreeSlots(resourceType); + o_assert_dbg(IsValid()); + // FIXME + return 0; + //return state->backend.resourceContainer.QueryFreeSlots(resourceType); } //------------------------------------------------------------------------------ ResourceInfo Gfx::QueryResourceInfo(const Id& id) { - o_assert_dbg(IsValid()); - return state->backend.resourceContainer.QueryResourceInfo(id); + o_assert_dbg(IsValid()); + // FIXME + return ResourceInfo(); + //return state->backend.resourceContainer.QueryResourceInfo(id); } //------------------------------------------------------------------------------ ResourcePoolInfo Gfx::QueryResourcePoolInfo(GfxResourceType::Code resType) { - o_assert_dbg(IsValid()); - return state->backend.resourceContainer.QueryPoolInfo(resType); + o_assert_dbg(IsValid()); + // FIXME + return ResourcePoolInfo(); + //return state->backend.resourceContainer.QueryPoolInfo(resType); } //------------------------------------------------------------------------------ @@ -302,13 +234,6 @@ Gfx::DestroyResources(ResourceLabel label) { return state->backend.DestroyResources(label); } -//------------------------------------------------------------------------------ -_priv::gfxResourceContainer* -Gfx::resource() { - o_assert_dbg(IsValid()); - return &(state->backend.resourceContainer); -} - //------------------------------------------------------------------------------ void Gfx::ApplyViewPort(int x, int y, int width, int height, bool originTopLeft) { @@ -347,332 +272,65 @@ Gfx::ResetStateCache() { //------------------------------------------------------------------------------ void -Gfx::UpdateVertices(const Id& id, const void* data, int numBytes) { - o_trace_scoped(Gfx_UpdateVertices); - o_assert_dbg(IsValid()); - state->gfxFrameInfo.NumUpdateVertices++; - mesh* msh = state->backend.resourceContainer.lookupMesh(id); - state->backend.renderer.updateVertices(msh, data, numBytes); -} - -//------------------------------------------------------------------------------ -void -Gfx::UpdateIndices(const Id& id, const void* data, int numBytes) { - o_trace_scoped(Gfx_UpdateIndices); +Gfx::UpdateBuffer(const Id& id, const void* data, int numBytes) { + o_trace_scoped(Gfx_UpdateBuffer); o_assert_dbg(IsValid()); - state->gfxFrameInfo.NumUpdateIndices++; - mesh* msh = state->backend.resourceContainer.lookupMesh(id); - state->backend.renderer.updateIndices(msh, data, numBytes); + state->gfxFrameInfo.NumUpdateBuffers++; + state->backend.UpdateBuffer(id, data, numBytes); } //------------------------------------------------------------------------------ void -Gfx::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& offsetsAndSizes) { +Gfx::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs) { o_trace_scoped(Gfx_UpdateTexture); o_assert_dbg(IsValid()); state->gfxFrameInfo.NumUpdateTextures++; - texture* tex = state->backend.resourceContainer.lookupTexture(id); - state->backend.renderer.updateTexture(tex, data, offsetsAndSizes); + state->backend.UpdateTexture(id, data, attrs); } //------------------------------------------------------------------------------ void -Gfx::Draw(int primGroupIndex, int numInstances) { +Gfx::Draw(int baseElement, int numElements, int numInstances) { o_trace_scoped(Gfx_Draw); o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); - state->gfxFrameInfo.NumDraw++; - state->backend.renderer.draw(primGroupIndex, numInstances); + state->gfxFrameInfo.NumDraw++; + state->backend.Draw(baseElement, numElements, numInstances); } -//------------------------------------------------------------------------------ -void -Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { - o_trace_scoped(Gfx_Draw); - o_assert_dbg(IsValid()); - o_assert_dbg(state->inPass); - state->gfxFrameInfo.NumDraw++; - state->backend.renderer.draw(primGroup.BaseElement, primGroup.NumElements, numInstances); -} - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validateMeshes(pipeline* pip, mesh** meshes, int num) { - - // checks that: - // - at least one input mesh must be attached, and it must be in slot 0 - // - all attached input meshes must be valid - // - PrimitivesGroups may only be attached to the mesh in slot 0 - // - if indexed rendering is used, the mesh in slot 0 must have an index buffer - // - the mesh in slot 0 cannot contain per-instance-data - // - no colliding vertex attributes across all input meshes - // - // this method should only be called in debug mode - - // FIXME FIXME FIXME: check for matching vertex layout!!! - - o_assert_dbg(meshes && (num > 0) && (num < GfxConfig::MaxNumInputMeshes)); - if (nullptr == meshes[0]) { - o_error("invalid mesh block: at least one input mesh must be provided, in slot 0!\n"); - } - if ((meshes[0]->indexBufferAttrs.Type != IndexType::None) && - (meshes[0]->indexBufferAttrs.NumIndices == 0)) { - o_error("invalid mesh block: the input mesh at slot 0 uses indexed rendering, but has no indices!\n"); - } - - StaticArray vertexAttrCounts; - vertexAttrCounts.Fill(0); - for (int mshIndex = 0; mshIndex < GfxConfig::MaxNumInputMeshes; mshIndex++) { - const meshBase* msh = meshes[mshIndex]; - if (msh) { - if (ResourceState::Valid != msh->State) { - o_error("invalid mesh block: input mesh at slot '%d' not valid!\n", mshIndex); - } - if ((mshIndex > 0) && (msh->indexBufferAttrs.Type != IndexType::None)) { - o_error("invalid drawState: input mesh at slot '%d' has indices, only allowed for slot 0!\n", mshIndex); - } - if ((mshIndex > 0) && (msh->numPrimGroups > 0)) { - o_error("invalid mesh block: input mesh at slot '%d' has primitive groups, only allowed for slot 0!\n", mshIndex); - } - const int numComps = msh->vertexBufferAttrs.Layout.NumComponents(); - for (int compIndex = 0; compIndex < numComps; compIndex++) { - const auto& comp = msh->vertexBufferAttrs.Layout.ComponentAt(compIndex); - vertexAttrCounts[comp.Attr]++; - if (vertexAttrCounts[comp.Attr] > 1) { - o_error("invalid mesh block: same vertex attribute declared in multiple input meshes!\n"); - } - } - } - } -} -#endif - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validateTextures(ShaderStage::Code stage, pipeline* pip, texture** textures, int numTextures) { - o_assert_dbg(pip); - - // check if provided texture types are compatible with the expections shader - const shader* shd = pip->shd; - o_assert_dbg(shd); - for (int slot = 0; slot < numTextures; slot++) { - int index = shd->Setup.TextureIndexByStageAndSlot(stage, slot); - if ((InvalidIndex != index) && textures[slot]) { - if (textures[slot]->textureAttrs.Type != shd->Setup.TexType(index)) { - o_error("Texture type mismatch at slot '%d'!\n", slot); - } - } - else if ((InvalidIndex == index) && textures[slot]) { - o_warn("Texture applied at slot '%d' which isn't expected by shader.\n", slot); - } - else if ((InvalidIndex != index) && !textures[slot]) { - o_error("No texture applied at slot '%d', but shader expects one!\n", slot); - } - } -} -#endif - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validateTextureSetup(const TextureSetup& setup, const void* data, int size) { - o_assert((setup.NumMipMaps > 0) && (setup.NumMipMaps <= GfxConfig::MaxNumTextureMipMaps)); - o_assert((setup.Width >= 1) && (setup.Height >= 1) && (setup.Depth >= 1)); - if (data) { - o_assert(size > 0); - o_assert(setup.TextureUsage == Usage::Immutable); - o_assert(setup.ImageData.NumMipMaps == setup.NumMipMaps); - if (setup.Type == TextureType::TextureCube) { - o_assert(setup.ImageData.NumFaces == 6); - } - else { - o_assert(setup.ImageData.NumFaces == 1); - } - } - if (setup.Type == TextureType::Texture2D) { - o_assert(setup.Depth == 1); - } - if (setup.Type == TextureType::TextureArray) { - o_assert(setup.Depth <= GfxConfig::MaxNumTextureArraySlices); - } - if (setup.Type == TextureType::Texture3D) { - o_assert(!setup.IsRenderTarget); - } - if (setup.IsRenderTarget) { - o_assert(setup.TextureUsage == Usage::Immutable); - o_assert(PixelFormat::IsValidRenderTargetColorFormat(setup.ColorFormat)); - if (setup.DepthFormat != PixelFormat::InvalidPixelFormat) { - o_assert(PixelFormat::IsValidRenderTargetDepthFormat(setup.DepthFormat)); - } - } - else { - o_assert(setup.SampleCount == 1); - o_assert(setup.DepthFormat == PixelFormat::InvalidPixelFormat); - } -} -#endif - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validateMeshSetup(const MeshSetup& setup, const void* data, int size) { - o_assert(setup.ShouldSetupFullScreenQuad() || (setup.VertexUsage != Usage::InvalidUsage) || (setup.IndexUsage != Usage::InvalidUsage)); - if (setup.NumVertices > 0) { - o_assert(!setup.Layout.Empty()); - if (setup.VertexUsage == Usage::Immutable) { - o_assert(data && (size > 0)); - o_assert((setup.VertexDataOffset >= 0) && (setup.VertexDataOffset < size)); - } - } - if (setup.NumIndices > 0) { - o_assert((setup.IndicesType == IndexType::Index16) || (setup.IndicesType == IndexType::Index32)); - if (setup.IndexUsage == Usage::Immutable) { - o_assert(data && (size > 0)); - o_assert((setup.IndexDataOffset >= 0) && (setup.IndexDataOffset < size)); - } - } -} -#endif - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validatePipelineSetup(const PipelineSetup& setup) { - o_assert(setup.PrimType != PrimitiveType::InvalidPrimitiveType); - o_assert(setup.Shader.IsValid()); - bool anyLayoutValid = false; - for (const auto& layout : setup.Layouts) { - if (!layout.Empty()) { - anyLayoutValid = true; - break; - } - } - o_assert(anyLayoutValid); -} -#endif - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validatePassSetup(const PassSetup& setup) { - // check that at least one color attachment texture is defined - // and that there are no 'holes' if there are multiple attachments - bool continuous = true; - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - if (setup.ColorAttachments[i].Texture.IsValid()) { - if (!continuous) { - o_error("invalid render pass: must have continuous color attachments!\n"); - } - } - else { - if (0 == i) { - o_error("invalid render pass: must have color attachment at slot 0!\n"); - } - continuous = false; - } - } - - // check that all render targets have the required params - const texture* t0 = state->backend.resourceContainer.lookupTexture(setup.ColorAttachments[0].Texture); - o_assert(t0); - const int w = t0->textureAttrs.Width; - const int h = t0->textureAttrs.Height; - const int sampleCount = t0->textureAttrs.SampleCount; - for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - const texture* tex = state->backend.resourceContainer.lookupTexture(setup.ColorAttachments[i].Texture); - if (tex) { - const auto& attrs = tex->textureAttrs; - if ((attrs.Width != w) || (attrs.Height != h)) { - o_error("invalid render pass: all color attachments must have the same size!\n"); - } - if (attrs.SampleCount != sampleCount) { - o_error("invalid render pass: all color attachments must have same sample-count!\n"); - } - if (attrs.TextureUsage != Usage::Immutable) { - o_error("invalid render pass: color attachments must have immutable usage!\n"); - } - if (!tex->Setup.IsRenderTarget) { - o_error("invalid render pass: color attachment must have been setup as render target!\n"); - } - } - } - const texture* dsTex = state->backend.resourceContainer.lookupTexture(setup.DepthStencilTexture); - if (dsTex) { - const auto& attrs = dsTex->textureAttrs; - if ((attrs.Width != w) || (attrs.Height != h)) { - o_error("invalid render pass: depth-stencil attachment must have same size as color attachments!\n"); - } - if (attrs.SampleCount != sampleCount) { - o_error("invalid render pass: depth-stencil attachment must have sample sample-count as color attachments!\n"); - } - if (attrs.TextureUsage != Usage::Immutable) { - o_error("invalid render pass: depth attachment must have immutable usage!\n"); - } - if (!dsTex->Setup.IsRenderTarget) { - o_error("invalid render pass: depth attachment must have been setup as render target!\n"); - } - } -} -#endif - -//------------------------------------------------------------------------------ -#if ORYOL_DEBUG -void -Gfx::validateShaderSetup(const ShaderSetup& setup) { - // hmm, FIXME -} -#endif - //------------------------------------------------------------------------------ template<> Id Gfx::CreateResource(const TextureSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - #if ORYOL_DEBUG - validateTextureSetup(setup, data, size); - #endif - return state->backend.resourceContainer.Create(setup, data, size); + o_assert_dbg(IsValid()); + return state->backend.CreateTexture(setup, data, size); } //------------------------------------------------------------------------------ template<> Id -Gfx::CreateResource(const MeshSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - #if ORYOL_DEBUG - validateMeshSetup(setup, data, size); - #endif - return state->backend.resourceContainer.Create(setup, data, size); +Gfx::CreateResource(const BufferSetup& setup, const void* data, int size) { + o_assert_dbg(IsValid()); + return state->backend.CreateBuffer(setup, data, size); } //------------------------------------------------------------------------------ template<> Id -Gfx::CreateResource(const ShaderSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - #if ORYOL_DEBUG - validateShaderSetup(setup); - #endif - return state->backend.resourceContainer.Create(setup, nullptr, 0); +Gfx::CreateResource(const ShaderSetup& setup) { + o_assert_dbg(IsValid()); + return state->backend.CreateShader(setup); } //------------------------------------------------------------------------------ template<> Id -Gfx::CreateResource(const PipelineSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - #if ORYOL_DEBUG - validatePipelineSetup(setup); - #endif - return state->backend.resourceContainer.Create(setup, nullptr, 0); +Gfx::CreateResource(const PipelineSetup& setup) { + o_assert_dbg(IsValid()); + return state->backend.CreatePipeline(setup); } //------------------------------------------------------------------------------ template<> Id -Gfx::CreateResource(const PassSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - #if ORYOL_DEBUG - validatePassSetup(setup); - #endif - return state->backend.resourceContainer.Create(setup, nullptr, 0); +Gfx::CreateResource(const PassSetup& setup) { + o_assert_dbg(IsValid()); + return state->backend.CreatePass(setup); } //------------------------------------------------------------------------------ @@ -680,7 +338,7 @@ void Gfx::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t layoutHash, const uint8_t* ptr, int byteSize) { o_assert_dbg(IsValid()); state->gfxFrameInfo.NumApplyUniformBlock++; - state->backend.renderer.applyUniformBlock(bindStage, bindSlot, layoutHash, ptr, byteSize); + state->backend.ApplyUniformBlock(bindStage, bindSlot, layoutHash, ptr, byteSize); } } // namespace Oryol diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index b2a5bae76..d45237eac 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -85,8 +85,6 @@ class Gfx { static void BeginPass(); /// begin rendering to default render pass with override clear values static void BeginPass(const PassAction& action); - /// begin offscreen rendering - static void BeginPass(const Id& passId); /// begin offscreen rendering with override clear colors static void BeginPass(const Id& passId, const PassAction& action); /// finish rendering to current pass @@ -101,43 +99,20 @@ class Gfx { /// apply a uniform block (call between ApplyDrawState and Draw) template static void ApplyUniformBlock(const T& ub); - /// update dynamic vertex data (complete replace) - static void UpdateVertices(const Id& id, const void* data, int numBytes); - /// update dynamic index data (complete replace) - static void UpdateIndices(const Id& id, const void* data, int numBytes); + /// update dynamic vertex or index data (complete replace) + static void UpdateBuffer(const Id& id, const void* data, int numBytes); /// update dynamic texture image data (complete replace) static void UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& offsetsAndSizes); - /// submit a draw call with primitive group index - static void Draw(int primGroupIndex=0, int numInstances=1); - /// submit a draw call with explicit primitve range - static void Draw(const PrimitiveGroup& primGroup, int numInstances=1); + /// submit a draw call + static void Draw(int baseElement, int numElements, int numInstances); /// commit (and display) the current frame static void CommitFrame(); /// reset the native 3D-API state-cache static void ResetStateCache(); - /// direct access to resource container (private interface for resource loaders) - static _priv::gfxResourceContainer* resource(); - private: - #if ORYOL_DEBUG - /// validate texture setup params - static void validateTextureSetup(const TextureSetup& setup, const void* data, int size); - /// validate mesh setup params - static void validateMeshSetup(const MeshSetup& setup, const void* data, int size); - /// validate pipeline setup params - static void validatePipelineSetup(const PipelineSetup& setup); - /// validate render pass setup params - static void validatePassSetup(const PassSetup& setup); - /// validate shader setup params - static void validateShaderSetup(const ShaderSetup& setup); - /// validate mesh binding - static void validateMeshes(_priv::pipeline* pip, _priv::mesh** meshes, int numMeshes); - /// validate texture binding - static void validateTextures(ShaderStage::Code stage, _priv::pipeline* pip, _priv::texture** textures, int numTextures); - #endif /// apply uniform block, non-template version static void applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t layoutHash, const uint8_t* ptr, int byteSize); }; diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 08d071377..3c8bada76 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -874,8 +874,7 @@ struct GfxFrameInfo { int NumApplyScissorRect = 0; int NumApplyDrawState = 0; int NumApplyUniformBlock = 0; - int NumUpdateVertices = 0; - int NumUpdateIndices = 0; + int NumUpdateBuffers = 0; int NumUpdateTextures = 0; int NumDraw = 0; int NumDrawInstanced = 0; diff --git a/code/Modules/Gfx/private/displayMgr.h b/code/Modules/Gfx/private/displayMgr.h index c062f5120..7fe506820 100644 --- a/code/Modules/Gfx/private/displayMgr.h +++ b/code/Modules/Gfx/private/displayMgr.h @@ -10,37 +10,37 @@ events (such as input events) and forwards them to Oryol. */ #if ORYOL_D3D11 -#include "Gfx/private/d3d11/d3d11DisplayMgr.h" +#include "Gfx/private/d3d11DisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public d3d11DisplayMgr { }; } } #elif ORYOL_METAL -#include "Gfx/private/mtl/mtlDisplayMgr.h" +#include "Gfx/private/mtlDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public mtlDisplayMgr { }; } } #elif (ORYOL_ANDROID || ORYOL_RASPBERRYPI) -#include "Gfx/private/egl/eglDisplayMgr.h" +#include "Gfx/private/eglDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public eglDisplayMgr { }; } } #elif (ORYOL_WINDOWS || ORYOL_MACOS || ORYOL_LINUX) -#include "Gfx/private/glfw/glfwDisplayMgr.h" +#include "Gfx/private/glfwDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public glfwDisplayMgr { }; } } #elif ORYOL_EMSCRIPTEN -#include "Gfx/private/emsc/emscDisplayMgr.h" +#include "Gfx/private/emscDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public emscDisplayMgr { }; } } #elif ORYOL_IOS -#include "Gfx/private/ios/iosDisplayMgr.h" +#include "Gfx/private/iosDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public iosDisplayMgr { }; diff --git a/code/Modules/Gfx/private/flextgl/flextGL.c b/code/Modules/Gfx/private/flextGL.c similarity index 100% rename from code/Modules/Gfx/private/flextgl/flextGL.c rename to code/Modules/Gfx/private/flextGL.c diff --git a/code/Modules/Gfx/private/flextgl/flextGL.h b/code/Modules/Gfx/private/flextGL.h similarity index 100% rename from code/Modules/Gfx/private/flextgl/flextGL.h rename to code/Modules/Gfx/private/flextGL.h diff --git a/code/Modules/Gfx/private/flextgl.sh b/code/Modules/Gfx/private/flextgl.sh new file mode 100755 index 000000000..ee1bca08a --- /dev/null +++ b/code/Modules/Gfx/private/flextgl.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# helper bash script to generate gl files +# +python3 ../../../../flextgl/flextGLgen.py -T glfw3 -D . flextgl_profile.txt diff --git a/code/Modules/Gfx/private/flextgl/flextgl.sh b/code/Modules/Gfx/private/flextgl/flextgl.sh deleted file mode 100755 index 5db687ee4..000000000 --- a/code/Modules/Gfx/private/flextgl/flextgl.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# helper bash script to generate gl files -# -python3 ../../../../../flextgl/flextGLgen.py -T glfw3 -D . flextgl_profile.txt diff --git a/code/Modules/Gfx/private/flextgl/flextgl_profile.txt b/code/Modules/Gfx/private/flextgl_profile.txt similarity index 100% rename from code/Modules/Gfx/private/flextgl/flextgl_profile.txt rename to code/Modules/Gfx/private/flextgl_profile.txt diff --git a/code/Modules/Gfx/private/gfxPointers.h b/code/Modules/Gfx/private/gfxPointers.h index a3827e22a..cc15de49b 100644 --- a/code/Modules/Gfx/private/gfxPointers.h +++ b/code/Modules/Gfx/private/gfxPointers.h @@ -14,24 +14,10 @@ namespace Oryol { namespace _priv { -class renderer; class displayMgr; -class gfxResourceContainer; -class meshPool; -class shaderPool; -class texturePool; -class pipelinePool; -class renderPassPool; struct gfxPointers { - class renderer* renderer = nullptr; class displayMgr* displayMgr = nullptr; - class gfxResourceContainer* resContainer = nullptr; - class meshPool* meshPool = nullptr; - class shaderPool* shaderPool = nullptr; - class texturePool* texturePool = nullptr; - class pipelinePool* pipelinePool = nullptr; - class renderPassPool* renderPassPool = nullptr; }; } // namespace _priv diff --git a/code/Modules/Gfx/private/gfxResourceContainer.cc b/code/Modules/Gfx/private/gfxResourceContainer.cc deleted file mode 100644 index 65a83e698..000000000 --- a/code/Modules/Gfx/private/gfxResourceContainer.cc +++ /dev/null @@ -1,470 +0,0 @@ -//------------------------------------------------------------------------------ -// gfxResourceContainer.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "Core/Core.h" -#include "gfxResourceContainer.h" -#include "displayMgr.h" - -namespace Oryol { -namespace _priv { - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::setup(const GfxSetup& setup, const gfxPointers& ptrs) { - o_assert(!this->valid); - this->valid = true; - - this->pointers = ptrs; - this->registry.Setup(setup.ResourceRegistryCapacity); - this->labelStack.Setup(setup.ResourceLabelStackCapacity); - this->pendingLoaders.Reserve(128); - this->destroyQueue.Reserve(128); - - this->meshPool.Setup(GfxResourceType::Mesh, setup.ResourcePoolSize[GfxResourceType::Mesh]); - this->shaderPool.Setup(GfxResourceType::Shader, setup.ResourcePoolSize[GfxResourceType::Shader]); - this->texturePool.Setup(GfxResourceType::Texture, setup.ResourcePoolSize[GfxResourceType::Texture]); - this->pipelinePool.Setup(GfxResourceType::Pipeline, setup.ResourcePoolSize[GfxResourceType::Pipeline]); - this->renderPassPool.Setup(GfxResourceType::RenderPass, setup.ResourcePoolSize[GfxResourceType::RenderPass]); - this->factory.setup(this->pointers); - this->runLoopId = Core::PostRunLoop()->Add([this]() { - this->update(); - }); -} - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::discard() { - o_assert_dbg(this->valid); - - Core::PostRunLoop()->Remove(this->runLoopId); - for (const auto& loader : this->pendingLoaders) { - loader->Cancel(); - } - this->pendingLoaders.Clear(); - this->registry.Discard(); - this->labelStack.Discard(); - this->renderPassPool.Discard(); - this->pipelinePool.Discard(); - this->texturePool.Discard(); - this->shaderPool.Discard(); - this->meshPool.Discard(); - this->factory.discard(); - this->pointers = gfxPointers(); - this->valid = false; -} - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::Create(const MeshSetup& setup, const void* data, int size) { - o_assert_dbg(this->valid); - o_assert_dbg(!setup.ShouldSetupFromFile()); - - Id resId = this->registry.Lookup(setup.Locator); - if (resId.IsValid()) { - return resId; - } - else { - resId = this->meshPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - mesh& res = this->meshPool.Assign(resId, ResourceState::Setup); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initMesh(res, data, size); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->meshPool.UpdateState(resId, newState); - } - return resId; -} - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::Create(const TextureSetup& setup, const void* data, int size) { - o_assert_dbg(this->valid); - o_assert_dbg(!setup.ShouldSetupFromFile()); - - Id resId = this->registry.Lookup(setup.Locator); - if (resId.IsValid()) { - return resId; - } - else { - resId = this->texturePool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - texture& res = this->texturePool.Assign(resId, ResourceState::Setup); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initTexture(res, data, size); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->texturePool.UpdateState(resId, newState); - } - return resId; -} - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::prepareAsync(const MeshSetup& setup) { - o_assert_dbg(this->valid); - - Id resId = this->meshPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - mesh& res = this->meshPool.Assign(resId, ResourceState::Pending); - res.Setup = setup; - return resId; -} - -//------------------------------------------------------------------------------ -template<> ResourceState::Code -gfxResourceContainer::initAsync(const Id& resId, const MeshSetup& setup, const void* data, int size) { - o_assert_dbg(this->valid); - - // the prepared resource may have been destroyed while it was loading - if (this->meshPool.Contains(resId)) { - mesh& res = this->meshPool.Assign(resId, ResourceState::Pending); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initMesh(res, data, size); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->meshPool.UpdateState(resId, newState); - return newState; - } - else { - // the prepared mesh object was destroyed before it was loaded - o_warn("gfxResourceContainer::initAsync(): resource destroyed before initAsync (type: %d, slot: %d!)\n", - resId.Type, resId.SlotIndex); - return ResourceState::InvalidState; - } -} - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::prepareAsync(const TextureSetup& setup) { - o_assert_dbg(this->valid); - - Id resId = this->texturePool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - texture& res = this->texturePool.Assign(resId, ResourceState::Pending); - res.Setup = setup; - return resId; -} - -//------------------------------------------------------------------------------ -template<> ResourceState::Code -gfxResourceContainer::initAsync(const Id& resId, const TextureSetup& setup, const void* data, int size) { - o_assert_dbg(this->valid); - - // the prepared resource may have been destroyed while it was loading - if (this->texturePool.Contains(resId)) { - texture& res = this->texturePool.Assign(resId, ResourceState::Pending); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initTexture(res, data, size); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->texturePool.UpdateState(resId, newState); - return newState; - } - else { - // the prepared texture object was destroyed before it was loaded - o_warn("gfxResourceContainer::initAsync(): resource destroyed before initAsync (type: %d, slot: %d!)\n", - resId.Type, resId.SlotIndex); - return ResourceState::InvalidState; - } -} - -//------------------------------------------------------------------------------ -ResourceState::Code -gfxResourceContainer::failedAsync(const Id& resId) { - o_assert_dbg(this->valid); - - switch (resId.Type) { - case GfxResourceType::Mesh: - // the prepared resource may have been destroyed while it was loading - if (this->meshPool.Contains(resId)) { - this->meshPool.UpdateState(resId, ResourceState::Failed); - return ResourceState::Failed; - } - break; - - case GfxResourceType::Texture: - // the prepared resource may have been destroyed while it was loading - if (this->texturePool.Contains(resId)) { - this->texturePool.UpdateState(resId, ResourceState::Failed); - return ResourceState::Failed; - } - break; - - default: - o_error("Invalid resource type for async creation!"); - break; - } - // fallthrough: resource was already destroyed while still loading - return ResourceState::InvalidState; -} - - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::Create(const ShaderSetup& setup, const void* /*data*/, int /*size*/) { - o_assert_dbg(this->valid); - - Id resId = this->registry.Lookup(setup.Locator); - if (resId.IsValid()) { - return resId; - } - else { - resId = this->shaderPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - shader& res = this->shaderPool.Assign(resId, ResourceState::Setup); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initShader(res); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->shaderPool.UpdateState(resId, newState); - } - return resId; -} - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::Create(const PipelineSetup& setup, const void* /*data*/, int /*size*/) { - o_assert_dbg(this->valid); - - Id resId = this->registry.Lookup(setup.Locator); - if (resId.IsValid()) { - return resId; - } - else { - resId = this->pipelinePool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - pipeline& res = this->pipelinePool.Assign(resId, ResourceState::Setup); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initPipeline(res); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->pipelinePool.UpdateState(resId, newState); - } - return resId; -} - -//------------------------------------------------------------------------------ -template<> Id -gfxResourceContainer::Create(const PassSetup& setup, const void* /*data*/, int /*size*/) { - o_assert_dbg(this->valid); - - Id resId = this->registry.Lookup(setup.Locator); - if (resId.IsValid()) { - return resId; - } - else { - resId = this->renderPassPool.AllocId(); - this->registry.Add(setup.Locator, resId, this->labelStack.PeekLabel()); - renderPass& res = this->renderPassPool.Assign(resId, ResourceState::Setup); - res.Setup = setup; - const ResourceState::Code newState = this->factory.initRenderPass(res); - o_assert((newState == ResourceState::Valid) || (newState == ResourceState::Failed)); - this->renderPassPool.UpdateState(resId, newState); - } - return resId; -} - -//------------------------------------------------------------------------------ -Id -gfxResourceContainer::Load(const Ptr& loader) { - o_assert_dbg(this->valid); - - Id resId = this->registry.Lookup(loader->Locator()); - if (resId.IsValid()) { - return resId; - } - else { - this->pendingLoaders.Add(loader); - resId = loader->Start(); - return resId; - } -} - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::DestroyDeferred(const ResourceLabel& label) { - o_assert_dbg(this->valid); - Array ids = this->registry.Remove(label); - if (ids.Size() > 0) { - this->destroyQueue.Reserve(ids.Size()); - for (const Id& id : ids) { - this->destroyQueue.Add(id); - } - } -} - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::GarbageCollect() { - for (const Id& id : this->destroyQueue) { - this->destroyResource(id); - } - this->destroyQueue.Clear(); - this->factory.garbageCollect(); -} - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::destroyResource(const Id& id) { - switch (id.Type) { - case GfxResourceType::Texture: - { - if (ResourceState::Valid == this->texturePool.QueryState(id)) { - texture* tex = this->texturePool.Lookup(id); - if (tex) { - this->factory.destroyTexture(*tex); - } - } - this->texturePool.Unassign(id); - } - break; - - case GfxResourceType::Mesh: - { - if (ResourceState::Valid == this->meshPool.QueryState(id)) { - mesh* msh = this->meshPool.Lookup(id); - if (msh) { - this->factory.destroyMesh(*msh); - } - } - this->meshPool.Unassign(id); - } - break; - - case GfxResourceType::Shader: - { - if (ResourceState::Valid == this->shaderPool.QueryState(id)) { - shader* shd = this->shaderPool.Lookup(id); - if (shd) { - this->factory.destroyShader(*shd); - } - } - this->shaderPool.Unassign(id); - } - break; - - case GfxResourceType::Pipeline: - { - if (ResourceState::Valid == this->pipelinePool.QueryState(id)) { - pipeline* pip = this->pipelinePool.Lookup(id); - if (pip) { - this->factory.destroyPipeline(*pip); - } - } - this->pipelinePool.Unassign(id); - } - break; - - case GfxResourceType::RenderPass: - { - if (ResourceState::Valid == this->renderPassPool.QueryState(id)) { - renderPass* rp = this->renderPassPool.Lookup(id); - if (rp) { - this->factory.destroyRenderPass(*rp); - } - } - this->renderPassPool.Unassign(id); - } - break; - - default: - o_assert(false); - break; - } -} - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::Destroy(const ResourceLabel& label) { - o_assert_dbg(this->valid); - Array ids = this->registry.Remove(label); - for (const Id& id : ids) { - this->destroyResource(id); - } -} - -//------------------------------------------------------------------------------ -void -gfxResourceContainer::update() { - o_assert_dbg(this->valid); - - /// call update method on resource pools (this is cheap) - this->meshPool.Update(); - this->shaderPool.Update(); - this->texturePool.Update(); - this->pipelinePool.Update(); - - // trigger loaders, and remove from pending array if finished - for (int i = this->pendingLoaders.Size() - 1; i >= 0; i--) { - const auto& loader = this->pendingLoaders[i]; - ResourceState::Code state = loader->Continue(); - if (ResourceState::Pending != state) { - this->pendingLoaders.Erase(i); - } - } -} - -//------------------------------------------------------------------------------ -ResourceInfo -gfxResourceContainer::QueryResourceInfo(const Id& resId) const { - o_assert_dbg(this->valid); - - switch (resId.Type) { - case GfxResourceType::Texture: - return this->texturePool.QueryResourceInfo(resId); - case GfxResourceType::Mesh: - return this->meshPool.QueryResourceInfo(resId); - case GfxResourceType::Shader: - return this->shaderPool.QueryResourceInfo(resId); - case GfxResourceType::Pipeline: - return this->pipelinePool.QueryResourceInfo(resId); - case GfxResourceType::RenderPass: - return this->renderPassPool.QueryResourceInfo(resId); - default: - o_assert(false); - return ResourceInfo(); - } -} - -//------------------------------------------------------------------------------ -ResourcePoolInfo -gfxResourceContainer::QueryPoolInfo(GfxResourceType::Code resType) const { - o_assert_dbg(this->valid); - - switch (resType) { - case GfxResourceType::Texture: - return this->texturePool.QueryPoolInfo(); - case GfxResourceType::Mesh: - return this->meshPool.QueryPoolInfo(); - case GfxResourceType::Shader: - return this->shaderPool.QueryPoolInfo(); - case GfxResourceType::Pipeline: - return this->pipelinePool.QueryPoolInfo(); - case GfxResourceType::RenderPass: - return this->renderPassPool.QueryPoolInfo(); - default: - o_assert(false); - return ResourcePoolInfo(); - } -} - -//------------------------------------------------------------------------------ -int -gfxResourceContainer::QueryFreeSlots(GfxResourceType::Code resourceType) const { - o_assert_dbg(this->valid); - - switch (resourceType) { - case GfxResourceType::Texture: - return this->texturePool.GetNumFreeSlots(); - case GfxResourceType::Mesh: - return this->meshPool.GetNumFreeSlots(); - case GfxResourceType::Shader: - return this->shaderPool.GetNumFreeSlots(); - case GfxResourceType::Pipeline: - return this->pipelinePool.GetNumFreeSlots(); - case GfxResourceType::RenderPass: - return this->renderPassPool.GetNumFreeSlots(); - default: - o_assert(false); - return 0; - } -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/gfxResourceContainer.h b/code/Modules/Gfx/private/gfxResourceContainer.h deleted file mode 100644 index 0f4a2df6f..000000000 --- a/code/Modules/Gfx/private/gfxResourceContainer.h +++ /dev/null @@ -1,123 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::gfxResourceContainer - @ingroup _priv - @brief resource container base implementation of the Gfx module -*/ -#include "Core/RunLoop.h" -#include "Core/Containers/Array.h" -#include "Resource/ResourceLoader.h" -#include "Resource/ResourceRegistry.h" -#include "Resource/ResourceLabelStack.h" -#include "Resource/ResourceInfo.h" -#include "Gfx/GfxTypes.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/private/gfxFactory.h" -#include "Gfx/private/gfxPointers.h" - -namespace Oryol { -namespace _priv { - -class renderer; -class displayMgr; - -class gfxResourceContainer { -public: - /// setup the resource container - void setup(const GfxSetup& setup, const gfxPointers& ptrs); - /// discard the resource manager - void discard(); - - /// create a resource object with data - template Id Create(const SETUP& setup, const void* data=nullptr, int size=0); - /// asynchronously load resource object - Id Load(const Ptr& loader); - /// query number of free slots for resource type - int QueryFreeSlots(GfxResourceType::Code resourceType) const; - /// query resource info (fast) - ResourceInfo QueryResourceInfo(const Id& id) const; - /// query resource pool info (slow) - ResourcePoolInfo QueryPoolInfo(GfxResourceType::Code resType) const; - /// immediately destroy resources by label - void Destroy(const ResourceLabel& label); - /// queue resources for destruction in GarbageCollect - void DestroyDeferred(const ResourceLabel& label); - /// destroy deferred resources (called from Gfx::CommitFrame) - void GarbageCollect(); - - /// prepare async creation (usually called at start of async Load) - template Id prepareAsync(const SETUP& setup); - /// setup async resource (usually called during async Load) - template ResourceState::Code initAsync(const Id& resId, const SETUP& setup, const void* data, int size); - /// notify resource container that async creation had failed - ResourceState::Code failedAsync(const Id& resId); - - /// lookup mesh object - mesh* lookupMesh(const Id& resId); - /// lookup shader object - shader* lookupShader(const Id& resId); - /// lookup texture object - texture* lookupTexture(const Id& resId); - /// lookup pipeline object - pipeline* lookupPipeline(const Id& resId); - /// lookup render-pass object - renderPass* lookupRenderPass(const Id& resId); - - /// per-frame update (update resource pools and pending loaders) - void update(); - /// destroy a single resource - void destroyResource(const Id& id); - - bool valid = false; - gfxPointers pointers; - gfxFactory factory; - ResourceRegistry registry; - ResourceLabelStack labelStack; - class meshPool meshPool; - class shaderPool shaderPool; - class texturePool texturePool; - class pipelinePool pipelinePool; - class renderPassPool renderPassPool; - RunLoop::Id runLoopId = RunLoop::InvalidId; - Array> pendingLoaders; - Array destroyQueue; -}; - -//------------------------------------------------------------------------------ -inline mesh* -gfxResourceContainer::lookupMesh(const Id& resId) { - o_assert_dbg(this->valid); - return this->meshPool.Lookup(resId); -} - -//------------------------------------------------------------------------------ -inline shader* -gfxResourceContainer::lookupShader(const Id& resId) { - o_assert_dbg(this->valid); - return this->shaderPool.Lookup(resId); -} - -//------------------------------------------------------------------------------ -inline texture* -gfxResourceContainer::lookupTexture(const Id& resId) { - o_assert_dbg(this->valid); - return this->texturePool.Lookup(resId); -} - -//------------------------------------------------------------------------------ -inline pipeline* -gfxResourceContainer::lookupPipeline(const Id& resId) { - o_assert_dbg(this->valid); - return this->pipelinePool.Lookup(resId); -} - -//------------------------------------------------------------------------------ -inline renderPass* -gfxResourceContainer::lookupRenderPass(const Id& resId) { - o_assert_dbg(this->valid); - return this->renderPassPool.Lookup(resId); -} - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.cc b/code/Modules/Gfx/private/glfwDisplayMgr.cc index b43908951..541978475 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.cc +++ b/code/Modules/Gfx/private/glfwDisplayMgr.cc @@ -3,13 +3,12 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "Core/Core.h" -#include "Gfx/private/gl/gl_impl.h" -#include "Gfx/private/gl/glCaps.h" #include "glfwDisplayMgr.h" #include "Core/Log.h" #include "Core/String/StringBuilder.h" #define GLFW_INCLUDE_NONE -#include "GLFW/glfw3.h" +#include "GLFW/glfw3.h" +#include "flextGL.h" namespace Oryol { namespace _priv { @@ -61,14 +60,8 @@ glfwDisplayMgr::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs) { glfwSwapInterval(setup.SwapInterval); // setup extensions and platform-dependent constants - ORYOL_GL_CHECK_ERROR(); flextInit(glfwWindow); - ORYOL_GL_CHECK_ERROR(); - glCaps::Setup(glCaps::GL_3_3_CORE); - #if ORYOL_DEBUG - glCaps::EnableDebugOutput(glCaps::SeverityMedium); - #endif - + // now set the actual display attributes int fbWidth = 0, fbHeight = 0; int posX = 0, posY = 0; @@ -95,7 +88,6 @@ glfwDisplayMgr::DiscardDisplay() { this->destroyMainWindow(); glfwTerminate(); - glCaps::Discard(); displayMgrBase::DiscardDisplay(); } @@ -125,13 +117,6 @@ glfwDisplayMgr::Present() { displayMgrBase::Present(); } -//------------------------------------------------------------------------------ -void -glfwDisplayMgr::glBindDefaultFramebuffer() { - ::glBindFramebuffer(GL_FRAMEBUFFER, 0); - ORYOL_GL_CHECK_ERROR(); -} - //------------------------------------------------------------------------------ void glfwDisplayMgr::glfwErrorCallback(int error, const char* desc) { diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.h b/code/Modules/Gfx/private/glfwDisplayMgr.h index 49cffdfc7..3f0025a46 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.h +++ b/code/Modules/Gfx/private/glfwDisplayMgr.h @@ -10,7 +10,6 @@ GL context management, and consuming window input events. */ #include "Gfx/private/displayMgrBase.h" -#include "Gfx/private/gl/gl_decl.h" struct GLFWwindow; @@ -35,9 +34,6 @@ class glfwDisplayMgr : public displayMgrBase { /// check whether the window system requests to quit the application bool QuitRequested() const; - /// bind the default frame buffer - void glBindDefaultFramebuffer(); - /// get glfwWindow handle static GLFWwindow* getGlfwWindow(); diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index ae4d9df22..75f0dbab9 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -2,6 +2,7 @@ // sokolGfxBackend.cc //------------------------------------------------------------------------------ #include "Pre.h" +#include "Core/Core.h" #include "Core/Assertion.h" #include "Core/Memory/Memory.h" #define SOKOL_IMPL @@ -11,7 +12,30 @@ #define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) #define SOKOL_UNREACHABLE o_assert_dbg(false) #if ORYOL_OPENGL -#include "Gfx/private/gl/gl_impl.h" + #if ORYOL_RASPBERRYPI + #define GL_GLEXT_PROTOTYPES + #include "GLES2/gl2.h" + #include "GLES2/gl2ext.h" + #elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS + #include "Gfx/private/flextGL.h" + #elif ORYOL_IOS + #include + #include + #elif ORYOL_EMSCRIPTEN + #if ORYOL_OPENGLES2 + #define GL_GLEXT_PROTOTYPES + #include + #include + #else + #include + #endif + #elif ORYOL_ANDROID + #define GL_GLEXT_PROTOTYPES + #include + #include + #else + #error "Missing platform for GL header include!" + #endif #endif #if ORYOL_OPENGLES2 #define SOKKOL_GLES2 @@ -39,152 +63,174 @@ sokolGfxBackend::~sokolGfxBackend() { } //------------------------------------------------------------------------------ -void sokolGfxBackend::Setup(const GfxSetup& setup, const gfxPointers& ptrs) { +void +sokolGfxBackend::Setup(const GfxSetup& setup, const gfxPointers& ptrs) { o_assert(!this->isValid); this->displayManager.SetupDisplay(setup, ptrs); - this->resourceContainer.setup(setup, ptrs); - this->renderer.setup(setup, ptrs); + this->registry.Setup(setup.ResourceRegistryCapacity); + this->labelStack.Setup(setup.ResourceLabelStackCapacity); this->isValid = true; } //------------------------------------------------------------------------------ -void sokolGfxBackend::Discard() { +void +sokolGfxBackend::Discard() { o_assert(this->isValid); - this->resourceContainer.GarbageCollect(); - this->resourceContainer.Destroy(ResourceLabel::All); - this->renderer.discard(); - this->resourceContainer.discard(); + this->registry.Discard(); + this->labelStack.Discard(); this->displayManager.DiscardDisplay(); this->isValid = false; } //------------------------------------------------------------------------------ -bool sokolGfxBackend::IsValid() { +bool +sokolGfxBackend::IsValid() { return this->isValid; } //------------------------------------------------------------------------------ -bool sokolGfxBackend::QuitRequested() { +bool +sokolGfxBackend::QuitRequested() { return this->displayManager.QuitRequested(); } //------------------------------------------------------------------------------ -bool sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { +bool +sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { o_assert_dbg(this->isValid); - return this->renderer.queryFeature(feature); + // FIXME + return false; } //------------------------------------------------------------------------------ -GfxEvent::HandlerId sokolGfxBackend::Subscribe(GfxEvent::Handler handler) { +GfxEvent::HandlerId +sokolGfxBackend::Subscribe(GfxEvent::Handler handler) { o_assert_dbg(this->isValid); return this->displayManager.Subscribe(handler); } //------------------------------------------------------------------------------ -void sokolGfxBackend::Unsubscribe(GfxEvent::HandlerId id) { +void +sokolGfxBackend::Unsubscribe(GfxEvent::HandlerId id) { o_assert_dbg(this->isValid); this->displayManager.Unsubscribe(id); } //------------------------------------------------------------------------------ -ResourceLabel sokolGfxBackend::PushResourceLabel() { +ResourceLabel +sokolGfxBackend::PushResourceLabel() { o_assert_dbg(this->isValid); - return this->resourceContainer.labelStack.PushLabel(); + return this->labelStack.PushLabel(); } //------------------------------------------------------------------------------ -void sokolGfxBackend::PushResourceLabel(ResourceLabel label) { +void +sokolGfxBackend::PushResourceLabel(ResourceLabel label) { o_assert_dbg(this->isValid); - return this->resourceContainer.labelStack.PushLabel(label); + return this->labelStack.PushLabel(label); } //------------------------------------------------------------------------------ -ResourceLabel sokolGfxBackend::PopResourceLabel() { +ResourceLabel +sokolGfxBackend::PopResourceLabel() { o_assert_dbg(this->isValid); - return this->resourceContainer.labelStack.PopLabel(); + return this->labelStack.PopLabel(); } //------------------------------------------------------------------------------ -Id sokolGfxBackend::CreateBuffer(const BufferSetup& setup) { +Id +sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int size) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); } //------------------------------------------------------------------------------ -Id sokolGfxBackend::CreateTexture(const TextureSetup& setup) { +Id +sokolGfxBackend::CreateTexture(const TextureSetup& setup, const void* data, int size) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); } //------------------------------------------------------------------------------ -Id sokolGfxBackend::CreateShader(const ShaderSetup& setup) { +Id +sokolGfxBackend::CreateShader(const ShaderSetup& setup) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); } //------------------------------------------------------------------------------ -Id sokolGfxBackend::CreatePipeline(const PipelineSetup& setup) { +Id +sokolGfxBackend::CreatePipeline(const PipelineSetup& setup) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); } //------------------------------------------------------------------------------ -Id sokolGfxBackend::CreatePass(const PassSetup& setup) { +Id +sokolGfxBackend::CreatePass(const PassSetup& setup) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); } //------------------------------------------------------------------------------ -Id sokolGfxBackend::LookupResource(const Locator& loc) { +Id +sokolGfxBackend::LookupResource(const Locator& loc) { o_assert_dbg(this->isValid); - return this->resourceContainer.registry.Lookup(loc); + return this->registry.Lookup(loc); } //------------------------------------------------------------------------------ -void sokolGfxBackend::DestroyResources(ResourceLabel label) { +void +sokolGfxBackend::DestroyResources(ResourceLabel label) { o_assert_dbg(this->isValid); - return this->resourceContainer.DestroyDeferred(label); + // FIXME } //------------------------------------------------------------------------------ -void sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { +void +sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ -void sokolGfxBackend::UpdateTexture(const Id& id, const ImageDataAttrs& attrs, const void* data, int numBytes) { +void +sokolGfxBackend::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs) { o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ -void sokolGfxBackend::BeginPass(Id passId, const PassAction* action) { +void +sokolGfxBackend::BeginPass(Id passId, const PassAction* action) { o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ -void sokolGfxBackend::EndPass() { +void +sokolGfxBackend::EndPass() { o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ -void sokolGfxBackend::ApplyViewPort(int x, int y, int w, int h, bool originTopLeft) { +void +sokolGfxBackend::ApplyViewPort(int x, int y, int w, int h, bool originTopLeft) { o_assert_dbg(this->isValid); - this->renderer.applyViewPort(x, y, w, h, originTopLeft); + sg_apply_viewport(x, y, w, h, originTopLeft); } //------------------------------------------------------------------------------ -void sokolGfxBackend::ApplyScissorRect(int x, int y, int w, int h, bool originTopLeft) { +void +sokolGfxBackend::ApplyScissorRect(int x, int y, int w, int h, bool originTopLeft) { o_assert_dbg(this->isValid); - this->renderer.applyScissorRect(x, y, w, h, originTopLeft); + sg_apply_scissor_rect(x, y, w, h, originTopLeft); } //------------------------------------------------------------------------------ @@ -194,33 +240,37 @@ void sokolGfxBackend::ApplyDrawState(const DrawState& drawState) { } //------------------------------------------------------------------------------ -void sokolGfxBackend::ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes) { +void +sokolGfxBackend::ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, uint32_t layoutHash, const void* data, int numBytes) { o_assert_dbg(this->isValid); // FIXME } //------------------------------------------------------------------------------ -void sokolGfxBackend::Draw(int baseElement, int numElements, int numInstances) { +void +sokolGfxBackend::Draw(int baseElement, int numElements, int numInstances) { o_assert_dbg(this->isValid); - // FIXME + sg_draw(baseElement, numElements, numInstances); } //------------------------------------------------------------------------------ -void sokolGfxBackend::CommitFrame() { +void +sokolGfxBackend::CommitFrame() { o_assert_dbg(this->isValid); - this->renderer.commitFrame(); + sg_commit(); this->displayManager.Present(); - this->resourceContainer.GarbageCollect(); } //------------------------------------------------------------------------------ -void sokolGfxBackend::ResetStateCache() { +void +sokolGfxBackend::ResetStateCache() { o_assert_dbg(this->isValid); - this->renderer.resetStateCache(); + sg_reset_state_cache(); } //------------------------------------------------------------------------------ -void sokolGfxBackend::ProcessSystemEvents() { +void +sokolGfxBackend::ProcessSystemEvents() { o_assert_dbg(this->isValid); this->displayManager.ProcessSystemEvents(); } diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 255205f2a..9ccc659f2 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -7,10 +7,10 @@ */ #include "Gfx/GfxTypes.h" #include "Gfx/private/displayMgr.h" -#include "Gfx/private/gfxResourceContainer.h" -#include "Gfx/private/renderer.h" #include "Gfx/private/gfxPointers.h" #include "Resource/ResourceLabel.h" +#include "Resource/ResourceRegistry.h" +#include "Resource/ResourceLabelStack.h" #include "sokol_gfx.h" namespace Oryol { @@ -44,16 +44,39 @@ class sokolGfxBackend { /// pop resource label from label stack ResourceLabel PopResourceLabel(); - /// create a buffer resource - Id CreateBuffer(const BufferSetup& setup); - /// create an texture resource - Id CreateTexture(const TextureSetup& setup); - /// create a shader resource + /// create (alloc+init) a buffer resource + Id CreateBuffer(const BufferSetup& setup, const void* data, int size); + /// create (alloc+init) an texture resource + Id CreateTexture(const TextureSetup& setup, const void* data, int size); + /// create (alloc+init) a shader resource Id CreateShader(const ShaderSetup& setup); - /// create a pipeline resource + /// create (alloc+init) a pipeline resource Id CreatePipeline(const PipelineSetup& setup); - /// create a pass resource + /// create (alloc+init) a pass resource Id CreatePass(const PassSetup& setup); + + /// allocate a new buffer id + Id AllocBuffer(const Locator& loc); + /// allocate a new texture id + Id AllocTexture(const Locator& loc); + /// allocate a new shader id + Id AllocShader(const Locator& loc); + /// allocate a new pipeline id + Id AllocPipeline(const Locator& loc); + /// allocate a new pass id + Id AllocPass(const Locator& loc); + + /// initialize a buffer + void InitBuffer(Id id, const BufferSetup& setup); + /// initialize a texture + void InitTexture(Id id, const TextureSetup& setup); + /// initialize a shader + void InitShader(Id id, const ShaderSetup& setup); + /// initialize a pipeline + void InitPipeline(Id id, const PipelineSetup& setup); + /// initialize a pass + void InitPass(Id id, const PassSetup& setup); + /// lookup a resource Id by locator Id LookupResource(const Locator& loc); /// destroy one or multiple resource(s) by matching label @@ -62,7 +85,7 @@ class sokolGfxBackend { /// update dynamic buffer data void UpdateBuffer(const Id& id, const void* data, int numBytes); /// update dynamic texture data - void UpdateTexture(const Id& id, const ImageDataAttrs& attrs, const void* data, int numBytes); + void UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs); /// begin rendering pass void BeginPass(Id passId, const PassAction* action); @@ -76,7 +99,7 @@ class sokolGfxBackend { /// apply a draw state void ApplyDrawState(const DrawState& drawState); /// apply a uniform block - void ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes); + void ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, uint32_t layoutHash, const void* data, int numBytes); /// issue a draw call void Draw(int baseElement, int numElements, int numInstances); @@ -92,8 +115,8 @@ class sokolGfxBackend { bool isValid = false; displayMgr displayManager; - gfxResourceContainer resourceContainer; - class renderer renderer; + ResourceRegistry registry; + ResourceLabelStack labelStack; }; } // namespace _priv From bf3acceb51ad3b6e7c0a6f31871038d8d0d8e608 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 9 Jan 2018 20:08:08 +0100 Subject: [PATCH 09/91] more sokol_gfx integration --- code/Modules/Assets/Gfx/MeshBuilder.h | 20 +- code/Modules/Gfx/CMakeLists.txt | 2 - code/Modules/Gfx/Gfx.cc | 8 - code/Modules/Gfx/Gfx.h | 3 - code/Modules/Gfx/GfxConfig.h | 10 +- code/Modules/Gfx/GfxTypes.cc | 231 +++----------------- code/Modules/Gfx/GfxTypes.h | 228 +++++++------------ code/Modules/Gfx/MeshLoaderBase.cc | 28 --- code/Modules/Gfx/MeshLoaderBase.h | 32 --- code/Modules/Gfx/TextureLoaderBase.cc | 29 --- code/Modules/Gfx/TextureLoaderBase.h | 33 --- code/Modules/Gfx/private/sokolGfxBackend.cc | 164 +++++++++++++- code/Modules/Gfx/private/sokolGfxBackend.h | 4 +- code/Samples/Triangle/Triangle.cc | 21 +- fips-generators/Shader.py | 49 +---- tools/osx/oryol-shdc | Bin 682824 -> 715324 bytes 16 files changed, 288 insertions(+), 574 deletions(-) delete mode 100644 code/Modules/Gfx/MeshLoaderBase.cc delete mode 100644 code/Modules/Gfx/MeshLoaderBase.h delete mode 100644 code/Modules/Gfx/TextureLoaderBase.cc delete mode 100644 code/Modules/Gfx/TextureLoaderBase.h diff --git a/code/Modules/Assets/Gfx/MeshBuilder.h b/code/Modules/Assets/Gfx/MeshBuilder.h index ee33a06d3..4d6c52c6b 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.h +++ b/code/Modules/Assets/Gfx/MeshBuilder.h @@ -63,13 +63,13 @@ class MeshBuilder { /// begin writing vertex and index data MeshBuilder& Begin(); /// write 1D component vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x); + MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x); /// write 2D vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float y); + MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x, float y); /// write 3D vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float y, float z); + MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z); /// write 4D vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float y, float z, float w); + MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z, float w); /// write 16-bit vertex-index at index-buffer-index MeshBuilder& Index(uint32_t index, uint16_t vertexIndex); /// write 32-bit vertex-index at index-buffer-index @@ -141,9 +141,8 @@ MeshBuilder::vertexByteOffset(uint32_t vertexIndex, int compIndex) const { //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x) { +MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x) { o_assert_dbg(this->inBegin); - const int compIndex = this->Layout.ComponentIndexByVertexAttr(attr); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x); return *this; @@ -151,9 +150,8 @@ MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x) { //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float y) { +MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x, float y) { o_assert_dbg(this->inBegin); - const int compIndex = this->Layout.ComponentIndexByVertexAttr(attr); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x, y); return *this; @@ -161,9 +159,8 @@ MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float y, float z) { +MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z) { o_assert_dbg(this->inBegin); - const int compIndex = this->Layout.ComponentIndexByVertexAttr(attr); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x, y, z); return *this; @@ -171,9 +168,8 @@ MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, VertexAttr::Code attr, float x, float y, float z, float w) { +MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z, float w) { o_assert_dbg(this->inBegin); - const int compIndex = this->Layout.ComponentIndexByVertexAttr(attr); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x, y, z, w); return *this; diff --git a/code/Modules/Gfx/CMakeLists.txt b/code/Modules/Gfx/CMakeLists.txt index b69289296..b9ec19758 100644 --- a/code/Modules/Gfx/CMakeLists.txt +++ b/code/Modules/Gfx/CMakeLists.txt @@ -9,8 +9,6 @@ fips_begin_module(Gfx) Gfx.cc Gfx.h GfxTypes.cc GfxTypes.h GfxConfig.h - MeshLoaderBase.cc MeshLoaderBase.h - TextureLoaderBase.cc TextureLoaderBase.h ) fips_dir(private) fips_files( diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 20d3b408c..9641d8167 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -185,14 +185,6 @@ Gfx::PopResourceLabel() { return state->backend.PopResourceLabel(); } -//------------------------------------------------------------------------------ -Id -Gfx::LoadResource(const Ptr& loader) { - o_assert_dbg(IsValid()); - // FIXME - return Id::InvalidId(); -} - //------------------------------------------------------------------------------ Id Gfx::LookupResource(const Locator& locator) { diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index d45237eac..6cc58bd63 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -11,7 +11,6 @@ #include "Core/RunLoop.h" #include "Gfx/GfxTypes.h" #include "Resource/ResourceLabel.h" -#include "Resource/ResourceLoader.h" #include "Resource/SetupAndData.h" #include "Resource/ResourceInfo.h" #include "Resource/ResourcePoolInfo.h" @@ -65,8 +64,6 @@ class Gfx { template static Id CreateResource(const SETUP& setup, const Buffer& data); /// create a resource object with raw pointer to associated data template static Id CreateResource(const SETUP& setup, const void* data, int size); - /// asynchronously load resource object - static Id LoadResource(const Ptr& loader); /// lookup a resource Id by Locator static Id LookupResource(const Locator& locator); /// destroy one or several resources by matching label diff --git a/code/Modules/Gfx/GfxConfig.h b/code/Modules/Gfx/GfxConfig.h index 20f825799..fb6add73e 100644 --- a/code/Modules/Gfx/GfxConfig.h +++ b/code/Modules/Gfx/GfxConfig.h @@ -18,16 +18,14 @@ class GfxConfig { static const int DefaultMaxDrawCallsPerFrame = (1<<16); /// default maximum number of Gfx::ApplyDrawState per frame (only relevant on some platforms) static const int DefaultMaxApplyDrawStatesPerFrame = 4096; - /// max number of input meshes - static const int MaxNumInputMeshes = 4; - /// maximum number of primitive groups for one mesh - static const int MaxNumPrimGroups = 8; - /// max number of uniform blocks per stage - static const int MaxNumUniformBlocksPerStage = 4; + /// max number of input vertex buffers + static const int MaxNumVertexBuffers = 4; /// maximum number of textures on vertex shader stage static const int MaxNumVertexTextures = 4; /// maximum number of textures on fragment shader stage static const int MaxNumFragmentTextures = 12; + /// max number of uniform blocks per stage + static const int MaxNumUniformBlocksPerStage = 4; /// max number of textures on any stage static const int MaxNumShaderTextures = MaxNumVertexTextures>MaxNumFragmentTextures?MaxNumVertexTextures:MaxNumFragmentTextures; /// max number of texture faces diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 1824491f3..972cf5bf5 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -330,54 +330,6 @@ const char* PrimitiveType::ToString(PrimitiveType::Code c) { } } -//------------------------------------------------------------------------------ -const char* VertexAttr::ToString(Code c) { - switch (c) { - case Position: return "position"; - case Normal: return "normal"; - case TexCoord0: return "texcoord0"; - case TexCoord1: return "texcoord1"; - case TexCoord2: return "texcoord2"; - case TexCoord3: return "texcoord3"; - case Tangent: return "tangent"; - case Binormal: return "binormal"; - case Weights: return "weights"; - case Indices: return "indices"; - case Color0: return "color0"; - case Color1: return "color1"; - case Instance0: return "instance0"; - case Instance1: return "instance1"; - case Instance2: return "instance2"; - case Instance3: return "instance3"; - default: - o_error("VertexAttr::ToString(): invalid value!\n"); - return nullptr; - } -} - -//------------------------------------------------------------------------------ -VertexAttr::Code VertexAttr::FromString(const char* str) { - if (str) { - if (0 == std::strcmp("position", str)) return Position; - else if (0 == std::strcmp("normal", str)) return Normal; - else if (0 == std::strcmp("texcoord0", str)) return TexCoord0; - else if (0 == std::strcmp("texcoord1", str)) return TexCoord1; - else if (0 == std::strcmp("texcoord2", str)) return TexCoord2; - else if (0 == std::strcmp("texcoord3", str)) return TexCoord3; - else if (0 == std::strcmp("tangent", str)) return Tangent; - else if (0 == std::strcmp("binormal", str)) return Binormal; - else if (0 == std::strcmp("weights", str)) return Weights; - else if (0 == std::strcmp("indices", str)) return Indices; - else if (0 == std::strcmp("color0", str)) return Color0; - else if (0 == std::strcmp("color1", str)) return Color1; - else if (0 == std::strcmp("instance0", str)) return Instance0; - else if (0 == std::strcmp("instance1", str)) return Instance1; - else if (0 == std::strcmp("instance2", str)) return Instance2; - else if (0 == std::strcmp("instance3", str)) return Instance3; - } - return InvalidVertexAttr; -} - //------------------------------------------------------------------------------ int VertexFormat::ByteSize(Code c) { switch (c) { @@ -591,22 +543,6 @@ PassAction& PassAction::LoadDepthStencil() { return *this; } -//------------------------------------------------------------------------------ -bool VertexLayout::Component::IsValid() const { - return (VertexAttr::InvalidVertexAttr != this->Attr); -} - -//------------------------------------------------------------------------------ -void VertexLayout::Component::Clear() { - this->Attr = VertexAttr::InvalidVertexAttr; - this->Format = VertexFormat::InvalidVertexFormat; -} - -//------------------------------------------------------------------------------ -int VertexLayout::Component::ByteSize() const { - return VertexFormat::ByteSize(this->Format); -} - //------------------------------------------------------------------------------ VertexLayout::VertexLayout() { this->Clear(); @@ -626,8 +562,6 @@ VertexLayout& VertexLayout::Clear() { this->StepRate = 1; this->numComps = 0; this->byteSize = 0; - this->attrCompIndices.Fill(InvalidIndex); - this->byteOffsets.Fill(0); return *this; } @@ -639,19 +573,21 @@ bool VertexLayout::Empty() const { //------------------------------------------------------------------------------ VertexLayout& VertexLayout::Add(const Component& comp) { o_assert_dbg(this->numComps < GfxConfig::MaxNumVertexLayoutComponents); - o_assert_dbg(InvalidIndex == this->attrCompIndices[comp.Attr]); this->comps[this->numComps] = comp; - this->attrCompIndices[comp.Attr] = this->numComps; - this->byteOffsets[this->numComps] = this->byteSize; + this->comps[this->numComps].Offset = this->byteSize; this->byteSize += comp.ByteSize(); - o_assert_dbg(this->byteSize < 248); this->numComps++; return *this; } //------------------------------------------------------------------------------ -VertexLayout& VertexLayout::Add(VertexAttr::Code attr, VertexFormat::Code format) { - return this->Add(Component(attr, format)); +VertexLayout& VertexLayout::Add(VertexFormat::Code format) { + return this->Add(Component(format)); +} + +//------------------------------------------------------------------------------ +VertexLayout& VertexLayout::Add(const StringAtom& name, VertexFormat::Code format) { + return this->Add(Component(name, format)); } //------------------------------------------------------------------------------ @@ -680,23 +616,29 @@ const VertexLayout::Component& VertexLayout::ComponentAt(int index) const { } //------------------------------------------------------------------------------ -int VertexLayout::ComponentIndexByVertexAttr(VertexAttr::Code attr) const { - return this->attrCompIndices[attr]; +int VertexLayout::ComponentIndexByName(const StringAtom& name) const { + for (int i = 0; i < this->numComps; i++) { + if (this->comps[i].Name == name) { + return i; + } + } + return InvalidIndex; } //------------------------------------------------------------------------------ -int VertexLayout::ByteSize() const { - return this->byteSize; +bool VertexLayout::Contains(const StringAtom& name) const { + return InvalidIndex != this->ComponentIndexByName(name); } //------------------------------------------------------------------------------ -int VertexLayout::ComponentByteOffset(int componentIndex) const { - return this->byteOffsets[componentIndex]; +int VertexLayout::ByteSize() const { + return this->byteSize; } //------------------------------------------------------------------------------ -bool VertexLayout::Contains(VertexAttr::Code attr) const { - return InvalidIndex != this->ComponentIndexByVertexAttr(attr); +int VertexLayout::ComponentByteOffset(int componentIndex) const { + o_assert_dbg(componentIndex < this->numComps); + return this->comps[componentIndex].Offset; } //------------------------------------------------------------------------------ @@ -799,95 +741,21 @@ GfxSetup::GfxSetup() { } //------------------------------------------------------------------------------ -MeshSetup MeshSetup::FromFile(const class Locator& loc, Id placeholder) { - MeshSetup setup; - setup.VertexUsage = Usage::Immutable; - setup.IndexUsage = Usage::Immutable; - setup.Locator = loc; - setup.Placeholder = placeholder; - setup.setupFromFile = true; - return setup; -} - -//------------------------------------------------------------------------------ -MeshSetup MeshSetup::FromData(Usage::Code vertexUsage, Usage::Code indexUsage) { - MeshSetup setup; - setup.VertexUsage = vertexUsage; - setup.IndexUsage = indexUsage; - setup.setupFromData = true; - return setup; +BufferSetup::BufferSetup() { + this->NativeBuffers.Fill(0); } //------------------------------------------------------------------------------ -MeshSetup MeshSetup::FromData(const MeshSetup& blueprint) { - MeshSetup setup(blueprint); - setup.setupFromData = true; - return setup; -} - -//------------------------------------------------------------------------------ -MeshSetup MeshSetup::Empty(int numVertices, Usage::Code vertexUsage, IndexType::Code indexType, int numIndices, Usage::Code indexUsage) { - o_assert_dbg(numVertices > 0); - MeshSetup setup; - setup.setupEmpty = true; - setup.VertexUsage = vertexUsage; - setup.IndexUsage = indexUsage; - setup.NumVertices = numVertices; - setup.NumIndices = numIndices; - setup.IndicesType = indexType; - setup.VertexDataOffset = InvalidIndex; - setup.IndexDataOffset = InvalidIndex; - return setup; -} - -//------------------------------------------------------------------------------ -MeshSetup MeshSetup::FullScreenQuad(bool flipV) { - MeshSetup setup; - setup.setupFullScreenQuad = true; - setup.FullScreenQuadFlipV = flipV; - setup.Layout.Add(VertexAttr::Position, VertexFormat::Float3); - setup.Layout.Add(VertexAttr::TexCoord0, VertexFormat::Float2); +BufferSetup +BufferSetup::Make(int size, BufferType::Code type, Usage::Code usage) { + o_assert_dbg(size > 0); + BufferSetup setup; + setup.Size = size; + setup.Type = type; + setup.Usage = usage; return setup; } -//------------------------------------------------------------------------------ -bool MeshSetup::ShouldSetupFromFile() const { - return this->setupFromFile; -} - -//------------------------------------------------------------------------------ -bool MeshSetup::ShouldSetupFromData() const { - return this->setupFromData; -} - -//------------------------------------------------------------------------------ -bool MeshSetup::ShouldSetupEmpty() const { - return this->setupEmpty; -} - -//------------------------------------------------------------------------------ -bool MeshSetup::ShouldSetupFullScreenQuad() const { - return this->setupFullScreenQuad; -} - -//------------------------------------------------------------------------------ -void MeshSetup::AddPrimitiveGroup(const class PrimitiveGroup& primGroup) { - o_assert(this->setupEmpty || this->setupFromData); - o_assert(this->numPrimGroups < GfxConfig::MaxNumPrimGroups); - this->primGroups[this->numPrimGroups++] = primGroup; -} - -//------------------------------------------------------------------------------ -int MeshSetup::NumPrimitiveGroups() const { - return this->numPrimGroups; -} - -//------------------------------------------------------------------------------ -const class PrimitiveGroup& MeshSetup::PrimitiveGroup(int index) const { - o_assert_range(index, GfxConfig::MaxNumPrimGroups); - return this->primGroups[index]; -} - //------------------------------------------------------------------------------ PipelineSetup PipelineSetup::FromShader(const Id& shd) { o_assert_dbg(shd.IsValid()); @@ -897,7 +765,7 @@ PipelineSetup PipelineSetup::FromShader(const Id& shd) { } //------------------------------------------------------------------------------ -PipelineSetup PipelineSetup::FromLayoutAndShader(const VertexLayout& layout, const Id& shd) { +PipelineSetup PipelineSetup::FromShaderAndLayout(const Id& shd, const VertexLayout& layout) { o_assert_dbg(!layout.Empty() && shd.IsValid()); PipelineSetup setup; setup.Layouts[0] = layout; @@ -953,11 +821,6 @@ void ShaderSetup::SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* } } -//------------------------------------------------------------------------------ -void ShaderSetup::SetInputLayout(const VertexLayout& vsInputLayout) { - this->program.vsInputLayout = vsInputLayout; -} - //------------------------------------------------------------------------------ void ShaderSetup::AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t typeHash, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot) { o_assert_dbg(type.IsValid()); @@ -982,11 +845,6 @@ void ShaderSetup::AddTexture(const StringAtom& name, TextureType::Code type, Sha entry.bindSlot = bindSlot; } -//------------------------------------------------------------------------------ -const VertexLayout& ShaderSetup::InputLayout() const { - return this->program.vsInputLayout; -} - //------------------------------------------------------------------------------ const String& ShaderSetup::VertexShaderSource(ShaderLang::Code slang) const { return this->program.vsSources[slang]; @@ -1011,13 +869,11 @@ void ShaderSetup::FragmentShaderByteCode(ShaderLang::Code slang, const void*& ou //------------------------------------------------------------------------------ const StringAtom& ShaderSetup::VertexShaderFunc(ShaderLang::Code slang) const { - o_assert_dbg(ShaderLang::Metal == slang); return this->program.vsFuncs[slang]; } //------------------------------------------------------------------------------ const StringAtom& ShaderSetup::FragmentShaderFunc(ShaderLang::Code slang) const { - o_assert_dbg(ShaderLang::Metal == slang); return this->program.fsFuncs[slang]; } @@ -1103,24 +959,6 @@ int ShaderSetup::TexBindSlot(int index) const { return this->textures[index].bindSlot; } -//------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromFile(const class Locator& loc, Id placeholder) { - TextureSetup setup; - setup.setupFromFile = true; - setup.Locator = loc; - setup.Placeholder = placeholder; - return setup; -} - -//------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromFile(const class Locator& loc, const TextureSetup& blueprint, Id placeholder) { - TextureSetup setup(blueprint); - setup.setupFromFile = true; - setup.Locator = loc; - setup.Placeholder = placeholder; - return setup; -} - //------------------------------------------------------------------------------ TextureSetup TextureSetup::FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint) { o_assert_dbg((w > 0) && (h > 0)); @@ -1338,11 +1176,6 @@ TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, Textu return setup; } -//------------------------------------------------------------------------------ -bool TextureSetup::ShouldSetupFromFile() const { - return this->setupFromFile; -} - //------------------------------------------------------------------------------ bool TextureSetup::ShouldSetupFromPixelData() const { return this->setupFromPixelData; diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 3c8bada76..a18e830d1 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -13,6 +13,23 @@ #include namespace Oryol { + +//------------------------------------------------------------------------------ +/** + @class Oryol::BufferType + @ingroup Gfx + @brief whether a Buffer contains vertex- or index-data +*/ +class BufferType { +public: + enum Code { + VertexBuffer = 0, + IndexBuffer, + + NumBufferTypes, + InvalidBufferType = 0xFFFFFFFF + }; +}; //------------------------------------------------------------------------------ /** @@ -192,7 +209,7 @@ class GfxResourceType { /// type enum enum Code { Texture, ///< a texture - Mesh, ///< a mesh + Buffer, ///< a vertex- or index-buffer Shader, ///< a shader Pipeline, ///< a pipeline state object RenderPass, ///< a render-pass object @@ -306,49 +323,6 @@ class Usage { }; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::VertexAttr - @ingroup Gfx - @brief vertex attribute enum (position, texcoord, ...) - - The VertexAttr definitions don't have a hardwired meaning, they just - exist to make the binding of vertex components (living in vertex buffers) - to vertex attribute definition in vertex shaders easier to understand. - The maximum number of vertex attributes should not exceed 16 - (this is the GL_MAX_VERTEX_ATTRIBS value). -*/ -class VertexAttr { -public: - /// vertex attribute enum - enum Code : uint8_t { - Position = 0, ///< "position" - Normal, ///< "normal" - TexCoord0, ///< "texcoord0" - TexCoord1, ///< "texcoord1" - TexCoord2, ///< "texcoord2" - TexCoord3, ///< "texcoord3" - Tangent, ///< "tangent - Binormal, ///< "binormal" - Weights, ///< "weights" (skin weights) - Indices, ///< "indices" (skin indices) - Color0, ///< "color0" - Color1, ///< "color1" - Instance0, ///< "instance0" - Instance1, ///< "instance1" - Instance2, ///< "instance2" - Instance3, ///< "instance3" - - NumVertexAttrs, - InvalidVertexAttr, - }; - - /// convert to string - static const char* ToString(Code c); - /// convert from string - static Code FromString(const char* str); -}; - //------------------------------------------------------------------------------ /** @class Oryol::VertexFormat @@ -848,15 +822,18 @@ class PassAction { with the exception of shader uniforms: - 1 pipeline state object - - 1..4 mesh objects + - 1..4 vertex buffers + - 0..1 index buffer - 0..N textures for the vertex shader stage - 0..N textures for the fragment shader stage */ struct DrawState { /// the pipeline state object Id Pipeline; - /// input meshes - StaticArray Mesh; + /// vertex buffers + StaticArray VertexBuffers; + /// optional index buffer + Id IndexBuffer; /// vertex shader stage textures StaticArray VSTexture; /// fragment shader stage textures @@ -884,34 +861,43 @@ struct GfxFrameInfo { /** @class Oryol::VertexLayout @ingroup Gfx - @brief describes the data layout of a vertex in a vertex buffer + @brief describes the data layout of a vertex in a vertex buffer + + FIXME: support vertex components with gaps (manually defined offset and stride) */ class VertexLayout { public: /// a component in a vertex layout - #pragma pack(push,1) class Component { - public: + public: /// default constructor - Component() {}; - /// construct from vertex attr and format - Component(VertexAttr::Code attr, VertexFormat::Code fmt) : Attr(attr), Format(fmt) { } + Component() {}; + /// construct from format (no attr name) + Component(VertexFormat::Code fmt): Format(fmt) { }; + /// construct from vertex attr name and format + Component(const StringAtom& name, VertexFormat::Code fmt): Name(name), Format(fmt) { } /// return true if valid (attr and format set) - bool IsValid() const; + bool IsValid() const { + return this->Format != VertexFormat::InvalidVertexFormat; + } /// clear the component (unset attr and format) - void Clear(); + void Clear() { + *this = Component(); + } /// get byte size of component - int ByteSize() const; - - VertexAttr::Code Attr = VertexAttr::InvalidVertexAttr; - VertexFormat::Code Format = VertexFormat::InvalidVertexFormat; + int ByteSize() const { + return VertexFormat::ByteSize(this->Format); + } + + StringAtom Name; + VertexFormat::Code Format = VertexFormat::InvalidVertexFormat; + int Offset = 0; // offset will be written in VertexLayout::Add }; - #pragma pack(pop) /// the vertex step function, used for instancing, default is 'PerVertex' VertexStepFunction::Code StepFunction = VertexStepFunction::PerVertex; /// the vertex step rate, used for instancing - uint8_t StepRate = 1; + uint8_t StepRate = 1; /// default constructor VertexLayout(); @@ -922,9 +908,11 @@ class VertexLayout { /// return true if layout is empty bool Empty() const; /// add a component - VertexLayout& Add(const Component& comp); - /// add component by name and format - VertexLayout& Add(VertexAttr::Code attr, VertexFormat::Code format); + VertexLayout& Add(const Component& comp); + /// add an unnamed component + VertexLayout& Add(VertexFormat::Code format); + /// add a named component + VertexLayout& Add(const StringAtom& name, VertexFormat::Code format); /// add multiple components via initializer list VertexLayout& Add(std::initializer_list l); /// enable layout for instancing, set StepFunction to PerInstance and StepRate to 1 @@ -932,21 +920,19 @@ class VertexLayout { /// get number of components int NumComponents() const; /// get component at index - const Component& ComponentAt(int index) const; - /// get component index by vertex attribute, return InvalidIndex if layout doesn't include attr - int ComponentIndexByVertexAttr(VertexAttr::Code attr) const; + const Component& ComponentAt(int index) const; + /// find component index by name, return InvalidIndex if not found + int ComponentIndexByName(const StringAtom& name) const; + /// test if the layout contains a specific vertex attribute by name + bool Contains(const StringAtom& name) const; /// get byte size of vertex (aka stride) int ByteSize() const; /// get byte offset of a component int ComponentByteOffset(int componentIndex) const; - /// test if the layout contains a specific vertex attribute - bool Contains(VertexAttr::Code attr) const; private: StaticArray comps; - StaticArray byteOffsets; - StaticArray attrCompIndices; // maps vertex attributes to component indices - int8_t numComps = 0; - uint8_t byteSize = 0; + int numComps = 0; + int byteSize = 0; }; //------------------------------------------------------------------------------ @@ -1174,76 +1160,24 @@ class GfxSetup { //------------------------------------------------------------------------------ /** - @class Oryol::MeshSetup + @class Oryol::BufferSetup @ingroup Gfx - @brief setup attributes for meshes + @brief setup attributes for vertex- and index-buffers */ class BufferSetup { public: - // FIXME! -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::MeshSetup - @ingroup Gfx - @brief setup attributes for meshes -*/ -class MeshSetup { -public: - /// asynchronously load from file - static MeshSetup FromFile(const class Locator& loc, Id placeholder=Id::InvalidId()); - /// setup from from data in memory - static MeshSetup FromData(Usage::Code vertexUsage=Usage::Immutable, Usage::Code indexUsage=Usage::Immutable); - /// setup from data in memory with blueprint - static MeshSetup FromData(const MeshSetup& blueprint); - /// setup empty mesh (mostly for dynamic streaming) - static MeshSetup Empty(int numVertices, Usage::Code vertexUsage, IndexType::Code indexType=IndexType::None, int numIndices=0, Usage::Code indexUsage=Usage::InvalidUsage); - /// setup a fullscreen quad mesh - static MeshSetup FullScreenQuad(bool flipV=false); - /// check if should load asynchronously - bool ShouldSetupFromFile() const; - /// check if should setup from data in memory - bool ShouldSetupFromData() const; - /// check if should setup empty mesh - bool ShouldSetupEmpty() const; - /// check if should setup fullscreen quad mesh - bool ShouldSetupFullScreenQuad() const; - /// add a primitive group (required for CreateEmpty) - void AddPrimitiveGroup(const PrimitiveGroup& primGroup); - /// get number of primitive groups - int NumPrimitiveGroups() const; - /// get primitive group at index - const class PrimitiveGroup& PrimitiveGroup(int index) const; - /// vertex-data usage - Usage::Code VertexUsage = Usage::InvalidUsage; - /// index-data usage - Usage::Code IndexUsage = Usage::InvalidUsage; - /// vertex layout - VertexLayout Layout; - /// number of vertices - int NumVertices = 0; - /// number of indices - int NumIndices = 0; - /// index type - IndexType::Code IndicesType = IndexType::None; - /// flip v coordinates for fullscreen quad (so that origin is top-left) - bool FullScreenQuadFlipV = false; - /// resource locator - class Locator Locator = Locator::NonShared(); - /// placeholder Id - Id Placeholder; - /// vertex data byte offset in data (default: 0, set to InvalidIndex if no vertex data provided) - int VertexDataOffset = 0; - /// index data byte offset in data (default: InvalidIndex, no index data provided) - int IndexDataOffset = 0; -private: - int numPrimGroups = 0; - class PrimitiveGroup primGroups[GfxConfig::MaxNumPrimGroups]; - bool setupFromFile = false; - bool setupFromData = false; - bool setupEmpty = false; - bool setupFullScreenQuad = false; + /// create initialized BufferSetup object + static BufferSetup Make(int size, BufferType::Code type=BufferType::VertexBuffer, Usage::Code usage=Usage::Immutable); + /// the buffer type (vertex- or index-buffer) + BufferType::Code Type = BufferType::VertexBuffer; + /// the buffer usage + Usage::Code Usage = Usage::Immutable; + /// the buffer size in bytes + int Size = 0; + /// optional native 3D-API buffers + StaticArray NativeBuffers; + + BufferSetup(); }; //------------------------------------------------------------------------------ @@ -1257,7 +1191,7 @@ class PipelineSetup { /// construct from shader static PipelineSetup FromShader(const Id& shd); /// construct from vertex layout and shader - static PipelineSetup FromLayoutAndShader(const VertexLayout& layout, const Id& shd); + static PipelineSetup FromShaderAndLayout(const Id& shd, const VertexLayout& layout); /// resource locator class Locator Locator = Locator::NonShared(); /// blend state (GLES3.0 doesn't allow separate MRT blend state @@ -1269,7 +1203,7 @@ class PipelineSetup { /// rasterizer state class RasterizerState RasterizerState; /// input vertex layouts (one per mesh slot) - StaticArray Layouts; + StaticArray Layouts; /// primitive type PrimitiveType::Code PrimType = PrimitiveType::Triangles; /// shader @@ -1321,14 +1255,10 @@ class ShaderSetup { void SetProgramFromSources(ShaderLang::Code slang, const String& vsSource, const String& fsSource); /// set shader program from precompiled shader byte code void SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* vsByteCode, uint32_t vsNumBytes, const uint8_t* fsByteCode, uint32_t fsNumBytes, const char* vsFunc=nullptr, const char* fsFunc=nullptr); - /// set vertex shader input layout - void SetInputLayout(const VertexLayout& vsInputLayout); /// add a uniform block void AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t typeHash, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot); /// add a texture declaration void AddTexture(const StringAtom& name, TextureType::Code type, ShaderStage::Code bindStage, int32_t bindSlot); - /// get the vertex shader input layout - const VertexLayout& InputLayout() const; /// get program vertex shader source (only valid if setup from sources) const String& VertexShaderSource(ShaderLang::Code slang) const; /// get program fragment shader source (only valid if setup from sources) @@ -1381,7 +1311,6 @@ class ShaderSetup { }; StaticArray vsByteCode; StaticArray fsByteCode; - VertexLayout vsInputLayout; }; struct uniformBlockEntry { StringAtom type; @@ -1414,10 +1343,6 @@ class ShaderSetup { */ class TextureSetup { public: - /// asynchronously load from file - static TextureSetup FromFile(const Locator& loc, Id placeholder=Id::InvalidId()); - /// asynchronously load from file - static TextureSetup FromFile(const Locator& loc, const TextureSetup& blueprint=TextureSetup(), Id placeholder=Id::InvalidId()); /// setup 2D texture from raw pixel data static TextureSetup FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint=TextureSetup()); /// setup cube texture from raw pixel data @@ -1444,8 +1369,6 @@ class TextureSetup { static TextureSetup RenderTargetArray(int w, int h, int layers, PixelFormat::Code colorFmt=PixelFormat::RGBA8, PixelFormat::Code depthFmt=PixelFormat::None); /// setup texture from existing native texture(s) (needs GfxFeature::NativeTexture) static TextureSetup FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t h0, intptr_t h1=0); - /// return true if texture should be setup from a file - bool ShouldSetupFromFile() const; /// return true if texture should be setup from raw pixel data bool ShouldSetupFromPixelData() const; /// return true if texture should be setup from native texture handles @@ -1488,7 +1411,6 @@ class TextureSetup { /// default constructor TextureSetup(); private: - bool setupFromFile = false; bool setupFromPixelData = false; bool setupFromNativeHandle = false; bool setupEmpty = false; diff --git a/code/Modules/Gfx/MeshLoaderBase.cc b/code/Modules/Gfx/MeshLoaderBase.cc deleted file mode 100644 index da910b3cd..000000000 --- a/code/Modules/Gfx/MeshLoaderBase.cc +++ /dev/null @@ -1,28 +0,0 @@ -//------------------------------------------------------------------------------ -// MeshLoaderBase.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "MeshLoaderBase.h" - -namespace Oryol { - -//------------------------------------------------------------------------------ -MeshLoaderBase::MeshLoaderBase(const MeshSetup& setup_) : -setup(setup_) { - // empty -} - -//------------------------------------------------------------------------------ -MeshLoaderBase::MeshLoaderBase(const MeshSetup& setup_, LoadedFunc loadedFunc) : -setup(setup_), -onLoaded(loadedFunc) { - // empty -} - -//------------------------------------------------------------------------------ -class Locator -MeshLoaderBase::Locator() const { - return this->setup.Locator; -} - -} // namespace Oryol \ No newline at end of file diff --git a/code/Modules/Gfx/MeshLoaderBase.h b/code/Modules/Gfx/MeshLoaderBase.h deleted file mode 100644 index 60e93971e..000000000 --- a/code/Modules/Gfx/MeshLoaderBase.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::MeshLoaderBase - @ingroup Gfx - @brief base class for Gfx mesh loaders -*/ -#include "Resource/ResourceLoader.h" -#include "Gfx/GfxTypes.h" -#include - -namespace Oryol { - -class MeshLoaderBase : public ResourceLoader { - OryolClassDecl(MeshLoaderBase); -public: - /// optional callback when loading has succeeded - typedef std::function LoadedFunc; - - /// constructor - MeshLoaderBase(const MeshSetup& setup); - /// constructor with success callback - MeshLoaderBase(const MeshSetup& setup, LoadedFunc onLoaded); - /// return resource locator - virtual class Locator Locator() const override; - -protected: - MeshSetup setup; - std::function onLoaded; -}; - -} // namespace Oryol \ No newline at end of file diff --git a/code/Modules/Gfx/TextureLoaderBase.cc b/code/Modules/Gfx/TextureLoaderBase.cc deleted file mode 100644 index 6bb5f0aff..000000000 --- a/code/Modules/Gfx/TextureLoaderBase.cc +++ /dev/null @@ -1,29 +0,0 @@ -//------------------------------------------------------------------------------ -// TextureLoaderBase.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "TextureLoaderBase.h" - -namespace Oryol { - -//------------------------------------------------------------------------------ -TextureLoaderBase::TextureLoaderBase(const TextureSetup& setup_) : -setup(setup_) { - // empty -} - -//------------------------------------------------------------------------------ -TextureLoaderBase::TextureLoaderBase(const TextureSetup& setup_, LoadedFunc loadedFunc) : -setup(setup_), -onLoaded(loadedFunc) -{ - // empty -} - -//------------------------------------------------------------------------------ -class Locator -TextureLoaderBase::Locator() const { - return this->setup.Locator; -} - -} // namespace Oryol \ No newline at end of file diff --git a/code/Modules/Gfx/TextureLoaderBase.h b/code/Modules/Gfx/TextureLoaderBase.h deleted file mode 100644 index bd15d1950..000000000 --- a/code/Modules/Gfx/TextureLoaderBase.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureLoaderBase - @ingroup Gfx - @brief base class for Gfx texture loaders -*/ -#include "Resource/ResourceLoader.h" -#include "Gfx/GfxTypes.h" -#include - -namespace Oryol { - -class TextureLoaderBase : public ResourceLoader { - OryolClassDecl(TextureLoaderBase); -public: - /// optional callback when loading has succeeded - typedef std::function LoadedFunc; - - /// constructor - TextureLoaderBase(const TextureSetup& setup); - /// constructor - TextureLoaderBase(const TextureSetup& setup, LoadedFunc onLoaded); - /// return resource locator - virtual class Locator Locator() const override; - -protected: - TextureSetup setup; - std::function onLoaded; -}; - -} // namespace Oryol - diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 75f0dbab9..2e2f59f52 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -57,6 +57,64 @@ namespace Oryol { namespace _priv { +//------------------------------------------------------------------------------ +Id makeId(GfxResourceType::Code type, uint32_t sgId) { + // convert a Sokol resource id into a Oryol Id + Id::SlotIndexT slotIndex = sgId & 0xFFFF; + Id::UniqueStampT unique = (sgId >> 16) & 0xFFFF; + Id id(unique, slotIndex, type); + return id; +} + +//------------------------------------------------------------------------------ +static void convertPassAction(const PassAction& src, sg_pass_action& dst) { + o_assert_dbg(GfxConfig::MaxNumColorAttachments <= SG_MAX_COLOR_ATTACHMENTS); + for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { + for (int c = 0; c < 4; c++) { + dst.colors[i].val[c] = src.Color[i][c]; + } + if (src.Flags & (PassAction::ClearC0<isValid); @@ -67,6 +125,28 @@ void sokolGfxBackend::Setup(const GfxSetup& setup, const gfxPointers& ptrs) { o_assert(!this->isValid); this->displayManager.SetupDisplay(setup, ptrs); + + // setup sokol-gfx + sg_desc sgDesc = { }; + sgDesc.buffer_pool_size = setup.ResourcePoolSize[GfxResourceType::Buffer]; + sgDesc.image_pool_size = setup.ResourcePoolSize[GfxResourceType::Texture]; + sgDesc.shader_pool_size = setup.ResourcePoolSize[GfxResourceType::Shader]; + sgDesc.pipeline_pool_size = setup.ResourcePoolSize[GfxResourceType::Pipeline]; + sgDesc.pass_pool_size = setup.ResourcePoolSize[GfxResourceType::RenderPass]; + #if ORYOL_EMSCRIPTEN + sgDesc.gl_force_gles2 = this->displayManager.force_gles2; + #elif ORYOL_METAL + sgDesc.mtl_device = XXX; // FIXME; + sgDesc.mtl_renderpass_descriptor_cb = XXX; // FIXME + sgDesc.mtl_drawable_cb = XXX; // FIXME + #elif ORYOL_D3D11 + sgDesc.d3d11_device = XXX; // FIXME + sgDesc.d3d11_device_context = XXX; // FIXME + sgDesc.d3d11_render_target_view_cb = XXX; // FIXME + sgDesc.d3d11_depth_stencil_view_cb = XXX; // FIXME + #endif + sg_setup(&sgDesc); + this->registry.Setup(setup.ResourceRegistryCapacity); this->labelStack.Setup(setup.ResourceLabelStackCapacity); this->isValid = true; @@ -78,6 +158,7 @@ sokolGfxBackend::Discard() { o_assert(this->isValid); this->registry.Discard(); this->labelStack.Discard(); + sg_shutdown(); this->displayManager.DiscardDisplay(); this->isValid = false; } @@ -139,10 +220,27 @@ sokolGfxBackend::PopResourceLabel() { //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int size) { +sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int dataSize) { o_assert_dbg(this->isValid); - // FIXME - return Id::InvalidId(); + o_assert_dbg(setup.Size <= dataSize); + sg_buffer_desc sgDesc = { }; + sgDesc.size = setup.Size; + sgDesc.type = convertBufferType(setup.Type); + sgDesc.usage = convertUsage(setup.Usage); + sgDesc.content = data; + o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); + #if ORYOL_OPENGL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + sgDesc.gl_buffers[i] = (uint32_t) setup.NativeBuffers[i]; + } + #elif ORYOL_METAL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + sgDesc.mtl_buffers[i] = (const void*) setup.NativeBuffers[i]; + } + #elif ORYOL_D3D11 + sgDesc.d3d11_buffer = (const void*) setup.NativeBuffers[0] + #endif + return makeId(GfxResourceType::Buffer, sg_make_buffer(&sgDesc).id); } //------------------------------------------------------------------------------ @@ -157,8 +255,50 @@ sokolGfxBackend::CreateTexture(const TextureSetup& setup, const void* data, int Id sokolGfxBackend::CreateShader(const ShaderSetup& setup) { o_assert_dbg(this->isValid); - // FIXME - return Id::InvalidId(); + sg_shader_desc sgDesc = { }; + + // select the shader language dialect + ShaderLang::Code slang = ShaderLang::InvalidShaderLang; + #if ORYOL_OPENGL_CORE_PROFILE + slang = ShaderLang::GLSL330; + #elif ORYOL_OPENGL_GLES2 + slang = ShaderLang::GLSL100; + #elif ORYOL_OPENGL_GLES3 + if (this->displayManager.force_gles2) { + slang = ShaderLang::GLSL100; + } + else { + slang = ShaderLang::GLSLES3; + } + #elif ORYOL_METAL + slang = ShaderLang::Metal; + #elif ORYOL_D3D11 + slang = ShaderLang::HLSL5; + #else + #error("Unknown Platform") + #endif + + // set source- or byte-code, and optional entry function + #if ORYOL_OPENGL + sgDesc.vs.source = setup.VertexShaderSource(slang).AsCStr(); + sgDesc.fs.source = setup.FragmentShaderSource(slang).AsCStr(); + #elif ORYOL_METAL || ORYOL_D3D11 + const void* byteCodePtr; uint32_t byteCodeSize; + setup.VertexShaderByteCode(slang, byteCodePtr, byteCodeSize); + sgDesc.vs.byte_code = byteCodePtr; + sgDesc.vs.byte_code_size = byteCodeSize; + setup.FragmentShaderByteCode(slang, byteCodePtr, byteCodeSize); + sgDesc.fs.byte_code = byteCodePtr; + sgDesc.fs.byte_code_size = byteCodeSize; + #endif + if (setup.VertexShaderFunc(slang).IsValid()) { + sgDesc.vs.entry = setup.VertexShaderFunc(slang).AsCStr(); + } + if (setup.FragmentShaderFunc(slang).IsValid()) { + sgDesc.fs.entry = setup.FragmentShaderFunc(slang).AsCStr(); + } + // FIXME: uniform blocks and textures + return makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); } //------------------------------------------------------------------------------ @@ -209,14 +349,24 @@ sokolGfxBackend::UpdateTexture(const Id& id, const void* data, const ImageDataAt void sokolGfxBackend::BeginPass(Id passId, const PassAction* action) { o_assert_dbg(this->isValid); - // FIXME + o_assert_dbg(action); + if (passId.IsValid()) { + // offscreen framebuffer + } + else { + // default framebuffer + sg_pass_action sgAction = { }; + convertPassAction(*action, sgAction); + const DisplayAttrs& attrs = this->displayManager.GetDisplayAttrs(); + sg_begin_default_pass(&sgAction, attrs.FramebufferWidth, attrs.FramebufferHeight); + } } //------------------------------------------------------------------------------ void sokolGfxBackend::EndPass() { o_assert_dbg(this->isValid); - // FIXME + sg_end_pass(); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 9ccc659f2..89722c620 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -45,9 +45,9 @@ class sokolGfxBackend { ResourceLabel PopResourceLabel(); /// create (alloc+init) a buffer resource - Id CreateBuffer(const BufferSetup& setup, const void* data, int size); + Id CreateBuffer(const BufferSetup& setup, const void* data, int dataSize); /// create (alloc+init) an texture resource - Id CreateTexture(const TextureSetup& setup, const void* data, int size); + Id CreateTexture(const TextureSetup& setup, const void* data, int dataSize); /// create (alloc+init) a shader resource Id CreateShader(const ShaderSetup& setup); /// create (alloc+init) a pipeline resource diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index a7b7562c8..9dbf992da 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -30,20 +30,17 @@ TriangleApp::OnInit() { 0.0f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f, 0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f , 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, - }; - auto meshSetup = MeshSetup::FromData(); - meshSetup.NumVertices = 3; - meshSetup.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::Float4 } - }; - meshSetup.AddPrimitiveGroup({0, 3}); - this->drawState.Mesh[0] = Gfx::CreateResource(meshSetup, vertices, sizeof(vertices)); + }; + auto bufSetup = BufferSetup::Make(sizeof(vertices)); + this->drawState.VertexBuffers[0] = Gfx::CreateResource(bufSetup, vertices, sizeof(vertices)); // create shader and pipeline-state-object Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(meshSetup.Layout, shd); - this->drawState.Pipeline = Gfx::CreateResource(ps); + auto pipSetup = PipelineSetup::FromShaderAndLayout(shd, { + { "position", VertexFormat::Float3 }, + { "color0", VertexFormat::Float4 } + }); + this->drawState.Pipeline = Gfx::CreateResource(pipSetup); return App::OnInit(); } @@ -54,7 +51,7 @@ TriangleApp::OnRunning() { Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawState); - Gfx::Draw(); + Gfx::Draw(0, 3, 1); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 7824137f8..309471973 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,7 +2,7 @@ Code generator for shader libraries. ''' -Version = 49 +Version = 51 import os, platform, json import genutil as util @@ -40,11 +40,6 @@ def isHLSL(sl): def isMetal(sl): return sl == 'metal' -validVsInNames = [ - 'position', 'normal', 'texcoord0', 'texcoord1', 'texcoord2', 'texcoord3', - 'tangent', 'binormal', 'weights', 'indices', 'color0', 'color1', - 'instance0', 'instance1', 'instance2', 'instance3' -] validInOutTypes = [ 'float', 'vec2', 'vec3', 'vec4' ] validUniformTypes = [ 'mat4', 'mat2', 'vec4', 'vec3', 'vec2', 'float' ] @@ -72,32 +67,6 @@ def isMetal(sl): 'mat4': 64, } -attrOryolType = { - 'float': 'Oryol::VertexFormat::Float', - 'vec2': 'Oryol::VertexFormat::Float2', - 'vec3': 'Oryol::VertexFormat::Float3', - 'vec4': 'Oryol::VertexFormat::Float4' -} - -attrOryolName = { - 'position': 'Oryol::VertexAttr::Position', - 'normal': 'Oryol::VertexAttr::Normal', - 'texcoord0': 'Oryol::VertexAttr::TexCoord0', - 'texcoord1': 'Oryol::VertexAttr::TexCoord1', - 'texcoord2': 'Oryol::VertexAttr::TexCoord2', - 'texcoord3': 'Oryol::VertexAttr::TexCoord3', - 'tangent': 'Oryol::VertexAttr::Tangent', - 'binormal': 'Oryol::VertexAttr::Binormal', - 'weights': 'Oryol::VertexAttr::Weights', - 'indices': 'Oryol::VertexAttr::Indices', - 'color0': 'Oryol::VertexAttr::Color0', - 'color1': 'Oryol::VertexAttr::Color1', - 'instance0': 'Oryol::VertexAttr::Instance0', - 'instance1': 'Oryol::VertexAttr::Instance1', - 'instance2': 'Oryol::VertexAttr::Instance2', - 'instance3': 'Oryol::VertexAttr::Instance3' -} - validTextureTypes = [ 'sampler2D', 'samplerCube', 'sampler3D', 'sampler2DArray' ] @@ -384,8 +353,6 @@ def validate(self, slangs) : util.setErrorLocation(vs.lines[0].path, vs.lines[0].lineNumber) vs_inputs = refl['inputs'] for vs_input in vs_inputs: - if vs_input['name'] not in validVsInNames: - util.fmtError("invalid vertex shader input name '{}', must be ({})".format(vs_input['name'], ','.join(validVsInNames))) if vs_input['type'] not in validInOutTypes: util.fmtError("invalid vertex shader input type '{}', must be ({})".format(vs_input['type'], ','.join(validInOutTypes))) for ub in refl['uniform_blocks']: @@ -597,18 +564,6 @@ def writeShaderSource(f, absPath, shdLib, shd, slVersion) : else : util.fmtError("Invalid shader language id") -#------------------------------------------------------------------------------- -def writeInputVertexLayout(f, vs, slang) : - # writes a C++ VertexLayout definition into the generated source - # code, this is used to match mesh vertex layouts with - # vertex shader input signatures (e.g. required in D3D11), - # return the C++ name of the vertex layout - layoutName = '{}_input'.format(vs.name) - f.write(' Oryol::VertexLayout {};\n'.format(layoutName)) - for inp in vs.slReflection[slang]['inputs'] : - f.write(' {}.Add({}, {});\n'.format(layoutName, attrOryolName[inp['name']], attrOryolType[inp['type']])) - return layoutName - #------------------------------------------------------------------------------- def writeProgramSource(f, shdLib, prog, slangs) : # write the Setup() function @@ -616,8 +571,6 @@ def writeProgramSource(f, shdLib, prog, slangs) : f.write(' Oryol::ShaderSetup setup("' + prog.name + '");\n') vs = shdLib.vertexShaders[prog.vs] fs = shdLib.fragmentShaders[prog.fs] - vsInputLayout = writeInputVertexLayout(f, vs, slangs[0]) - f.write(' setup.SetInputLayout({});\n'.format(vsInputLayout)) vsName = vs.name fsName = fs.name for slang in slangs: diff --git a/tools/osx/oryol-shdc b/tools/osx/oryol-shdc index b808cfb335c71ef4679a4963df5dc2b71060a98f..6f2552b691afa0e87648e16c377b402f4dcd6bd0 100755 GIT binary patch literal 715324 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 z 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 X+zobY8C<(`>B?2hT2{8;pAi2AB4v^| literal 682824 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 z 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%0A42}(T#c$#o**nl0{Xn4Dy#w|y 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 X%YsEM6HYm0?6^_&W9!)i5q$m^qbQ2R From 9077ff0ec89bba9bf2010a73c290ced80805b29d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 10 Jan 2018 19:50:12 +0100 Subject: [PATCH 10/91] sokol_gfx migration: Triangle sample working --- code/Modules/Gfx/Gfx.cc | 73 ++- code/Modules/Gfx/GfxTypes.cc | 84 +--- code/Modules/Gfx/GfxTypes.h | 532 +++++++------------- code/Modules/Gfx/private/sokolGfxBackend.cc | 332 +++++++++++- code/Modules/Gfx/private/sokolGfxBackend.h | 12 +- 5 files changed, 581 insertions(+), 452 deletions(-) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 9641d8167..b3370031e 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -95,8 +95,8 @@ Gfx::DisplayAttrs() { //------------------------------------------------------------------------------ const DisplayAttrs& Gfx::PassAttrs() { - o_assert_dbg(IsValid()); - // FIXME + o_assert_dbg(IsValid()); + // FIXME return DisplayAttrs(); //return state->backend.renderer.renderPassAttrs(); } @@ -134,8 +134,8 @@ Gfx::BeginPass(const Id& id, const PassAction& passAction) { o_assert_dbg(IsValid()); o_assert_dbg(!state->inPass); state->inPass = true; - state->gfxFrameInfo.NumPasses++; - state->backend.BeginPass(id, &passAction); + state->gfxFrameInfo.NumPasses++; + state->backend.BeginPass(id, &passAction); } //------------------------------------------------------------------------------ @@ -143,7 +143,7 @@ void Gfx::EndPass() { o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); - state->inPass = false; + state->inPass = false; state->backend.EndPass(); } @@ -153,7 +153,7 @@ Gfx::ApplyDrawState(const DrawState& drawState) { o_trace_scoped(Gfx_ApplyDrawState); o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); - state->gfxFrameInfo.NumApplyDrawState++; + state->gfxFrameInfo.NumApplyDrawState++; state->backend.ApplyDrawState(drawState); } @@ -195,8 +195,8 @@ Gfx::LookupResource(const Locator& locator) { //------------------------------------------------------------------------------ int Gfx::QueryFreeResourceSlots(GfxResourceType::Code resourceType) { - o_assert_dbg(IsValid()); - // FIXME + o_assert_dbg(IsValid()); + // FIXME return 0; //return state->backend.resourceContainer.QueryFreeSlots(resourceType); } @@ -204,8 +204,8 @@ Gfx::QueryFreeResourceSlots(GfxResourceType::Code resourceType) { //------------------------------------------------------------------------------ ResourceInfo Gfx::QueryResourceInfo(const Id& id) { - o_assert_dbg(IsValid()); - // FIXME + o_assert_dbg(IsValid()); + // FIXME return ResourceInfo(); //return state->backend.resourceContainer.QueryResourceInfo(id); } @@ -213,8 +213,8 @@ Gfx::QueryResourceInfo(const Id& id) { //------------------------------------------------------------------------------ ResourcePoolInfo Gfx::QueryResourcePoolInfo(GfxResourceType::Code resType) { - o_assert_dbg(IsValid()); - // FIXME + o_assert_dbg(IsValid()); + // FIXME return ResourcePoolInfo(); //return state->backend.resourceContainer.QueryPoolInfo(resType); } @@ -286,43 +286,68 @@ Gfx::Draw(int baseElement, int numElements, int numInstances) { o_trace_scoped(Gfx_Draw); o_assert_dbg(IsValid()); o_assert_dbg(state->inPass); - state->gfxFrameInfo.NumDraw++; - state->backend.Draw(baseElement, numElements, numInstances); + state->gfxFrameInfo.NumDraw++; + state->backend.Draw(baseElement, numElements, numInstances); } //------------------------------------------------------------------------------ template<> Id Gfx::CreateResource(const TextureSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - return state->backend.CreateTexture(setup, data, size); + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(setup.Locator); + if (!resId.IsValid()) { + resId = state->backend.CreateTexture(setup, data, size); + state->backend.AddResource(setup.Locator, resId); + } + return resId; } //------------------------------------------------------------------------------ template<> Id Gfx::CreateResource(const BufferSetup& setup, const void* data, int size) { - o_assert_dbg(IsValid()); - return state->backend.CreateBuffer(setup, data, size); + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(setup.Locator); + if (!resId.IsValid()) { + resId = state->backend.CreateBuffer(setup, data, size); + state->backend.AddResource(setup.Locator, resId); + } + return resId; } //------------------------------------------------------------------------------ template<> Id Gfx::CreateResource(const ShaderSetup& setup) { - o_assert_dbg(IsValid()); - return state->backend.CreateShader(setup); + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(setup.Locator); + if (!resId.IsValid()) { + resId = state->backend.CreateShader(setup); + state->backend.AddResource(setup.Locator, resId); + } + return resId; } //------------------------------------------------------------------------------ template<> Id Gfx::CreateResource(const PipelineSetup& setup) { - o_assert_dbg(IsValid()); - return state->backend.CreatePipeline(setup); + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(setup.Locator); + if (!resId.IsValid()) { + resId = state->backend.CreatePipeline(setup); + state->backend.AddResource(setup.Locator, resId); + } + return resId; } //------------------------------------------------------------------------------ template<> Id Gfx::CreateResource(const PassSetup& setup) { - o_assert_dbg(IsValid()); - return state->backend.CreatePass(setup); + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(setup.Locator); + if (!resId.IsValid()) { + resId = state->backend.CreatePass(setup); + state->backend.AddResource(setup.Locator, resId); + } + return resId; } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 972cf5bf5..5388b46f1 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -11,8 +11,8 @@ namespace Oryol { int IndexType::ByteSize(IndexType::Code c) { switch (c) { case None: return 0; - case Index16: return 2; - case Index32: return 4; + case UInt16: return 2; + case UInt32: return 4; default: o_error("IndexType::ByteSize() called with invalid type!\n"); return 0; @@ -380,82 +380,6 @@ const char* VertexFormat::ToString(Code c) { } } -//------------------------------------------------------------------------------ -BlendState::BlendState() { - static_assert(sizeof(BlendState) == 8, "sizeof(BlendState) is not 8, bitfield packing problem?"); - this->Hash = 0; - this->BlendEnabled = false; - this->SrcFactorRGB = BlendFactor::One; - this->DstFactorRGB = BlendFactor::Zero; - this->OpRGB = BlendOperation::Add; - this->SrcFactorAlpha = BlendFactor::One; - this->DstFactorAlpha = BlendFactor::Zero; - this->OpAlpha = BlendOperation::Add; - this->ColorWriteMask = PixelChannel::RGBA; - this->ColorFormat = PixelFormat::RGBA8; - this->DepthFormat = PixelFormat::DEPTHSTENCIL; - this->MRTCount = 1; -} - -//------------------------------------------------------------------------------ -StencilState::StencilState() { - static_assert(sizeof(StencilState) == 2, "sizeof(StencilState) is not 2, bitfield packing problem?"); - this->Hash = 0; - this->FailOp = StencilOp::Keep; - this->DepthFailOp = StencilOp::Keep; - this->PassOp = StencilOp::Keep; - this->CmpFunc = CompareFunc::Always; -} - -//------------------------------------------------------------------------------ -DepthStencilState::DepthStencilState() { - static_assert(sizeof(DepthStencilState) == 8, "sizeof(DepthStencilState) is not 8, bitfield packing problem?"); - this->Hash = 0; - this->DepthCmpFunc = CompareFunc::Always; - this->DepthWriteEnabled = false; - this->StencilEnabled = false; - this->StencilReadMask = 0xFF; - this->StencilWriteMask = 0xFF; - this->StencilRef = 0; -} - -//------------------------------------------------------------------------------ -bool DepthStencilState::operator==(const DepthStencilState& rhs) const { - return (this->Hash == rhs.Hash) && - (this->StencilFront == rhs.StencilFront) && - (this->StencilBack == rhs.StencilBack); -} - -//------------------------------------------------------------------------------ -bool DepthStencilState::operator!=(const DepthStencilState& rhs) const { - return (this->Hash != rhs.Hash) || - (this->StencilFront != rhs.StencilFront) || - (this->StencilBack != rhs.StencilBack); -} - -//------------------------------------------------------------------------------ -RasterizerState::RasterizerState() { - static_assert(sizeof(RasterizerState) == 2, "sizeof(RasterizerState) is not 4, bitfield packing problem?"); - this->Hash = 0; - this->CullFaceEnabled = false; - this->ScissorTestEnabled = false; - this->DitherEnabled = true; - this->AlphaToCoverageEnabled = false; - this->CullFace = Face::Back; - this->SampleCount = 1; -} - -//------------------------------------------------------------------------------ -SamplerState::SamplerState() { - static_assert(sizeof(SamplerState) == 2, "sizeof(SamplerState) is not 2, bitfield packing problem?"); - this->Hash = 0; - this->WrapU = TextureWrapMode::Repeat; - this->WrapV = TextureWrapMode::Repeat; - this->WrapW = TextureWrapMode::Repeat; - this->MagFilter = TextureFilterMode::Nearest; - this->MinFilter = TextureFilterMode::Nearest; -} - //------------------------------------------------------------------------------ PassAction::PassAction() { for (auto& c : this->Color) { @@ -734,7 +658,7 @@ DisplayAttrs GfxSetup::GetDisplayAttrs() const { //------------------------------------------------------------------------------ GfxSetup::GfxSetup() { - for (int i = 0; i < GfxResourceType::NumResourceTypes; i++) { + for (int i = 0; i < GfxResourceType::Num; i++) { ResourcePoolSize[i] = GfxConfig::DefaultResourcePoolSize; ResourceThrottling[i] = 0; // unthrottled } @@ -1193,7 +1117,7 @@ bool TextureSetup::ShouldSetupEmpty() const { //------------------------------------------------------------------------------ bool TextureSetup::HasDepth() const { - return this->DepthFormat != PixelFormat::InvalidPixelFormat; + return this->DepthFormat != PixelFormat::Invalid; } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index a18e830d1..f9bac07f0 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -13,23 +13,22 @@ #include namespace Oryol { - -//------------------------------------------------------------------------------ -/** - @class Oryol::BufferType - @ingroup Gfx - @brief whether a Buffer contains vertex- or index-data -*/ -class BufferType { -public: - enum Code { - VertexBuffer = 0, - IndexBuffer, - - NumBufferTypes, - InvalidBufferType = 0xFFFFFFFF - }; -}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::BufferType + @ingroup Gfx + @brief whether a Buffer contains vertex- or index-data +*/ +struct BufferType { + enum Code { + VertexBuffer = 0, + IndexBuffer, + + Num, + Invalid + }; +}; //------------------------------------------------------------------------------ /** @@ -37,15 +36,14 @@ class BufferType { @ingroup Gfx @brief selects 16- or 32-bit indices */ -class IndexType { -public: +struct IndexType { enum Code { None = 0, - Index16, - Index32, + UInt16, + UInt32, - NumIndexTypes, - InvalidIndexType = 0xFFFFFFFF + Num, + Invalid }; /// get byte size of index type static int ByteSize(IndexType::Code c); @@ -57,18 +55,17 @@ class IndexType { @ingroup Gfx @brief RGBA/Depth/Stencil channel bits and combinations */ -class PixelChannel { -public: - typedef uint64_t Mask; +struct PixelChannel { + typedef uint8_t Mask; enum Bits { None = 0, - Stencil = (1<<5), - Depth = (1<<4), - Red = (1<<3), - Green = (1<<2), - Blue = (1<<1), - Alpha = (1<<0), + Red = (1<<0), + Green = (1<<1), + Blue = (1<<2), + Alpha = (1<<3), + Stencil = (1<<4), + Depth = (1<<5), DepthStencil = Depth|Stencil, DS = DepthStencil, @@ -104,13 +101,8 @@ class PixelChannel { @ingroup Gfx @brief enum of pixel formats */ -class PixelFormat { -public: - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint64_t { - #else +struct PixelFormat { enum Code { - #endif RGBA8, ///< 32-bit wide, 4 channels @ 8-bit RGB8, ///< 24-bit wide, 3 channels @ 8-bit RGBA4, ///< 16-bit wide, 4 channels @ 4-bit @@ -135,9 +127,9 @@ class PixelFormat { ETC2_RGB8, ///< ETC2 compressed format (RGB8) ETC2_SRGB8, ///< ETC2 compressed format (SRGB8) - NumPixelFormats, ///< number of pixel formats - InvalidPixelFormat, ///< invalid pixel format value - None = InvalidPixelFormat, ///< special "none" type + Num, ///< number of pixel formats + Invalid, ///< invalid pixel format value + None = Invalid, ///< special "none" type }; /// return true for valid render target color formats @@ -178,8 +170,7 @@ class PixelFormat { @ingroup Gfx @brief primitive type enum (triangle strips, lists, etc...) */ -class PrimitiveType { -public: +struct PrimitiveType { /// primitive type enum (don't change order, append to end!) enum Code { Points = 0, @@ -188,8 +179,8 @@ class PrimitiveType { Triangles, TriangleStrip, - NumPrimitiveTypes, - InvalidPrimitiveType = 0xFFFFFFFF, + Num, + Invalid }; /// convert primitive type to string static const char* ToString(PrimitiveType::Code c); @@ -204,9 +195,7 @@ class PrimitiveType { These types are used for the type in Id for Gfx module resources. */ -class GfxResourceType { -public: - /// type enum +struct GfxResourceType { enum Code { Texture, ///< a texture Buffer, ///< a vertex- or index-buffer @@ -214,8 +203,8 @@ class GfxResourceType { Pipeline, ///< a pipeline state object RenderPass, ///< a render-pass object - NumResourceTypes, - InvalidResourceType = 0xFFFF, + Num, + Invalid, }; }; @@ -225,15 +214,13 @@ class GfxResourceType { @ingroup Gfx @brief the shader stages (vertex shader, fragment shader) */ -class ShaderStage { -public: - /// shader stages enum +struct ShaderStage { enum Code { VS = 0, FS, - NumShaderStages, - InvalidShaderStage = 0xFFFFFFFF, + Num, + Invalid }; }; @@ -243,20 +230,17 @@ class ShaderStage { @ingroup Gfx @brief texture sampling filter mode */ -class TextureFilterMode { -public: - /// filtering modes - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint16_t { - #else +struct TextureFilterMode { enum Code { - #endif - Nearest, + Nearest = 0, Linear, NearestMipmapNearest, NearestMipmapLinear, LinearMipmapNearest, LinearMipmapLinear, + + Num, + Invalid, }; }; @@ -266,17 +250,15 @@ class TextureFilterMode { @ingroup Gfx @brief texture type (2D, 3D, Cube) */ -class TextureType { -public: - /// texture type enum +struct TextureType { enum Code { Texture2D = 0, TextureCube, Texture3D, TextureArray, - NumTextureTypes, - InvalidTextureType = 0xFFFFFFFF, + Num, + Invalid, }; }; @@ -286,17 +268,14 @@ class TextureType { @ingroup Gfx @brief texture coordinate wrapping modes */ -class TextureWrapMode { -public: - /// wrap modes - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint16_t { - #else +struct TextureWrapMode { enum Code { - #endif ClampToEdge, Repeat, MirroredRepeat, + + Num, + Invalid, }; }; @@ -310,16 +289,14 @@ class TextureWrapMode { - Dynamic: update infrequently - Stream: changed every frame */ -class Usage { -public: - /// usage enum +struct Usage { enum Code { Immutable = 0, Dynamic, Stream, - NumUsages, - InvalidUsage = 0xFFFFFFFF, + Num, + Invalid, }; }; @@ -334,10 +311,9 @@ class Usage { GLES2 and D3D11! GLES2 needs to read those as float vec, but D3D11 can only read them as int vec! */ -class VertexFormat { -public: +struct VertexFormat { /// format enum (don't change order, and append to end!) - enum Code : uint8_t { + enum Code { Float, ///< single component float, expanded to (x, 0, 0, 1) Float2, ///< 2-component float, expanded to (x, y, 0, 1) Float3, ///< 3-component float, expanded to (x, y, z, 1) @@ -352,8 +328,8 @@ class VertexFormat { Short4N, ///< 4-component float (-1.0f..+1.0f) mapped to short (-32768..+32767) UInt10_2N, ///< 4-component packed, normalized 10-bit XYZ, 2-bit W (0.0 .. 1.0) - NumVertexFormats, ///< number of vertex formats - InvalidVertexFormat, ///< the invalid vertex format value + Num, ///< number of vertex formats + Invalid, ///< the invalid vertex format value }; /// get the byte size of a vertex format code @@ -368,8 +344,7 @@ class VertexFormat { @ingroup Gfx @brief shader language syntax */ -class ShaderLang { -public: +struct ShaderLang { enum Code { GLSL100 = 0, ///< OpenGLES 2.0 / WebGL 1.0 GLSL330, ///< OpenGL 3.3 @@ -377,8 +352,8 @@ class ShaderLang { HLSL5, ///< D3D11 HLSL Metal, ///< Metal shader language - NumShaderLangs, - InvalidShaderLang + Num, + Invalid }; }; @@ -388,8 +363,7 @@ class ShaderLang { @ingroup Gfx @brief optional rendering features */ -class GfxFeature { -public: +struct GfxFeature { enum Code { TextureCompressionDXT = 0, ///< GPU supports DXT compressed textures TextureCompressionPVRTC, ///< GPU supports PVRTC compressed textures @@ -407,8 +381,8 @@ class GfxFeature { TextureArray, ///< support for array textures NativeTexture, ///< can work with externally created texture objects - NumFeatures, - InvalidFeature + Num, + Invalid }; }; @@ -418,20 +392,16 @@ class GfxFeature { @ingroup Gfx @brief polygon face side (front, back, both) */ -class Face { -public: - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint16_t { - #else +struct Face { enum Code { - #endif Front = 0, Back, Both, + + Num, + Invalid, }; - static const int NumFaceCodes = 3; static const int NumSides = 2; - static const int InvalidFace = 0xFF; }; //------------------------------------------------------------------------------ @@ -440,13 +410,8 @@ class Face { @ingroup Gfx @brief comparison modes for depth and stencil state */ -class CompareFunc { -public: - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint16_t { - #else +struct CompareFunc { enum Code { - #endif Never = 0, Less, Equal, @@ -454,10 +419,11 @@ class CompareFunc { Greater, NotEqual, GreaterEqual, - Always + Always, + + Num, + Invalid }; - static const int NumCompareFuncs = 8; - static const int InvalidCompareFunc = 0xFF; }; //------------------------------------------------------------------------------ @@ -466,14 +432,9 @@ class CompareFunc { @ingroup Gfx @brief stencil operations */ -class StencilOp { -public: - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint16_t { - #else +struct StencilOp { enum Code { - #endif - Keep, + Keep = 0, Zero, Replace, IncrClamp, @@ -481,9 +442,10 @@ class StencilOp { Invert, IncrWrap, DecrWrap, + + Num, + Invalid }; - static const int NumStencilOperations = 8; - static const int InvalidStencilOperation = 0xff; }; //------------------------------------------------------------------------------ @@ -492,13 +454,8 @@ class StencilOp { @ingroup Gfx @brief blending factors */ -class BlendFactor { -public: - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint64_t { - #else +struct BlendFactor { enum Code { - #endif Zero = 0, One, SrcColor, @@ -514,9 +471,10 @@ class BlendFactor { OneMinusBlendColor, BlendAlpha, OneMinusBlendAlpha, + + Num, + Invalid }; - static const int NumBlendFactors = 15; - static const int InvalidBlendFactor = 0xFF; }; //------------------------------------------------------------------------------ @@ -525,19 +483,15 @@ class BlendFactor { @ingroup Gfx @brief blending operations */ -class BlendOperation { -public: - #ifdef _MSC_VER // for correct bitfield packing, enum must be typed on MSVC - enum Code : uint64_t { - #else +struct BlendOperation { enum Code { - #endif Add = 0, Subtract, ReverseSubtract, + + Num, + Invalid }; - static const int NumBlendOperations = 3; - static const int InvalidBlendOperation = 0xff; }; //------------------------------------------------------------------------------ @@ -546,9 +500,8 @@ class BlendOperation { @ingroup Gfx @brief classify vertices in a buffer as per-vertex or per-instance data */ -class VertexStepFunction { -public: - enum Code : uint8_t { +struct VertexStepFunction { + enum Code { PerVertex = 0, PerInstance = 1, }; @@ -563,8 +516,7 @@ class VertexStepFunction { A PrimitiveGroup object describes a range of primitive elements in a mesh, where elements are either vertices or indices. */ -class PrimitiveGroup { -public: +struct PrimitiveGroup { int BaseElement = 0; int NumElements = 0; @@ -582,38 +534,18 @@ class PrimitiveGroup { @ingroup Gfx @brief describe alpha blending state */ -class BlendState { -public: - union { - #pragma pack(push,1) - struct { - uint64_t BlendEnabled:1; - BlendFactor::Code SrcFactorRGB:5; - BlendFactor::Code DstFactorRGB:5; - BlendOperation::Code OpRGB:3; - BlendFactor::Code SrcFactorAlpha:5; - BlendFactor::Code DstFactorAlpha:5; - BlendOperation::Code OpAlpha:3; - PixelChannel::Mask ColorWriteMask:4; - PixelFormat::Code ColorFormat : 5; - PixelFormat::Code DepthFormat : 5; - uint64_t MRTCount : 3; - }; - #pragma pack(pop) - /// hash code from merged state - uint64_t Hash; - }; - - /// constructor - BlendState(); - /// equality - bool operator==(const BlendState& rhs) const { - return this->Hash == rhs.Hash; - }; - /// inequality - bool operator!=(const BlendState& rhs) const { - return this->Hash != rhs.Hash; - }; +struct BlendState { + bool BlendEnabled = false; + BlendFactor::Code SrcFactorRGB = BlendFactor::One; + BlendFactor::Code DstFactorRGB = BlendFactor::Zero; + BlendOperation::Code OpRGB = BlendOperation::Add; + BlendFactor::Code SrcFactorAlpha = BlendFactor::One; + BlendFactor::Code DstFactorAlpha = BlendFactor::Zero; + BlendOperation::Code OpAlpha = BlendOperation::Add; + PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; + PixelFormat::Code ColorFormat = PixelFormat::RGBA8; + PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; + int MRTCount = 1; }; //------------------------------------------------------------------------------ @@ -622,29 +554,11 @@ class BlendState { @ingroup Gfx @brief holds stencil-buffer render state for one face side */ -class StencilState { -public: - union { - #pragma pack(push, 1) - struct { - StencilOp::Code FailOp : 4; - StencilOp::Code DepthFailOp : 4; - StencilOp::Code PassOp : 4; - CompareFunc::Code CmpFunc : 4; - }; - #pragma pack(pop) - uint16_t Hash; - }; - /// constructor - StencilState(); - /// equality - bool operator==(const StencilState& rhs) const { - return this->Hash == rhs.Hash; - }; - /// inequality - bool operator!=(const StencilState& rhs) const { - return this->Hash != rhs.Hash; - }; +struct StencilState { + StencilOp::Code FailOp = StencilOp::Keep; + StencilOp::Code DepthFailOp = StencilOp::Keep; + StencilOp::Code PassOp = StencilOp::Keep; + CompareFunc::Code CmpFunc = CompareFunc::Always; }; //------------------------------------------------------------------------------ @@ -653,36 +567,15 @@ class StencilState { @ingroup Gfx @brief holds the complete depth and stencil render state */ -class DepthStencilState { -public: - /// front-side stencil state +struct DepthStencilState { StencilState StencilFront; - /// back-side stencil state StencilState StencilBack; - /// common depth-stencil state - union { - struct { - /// depth compare-function - CompareFunc::Code DepthCmpFunc:5; - /// depth write enabled flag - uint16_t DepthWriteEnabled:1; - /// stencil-enabled flag - uint16_t StencilEnabled:1; - /// stencil read-mask - uint16_t StencilReadMask : 8; - /// stencil write-mask - uint16_t StencilWriteMask : 8; - /// stencil-ref value - uint16_t StencilRef : 8; - }; - uint32_t Hash; - }; - /// constructor - DepthStencilState(); - /// equality - bool operator==(const DepthStencilState& rhs) const; - /// inequality - bool operator!=(const DepthStencilState& rhs) const; + CompareFunc::Code DepthCmpFunc = CompareFunc::Always; + bool DepthWriteEnabled = false; + bool StencilEnabled = false; + uint8_t StencilReadMask = 0xFF; + uint8_t StencilWriteMask = 0xFF; + uint8_t StencilRef = 0x00; }; //------------------------------------------------------------------------------ @@ -691,31 +584,13 @@ class DepthStencilState { @ingroup Gfx @brief rasterizer state flags */ -class RasterizerState { -public: - union { - #pragma pack(push,1) - struct { - uint16_t CullFaceEnabled : 1; - uint16_t ScissorTestEnabled : 1; - uint16_t DitherEnabled : 1; - uint16_t AlphaToCoverageEnabled : 1; - Face::Code CullFace : 3; - uint16_t SampleCount : 4; - }; - #pragma pack(pop) - uint16_t Hash; - }; - /// constructor - RasterizerState(); - /// equality - bool operator==(const RasterizerState& rhs) const { - return this->Hash == rhs.Hash; - }; - /// inequality - bool operator!=(const RasterizerState& rhs) const { - return this->Hash != rhs.Hash; - }; +struct RasterizerState { + bool CullFaceEnabled = false; + bool ScissorTestEnabled = false; + bool DitherEnabled = true; + bool AlphaToCoverageEnabled = false; + Face::Code CullFace = Face::Back; + int SampleCount = 1; }; //------------------------------------------------------------------------------ @@ -724,35 +599,12 @@ class RasterizerState { @ingroup Gfx @brief wrap texture sampler state */ -class SamplerState { -public: - union { - #pragma pack(push, 1) - struct { - /// texture-wrap mode for u-axis - TextureWrapMode::Code WrapU : 2; - /// texture-wrap mode for v-axis - TextureWrapMode::Code WrapV : 2; - /// texture-wrap mode for w-axis - TextureWrapMode::Code WrapW : 2; - /// magnification filter - TextureFilterMode::Code MagFilter : 3; - /// minification filter - TextureFilterMode::Code MinFilter : 3; - }; - #pragma pack(pop) - uint16_t Hash; - }; - /// constructor - SamplerState(); - /// equality - bool operator==(const SamplerState& rhs) const { - return this->Hash == rhs.Hash; - }; - /// inequality - bool operator!=(const SamplerState& rhs) const { - return this->Hash != rhs.Hash; - }; +struct SamplerState { + TextureWrapMode::Code WrapU = TextureWrapMode::Repeat; + TextureWrapMode::Code WrapV = TextureWrapMode::Repeat; + TextureWrapMode::Code WrapW = TextureWrapMode::Repeat; + TextureFilterMode::Code MagFilter = TextureFilterMode::Nearest; + TextureFilterMode::Code MinFilter = TextureFilterMode::Nearest; }; //------------------------------------------------------------------------------ @@ -822,7 +674,7 @@ class PassAction { with the exception of shader uniforms: - 1 pipeline state object - - 1..4 vertex buffers + - 1..4 vertex buffers - 0..1 index buffer - 0..N textures for the vertex shader stage - 0..N textures for the fragment shader stage @@ -831,8 +683,8 @@ struct DrawState { /// the pipeline state object Id Pipeline; /// vertex buffers - StaticArray VertexBuffers; - /// optional index buffer + StaticArray VertexBuffers; + /// optional index buffer Id IndexBuffer; /// vertex shader stage textures StaticArray VSTexture; @@ -861,43 +713,43 @@ struct GfxFrameInfo { /** @class Oryol::VertexLayout @ingroup Gfx - @brief describes the data layout of a vertex in a vertex buffer - + @brief describes the data layout of a vertex in a vertex buffer + FIXME: support vertex components with gaps (manually defined offset and stride) */ class VertexLayout { public: /// a component in a vertex layout class Component { - public: + public: /// default constructor - Component() {}; - /// construct from format (no attr name) + Component() {}; + /// construct from format (no attr name) Component(VertexFormat::Code fmt): Format(fmt) { }; /// construct from vertex attr name and format Component(const StringAtom& name, VertexFormat::Code fmt): Name(name), Format(fmt) { } /// return true if valid (attr and format set) - bool IsValid() const { - return this->Format != VertexFormat::InvalidVertexFormat; + bool IsValid() const { + return this->Format != VertexFormat::Invalid; } /// clear the component (unset attr and format) - void Clear() { - *this = Component(); + void Clear() { + *this = Component(); } /// get byte size of component - int ByteSize() const { - return VertexFormat::ByteSize(this->Format); + int ByteSize() const { + return VertexFormat::ByteSize(this->Format); } - + StringAtom Name; - VertexFormat::Code Format = VertexFormat::InvalidVertexFormat; + VertexFormat::Code Format = VertexFormat::Invalid; int Offset = 0; // offset will be written in VertexLayout::Add }; /// the vertex step function, used for instancing, default is 'PerVertex' VertexStepFunction::Code StepFunction = VertexStepFunction::PerVertex; /// the vertex step rate, used for instancing - uint8_t StepRate = 1; + uint8_t StepRate = 1; /// default constructor VertexLayout(); @@ -908,8 +760,8 @@ class VertexLayout { /// return true if layout is empty bool Empty() const; /// add a component - VertexLayout& Add(const Component& comp); - /// add an unnamed component + VertexLayout& Add(const Component& comp); + /// add an unnamed component VertexLayout& Add(VertexFormat::Code format); /// add a named component VertexLayout& Add(const StringAtom& name, VertexFormat::Code format); @@ -920,11 +772,11 @@ class VertexLayout { /// get number of components int NumComponents() const; /// get component at index - const Component& ComponentAt(int index) const; - /// find component index by name, return InvalidIndex if not found + const Component& ComponentAt(int index) const; + /// find component index by name, return InvalidIndex if not found int ComponentIndexByName(const StringAtom& name) const; - /// test if the layout contains a specific vertex attribute by name - bool Contains(const StringAtom& name) const; + /// test if the layout contains a specific vertex attribute by name + bool Contains(const StringAtom& name) const; /// get byte size of vertex (aka stride) int ByteSize() const; /// get byte offset of a component @@ -947,15 +799,15 @@ struct TextureAttrs { /// texture locator (usually the URL of the texture file) class Locator Locator; /// the texture type (2D, 3D, cube...) - TextureType::Code Type = TextureType::InvalidTextureType; + TextureType::Code Type = TextureType::Invalid; /// the RGBA pixel format of texture data - PixelFormat::Code ColorFormat = PixelFormat::InvalidPixelFormat; + PixelFormat::Code ColorFormat = PixelFormat::Invalid; /// optional depth format (only used for render target textures) - PixelFormat::Code DepthFormat = PixelFormat::InvalidPixelFormat; + PixelFormat::Code DepthFormat = PixelFormat::Invalid; /// optional sample count (only used for MSAA render target textures) int SampleCount = 1; /// texture usage hint - Usage::Code TextureUsage = Usage::InvalidUsage; + Usage::Code TextureUsage = Usage::Invalid; /// width of top-level mipmap in pixels int Width = 0; /// height of top-level mipmap in pixels @@ -1067,9 +919,9 @@ struct IndexBufferAttrs { /// number of indices in the index buffer int NumIndices = 0; /// type of indices (16-bit or 32-bit) - IndexType::Code Type = IndexType::InvalidIndexType; + IndexType::Code Type = IndexType::Invalid; /// buffer usage hint - Usage::Code BufferUsage = Usage::InvalidUsage; + Usage::Code BufferUsage = Usage::Invalid; /// computes the byte size of index buffer data int ByteSize() const; }; @@ -1086,7 +938,7 @@ struct VertexBufferAttrs { /// describes the vertex layout of a vertex in the buffer VertexLayout Layout; /// buffer usage hint - Usage::Code BufferUsage = Usage::InvalidUsage; + Usage::Code BufferUsage = Usage::Invalid; /// computes the byte size of the contained vertex buffer data int ByteSize() const; }; @@ -1139,9 +991,9 @@ class GfxSetup { /// name of the HTML element to track (default: #canvas) String HtmlElement = "#canvas"; /// resource pool size by resource type - StaticArray ResourcePoolSize; + StaticArray ResourcePoolSize; /// resource creation throttling (max resources created async per frame) - StaticArray ResourceThrottling; + StaticArray ResourceThrottling; /// initial resource label stack capacity int ResourceLabelStackCapacity = 256; /// initial resource registry capacity @@ -1166,18 +1018,20 @@ class GfxSetup { */ class BufferSetup { public: - /// create initialized BufferSetup object - static BufferSetup Make(int size, BufferType::Code type=BufferType::VertexBuffer, Usage::Code usage=Usage::Immutable); - /// the buffer type (vertex- or index-buffer) - BufferType::Code Type = BufferType::VertexBuffer; - /// the buffer usage - Usage::Code Usage = Usage::Immutable; - /// the buffer size in bytes - int Size = 0; - /// optional native 3D-API buffers - StaticArray NativeBuffers; - - BufferSetup(); + /// create initialized BufferSetup object + static BufferSetup Make(int size, BufferType::Code type=BufferType::VertexBuffer, Usage::Code usage=Usage::Immutable); + /// resource locator + class Locator Locator = Locator::NonShared(); + /// the buffer type (vertex- or index-buffer) + BufferType::Code Type = BufferType::VertexBuffer; + /// the buffer usage + Usage::Code Usage = Usage::Immutable; + /// the buffer size in bytes + int Size = 0; + /// optional native 3D-API buffers + StaticArray NativeBuffers; + + BufferSetup(); }; //------------------------------------------------------------------------------ @@ -1194,20 +1048,22 @@ class PipelineSetup { static PipelineSetup FromShaderAndLayout(const Id& shd, const VertexLayout& layout); /// resource locator class Locator Locator = Locator::NonShared(); + /// shader + Id Shader; + /// primitive type + PrimitiveType::Code PrimType = PrimitiveType::Triangles; + /// index type (none, 16-bit or 32-bit) + IndexType::Code IndexType = IndexType::None; /// blend state (GLES3.0 doesn't allow separate MRT blend state - class BlendState BlendState; + struct BlendState BlendState; /// blend color glm::vec4 BlendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); /// depth-stencil state - class DepthStencilState DepthStencilState; + struct DepthStencilState DepthStencilState; /// rasterizer state - class RasterizerState RasterizerState; + struct RasterizerState RasterizerState; /// input vertex layouts (one per mesh slot) StaticArray Layouts; - /// primitive type - PrimitiveType::Code PrimType = PrimitiveType::Triangles; - /// shader - Id Shader; }; //------------------------------------------------------------------------------ @@ -1301,32 +1157,32 @@ class ShaderSetup { int TexBindSlot(int index) const; private: struct programEntry { - StaticArray vsSources; - StaticArray fsSources; - StaticArray vsFuncs; - StaticArray fsFuncs; + StaticArray vsSources; + StaticArray fsSources; + StaticArray vsFuncs; + StaticArray fsFuncs; struct byteCodeEntry { const void* ptr = nullptr; uint32_t size = 0; }; - StaticArray vsByteCode; - StaticArray fsByteCode; + StaticArray vsByteCode; + StaticArray fsByteCode; }; struct uniformBlockEntry { StringAtom type; StringAtom name; uint32_t typeHash = 0; uint32_t byteSize = 0; - ShaderStage::Code bindStage = ShaderStage::InvalidShaderStage; + ShaderStage::Code bindStage = ShaderStage::Invalid; int bindSlot = InvalidIndex; }; struct textureEntry { StringAtom name; - TextureType::Code type = TextureType::InvalidTextureType; - ShaderStage::Code bindStage = ShaderStage::InvalidShaderStage; + TextureType::Code type = TextureType::Invalid; + ShaderStage::Code bindStage = ShaderStage::Invalid; int bindSlot = InvalidIndex; }; - static const int MaxNumUniformBlocks = ShaderStage::NumShaderStages * GfxConfig::MaxNumUniformBlocksPerStage; + static const int MaxNumUniformBlocks = ShaderStage::Num * GfxConfig::MaxNumUniformBlocksPerStage; static const int MaxNumTextures = GfxConfig::MaxNumVertexTextures + GfxConfig::MaxNumFragmentTextures; programEntry program; int numUniformBlocks = 0; diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 2e2f59f52..2de531ddc 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -58,7 +58,7 @@ namespace Oryol { namespace _priv { //------------------------------------------------------------------------------ -Id makeId(GfxResourceType::Code type, uint32_t sgId) { +static Id makeId(GfxResourceType::Code type, uint32_t sgId) { // convert a Sokol resource id into a Oryol Id Id::SlotIndexT slotIndex = sgId & 0xFFFF; Id::UniqueStampT unique = (sgId >> 16) & 0xFFFF; @@ -66,6 +66,38 @@ Id makeId(GfxResourceType::Code type, uint32_t sgId) { return id; } +//------------------------------------------------------------------------------ +static sg_shader makeShaderId(const Id& id) { + // convert an Oryol Id into a sokol sg_shader + o_assert_dbg(id.Type == GfxResourceType::Shader); + uint32_t sgId = (id.UniqueStamp<<16)|id.SlotIndex; + return sg_shader{sgId}; +} + +//------------------------------------------------------------------------------ +static sg_pipeline makePipelineId(const Id& id) { + // convert an Oryol Id into a sokol sg_pipeline + o_assert_dbg(id.Type == GfxResourceType::Pipeline); + uint32_t sgId = (id.UniqueStamp<<16)|id.SlotIndex; + return sg_pipeline{sgId}; +} + +//------------------------------------------------------------------------------ +static sg_buffer makeBufferId(const Id& id) { + // convert an Oryol Id into a sokol sg_buffer + o_assert_dbg(id.Type == GfxResourceType::Buffer); + uint32_t sgId = (id.UniqueStamp<<16)|id.SlotIndex; + return sg_buffer{sgId}; +} + +//------------------------------------------------------------------------------ +static sg_image makeImageId(const Id& id) { + // convert an Oryol Id into a sokol sg_image + o_assert_dbg(id.Type == GfxResourceType::Texture); + uint32_t sgId = (id.UniqueStamp<<16)|id.SlotIndex; + return sg_image{sgId}; +} + //------------------------------------------------------------------------------ static void convertPassAction(const PassAction& src, sg_pass_action& dst) { o_assert_dbg(GfxConfig::MaxNumColorAttachments <= SG_MAX_COLOR_ATTACHMENTS); @@ -115,6 +147,250 @@ static sg_usage convertUsage(Usage::Code u) { } } +//------------------------------------------------------------------------------ +static sg_primitive_type convertPrimitiveType(PrimitiveType::Code t) { + switch (t) { + case PrimitiveType::Points: return SG_PRIMITIVETYPE_POINTS; + case PrimitiveType::Lines: return SG_PRIMITIVETYPE_LINES; + case PrimitiveType::LineStrip: return SG_PRIMITIVETYPE_LINE_STRIP; + case PrimitiveType::Triangles: return SG_PRIMITIVETYPE_TRIANGLES; + case PrimitiveType::TriangleStrip: return SG_PRIMITIVETYPE_TRIANGLE_STRIP; + default: return _SG_PRIMITIVETYPE_DEFAULT; + }{} +} + +//------------------------------------------------------------------------------ +static sg_index_type convertIndexType(IndexType::Code t) { + switch (t) { + case IndexType::None: return SG_INDEXTYPE_NONE; + case IndexType::UInt16: return SG_INDEXTYPE_UINT16; + case IndexType::UInt32: return SG_INDEXTYPE_UINT32; + default: return _SG_INDEXTYPE_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static sg_stencil_op convertStencilOp(StencilOp::Code op) { + switch (op) { + case StencilOp::Keep: return SG_STENCILOP_KEEP; + case StencilOp::Zero: return SG_STENCILOP_ZERO; + case StencilOp::Replace: return SG_STENCILOP_REPLACE; + case StencilOp::IncrClamp: return SG_STENCILOP_INCR_CLAMP; + case StencilOp::DecrClamp: return SG_STENCILOP_DECR_CLAMP; + case StencilOp::Invert: return SG_STENCILOP_INVERT; + case StencilOp::IncrWrap: return SG_STENCILOP_INCR_WRAP; + case StencilOp::DecrWrap: return SG_STENCILOP_DECR_WRAP; + default: return _SG_STENCILOP_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static sg_compare_func convertCompareFunc(CompareFunc::Code f) { + switch (f) { + case CompareFunc::Never: return SG_COMPAREFUNC_NEVER; + case CompareFunc::Less: return SG_COMPAREFUNC_LESS; + case CompareFunc::Equal: return SG_COMPAREFUNC_EQUAL; + case CompareFunc::LessEqual: return SG_COMPAREFUNC_LESS_EQUAL; + case CompareFunc::Greater: return SG_COMPAREFUNC_GREATER; + case CompareFunc::NotEqual: return SG_COMPAREFUNC_NOT_EQUAL; + case CompareFunc::GreaterEqual: return SG_COMPAREFUNC_GREATER_EQUAL; + case CompareFunc::Always: return SG_COMPAREFUNC_ALWAYS; + default: return _SG_COMPAREFUNC_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static void convertStencilState(const StencilState& src, sg_stencil_state& dst) { + dst.fail_op = convertStencilOp(src.FailOp); + dst.depth_fail_op = convertStencilOp(src.DepthFailOp); + dst.pass_op = convertStencilOp(src.PassOp); + dst.compare_func = convertCompareFunc(src.CmpFunc); +} + +//------------------------------------------------------------------------------ +static void convertDepthStencilState(const PipelineSetup& src, sg_pipeline_desc& dst) { + convertStencilState(src.DepthStencilState.StencilFront, dst.depth_stencil.stencil_front); + convertStencilState(src.DepthStencilState.StencilBack, dst.depth_stencil.stencil_back); + dst.depth_stencil.depth_compare_func = convertCompareFunc(src.DepthStencilState.DepthCmpFunc); + dst.depth_stencil.depth_write_enabled = src.DepthStencilState.DepthWriteEnabled; + dst.depth_stencil.stencil_enabled = src.DepthStencilState.StencilEnabled; + dst.depth_stencil.stencil_read_mask = src.DepthStencilState.StencilReadMask; + dst.depth_stencil.stencil_write_mask = src.DepthStencilState.StencilWriteMask; + dst.depth_stencil.stencil_ref = src.DepthStencilState.StencilRef; +} + +//------------------------------------------------------------------------------ +static sg_blend_factor convertBlendFactor(BlendFactor::Code f) { + switch (f) { + case BlendFactor::Zero: return SG_BLENDFACTOR_ZERO; + case BlendFactor::One: return SG_BLENDFACTOR_ONE; + case BlendFactor::SrcColor: return SG_BLENDFACTOR_SRC_COLOR; + case BlendFactor::OneMinusSrcColor: return SG_BLENDFACTOR_ONE_MINUS_SRC_COLOR; + case BlendFactor::SrcAlpha: return SG_BLENDFACTOR_SRC_ALPHA; + case BlendFactor::OneMinusSrcAlpha: return SG_BLENDFACTOR_ONE_MINUS_SRC_ALPHA; + case BlendFactor::DstColor: return SG_BLENDFACTOR_DST_COLOR; + case BlendFactor::OneMinusDstColor: return SG_BLENDFACTOR_ONE_MINUS_DST_COLOR; + case BlendFactor::DstAlpha: return SG_BLENDFACTOR_DST_ALPHA; + case BlendFactor::OneMinusDstAlpha: return SG_BLENDFACTOR_ONE_MINUS_DST_ALPHA; + case BlendFactor::SrcAlphaSaturated: return SG_BLENDFACTOR_SRC_ALPHA_SATURATED; + case BlendFactor::BlendColor: return SG_BLENDFACTOR_BLEND_COLOR; + case BlendFactor::OneMinusBlendColor: return SG_BLENDFACTOR_ONE_MINUS_BLEND_COLOR; + case BlendFactor::BlendAlpha: return SG_BLENDFACTOR_BLEND_ALPHA; + case BlendFactor::OneMinusBlendAlpha: return SG_BLENDFACTOR_ONE_MINUS_BLEND_ALPHA; + default: return _SG_BLENDFACTOR_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static sg_blend_op convertBlendOp(BlendOperation::Code op) { + switch (op) { + case BlendOperation::Add: return SG_BLENDOP_ADD; + case BlendOperation::Subtract: return SG_BLENDOP_SUBTRACT; + case BlendOperation::ReverseSubtract: return SG_BLENDOP_REVERSE_SUBTRACT; + default: return _SG_BLENDOP_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static uint8_t convertColorMask(PixelChannel::Mask src) { + if (src == 0) { + return SG_COLORMASK_NONE; + } + else { + uint8_t dst = 0; + if (src & PixelChannel::Red) { dst |= SG_COLORMASK_R; } + if (src & PixelChannel::Green) { dst |= SG_COLORMASK_G; } + if (src & PixelChannel::Blue) { dst |= SG_COLORMASK_B; } + if (src & PixelChannel::Alpha) { dst |= SG_COLORMASK_A; } + return dst; + } +} + +//------------------------------------------------------------------------------ +static sg_pixel_format convertPixelFormat(PixelFormat::Code fmt) { + switch (fmt) { + case PixelFormat::RGBA8: return SG_PIXELFORMAT_RGBA8; + case PixelFormat::RGB8: return SG_PIXELFORMAT_RGB8; + case PixelFormat::RGBA4: return SG_PIXELFORMAT_RGBA4; + case PixelFormat::R5G6B5: return SG_PIXELFORMAT_R5G6B5; + case PixelFormat::R5G5B5A1: return SG_PIXELFORMAT_R5G5B5A1; + case PixelFormat::R10G10B10A2: return SG_PIXELFORMAT_R10G10B10A2; + case PixelFormat::RGBA32F: return SG_PIXELFORMAT_RGBA32F; + case PixelFormat::RGBA16F: return SG_PIXELFORMAT_RGBA16F; + case PixelFormat::R32F: return SG_PIXELFORMAT_R32F; + case PixelFormat::L8: return SG_PIXELFORMAT_L8; + case PixelFormat::DXT1: return SG_PIXELFORMAT_DXT1; + case PixelFormat::DXT3: return SG_PIXELFORMAT_DXT3; + case PixelFormat::DXT5: return SG_PIXELFORMAT_DXT5; + case PixelFormat::DEPTH: return SG_PIXELFORMAT_DEPTH; + case PixelFormat::DEPTHSTENCIL: return SG_PIXELFORMAT_DEPTHSTENCIL; + case PixelFormat::PVRTC2_RGB: return SG_PIXELFORMAT_PVRTC2_RGB; + case PixelFormat::PVRTC4_RGB: return SG_PIXELFORMAT_PVRTC4_RGB; + case PixelFormat::PVRTC2_RGBA: return SG_PIXELFORMAT_PVRTC2_RGBA; + case PixelFormat::PVRTC4_RGBA: return SG_PIXELFORMAT_PVRTC4_RGBA; + case PixelFormat::ETC2_RGB8: return SG_PIXELFORMAT_ETC2_RGB8; + case PixelFormat::ETC2_SRGB8: return SG_PIXELFORMAT_ETC2_SRGB8; + default: return _SG_PIXELFORMAT_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static void convertBlendState(const PipelineSetup& src, sg_pipeline_desc& dst) { + dst.blend.enabled = src.BlendState.BlendEnabled; + dst.blend.src_factor_rgb = convertBlendFactor(src.BlendState.SrcFactorRGB); + dst.blend.dst_factor_rgb = convertBlendFactor(src.BlendState.DstFactorRGB); + dst.blend.op_rgb = convertBlendOp(src.BlendState.OpRGB); + dst.blend.src_factor_alpha = convertBlendFactor(src.BlendState.SrcFactorAlpha); + dst.blend.dst_factor_alpha = convertBlendFactor(src.BlendState.DstFactorAlpha); + dst.blend.op_alpha = convertBlendOp(src.BlendState.OpAlpha); + dst.blend.color_write_mask = convertColorMask(src.BlendState.ColorWriteMask); + dst.blend.color_format = convertPixelFormat(src.BlendState.ColorFormat); + dst.blend.depth_format = convertPixelFormat(src.BlendState.DepthFormat); + dst.blend.blend_color[0] = src.BlendColor.r; + dst.blend.blend_color[1] = src.BlendColor.g; + dst.blend.blend_color[2] = src.BlendColor.b; + dst.blend.blend_color[3] = src.BlendColor.a; +} + +//------------------------------------------------------------------------------ +static sg_cull_mode convertCullMode(bool enabled, Face::Code face) { + if (enabled) { + if (face == Face::Front) { + return SG_CULLMODE_FRONT; + } + else { + return SG_CULLMODE_BACK; + } + } + else { + return SG_CULLMODE_NONE; + } +} + +//------------------------------------------------------------------------------ +static void convertRasterizerState(const PipelineSetup& src, sg_pipeline_desc& dst) { + dst.rasterizer.alpha_to_coverage_enabled = src.RasterizerState.AlphaToCoverageEnabled; + dst.rasterizer.cull_mode = convertCullMode(src.RasterizerState.CullFaceEnabled, src.RasterizerState.CullFace); + dst.rasterizer.face_winding = _SG_FACEWINDING_DEFAULT; + dst.rasterizer.sample_count = src.RasterizerState.SampleCount; + dst.rasterizer.depth_bias = 0.0f; + dst.rasterizer.depth_bias_slope_scale = 0.0f; + dst.rasterizer.depth_bias_clamp = 0.0f; +} + +//------------------------------------------------------------------------------ +static sg_vertex_step convertStepFunc(VertexStepFunction::Code f) { + switch (f) { + case VertexStepFunction::PerVertex: return SG_VERTEXSTEP_PER_VERTEX; + case VertexStepFunction::PerInstance: return SG_VERTEXSTEP_PER_INSTANCE; + default: return _SG_VERTEXSTEP_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static sg_vertex_format convertVertexFormat(VertexFormat::Code fmt) { + switch (fmt) { + case VertexFormat::Float: return SG_VERTEXFORMAT_FLOAT; + case VertexFormat::Float2: return SG_VERTEXFORMAT_FLOAT2; + case VertexFormat::Float3: return SG_VERTEXFORMAT_FLOAT3; + case VertexFormat::Float4: return SG_VERTEXFORMAT_FLOAT4; + case VertexFormat::Byte4: return SG_VERTEXFORMAT_BYTE4; + case VertexFormat::Byte4N: return SG_VERTEXFORMAT_BYTE4N; + case VertexFormat::UByte4: return SG_VERTEXFORMAT_UBYTE4; + case VertexFormat::UByte4N: return SG_VERTEXFORMAT_UBYTE4N; + case VertexFormat::Short2: return SG_VERTEXFORMAT_SHORT2; + case VertexFormat::Short2N: return SG_VERTEXFORMAT_SHORT2N; + case VertexFormat::Short4: return SG_VERTEXFORMAT_SHORT4; + case VertexFormat::Short4N: return SG_VERTEXFORMAT_SHORT4N; + case VertexFormat::UInt10_2N: return SG_VERTEXFORMAT_UINT10_N2; + default: return SG_VERTEXFORMAT_INVALID; + } +} + +//------------------------------------------------------------------------------ +static void convertVertexLayouts(const PipelineSetup& src, sg_pipeline_desc& dst) { + o_assert_dbg(GfxConfig::MaxNumVertexBuffers <= SG_MAX_SHADERSTAGE_BUFFERS); + for (int layoutIndex = 0; layoutIndex < GfxConfig::MaxNumVertexBuffers; layoutIndex++) { + const auto& srcLayout = src.Layouts[layoutIndex]; + auto& dstLayout = dst.vertex_layouts[layoutIndex]; + if (!srcLayout.Empty()) { + dstLayout.stride = srcLayout.ByteSize(); + dstLayout.step_func = convertStepFunc(srcLayout.StepFunction); + dstLayout.step_rate = srcLayout.StepRate; + for (int compIndex = 0; compIndex < srcLayout.NumComponents(); compIndex++) { + const auto& srcComp = srcLayout.ComponentAt(compIndex); + auto& dstComp = dstLayout.attrs[compIndex]; + if (srcComp.Name.IsValid()) { + dstComp.name = srcComp.Name.AsCStr(); + } + // FIXME: sem_name, sem_index (D3D11!) + dstComp.offset = srcComp.Offset; + dstComp.format = convertVertexFormat(srcComp.Format); + } + } + } +} + //------------------------------------------------------------------------------ sokolGfxBackend::~sokolGfxBackend() { o_assert(!this->isValid); @@ -258,7 +534,7 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { sg_shader_desc sgDesc = { }; // select the shader language dialect - ShaderLang::Code slang = ShaderLang::InvalidShaderLang; + ShaderLang::Code slang = ShaderLang::Invalid; #if ORYOL_OPENGL_CORE_PROFILE slang = ShaderLang::GLSL330; #elif ORYOL_OPENGL_GLES2 @@ -305,8 +581,15 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { Id sokolGfxBackend::CreatePipeline(const PipelineSetup& setup) { o_assert_dbg(this->isValid); - // FIXME - return Id::InvalidId(); + sg_pipeline_desc sgDesc = { }; + sgDesc.shader = makeShaderId(setup.Shader); + sgDesc.primitive_type = convertPrimitiveType(setup.PrimType); + sgDesc.index_type = convertIndexType(setup.IndexType); + convertVertexLayouts(setup, sgDesc); + convertDepthStencilState(setup, sgDesc); + convertBlendState(setup, sgDesc); + convertRasterizerState(setup, sgDesc); + return makeId(GfxResourceType::Pipeline, sg_make_pipeline(&sgDesc).id); } //------------------------------------------------------------------------------ @@ -324,6 +607,13 @@ sokolGfxBackend::LookupResource(const Locator& loc) { return this->registry.Lookup(loc); } +//------------------------------------------------------------------------------ +void +sokolGfxBackend::AddResource(const Locator& loc, const Id& id) { + o_assert_dbg(this->isValid); + this->registry.Add(loc, id, this->labelStack.PeekLabel()); +} + //------------------------------------------------------------------------------ void sokolGfxBackend::DestroyResources(ResourceLabel label) { @@ -386,7 +676,39 @@ sokolGfxBackend::ApplyScissorRect(int x, int y, int w, int h, bool originTopLeft //------------------------------------------------------------------------------ void sokolGfxBackend::ApplyDrawState(const DrawState& drawState) { o_assert_dbg(this->isValid); - // FIXME + o_assert_dbg(SG_MAX_SHADERSTAGE_BUFFERS >= GfxConfig::MaxNumVertexBuffers); + o_assert_dbg(SG_MAX_SHADERSTAGE_IMAGES >= GfxConfig::MaxNumVertexTextures); + o_assert_dbg(SG_MAX_SHADERSTAGE_IMAGES >= GfxConfig::MaxNumFragmentTextures); + sg_draw_state sgDrawState = { }; + sgDrawState.pipeline = makePipelineId(drawState.Pipeline); + for (int i = 0; i < GfxConfig::MaxNumVertexBuffers; i++) { + if (drawState.VertexBuffers[i].IsValid()) { + sgDrawState.vertex_buffers[i] = makeBufferId(drawState.VertexBuffers[i]); + } + else { + break; + } + } + if (drawState.IndexBuffer.IsValid()) { + sgDrawState.index_buffer = makeBufferId(drawState.IndexBuffer); + } + for (int i = 0; i < GfxConfig::MaxNumVertexTextures; i++) { + if (drawState.VSTexture[i].IsValid()) { + sgDrawState.vs_images[i] = makeImageId(drawState.VSTexture[i]); + } + else { + break; + } + } + for (int i = 0; i < GfxConfig::MaxNumFragmentTextures; i++) { + if (drawState.FSTexture[i].IsValid()) { + sgDrawState.fs_images[i] = makeImageId(drawState.FSTexture[i]); + } + else { + break; + } + } + sg_apply_draw_state(&sgDrawState); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 89722c620..546300183 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -67,18 +67,20 @@ class sokolGfxBackend { Id AllocPass(const Locator& loc); /// initialize a buffer - void InitBuffer(Id id, const BufferSetup& setup); + void InitBuffer(const Id& id, const BufferSetup& setup); /// initialize a texture - void InitTexture(Id id, const TextureSetup& setup); + void InitTexture(const Id& id, const TextureSetup& setup); /// initialize a shader - void InitShader(Id id, const ShaderSetup& setup); + void InitShader(const Id& id, const ShaderSetup& setup); /// initialize a pipeline - void InitPipeline(Id id, const PipelineSetup& setup); + void InitPipeline(const Id& id, const PipelineSetup& setup); /// initialize a pass - void InitPass(Id id, const PassSetup& setup); + void InitPass(const Id& id, const PassSetup& setup); /// lookup a resource Id by locator Id LookupResource(const Locator& loc); + /// add a shared resource to the resource registry + void AddResource(const Locator& loc, const Id& id); /// destroy one or multiple resource(s) by matching label void DestroyResources(ResourceLabel label); From 95180ac32f0c1932184f6fcfdc41566e91362d59 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Thu, 11 Jan 2018 18:11:29 +0100 Subject: [PATCH 11/91] More sokol_gfx migration: - removed hardwired vertex attrs from MeshBuilder and ShapeBuilder - MeshBuilder and ShapeBuilder no longer return a MeshSetup, but instead a Result object - convert uniform block definitions when creating sokol shaders - remove uniform block type hash --- code/Modules/Assets/CMakeLists.txt | 6 +- code/Modules/Assets/Gfx/MeshBuilder.cc | 61 +++-- code/Modules/Assets/Gfx/MeshBuilder.h | 34 +-- code/Modules/Assets/Gfx/ShapeBuilder.cc | 219 +++++++++--------- code/Modules/Assets/Gfx/ShapeBuilder.h | 53 +++-- code/Modules/Gfx/Gfx.cc | 14 +- code/Modules/Gfx/Gfx.h | 8 +- code/Modules/Gfx/GfxTypes.cc | 8 +- code/Modules/Gfx/GfxTypes.h | 9 +- code/Modules/Gfx/private/sokolGfxBackend.cc | 31 ++- code/Modules/Gfx/private/sokolGfxBackend.h | 2 +- .../Input/private/glfw/glfwInputMgr.cc | 2 +- code/Samples/PackedNormals/PackedNormals.cc | 24 +- code/Samples/Quad/Quad.cc | 53 ++--- code/Samples/Quad/shaders.glsl | 8 +- code/Samples/Shapes/Shapes.cc | 29 +-- code/Samples/Triangle/Triangle.cc | 2 +- fips-generators/Shader.py | 16 +- 18 files changed, 306 insertions(+), 273 deletions(-) diff --git a/code/Modules/Assets/CMakeLists.txt b/code/Modules/Assets/CMakeLists.txt index 98659355f..0fedac9fd 100644 --- a/code/Modules/Assets/CMakeLists.txt +++ b/code/Modules/Assets/CMakeLists.txt @@ -5,9 +5,9 @@ fips_begin_module(Assets) MeshBuilder.cc MeshBuilder.h ShapeBuilder.cc ShapeBuilder.h VertexWriter.cc VertexWriter.h - TextureLoader.cc TextureLoader.h - OmshParser.cc OmshParser.h - MeshLoader.cc MeshLoader.h +# TextureLoader.cc TextureLoader.h +# OmshParser.cc OmshParser.h +# MeshLoader.cc MeshLoader.h ) fips_end_module() diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index bcd851be9..06280819c 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -11,57 +11,52 @@ namespace Oryol { //------------------------------------------------------------------------------ MeshBuilder& MeshBuilder::Begin() { - o_assert(!this->inBegin); - o_assert(this->NumVertices > 0); - o_assert(!this->Layout.Empty()); + o_assert_dbg(!this->inBegin); + o_assert_dbg(this->NumVertices > 0); + o_assert_dbg(!this->Layout.Empty()); this->inBegin = true; + + // compute the data buffer size + const int vbSize = this->NumVertices * this->Layout.ByteSize(); + const int ibSize = this->NumIndices * IndexType::ByteSize(this->IndexType); + int allSize = vbSize + ibSize; + + // setup the data buffer object + this->vertexPointer = this->result.Data.Add(allSize); + this->indexPointer = this->vertexPointer + vbSize; + this->endPointer = this->indexPointer + ibSize; + + // setup Result object + this->result.Layout = this->Layout; + this->result.IndexType = this->IndexType; + this->result.VertexBufferSetup = BufferSetup::Make(vbSize, BufferType::VertexBuffer, this->VertexUsage); + this->result.IndexBufferSetup = BufferSetup::Make(ibSize, BufferType::IndexBuffer, this->IndexUsage); + this->result.IndexBufferSetup.Offset = this->result.VertexBufferSetup.Size; - // setup MeshSetup object - MeshSetup& meshSetup = this->setupAndData.Setup; - meshSetup = MeshSetup::FromData(this->VertexUsage, this->IndexUsage); - meshSetup.Layout = this->Layout; - meshSetup.NumVertices = this->NumVertices; - meshSetup.NumIndices = this->NumIndices; - meshSetup.IndicesType = this->IndicesType; - for (const auto& primGroup : this->PrimitiveGroups) { - meshSetup.AddPrimitiveGroup(primGroup); - } - - // compute the required stream size - const int vbSize = Memory::RoundUp(this->NumVertices * this->Layout.ByteSize(), 4); - const int ibSize = this->NumIndices * IndexType::ByteSize(this->IndicesType); - int allSize = vbSize + ibSize; - meshSetup.VertexDataOffset = 0; - if (ibSize > 0) { - meshSetup.IndexDataOffset = vbSize; - } - - // setup the data buffer object - this->vertexPointer = this->setupAndData.Data.Add(allSize); - this->indexPointer = this->vertexPointer + vbSize; - this->endPointer = this->indexPointer + ibSize; - return *this; } //------------------------------------------------------------------------------ -SetupAndData +MeshBuilder::Result MeshBuilder::Build() { o_assert(this->inBegin); this->inBegin = false; // NOTE: explicit moves required by VS2013 - SetupAndData result(std::move(this->setupAndData)); + Result res(std::move(this->result)); // clear private data, not configuration data this->vertexPointer = nullptr; this->indexPointer = nullptr; this->endPointer = nullptr; - this->setupAndData.Setup = MeshSetup::FromData(); - this->setupAndData.Data.Clear(); + this->result.VertexBufferSetup = BufferSetup(); + this->result.IndexBufferSetup = BufferSetup(); + this->result.Layout = VertexLayout(); + this->result.IndexType = IndexType::Invalid; + this->result.Data.Clear(); - return result; + return res; } } // namespace Oryol diff --git a/code/Modules/Assets/Gfx/MeshBuilder.h b/code/Modules/Assets/Gfx/MeshBuilder.h index 4d6c52c6b..d7529d372 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.h +++ b/code/Modules/Assets/Gfx/MeshBuilder.h @@ -44,24 +44,22 @@ namespace Oryol { class MeshBuilder { -public: +public: /// number of vertices uint32_t NumVertices = 0; /// number of indices (default 0 for non-indexed meshes) uint32_t NumIndices = 0; /// index type (default is 16-bit indices) - IndexType::Code IndicesType = IndexType::Index16; + IndexType::Code IndexType = IndexType::UInt16; /// read/write access to vertex layout - class VertexLayout Layout; - /// primitive groups (at least one must be defined) - Array PrimitiveGroups; + VertexLayout Layout; /// vertex data usage Usage::Code VertexUsage = Usage::Immutable; /// index data usage - Usage::Code IndexUsage = Usage::Immutable; - + Usage::Code IndexUsage = Usage::Immutable; + /// begin writing vertex and index data - MeshBuilder& Begin(); + MeshBuilder& Begin(); /// write 1D component vertex data MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x); /// write 2D vertex data @@ -77,17 +75,25 @@ class MeshBuilder { /// write 16-bit triangle indices MeshBuilder& Triangle(uint32_t triangleIndex, uint16_t vertexIndex0, uint16_t vertexIndex1, uint16_t vertexIndex2); /// write 32-bit triangle indices - MeshBuilder& Triangle32(uint32_t triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); + MeshBuilder& Triangle32(uint32_t triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); + /// mesh builder result + struct Result { + BufferSetup VertexBufferSetup; + BufferSetup IndexBufferSetup; + VertexLayout Layout; + IndexType::Code IndexType; + Buffer Data; + }; /// end writing vertex and index data, return result, and reset MeshBuilfer - SetupAndData Build(); + Result Build(); private: /// clear/reset the object void clear(); /// compute byte offset into vertex buffer given vertex and component index uint32_t vertexByteOffset(uint32_t vertexIndex, int compIndex) const; - - SetupAndData setupAndData; + + Result result; bool inBegin = false; uint8_t* vertexPointer = nullptr; @@ -98,7 +104,7 @@ class MeshBuilder { //------------------------------------------------------------------------------ inline MeshBuilder& MeshBuilder::Index(uint32_t index, uint16_t vertexIndex) { - o_assert_dbg(this->inBegin && (index < this->NumIndices) && (this->IndicesType == IndexType::Index16)); + o_assert_dbg(this->inBegin && (index < this->NumIndices) && (this->IndexType == IndexType::UInt16)); o_assert_dbg(vertexIndex < this->NumVertices); uint16_t* ptr = ((uint16_t*)this->indexPointer) + index; @@ -110,7 +116,7 @@ MeshBuilder::Index(uint32_t index, uint16_t vertexIndex) { //------------------------------------------------------------------------------ inline MeshBuilder& MeshBuilder::Index32(uint32_t index, uint32_t vertexIndex) { - o_assert_dbg(this->inBegin && (index < this->NumIndices) && (this->IndicesType == IndexType::Index32)); + o_assert_dbg(this->inBegin && (index < this->NumIndices) && (this->IndexType == IndexType::UInt32)); o_assert_dbg(vertexIndex < this->NumVertices); uint32_t* ptr = ((uint32_t*)this->indexPointer) + index; diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.cc b/code/Modules/Assets/Gfx/ShapeBuilder.cc index d20081766..0f50bdcd1 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.cc +++ b/code/Modules/Assets/Gfx/ShapeBuilder.cc @@ -9,15 +9,42 @@ #include "glm/trigonometric.hpp" namespace Oryol { - -//------------------------------------------------------------------------------ -ShapeBuilder::ShapeBuilder() : -RandomColors(false), -curPrimGroupBaseElement(0), -curPrimGroupNumElements(0), -color(1.0f, 1.0f, 1.0f, 1.0f) { - // empty -} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::AddPositions(const StringAtom& name, VertexFormat::Code fmt) { + o_assert_dbg(this->posIndex == InvalidIndex); + this->posIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::AddNormals(const StringAtom& name, VertexFormat::Code fmt) { + o_assert_dbg(this->normalIndex == InvalidIndex); + this->normalIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::AddTexCoords(const StringAtom& name, VertexFormat::Code fmt) { + o_assert_dbg(this->texCoordIndex == InvalidIndex); + this->texCoordIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::AddColors(const Oryol::StringAtom &name, VertexFormat::Code fmt) { + o_assert_dbg(this->colorIndex == InvalidIndex); + this->colorIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} //------------------------------------------------------------------------------ ShapeBuilder& @@ -39,7 +66,7 @@ ShapeBuilder::buildPrimitiveGroup() { o_assert(this->curPrimGroupNumElements > 0); PrimitiveGroup primGroup(this->curPrimGroupBaseElement, this->curPrimGroupNumElements); - this->meshBuilder.PrimitiveGroups.Add(primGroup); + this->primGroups.Add(primGroup); this->curPrimGroupBaseElement += this->curPrimGroupNumElements; this->curPrimGroupNumElements = 0; } @@ -204,7 +231,7 @@ ShapeBuilder::UpdateNumElements(ShapeData& shape) { } //------------------------------------------------------------------------------ -SetupAndData +ShapeBuilder::Result ShapeBuilder::Build() { o_assert(!this->shapes.Empty()); @@ -213,9 +240,6 @@ ShapeBuilder::Build() { this->buildPrimitiveGroup(); } - // assign vertex layout - this->meshBuilder.Layout = this->Layout; - // overall number of vertices and indices int numVerticesAll = 0; int numIndicesAll = 0; @@ -226,8 +250,8 @@ ShapeBuilder::Build() { // configure the mesh builder this->meshBuilder.NumVertices = numVerticesAll; - this->meshBuilder.IndicesType = IndexType::Index16; - this->meshBuilder.NumIndices = numIndicesAll; + this->meshBuilder.IndexType = IndexType::UInt16; + this->meshBuilder.NumIndices = numIndicesAll; this->meshBuilder.Begin(); int curVertexIndex = 0; int curTriIndex = 0; @@ -254,30 +278,38 @@ ShapeBuilder::Build() { } curVertexIndex += shape.numVertices; curTriIndex += shape.numTris; - } - SetupAndData result = this->meshBuilder.Build(); + } + MeshBuilder::Result meshResult = this->meshBuilder.Build(); + ShapeBuilder::Result shapeResult; + shapeResult.VertexBufferSetup = std::move(meshResult.VertexBufferSetup); + shapeResult.IndexBufferSetup = std::move(meshResult.IndexBufferSetup); + shapeResult.Layout = std::move(meshResult.Layout); + shapeResult.IndexType = meshResult.IndexType; + shapeResult.Data = std::move(meshResult.Data); + shapeResult.PrimitiveGroups = std::move(this->primGroups); // clear private data (but not config params) this->curPrimGroupBaseElement = 0; this->curPrimGroupNumElements = 0; this->transform = glm::mat4(); this->color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - this->shapes.Clear(); - this->meshBuilder.PrimitiveGroups.Clear(); + this->shapes.Clear(); + this->primGroups.Clear(); + this->meshBuilder.Layout.Clear(); - return result; + return shapeResult; } //------------------------------------------------------------------------------ void ShapeBuilder::BuildVertexColors(const ShapeData& shape, int startVertexIndex) { - o_assert(this->meshBuilder.Layout.Contains(VertexAttr::Color0)); + o_assert(InvalidIndex != this->colorIndex); if (this->RandomColors) { const glm::vec3 minRand(0.0f, 0.0f, 0.0f); const glm::vec3 maxRand(1.0f, 1.0f, 1.0f); for (int i = 0; i < shape.numVertices; i++) { glm::vec3 rnd = glm::linearRand(minRand, maxRand); - this->meshBuilder.Vertex(startVertexIndex + i, VertexAttr::Color0, rnd.x, rnd.y, rnd.z, 1.0f); + this->meshBuilder.Vertex(startVertexIndex + i, this->colorIndex, rnd.x, rnd.y, rnd.z, 1.0f); } } else { @@ -286,7 +318,7 @@ ShapeBuilder::BuildVertexColors(const ShapeData& shape, int startVertexIndex) { const float b = shape.color.z; const float a = shape.color.w; for (int i = 0; i < shape.numVertices; i++) { - this->meshBuilder.Vertex(startVertexIndex + i, VertexAttr::Color0, r, g, b, a); + this->meshBuilder.Vertex(startVertexIndex + i, this->colorIndex, r, g, b, a); } } } @@ -294,8 +326,7 @@ ShapeBuilder::BuildVertexColors(const ShapeData& shape, int startVertexIndex) { //------------------------------------------------------------------------------ void ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriIndex) { - const auto& vertexLayout = this->meshBuilder.Layout; - o_assert(vertexLayout.Contains(VertexAttr::Position)); + o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; const int numTiles = shape.i0; @@ -315,8 +346,8 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd const float dz = d / numTiles; const float duv = 1.0f / numTiles; - const bool hasNormals = vertexLayout.Contains(VertexAttr::Normal); - const bool hasTexCoords = vertexLayout.Contains(VertexAttr::TexCoord0); + const bool hasNormals = InvalidIndex != this->normalIndex; + const bool hasTexCoords = InvalidIndex != this->texCoordIndex; // bottom/top plane vertices glm::vec4 pos(0.0f, 0.0f, 0.0f, 1.0f); @@ -337,12 +368,12 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd for (int iz = 0; iz <= numTiles; iz++) { pos.z = z0 + dz * iz; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::TexCoord0, ix * duv, iz * duv); + this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iz * duv); } curVertexIndex++; } @@ -366,12 +397,12 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd for (int iz = 0; iz <= numTiles; iz++) { pos.z = z0 + dz * iz; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::TexCoord0, iy * duv, iz * duv); + this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, iy * duv, iz * duv); } curVertexIndex++; } @@ -395,12 +426,12 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd for (int iy = 0; iy <= numTiles; iy++) { pos.y = y0 + dy * iy; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::TexCoord0, ix * duv, iy * duv); + this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iy * duv); } curVertexIndex++; } @@ -408,16 +439,10 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd } o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); - if (vertexLayout.Contains(VertexAttr::Color0)) { + if (InvalidIndex != this->colorIndex) { this->BuildVertexColors(shape, startVertexIndex); } - if (vertexLayout.Contains(VertexAttr::Binormal)) { - o_warn("FIXME: ShapeBuilder::BuildBox() binormals not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::Tangent)) { - o_warn("FIXME: ShapeBuilder::BuildBox() tangents not implemented yet!\n"); - } - + // write indices ORYOL_UNUSED const int startTriIndex = curTriIndex; for (int face = 0; face < 6; face++) { @@ -459,8 +484,7 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd */ void ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTriIndex) { - const auto& vertexLayout = this->meshBuilder.Layout; - o_assert(vertexLayout.Contains(VertexAttr::Position)); + o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; const int numSlices = shape.i0; const int numStacks = shape.i1; @@ -470,9 +494,9 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri const float du = 1.0f / numSlices; const float dv = 1.0f / numStacks; - bool hasNormals = vertexLayout.Contains(VertexAttr::Normal); - bool hasTexCoords = vertexLayout.Contains(VertexAttr::TexCoord0); - + const bool hasNormals = InvalidIndex != this->normalIndex; + const bool hasTexCoords = InvalidIndex != this->texCoordIndex; + for (int stack = 0; stack <= numStacks; stack++) { const float stackAngle = (pi * stack) / numStacks; const float sinStack = glm::sin(stackAngle); @@ -484,29 +508,23 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri const glm::vec3 norm(sinSlice * sinStack, cosSlice * sinStack, cosStack); const glm::vec4 pos(norm * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { const glm::vec4 tnorm = shape.transform * glm::vec4(norm, 0.0f); - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, tnorm.x, tnorm.y, tnorm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, tnorm.x, tnorm.y, tnorm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::TexCoord0, du * slice, dv * stack); + this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, du * slice, dv * stack); } curVertexIndex++; } } o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); - if (vertexLayout.Contains(VertexAttr::Color0)) { + if (InvalidIndex != this->colorIndex) { this->BuildVertexColors(shape, startVertexIndex); } - if (vertexLayout.Contains(VertexAttr::Binormal)) { - o_warn("FIXME: ShapeBuilder::BuildSphere() binormals not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::Tangent)) { - o_warn("FIXME: ShapeBuilder::BuildSphere() tangents not implemented yet!\n"); - } - + // north-pole triangles ORYOL_UNUSED const int startTriIndex = curTriIndex; int rowA = startVertexIndex; @@ -531,7 +549,7 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri for (int slice = 0; slice < numSlices; slice++) { this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowA + slice + 1); } - o_assert((curTriIndex - startTriIndex) == shape.numTris); + o_assert_dbg((curTriIndex - startTriIndex) == shape.numTris); } //------------------------------------------------------------------------------ @@ -557,8 +575,7 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri */ void ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curTriIndex) { - const auto& vertexLayout = this->meshBuilder.Layout; - o_assert(vertexLayout.Contains(VertexAttr::Position)); + o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; const int numSlices = shape.i0; const int numStacks = shape.i1; @@ -566,7 +583,7 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float length = shape.f2; const float pi = glm::pi(); const float twoPi = 2.0f * pi; - const bool hasNormal = vertexLayout.Contains(VertexAttr::Normal); + const bool hasNormal = InvalidIndex != this->normalIndex; // north cap center vertices glm::vec4 norm = shape.transform * glm::vec4(0.0f, 1.0f, 0.0f, 0.0f); @@ -574,9 +591,9 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT glm::vec4 cpos(0.0f, y, 0.0f, 1.0f); glm::vec4 tcpos = shape.transform * cpos; for (int slice = 0; slice <= numSlices; slice++) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tcpos.x, tcpos.y, tcpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tcpos.x, tcpos.y, tcpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -588,9 +605,9 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float cosSlice = glm::cos(sliceAngle); const glm::vec4 pos(sinSlice * radius, y, cosSlice * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -605,11 +622,11 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float cosSlice = glm::cos(sliceAngle); const glm::vec4 pos(sinSlice * radius, y, cosSlice * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { glm::vec4 norm(sinSlice, 0.0f, cosSlice, 0.0f); norm = shape.transform * norm; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -624,9 +641,9 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float cosSlice = glm::cos(sliceAngle); const glm::vec4 pos(sinSlice * radius, y, cosSlice * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -635,24 +652,18 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT cpos = glm::vec4(0.0f, y, 0.0f, 1.0f); tcpos = shape.transform * cpos; for (int slice = 0; slice <= numSlices; slice++) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tcpos.x, tcpos.y, tcpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tcpos.x, tcpos.y, tcpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); - if (vertexLayout.Contains(VertexAttr::Color0)) { + if (InvalidIndex != this->colorIndex) { this->BuildVertexColors(shape, startVertexIndex); } - if (vertexLayout.Contains(VertexAttr::Binormal)) { - o_warn("FIXME: ShapeBuilder::BuildCylinder() binormals not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::Tangent)) { - o_warn("FIXME: ShapeBuilder::BuildCylinder() tangents not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::TexCoord0)) { + if (InvalidIndex != this->texCoordIndex) { o_warn("FIXME: ShapeBuilder::BuildCylinder() texcoord not implemented yet!\n"); } @@ -704,8 +715,7 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT */ void ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriIndex) { - const auto& vertexLayout = this->meshBuilder.Layout; - o_assert(vertexLayout.Contains(VertexAttr::Position)); + o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; static const float ringRadius = shape.f0; static const float radius = shape.f1; @@ -713,7 +723,7 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI static const int numRings = shape.i1; const float pi = glm::pi(); const float twoPi = 2.0f * pi; - const bool hasNormals = vertexLayout.Contains(VertexAttr::Normal); + const bool hasNormals = InvalidIndex != this->normalIndex; // vertex positions for (int side = 0; side <= numSides; side++) { @@ -732,7 +742,7 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI // surface position const glm::vec4 tpos = shape.transform * glm::vec4(spx, spy, spz, 1.0f); - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); // surface normal if (hasNormals) { @@ -742,23 +752,17 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI const float ipz = 0.0f; glm::vec4 norm = glm::normalize(glm::vec4(spx - ipx, spy - ipy, spz - ipz, 0.0f)); norm = shape.transform * norm; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } } o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); - if (vertexLayout.Contains(VertexAttr::Color0)) { + if (InvalidIndex != this->colorIndex) { this->BuildVertexColors(shape, startVertexIndex); } - if (vertexLayout.Contains(VertexAttr::Binormal)) { - o_warn("FIXME: ShapeBuilder::BuildTorus() binormals not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::Tangent)) { - o_warn("FIXME: ShapeBuilder::BuildTorus() tangents not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::TexCoord0)) { + if (InvalidIndex != this->texCoordIndex) { o_warn("FIXME: ShapeBuilder::BuildTorus() texcoord not implemented yet!\n"); } @@ -795,8 +799,7 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI */ void ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriIndex) { - const auto& vertexLayout = this->meshBuilder.Layout; - o_assert(vertexLayout.Contains(VertexAttr::Position)); + o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; const int numTiles = shape.i0; @@ -808,8 +811,8 @@ ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriI const float dz = -d / numTiles; const float duv = 1.0f / numTiles; - const bool hasNormal = vertexLayout.Contains(VertexAttr::Normal); - const bool hasTexCoords = vertexLayout.Contains(VertexAttr::TexCoord0); + const bool hasNormal = InvalidIndex != this->normalIndex; + const bool hasTexCoords = InvalidIndex != this->texCoordIndex; // vertices glm::vec4 pos(0.0f, 0.0f, 0.0f, 1.0f); @@ -819,27 +822,21 @@ ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriI for (int iz = 0; iz <= numTiles; iz++) { pos.z = z0 + dz * iz; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Position, tpos.x, tpos.y, tpos.z); + this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::Normal, norm.x, norm.y, norm.z); + this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, VertexAttr::TexCoord0, ix * duv, iz * duv); + this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iz * duv); } curVertexIndex++; } } o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); - if (vertexLayout.Contains(VertexAttr::Color0)) { + if (InvalidIndex != this->colorIndex) { this->BuildVertexColors(shape, startVertexIndex); } - if (vertexLayout.Contains(VertexAttr::Binormal)) { - o_warn("FIXME: ShapeBuilder::BuildPlane() binormals not implemented yet!\n"); - } - if (vertexLayout.Contains(VertexAttr::Tangent)) { - o_warn("FIXME: ShapeBuilder::BuildPlane() tangents not implemented yet!\n"); - } // write indices ORYOL_UNUSED const int startTriIndex = curTriIndex; @@ -859,4 +856,4 @@ ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriI o_assert((curTriIndex - startTriIndex) == shape.numTris); } -} // namespace Oryol \ No newline at end of file +} // namespace Oryol diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.h b/code/Modules/Assets/Gfx/ShapeBuilder.h index 163b9181a..b6f188ce8 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.h +++ b/code/Modules/Assets/Gfx/ShapeBuilder.h @@ -5,9 +5,11 @@ @ingroup Assets @brief shape geometry helper class @todo describe ShapeBuilder -*/ +*/ #include "Assets/Gfx/MeshBuilder.h" -#include "Core/Containers/Array.h" +#include "Core/String/StringAtom.h" +#include "Core/Containers/Array.h" +#include "Core/Containers/InlineArray.h" #include "glm/mat4x4.hpp" #include "glm/vec4.hpp" @@ -15,14 +17,17 @@ namespace Oryol { class ShapeBuilder { public: - /// constructor - ShapeBuilder(); - - /// read/write access to vertex layout - class VertexLayout Layout; /// random-vertex-colors flag - bool RandomColors; - + bool RandomColors = false; + + /// add position component to vertex layout + ShapeBuilder& AddPositions(const StringAtom& name, VertexFormat::Code fmt); + /// add a normal component to vertex layout + ShapeBuilder& AddNormals(const StringAtom& name, VertexFormat::Code fmt); + /// add a texcoord component to vertex layout + ShapeBuilder& AddTexCoords(const StringAtom& name, VertexFormat::Code fmt); + /// add c color component to vertex layout + ShapeBuilder& AddColors(const StringAtom& name, VertexFormat::Code fmt); /// put new transform ShapeBuilder& Transform(const glm::mat4& t); /// put new color @@ -37,9 +42,18 @@ class ShapeBuilder { ShapeBuilder& Torus(float ringRadius, float radius, int sides, int rings, bool builPrimGroup=true); /// add a plane ShapeBuilder& Plane(float w, float d, int tiles, bool buildPrimGroup=true); - - /// build geometry and clear object state - SetupAndData Build(); + + /// result struct + struct Result { + BufferSetup VertexBufferSetup; + BufferSetup IndexBufferSetup; + VertexLayout Layout; + IndexType::Code IndexType; + Buffer Data; + Array PrimitiveGroups; + }; + /// build geometry and clear object state + Result Build(); private: enum ShapeType { @@ -80,12 +94,17 @@ class ShapeBuilder { /// build a primitive group void buildPrimitiveGroup(); - int curPrimGroupBaseElement; - int curPrimGroupNumElements; + int curPrimGroupBaseElement = 0; + int curPrimGroupNumElements = 0; + int posIndex = InvalidIndex; + int normalIndex = InvalidIndex; + int texCoordIndex = InvalidIndex; + int colorIndex = InvalidIndex; glm::mat4 transform; - glm::vec4 color; - Array shapes; - MeshBuilder meshBuilder; + glm::vec4 color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); + Array shapes; + Array primGroups; + MeshBuilder meshBuilder; }; } // namespace Oryol diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index b3370031e..fbb7fde6b 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -289,6 +289,16 @@ Gfx::Draw(int baseElement, int numElements, int numInstances) { state->gfxFrameInfo.NumDraw++; state->backend.Draw(baseElement, numElements, numInstances); } + +//------------------------------------------------------------------------------ +void +Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { + o_trace_scoped(Gfx_Draw); + o_assert_dbg(IsValid()); + o_assert_dbg(state->inPass); + state->gfxFrameInfo.NumDraw++; + state->backend.Draw(primGroup.BaseElement, primGroup.NumElements, numInstances); +} //------------------------------------------------------------------------------ template<> Id @@ -352,10 +362,10 @@ Gfx::CreateResource(const PassSetup& setup) { //------------------------------------------------------------------------------ void -Gfx::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t layoutHash, const uint8_t* ptr, int byteSize) { +Gfx::applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, const uint8_t* ptr, int byteSize) { o_assert_dbg(IsValid()); state->gfxFrameInfo.NumApplyUniformBlock++; - state->backend.ApplyUniformBlock(bindStage, bindSlot, layoutHash, ptr, byteSize); + state->backend.ApplyUniformBlock(bindStage, bindSlot, ptr, byteSize); } } // namespace Oryol diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 6cc58bd63..680b209ec 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -102,7 +102,9 @@ class Gfx { static void UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& offsetsAndSizes); /// submit a draw call - static void Draw(int baseElement, int numElements, int numInstances); + static void Draw(int baseElement, int numElements, int numInstances=1); + /// submit a draw call with baseElement and numElements taken from PrimitiveGroup + static void Draw(const PrimitiveGroup& primGroup, int numInstances=1); /// commit (and display) the current frame static void CommitFrame(); @@ -111,13 +113,13 @@ class Gfx { private: /// apply uniform block, non-template version - static void applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, uint32_t layoutHash, const uint8_t* ptr, int byteSize); + static void applyUniformBlock(ShaderStage::Code bindStage, int bindSlot, const uint8_t* ptr, int byteSize); }; //------------------------------------------------------------------------------ template inline void Gfx::ApplyUniformBlock(const T& ub) { - applyUniformBlock(T::_bindShaderStage, T::_bindSlotIndex, T::_layoutHash, (const uint8_t*)&ub, sizeof(ub)); + applyUniformBlock(T::_bindShaderStage, T::_bindSlotIndex, (const uint8_t*)&ub, sizeof(ub)); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 5388b46f1..7ef064b70 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -746,13 +746,12 @@ void ShaderSetup::SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* } //------------------------------------------------------------------------------ -void ShaderSetup::AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t typeHash, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot) { +void ShaderSetup::AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot) { o_assert_dbg(type.IsValid()); o_assert_dbg(bindSlot >= 0); uniformBlockEntry& entry = this->uniformBlocks[this->numUniformBlocks++]; entry.type = type; entry.name = name; - entry.typeHash = typeHash; entry.byteSize = byteSize; entry.bindStage = bindStage; entry.bindSlot = bindSlot; @@ -827,11 +826,6 @@ const StringAtom& ShaderSetup::UniformBlockType(int index) const { return this->uniformBlocks[index].type; } -//------------------------------------------------------------------------------ -uint32_t ShaderSetup::UniformBlockTypeHash(int index) const { - return this->uniformBlocks[index].typeHash; -} - //------------------------------------------------------------------------------ uint32_t ShaderSetup::UniformBlockByteSize(int index) const { return this->uniformBlocks[index].byteSize; diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index f9bac07f0..ef672671e 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -1027,7 +1027,9 @@ class BufferSetup { /// the buffer usage Usage::Code Usage = Usage::Immutable; /// the buffer size in bytes - int Size = 0; + int Size = 0; + /// optional byte-offset to data pointer + int Offset = 0; /// optional native 3D-API buffers StaticArray NativeBuffers; @@ -1112,7 +1114,7 @@ class ShaderSetup { /// set shader program from precompiled shader byte code void SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* vsByteCode, uint32_t vsNumBytes, const uint8_t* fsByteCode, uint32_t fsNumBytes, const char* vsFunc=nullptr, const char* fsFunc=nullptr); /// add a uniform block - void AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t typeHash, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot); + void AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot); /// add a texture declaration void AddTexture(const StringAtom& name, TextureType::Code type, ShaderStage::Code bindStage, int32_t bindSlot); /// get program vertex shader source (only valid if setup from sources) @@ -1135,8 +1137,6 @@ class ShaderSetup { const StringAtom& UniformBlockType(int index) const; /// get uniform block name at index const StringAtom& UniformBlockName(int index) const; - /// get uniform block type hash - uint32_t UniformBlockTypeHash(int index) const; /// get uniform block byte size uint32_t UniformBlockByteSize(int index) const; /// get uniform block shader stage at index @@ -1171,7 +1171,6 @@ class ShaderSetup { struct uniformBlockEntry { StringAtom type; StringAtom name; - uint32_t typeHash = 0; uint32_t byteSize = 0; ShaderStage::Code bindStage = ShaderStage::Invalid; int bindSlot = InvalidIndex; diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 2de531ddc..d17b098e2 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -498,12 +498,12 @@ sokolGfxBackend::PopResourceLabel() { Id sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int dataSize) { o_assert_dbg(this->isValid); - o_assert_dbg(setup.Size <= dataSize); + o_assert_dbg((setup.Size+setup.Offset) <= dataSize); sg_buffer_desc sgDesc = { }; sgDesc.size = setup.Size; sgDesc.type = convertBufferType(setup.Type); sgDesc.usage = convertUsage(setup.Usage); - sgDesc.content = data; + sgDesc.content = (uint8_t*)data + setup.Offset; o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); #if ORYOL_OPENGL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { @@ -573,7 +573,27 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { if (setup.FragmentShaderFunc(slang).IsValid()) { sgDesc.fs.entry = setup.FragmentShaderFunc(slang).AsCStr(); } - // FIXME: uniform blocks and textures + + // uniform blocks + int vsUbIndex = 0, fsUbIndex = 0; + for (int i = 0; i < setup.NumUniformBlocks(); i++) { + sg_shader_uniform_block_desc* ubDesc; + if (setup.UniformBlockBindSlot(i) == ShaderStage::VS) { + o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); + ubDesc = &sgDesc.vs.uniform_blocks[vsUbIndex++]; + } + else { + o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); + ubDesc = &sgDesc.fs.uniform_blocks[fsUbIndex++]; + } + ubDesc->size = setup.UniformBlockByteSize(i); + // size must be a multiple of 16 (sizeof(vec4)) + o_assert_dbg((ubDesc->size & 15) == 0); + ubDesc->uniforms[0].name = setup.UniformBlockType(i).AsCStr(); + ubDesc->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + ubDesc->uniforms[0].array_count = ubDesc->size / 16; + } + return makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); } @@ -713,9 +733,10 @@ void sokolGfxBackend::ApplyDrawState(const DrawState& drawState) { //------------------------------------------------------------------------------ void -sokolGfxBackend::ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, uint32_t layoutHash, const void* data, int numBytes) { +sokolGfxBackend::ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes) { o_assert_dbg(this->isValid); - // FIXME + sg_shader_stage sgStage = (stage==ShaderStage::VS) ? SG_SHADERSTAGE_VS : SG_SHADERSTAGE_FS; + sg_apply_uniform_block(sgStage, ubIndex, data, numBytes); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 546300183..096bfcb4d 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -101,7 +101,7 @@ class sokolGfxBackend { /// apply a draw state void ApplyDrawState(const DrawState& drawState); /// apply a uniform block - void ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, uint32_t layoutHash, const void* data, int numBytes); + void ApplyUniformBlock(ShaderStage::Code stage, int ubIndex, const void* data, int numBytes); /// issue a draw call void Draw(int baseElement, int numElements, int numInstances); diff --git a/code/Modules/Input/private/glfw/glfwInputMgr.cc b/code/Modules/Input/private/glfw/glfwInputMgr.cc index 89305d610..c1a397846 100644 --- a/code/Modules/Input/private/glfw/glfwInputMgr.cc +++ b/code/Modules/Input/private/glfw/glfwInputMgr.cc @@ -3,7 +3,7 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "glfwInputMgr.h" -#include "Gfx/private/glfw/glfwDisplayMgr.h" +#include "Gfx/private/glfwDisplayMgr.h" #include "Core/Core.h" #include "Core/RunLoop.h" #include "GLFW/glfw3.h" diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index c65ed60c8..b830095ee 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -16,9 +16,9 @@ class PackedNormalsApp : public App { AppState::Code OnRunning(); AppState::Code OnInit(); AppState::Code OnCleanup(); - glm::mat4 computeMVP(const glm::vec3& pos); + ShapeBuilder::Result shapes; DrawState drawState; Shader::params params; glm::mat4 view; @@ -33,19 +33,21 @@ AppState::Code PackedNormalsApp::OnInit() { Gfx::Setup(GfxSetup::WindowMSAA4(600, 400, "Oryol Packed Normals Sample")); - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Byte4N } - }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 4) + ShapeBuilder shapeBuilder; + this->shapes = shapeBuilder + .AddPositions("position", VertexFormat::Float3) + .AddNormals("normal", VertexFormat::Byte4N) + .Box(1.0f, 1.0f, 1.0f, 4) .Sphere(0.75f, 36, 20) .Cylinder(0.5f, 1.5f, 36, 10) .Torus(0.3f, 0.5f, 20, 36) - .Plane(1.5f, 1.5f, 10); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); + .Plane(1.5f, 1.5f, 10) + .Build(); + this->drawState.VertexBuffers[0] = Gfx::CreateResource(this->shapes.VertexBufferSetup, this->shapes.Data); + this->drawState.IndexBuffer = Gfx::CreateResource(this->shapes.IndexBufferSetup, this->shapes.Data); Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); + auto ps = PipelineSetup::FromShaderAndLayout(shd, this->shapes.Layout); + ps.IndexType = this->shapes.IndexType; ps.DepthStencilState.DepthWriteEnabled = true; ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; ps.RasterizerState.CullFaceEnabled = true; @@ -80,7 +82,7 @@ PackedNormalsApp::OnRunning() { for (const auto& pos : positions) { this->params.mvp = this->computeMVP(pos); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(primGroupIndex++); + Gfx::Draw(this->shapes.PrimitiveGroups[primGroupIndex++]); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index 8fdbff8fd..a44ad41ed 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -23,37 +23,32 @@ AppState::Code QuadApp::OnInit() { Gfx::Setup(GfxSetup::Window(400, 400, "Oryol Quad Sample")); - // quad mesh with vertices followed by index data - static struct data_t { - const float vertices[4 * 7] = { - // positions colors - -0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f, - 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, - 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, - -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, - }; - const uint16_t indices[2 * 3] = { - 0, 1, 2, // first triangle - 0, 2, 3, // second triangle - }; - } data; - - auto meshSetup = MeshSetup::FromData(); - meshSetup.NumVertices = 4; - meshSetup.NumIndices = 6; - meshSetup.IndicesType = IndexType::Index16; - meshSetup.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::Float4 } - }; - meshSetup.AddPrimitiveGroup({0, 6}); - meshSetup.VertexDataOffset = 0; - meshSetup.IndexDataOffset = offsetof(data_t, indices); - this->drawState.Mesh[0] = Gfx::CreateResource(meshSetup, &data, sizeof(data)); + // create vertex buffer + const float vertices[4 * 7] = { + // positions colors + -0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f, + 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, + 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, + -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, + }; + auto vbufSetup = BufferSetup::Make(sizeof(vertices), BufferType::VertexBuffer); + this->drawState.VertexBuffers[0] = Gfx::CreateResource(vbufSetup, vertices, sizeof(vertices)); + + // create index buffer + const uint16_t indices[2 * 3] = { + 0, 1, 2, // first triangle + 0, 2, 3, // second triangle + }; + auto ibufSetup = BufferSetup::Make(sizeof(indices), BufferType::IndexBuffer); + this->drawState.IndexBuffer = Gfx::CreateResource(ibufSetup, indices, sizeof(indices)); // create shader and pipeline-state-object Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(meshSetup.Layout, shd); + auto ps = PipelineSetup::FromShaderAndLayout(shd, { + { "in_pos", VertexFormat::Float3 }, + { "in_color", VertexFormat::Float4 } + }); + ps.IndexType = IndexType::UInt16; this->drawState.Pipeline = Gfx::CreateResource(ps); return App::OnInit(); @@ -66,7 +61,7 @@ QuadApp::OnRunning() { Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawState); - Gfx::Draw(); + Gfx::Draw(0, 6); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/Quad/shaders.glsl b/code/Samples/Quad/shaders.glsl index 1cf7d8b4d..f5913109a 100644 --- a/code/Samples/Quad/shaders.glsl +++ b/code/Samples/Quad/shaders.glsl @@ -1,10 +1,10 @@ @vs vs -in vec4 position; -in vec4 color0; +in vec4 in_pos; +in vec4 in_color; out vec4 color; void main() { - gl_Position = position; - color = color0; + gl_Position = in_pos; + color = in_color; } @end diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index c806559f5..636db6df9 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -16,8 +16,9 @@ class ShapeApp : public App { AppState::Code OnRunning(); AppState::Code OnInit(); AppState::Code OnCleanup(); - - glm::mat4 computeMVP(const glm::vec3& pos); + glm::mat4 computeMVP(const glm::vec3& pos); + + ShapeBuilder::Result shapes; DrawState drawState; Shader::params params; glm::mat4 view; @@ -35,20 +36,22 @@ ShapeApp::OnInit() { Gfx::Setup(gfxSetup); ShapeBuilder shapeBuilder; - shapeBuilder.RandomColors = true; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::UByte4N } - }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 4) + shapeBuilder.RandomColors = true; + this->shapes = shapeBuilder + .AddPositions("position", VertexFormat::Float3) + .AddColors("color0", VertexFormat::UByte4N) + .Box(1.0f, 1.0f, 1.0f, 4) .Sphere(0.75f, 36, 20) .Cylinder(0.5f, 1.5f, 36, 10) .Torus(0.3f, 0.5f, 20, 36) - .Plane(1.5f, 1.5f, 10); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); + .Plane(1.5f, 1.5f, 10) + .Build(); + this->drawState.VertexBuffers[0] = Gfx::CreateResource(shapes.VertexBufferSetup, shapes.Data); + this->drawState.IndexBuffer = Gfx::CreateResource(shapes.IndexBufferSetup, shapes.Data); Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); + auto ps = PipelineSetup::FromShaderAndLayout(shd, shapes.Layout); + ps.IndexType = shapes.IndexType; ps.DepthStencilState.DepthWriteEnabled = true; ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; ps.RasterizerState.SampleCount = gfxSetup.SampleCount; @@ -81,8 +84,8 @@ ShapeApp::OnRunning() { int primGroupIndex = 0; for (const auto& pos : positions) { this->params.mvp = this->computeMVP(pos); - Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(primGroupIndex++); + Gfx::ApplyUniformBlock(this->params); + Gfx::Draw(this->shapes.PrimitiveGroups[primGroupIndex++]); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index 9dbf992da..c541f89cc 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -51,7 +51,7 @@ TriangleApp::OnRunning() { Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawState); - Gfx::Draw(0, 3, 1); + Gfx::Draw(0, 3); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 309471973..5758b55cd 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,13 +2,12 @@ Code generator for shader libraries. ''' -Version = 51 +Version = 52 import os, platform, json import genutil as util from util import glslcompiler, shdc from mod import log -import zlib # only for crc32 if platform.system() == 'Windows' : from util import hlslcompiler @@ -449,14 +448,6 @@ def writeHeaderTop(f, shdLib) : def writeHeaderBottom(f, shdLib) : f.write('\n') -#------------------------------------------------------------------------------- -def getUniformBlockTypeHash(ub_refl): - hashString = '' - for member in ub_refl['members']: - hashString += member['type'] - hashString += str(member['num']) - return zlib.crc32(hashString.encode('ascii')) & 0xFFFFFFFF - #------------------------------------------------------------------------------- def roundup(val, round_to): return (val + (round_to - 1)) & ~(round_to - 1) @@ -473,7 +464,6 @@ def writeProgramHeader(f, shdLib, prog, slang) : f.write(' struct {} {{\n'.format(ub['type'])) f.write(' static const int _bindSlotIndex = {};\n'.format(ub['slot'])) f.write(' static const Oryol::ShaderStage::Code _bindShaderStage = Oryol::ShaderStage::{};\n'.format(stage)) - f.write(' static const uint32_t _layoutHash = {};\n'.format(getUniformBlockTypeHash(ub))) for m in ub['members']: next_offset = m['offset'] if next_offset > cur_offset: @@ -600,8 +590,8 @@ def writeProgramSource(f, shdLib, prog, slangs) : ub_size = ub['size'] if 'glsl' in slang: ub_size = roundup(ub_size, 16) - f.write(' setup.AddUniformBlock("{}", "{}", {}, {}, {}::_bindShaderStage, {}::_bindSlotIndex);\n'.format( - ub['type'], ub['name'], getUniformBlockTypeHash(ub), ub_size, ub['type'], ub['type'])) + f.write(' setup.AddUniformBlock("{}", "{}", {}, {}::_bindShaderStage, {}::_bindSlotIndex);\n'.format( + ub['type'], ub['name'], ub_size, ub['type'], ub['type'])) # add textures layouts to setup objects for tex in refl['textures']: f.write(' setup.AddTexture("{}", {}, Oryol::ShaderStage::{}, {});\n'.format(tex['name'], texOryolType[tex['type']], stage, tex['slot'])) From 85f22a41b44e8ab56d114718231f47bb68aaca58 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Thu, 11 Jan 2018 19:52:12 +0100 Subject: [PATCH 12/91] MeshBuilder: don't init IndexBufferSetup if not indices requested --- code/Modules/Assets/Gfx/MeshBuilder.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index 06280819c..0469b20d3 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -30,9 +30,13 @@ MeshBuilder::Begin() { this->result.Layout = this->Layout; this->result.IndexType = this->IndexType; this->result.VertexBufferSetup = BufferSetup::Make(vbSize, BufferType::VertexBuffer, this->VertexUsage); - this->result.IndexBufferSetup = BufferSetup::Make(ibSize, BufferType::IndexBuffer, this->IndexUsage); - this->result.IndexBufferSetup.Offset = this->result.VertexBufferSetup.Size; - + if (ibSize > 0) { + this->result.IndexBufferSetup = BufferSetup::Make(ibSize, BufferType::IndexBuffer, this->IndexUsage); + this->result.IndexBufferSetup.Offset = this->result.VertexBufferSetup.Size; + } + else { + this->result.IndexBufferSetup = BufferSetup(); + } return *this; } From 43c68019d5ffbee96e802db585ca4c22f5f8ab3b Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Thu, 11 Jan 2018 19:52:56 +0100 Subject: [PATCH 13/91] Dbg: fix debug text rendering for sokol-gfx changes --- code/Modules/Dbg/DbgTypes.h | 7 ++ code/Modules/Dbg/private/debugTextRenderer.cc | 86 +++++++------------ code/Modules/Dbg/private/debugTextRenderer.h | 6 +- 3 files changed, 40 insertions(+), 59 deletions(-) diff --git a/code/Modules/Dbg/DbgTypes.h b/code/Modules/Dbg/DbgTypes.h index c1e34a405..fcba53570 100644 --- a/code/Modules/Dbg/DbgTypes.h +++ b/code/Modules/Dbg/DbgTypes.h @@ -5,6 +5,7 @@ @brief setup parameters for the Dbg module */ #include "Core/Types.h" +#include "Gfx/GfxTypes.h" namespace Oryol { @@ -18,6 +19,12 @@ class DbgSetup { float TextScaleX = 1.0f; /// initial text scale, y dimension float TextScaleY = 1.0f; + /// color pixel format of render pass to render text to + PixelFormat::Code ColorFormat = PixelFormat::RGBA8; + /// depth pixel format of render pass to render text to + PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; + /// multi-sample count of render pass to render text to + int SampleCount = 1; }; } // namespace Oryol diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 26ded68a7..f3c006d41 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -42,8 +42,7 @@ debugTextRenderer::setup(const DbgSetup& s) { this->curNumVertices = 0; this->vertexData = (Vertex*) Memory::Alloc(this->maxNumVertices * sizeof(Vertex)); Gfx::PushResourceLabel(); - this->setupMesh(); - this->setupFontTexture(); + this->setupResources(s); this->resourceLabel = Gfx::PopResourceLabel(); this->valid = true; } @@ -105,14 +104,6 @@ debugTextRenderer::textColor(float r, float g, float b, float a) { void debugTextRenderer::drawTextBuffer() { - // lazy-setup the pipeline-state-object (this is done deferred to - // initialize the pipeline with the right render pass params - if (!this->drawState.Pipeline.IsValid()) { - Gfx::PushResourceLabel(this->resourceLabel); - this->setupPipeline(); - Gfx::PopResourceLabel(); - } - // get the currently accumulated string String str; { @@ -130,21 +121,47 @@ debugTextRenderer::drawTextBuffer() { // FIXME: this would be wrong if rendering to a render target which // isn't the same size as the back buffer, there's no method yet // to query the current render target width/height - Gfx::UpdateVertices(this->drawState.Mesh[0], this->vertexData, this->curNumVertices * this->vertexLayout.ByteSize()); + Gfx::UpdateBuffer(this->drawState.VertexBuffers[0], this->vertexData, this->curNumVertices * this->vertexLayout.ByteSize()); Gfx::ApplyDrawState(this->drawState); DbgTextShader::vsParams vsParams; const float w = 8.0f / Gfx::PassAttrs().FramebufferWidth; // glyph is 8 pixels wide const float h = 8.0f / Gfx::PassAttrs().FramebufferHeight; // glyph is 8 pixel tall vsParams.glyphSize = glm::vec2(w * this->textScaleX * 2.0f, h * this->textScaleY * 2.0f); Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(PrimitiveGroup(0, this->curNumVertices)); + Gfx::Draw(0, this->curNumVertices); this->curNumVertices = 0; } } //------------------------------------------------------------------------------ void -debugTextRenderer::setupFontTexture() { +debugTextRenderer::setupResources(const DbgSetup& setup) { + o_assert_dbg(this->vertexLayout.Empty()); + o_assert_dbg((this->maxNumVertices > 0) && (this->maxNumVertices == this->maxNumChars*6)); + + // setup an empty mesh, only vertices + this->vertexLayout = { + { "position", VertexFormat::Float4 }, + { "color0", VertexFormat::UByte4N } + }; + const int vbufSize = this->maxNumVertices * this->vertexLayout.ByteSize(); + auto vbuf = BufferSetup::Make(vbufSize, BufferType::VertexBuffer, Usage::Stream); + this->drawState.VertexBuffers[0] = Gfx::CreateResource(vbuf); + o_assert_dbg(this->drawState.VertexBuffers[0].IsValid()); + + // create pipeline object + Id shd = Gfx::CreateResource(DbgTextShader::Setup()); + auto ps = PipelineSetup::FromShaderAndLayout(shd, this->vertexLayout); + ps.DepthStencilState.DepthWriteEnabled = false; + ps.DepthStencilState.DepthCmpFunc = CompareFunc::Always; + ps.BlendState.BlendEnabled = true; + ps.BlendState.SrcFactorRGB = BlendFactor::SrcAlpha; + ps.BlendState.DstFactorRGB = BlendFactor::OneMinusSrcAlpha; + ps.BlendState.ColorWriteMask = PixelChannel::RGB; + ps.BlendState.ColorFormat = setup.ColorFormat; + ps.BlendState.DepthFormat = setup.DepthFormat; + ps.RasterizerState.SampleCount = setup.SampleCount; + this->drawState.Pipeline = Gfx::CreateResource(ps); // convert the KC85/4 font into 8bpp image data const int numChars = 128; @@ -155,7 +172,7 @@ debugTextRenderer::setupFontTexture() { const int bytesPerChar = charWidth * charHeight; const int imgDataSize = numChars * bytesPerChar; o_assert_dbg((imgWidth * imgHeight) == imgDataSize); - + // setup a memory buffer and write font image data to it Buffer data; uint8_t* dstPtr = data.Add(imgDataSize); @@ -171,7 +188,7 @@ debugTextRenderer::setupFontTexture() { } } } - + // setup texture, pixel format is 8bpp uncompressed auto texSetup = TextureSetup::FromPixelData2D(imgWidth, imgHeight, 1, PixelFormat::L8); texSetup.Sampler.MinFilter = TextureFilterMode::Nearest; @@ -181,48 +198,9 @@ debugTextRenderer::setupFontTexture() { texSetup.ImageData.Sizes[0][0] = imgDataSize; Id tex = Gfx::CreateResource(texSetup, data); o_assert_dbg(tex.IsValid()); - o_assert_dbg(Gfx::QueryResourceInfo(tex).State == ResourceState::Valid); this->drawState.FSTexture[DbgTextShader::tex] = tex; } -//------------------------------------------------------------------------------ -void -debugTextRenderer::setupMesh() { - o_assert_dbg(this->vertexLayout.Empty()); - o_assert_dbg((this->maxNumVertices > 0) && (this->maxNumVertices == this->maxNumChars*6)); - - // setup an empty mesh, only vertices - this->vertexLayout = { - { VertexAttr::Position, VertexFormat::Float4 }, - { VertexAttr::Color0, VertexFormat::UByte4N } - }; - MeshSetup setup = MeshSetup::Empty(this->maxNumVertices, Usage::Stream); - setup.Layout = this->vertexLayout; - this->drawState.Mesh[0] = Gfx::CreateResource(setup); - o_assert_dbg(this->drawState.Mesh[0].IsValid()); -} - -//------------------------------------------------------------------------------ -void -debugTextRenderer::setupPipeline() { - // finally create pipeline object - Id shd = Gfx::CreateResource(DbgTextShader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(this->vertexLayout, shd); - ps.DepthStencilState.DepthWriteEnabled = false; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::Always; - ps.BlendState.BlendEnabled = true; - ps.BlendState.SrcFactorRGB = BlendFactor::SrcAlpha; - ps.BlendState.DstFactorRGB = BlendFactor::OneMinusSrcAlpha; - ps.BlendState.ColorWriteMask = PixelChannel::RGB; - // NOTE: this is a bit naughty, we actually want 'dbg render contexts' - // for different render targets and quickly select them before - // text rendering - ps.BlendState.ColorFormat = Gfx::PassAttrs().ColorPixelFormat; - ps.BlendState.DepthFormat = Gfx::PassAttrs().DepthPixelFormat; - ps.RasterizerState.SampleCount = Gfx::PassAttrs().SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(ps); -} - //------------------------------------------------------------------------------ void debugTextRenderer::addVertex(uint8_t x, uint8_t y, uint8_t u, uint8_t v, uint32_t rgba) { diff --git a/code/Modules/Dbg/private/debugTextRenderer.h b/code/Modules/Dbg/private/debugTextRenderer.h index 96163c0f8..41e0e7c6f 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.h +++ b/code/Modules/Dbg/private/debugTextRenderer.h @@ -38,12 +38,8 @@ class debugTextRenderer { void textColor(float r, float g, float b, float a); /// draw the accumulated text void drawTextBuffer(); - /// setup the font texture - void setupFontTexture(); /// setup the text dynamic mesh - void setupMesh(); - /// setup the text pipeline state object (happens deferred) - void setupPipeline(); + void setupResources(const DbgSetup& setup); /// convert the provides string object into vertices, and return number of vertices void convertStringToVertices(const String& str); /// write one glyph vertex, returns next vertex index From 31dd32c0fa29dfb201fd24d4840a720f0fdf1a27 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Thu, 11 Jan 2018 20:02:30 +0100 Subject: [PATCH 14/91] Texture creation via sokol_gfx, PrimitiveTypes and DbgText sample working --- code/Modules/Gfx/Gfx.cc | 5 +- code/Modules/Gfx/GfxTypes.cc | 10 +- code/Modules/Gfx/GfxTypes.h | 5 +- code/Modules/Gfx/private/sokolGfxBackend.cc | 97 +++++++++++++++++-- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 70 +++++++------ 5 files changed, 135 insertions(+), 52 deletions(-) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index fbb7fde6b..30ce8c55b 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -196,7 +196,8 @@ Gfx::LookupResource(const Locator& locator) { int Gfx::QueryFreeResourceSlots(GfxResourceType::Code resourceType) { o_assert_dbg(IsValid()); - // FIXME + // FIXME + o_error("Gfx::QueryFreeResourceSlots FIXME!\n"); return 0; //return state->backend.resourceContainer.QueryFreeSlots(resourceType); } @@ -206,6 +207,7 @@ ResourceInfo Gfx::QueryResourceInfo(const Id& id) { o_assert_dbg(IsValid()); // FIXME + o_error("Gfx::QueryResourceInfo FIXME!\n"); return ResourceInfo(); //return state->backend.resourceContainer.QueryResourceInfo(id); } @@ -215,6 +217,7 @@ ResourcePoolInfo Gfx::QueryResourcePoolInfo(GfxResourceType::Code resType) { o_assert_dbg(IsValid()); // FIXME + o_error("Gfx::QueryResourcePoolInfo FIXME!\n"); return ResourcePoolInfo(); //return state->backend.resourceContainer.QueryPoolInfo(resType); } diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 7ef064b70..2eaa6b2e6 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -1076,11 +1076,11 @@ TextureSetup TextureSetup::RenderTargetArray(int w, int h, int layers, PixelForm } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t h0, intptr_t h1) { +TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t t0, intptr_t t1) { o_assert_dbg((w > 0) && (h > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - o_assert_dbg(h0 != 0); + o_assert_dbg(t0 != 0); TextureSetup setup; setup.setupFromNativeHandle = true; setup.Type = type; @@ -1089,8 +1089,8 @@ TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, Textu setup.NumMipMaps = numMipMaps; setup.ColorFormat = fmt; setup.TextureUsage = usage; - setup.NativeHandle[0] = h0; - setup.NativeHandle[1] = h1; + setup.NativeTextures[0] = t0; + setup.NativeTextures[1] = t1; return setup; } @@ -1116,7 +1116,7 @@ bool TextureSetup::HasDepth() const { //------------------------------------------------------------------------------ TextureSetup::TextureSetup() { - NativeHandle.Fill(0); + NativeTextures.Fill(0); } } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index ef672671e..c3f037171 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -1258,9 +1258,8 @@ class TextureSetup { class Locator Locator = Locator::NonShared(); /// resource placeholder Id Placeholder; - /// optional: native texture handle (only on platforms which support GfxFeature::NativeTextures) - static const int MaxNumNativeHandles = 2; - StaticArray NativeHandle; + /// optional: native textures (only on platforms which support GfxFeature::NativeTextures) + StaticArray NativeTextures; /// optional image surface offsets and sizes ImageDataAttrs ImageData; /// default constructor diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index d17b098e2..08e4f0d9f 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -391,6 +391,40 @@ static void convertVertexLayouts(const PipelineSetup& src, sg_pipeline_desc& dst } } +//------------------------------------------------------------------------------ +static sg_image_type convertTextureType(TextureType::Code t) { + switch (t) { + case TextureType::Texture2D: return SG_IMAGETYPE_2D; + case TextureType::TextureCube: return SG_IMAGETYPE_CUBE; + case TextureType::Texture3D: return SG_IMAGETYPE_3D; + case TextureType::TextureArray: return SG_IMAGETYPE_ARRAY; + default: return _SG_IMAGETYPE_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static sg_filter convertFilter(TextureFilterMode::Code f) { + switch (f) { + case TextureFilterMode::Nearest: return SG_FILTER_NEAREST; + case TextureFilterMode::Linear: return SG_FILTER_LINEAR; + case TextureFilterMode::NearestMipmapNearest: return SG_FILTER_NEAREST_MIPMAP_NEAREST; + case TextureFilterMode::NearestMipmapLinear: return SG_FILTER_NEAREST_MIPMAP_LINEAR; + case TextureFilterMode::LinearMipmapNearest: return SG_FILTER_LINEAR_MIPMAP_NEAREST; + case TextureFilterMode::LinearMipmapLinear: return SG_FILTER_LINEAR_MIPMAP_LINEAR; + default: return _SG_FILTER_DEFAULT; + } +} + +//------------------------------------------------------------------------------ +static sg_wrap convertWrap(TextureWrapMode::Code w) { + switch (w) { + case TextureWrapMode::ClampToEdge: return SG_WRAP_CLAMP_TO_EDGE; + case TextureWrapMode::Repeat: return SG_WRAP_REPEAT; + case TextureWrapMode::MirroredRepeat: return SG_WRAP_MIRRORED_REPEAT; + default: return _SG_WRAP_DEFAULT; + } +} + //------------------------------------------------------------------------------ sokolGfxBackend::~sokolGfxBackend() { o_assert(!this->isValid); @@ -456,6 +490,7 @@ bool sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { o_assert_dbg(this->isValid); // FIXME + o_error("sokolGfxBackend::QueryFeature FIXME!\n"); return false; } @@ -498,7 +533,7 @@ sokolGfxBackend::PopResourceLabel() { Id sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int dataSize) { o_assert_dbg(this->isValid); - o_assert_dbg((setup.Size+setup.Offset) <= dataSize); + o_assert_dbg((data == nullptr) || (setup.Size+setup.Offset) <= dataSize); sg_buffer_desc sgDesc = { }; sgDesc.size = setup.Size; sgDesc.type = convertBufferType(setup.Type); @@ -523,8 +558,42 @@ sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int da Id sokolGfxBackend::CreateTexture(const TextureSetup& setup, const void* data, int size) { o_assert_dbg(this->isValid); - // FIXME - return Id::InvalidId(); + sg_image_desc sgDesc = { }; + sgDesc.type = convertTextureType(setup.Type); + sgDesc.render_target = setup.IsRenderTarget; + sgDesc.width = setup.Width; + sgDesc.height = setup.Height; + sgDesc.depth = setup.Depth; + sgDesc.num_mipmaps = setup.NumMipMaps; + sgDesc.usage = convertUsage(setup.TextureUsage); + sgDesc.pixel_format = convertPixelFormat(setup.ColorFormat); + sgDesc.sample_count = setup.SampleCount; + sgDesc.min_filter = convertFilter(setup.Sampler.MinFilter); + sgDesc.mag_filter = convertFilter(setup.Sampler.MagFilter); + sgDesc.wrap_u = convertWrap(setup.Sampler.WrapU); + sgDesc.wrap_v = convertWrap(setup.Sampler.WrapV); + sgDesc.wrap_w = convertWrap(setup.Sampler.WrapW); + o_assert_dbg(setup.ImageData.NumFaces <= SG_CUBEFACE_NUM); + o_assert_dbg(setup.ImageData.NumMipMaps <= SG_MAX_MIPMAPS); + for (int f = 0; f < setup.ImageData.NumFaces; f++) { + for (int m = 0; m < setup.ImageData.NumMipMaps; m++) { + sgDesc.content.subimage[f][m].ptr = (uint8_t*)data + setup.ImageData.Offsets[f][m]; + sgDesc.content.subimage[f][m].size = setup.ImageData.Sizes[f][m]; + } + } + o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); + #if ORYOL_OPENGL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + sgDesc.gl_textures[i] = (uint32_t) setup.NativeTextures[i]; + } + #elif ORYOL_METAL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + sgDesc.mtl_buffers[i] = (const void*) setup.NativeTextures[i]; + } + #elif ORYOL_D3D11 + sgDesc.d3d11_buffer = (const void*) setup.NativeTextures[0] + #endif + return makeId(GfxResourceType::Texture, sg_make_image(&sgDesc).id); } //------------------------------------------------------------------------------ @@ -574,11 +643,11 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { sgDesc.fs.entry = setup.FragmentShaderFunc(slang).AsCStr(); } - // uniform blocks + // uniform block declarations int vsUbIndex = 0, fsUbIndex = 0; for (int i = 0; i < setup.NumUniformBlocks(); i++) { sg_shader_uniform_block_desc* ubDesc; - if (setup.UniformBlockBindSlot(i) == ShaderStage::VS) { + if (setup.UniformBlockBindStage(i) == ShaderStage::VS) { o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); ubDesc = &sgDesc.vs.uniform_blocks[vsUbIndex++]; } @@ -594,6 +663,22 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { ubDesc->uniforms[0].array_count = ubDesc->size / 16; } + // texture declarations + int vsImgIndex = 0, fsImgIndex = 0; + for (int i = 0; i < setup.NumTextures(); i++) { + sg_shader_image_desc* imgDesc; + if (setup.TexBindStage(i) == ShaderStage::VS) { + o_assert_dbg(vsImgIndex < SG_MAX_SHADERSTAGE_IMAGES); + imgDesc = &sgDesc.vs.images[vsImgIndex++]; + } + else { + o_assert_dbg(fsImgIndex < SG_MAX_SHADERSTAGE_IMAGES); + imgDesc = &sgDesc.fs.images[fsImgIndex++]; + } + imgDesc->type = convertTextureType(setup.TexType(i)); + imgDesc->name = setup.TexName(i).AsCStr(); + } + return makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); } @@ -645,7 +730,7 @@ sokolGfxBackend::DestroyResources(ResourceLabel label) { void sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { o_assert_dbg(this->isValid); - // FIXME + sg_update_buffer(makeBufferId(id), data, numBytes); } //------------------------------------------------------------------------------ diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index 9d02c4ffe..39e5ed2fc 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -27,7 +27,7 @@ class PrimitiveTypesApp : public App { static const int NumTriangleIndices = (NumX-1) * (NumY-1) * 3; static const int NumTriStripIndices = (NumX-1)*(NumY-1)*2 + (NumY-1)*2; - StaticArray drawStates; + StaticArray drawStates; int curPrimType = 0; glm::mat4 view; glm::mat4 proj; @@ -39,24 +39,19 @@ OryolMain(PrimitiveTypesApp); //------------------------------------------------------------------------------ Id -createIndexMesh(int numIndices, const void* data, int dataSize) { - auto setup = MeshSetup::FromData(Usage::InvalidUsage, Usage::Immutable); - setup.NumVertices = 0; - setup.NumIndices = numIndices; - setup.IndicesType = IndexType::Index16; - setup.VertexDataOffset = InvalidIndex; - setup.IndexDataOffset = 0; +createIndexBuffer(const uint16_t* data, int dataSize) { + auto setup = BufferSetup::Make(dataSize, BufferType::IndexBuffer, Usage::Immutable); return Gfx::CreateResource(setup, data, dataSize); } //------------------------------------------------------------------------------ Id -createPipeline(PrimitiveType::Code primType, int layoutSlot, const VertexLayout& layout, Id shd, int sampleCount) { - auto pipSetup = PipelineSetup::FromShader(shd); +createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const VertexLayout& layout, Id shd, int sampleCount) { + auto pipSetup = PipelineSetup::FromShaderAndLayout(shd, layout); pipSetup.DepthStencilState.DepthWriteEnabled = true; pipSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; pipSetup.RasterizerState.SampleCount = sampleCount; - pipSetup.Layouts[layoutSlot] = layout; + pipSetup.IndexType = indexType; pipSetup.PrimType = primType; return Gfx::CreateResource(pipSetup); } @@ -73,10 +68,10 @@ PrimitiveTypesApp::OnInit() { // with different index buffers MeshBuilder meshBuilder; meshBuilder.NumVertices = NumVertices; - meshBuilder.IndicesType = IndexType::None; + meshBuilder.IndexType = IndexType::None; meshBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::UByte4N } + { "position", VertexFormat::Float3 }, + { "color0", VertexFormat::UByte4N } }; meshBuilder.Begin(); const float dx = 1.0f / NumX; @@ -85,15 +80,16 @@ PrimitiveTypesApp::OnInit() { const float yOffset = -dy * (NumY/2); for (int y = 0, vi=0; y < NumY; y++) { for (int x = 0; x < NumX; x++, vi++) { - meshBuilder.Vertex(vi, VertexAttr::Position, x*dx+xOffset, y*dy+yOffset, 0.0f); + meshBuilder.Vertex(vi, 0, x*dx+xOffset, y*dy+yOffset, 0.0f); switch (vi % 3) { - case 0: meshBuilder.Vertex(vi, VertexAttr::Color0, 1.0f, 0.0f, 0.0f, 1.0f); break; - case 1: meshBuilder.Vertex(vi, VertexAttr::Color0, 0.0f, 1.0f, 0.0f, 1.0f); break; - default: meshBuilder.Vertex(vi, VertexAttr::Color0, 1.0f, 1.0f, 0.0f, 1.0f); break; + case 0: meshBuilder.Vertex(vi, 1, 1.0f, 0.0f, 0.0f, 1.0f); break; + case 1: meshBuilder.Vertex(vi, 1, 0.0f, 1.0f, 0.0f, 1.0f); break; + default: meshBuilder.Vertex(vi, 1, 1.0f, 1.0f, 0.0f, 1.0f); break; } } } - Id vertexMesh = Gfx::CreateResource(meshBuilder.Build()); + auto meshResult = meshBuilder.Build(); + Id vbuf = Gfx::CreateResource(meshResult.VertexBufferSetup, meshResult.Data); // a single shader used by all pipeline objects Id shd = Gfx::CreateResource(Shader::Setup()); @@ -104,8 +100,8 @@ PrimitiveTypesApp::OnInit() { // point list (only need a pipeline object, no index buffer) { auto& ds = this->drawStates[PrimitiveType::Points]; - ds.Pipeline = createPipeline(PrimitiveType::Points, 0, meshBuilder.Layout, shd, gfxSetup.SampleCount); - ds.Mesh[0] = vertexMesh; + ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.VertexBuffers[0] = vbuf; } // line list index buffer mesh and pipeline state @@ -124,9 +120,9 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Lines]; - ds.Pipeline = createPipeline(PrimitiveType::Lines, 1, meshBuilder.Layout, shd, gfxSetup.SampleCount); - ds.Mesh[0] = createIndexMesh(numIndices, &indices[0], numIndices*2); - ds.Mesh[1] = vertexMesh; + ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.VertexBuffers[0] = vbuf; + ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } // line-strip index buffer mesh and pipeline state @@ -143,9 +139,9 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::LineStrip]; - ds.Pipeline = createPipeline(PrimitiveType::LineStrip, 1, meshBuilder.Layout, shd, gfxSetup.SampleCount); - ds.Mesh[0] = createIndexMesh(numIndices, &indices[0], numIndices*2); - ds.Mesh[1] = vertexMesh; + ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.VertexBuffers[0] = vbuf; + ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } // triangle-list index buffer and pipeline state @@ -166,9 +162,9 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Triangles]; - ds.Pipeline = createPipeline(PrimitiveType::Triangles, 1, meshBuilder.Layout, shd, gfxSetup.SampleCount); - ds.Mesh[0] = createIndexMesh(numIndices, &indices[0], numIndices*2); - ds.Mesh[1] = vertexMesh; + ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.VertexBuffers[0] = vbuf; + ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } // triangle-strip index buffer and pipeline state @@ -191,9 +187,9 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::TriangleStrip]; - ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, 1, meshBuilder.Layout, shd, gfxSetup.SampleCount); - ds.Mesh[0] = createIndexMesh(numIndices, &indices[0], numIndices*2); - ds.Mesh[1] = vertexMesh; + ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.VertexBuffers[0] = vbuf; + ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -231,7 +227,7 @@ PrimitiveTypesApp::OnRunning() { if (num > 0) { Gfx::ApplyDrawState(this->drawStates[this->curPrimType]); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(PrimitiveGroup(0, num)); + Gfx::Draw(0, num); } // handle input @@ -260,12 +256,12 @@ PrimitiveTypesApp::OnRunning() { } if (Input::MouseAttached()) { if (Input::MouseButtonDown(MouseButton::Left)) { - this->curPrimType = (this->curPrimType + 1) % PrimitiveType::NumPrimitiveTypes; + this->curPrimType = (this->curPrimType + 1) % PrimitiveType::Num; } } if (Input::TouchpadAttached()) { if (Input::TouchTapped()) { - this->curPrimType = (this->curPrimType + 1) % PrimitiveType::NumPrimitiveTypes; + this->curPrimType = (this->curPrimType + 1) % PrimitiveType::Num; } } @@ -273,7 +269,7 @@ PrimitiveTypesApp::OnRunning() { Dbg::TextColor(0.0f, 1.0f, 0.0f, 1.0f); Dbg::PrintF("\n Point Size (left/right key to change): %d\n\r", int(this->params.psize)); Dbg::Print(" Keys 1..5, left mouse button, or touch-tap to change primitive type\n\n\r"); - for (int i = 0; i < int(PrimitiveType::NumPrimitiveTypes); i++) { + for (int i = 0; i < int(PrimitiveType::Num); i++) { if (i == this->curPrimType) { Dbg::TextColor(1.0f, 0.0f, 0.0f, 1.0f); } From 1bffb1e5980740e999f3813d1503c9e69d699a15 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 13 Jan 2018 11:07:25 +0100 Subject: [PATCH 15/91] Gfx: remove combined color/depth render target textures --- code/Modules/Gfx/GfxTypes.cc | 60 ++++++--------------- code/Modules/Gfx/GfxTypes.h | 25 +++------ code/Modules/Gfx/private/sokolGfxBackend.cc | 2 +- 3 files changed, 26 insertions(+), 61 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 2eaa6b2e6..7ccd6f091 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -565,23 +565,6 @@ int VertexLayout::ComponentByteOffset(int componentIndex) const { return this->comps[componentIndex].Offset; } -//------------------------------------------------------------------------------ -DisplayAttrs DisplayAttrs::FromTextureAttrs(const TextureAttrs& texAttrs) { - DisplayAttrs dispAttrs; - dispAttrs.WindowWidth = texAttrs.Width; - dispAttrs.WindowHeight = texAttrs.Height; - dispAttrs.WindowPosX = 0; - dispAttrs.WindowPosY = 0; - dispAttrs.FramebufferWidth = texAttrs.Width; - dispAttrs.FramebufferHeight = texAttrs.Height; - dispAttrs.ColorPixelFormat = texAttrs.ColorFormat; - dispAttrs.DepthPixelFormat = texAttrs.DepthFormat; - dispAttrs.SampleCount = texAttrs.SampleCount; - dispAttrs.Windowed = false; - dispAttrs.SwapInterval = 1; - return dispAttrs; -} - //------------------------------------------------------------------------------ ImageDataAttrs::ImageDataAttrs() { for (auto& offsets : this->Offsets) { @@ -888,7 +871,7 @@ TextureSetup TextureSetup::FromPixelData2D(int w, int h, int numMipMaps, PixelFo setup.Width = w; setup.Height = h; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.ImageData.NumFaces = 1; setup.ImageData.NumMipMaps = numMipMaps; return setup; @@ -905,7 +888,7 @@ TextureSetup TextureSetup::FromPixelDataCube(int w, int h, int numMipMaps, Pixel setup.Width = w; setup.Height = h; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.ImageData.NumFaces = 6; setup.ImageData.NumMipMaps = numMipMaps; return setup; @@ -923,7 +906,7 @@ TextureSetup TextureSetup::FromPixelData3D(int w, int h, int d, int numMipMaps, setup.Height = h; setup.Depth = d; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.ImageData.NumFaces = 1; setup.ImageData.NumMipMaps = numMipMaps; return setup; @@ -941,7 +924,7 @@ TextureSetup TextureSetup::FromPixelDataArray(int w, int h, int layers, int numM setup.Height = h; setup.Depth = layers; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.ImageData.NumFaces = 1; setup.ImageData.NumMipMaps = numMipMaps; return setup; @@ -958,7 +941,7 @@ TextureSetup TextureSetup::Empty2D(int w, int h, int numMipMaps, PixelFormat::Co setup.Width = w; setup.Height = h; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.TextureUsage = usage; return setup; } @@ -974,7 +957,7 @@ TextureSetup TextureSetup::EmptyCube(int w, int h, int numMipMaps, PixelFormat:: setup.Width = w; setup.Height = h; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.TextureUsage = usage; return setup; } @@ -991,7 +974,7 @@ TextureSetup TextureSetup::Empty3D(int w, int h, int d, int numMipMaps, PixelFor setup.Height = h; setup.Depth = d; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.TextureUsage = usage; return setup; } @@ -1008,43 +991,41 @@ TextureSetup TextureSetup::EmptyArray(int w, int h, int layers, int numMipMaps, setup.Height = h; setup.Depth = layers; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.TextureUsage = usage; return setup; } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTarget2D(int w, int h, PixelFormat::Code colorFmt, PixelFormat::Code depthFmt) { +TextureSetup TextureSetup::RenderTarget2D(int w, int h, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); TextureSetup setup; setup.Type = TextureType::Texture2D; setup.IsRenderTarget = true; setup.Width = w; setup.Height = h; - setup.ColorFormat = colorFmt; - setup.DepthFormat = depthFmt; + setup.Format = fmt; setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; return setup; } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTargetCube(int w, int h, PixelFormat::Code colorFmt, PixelFormat::Code depthFmt) { +TextureSetup TextureSetup::RenderTargetCube(int w, int h, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); TextureSetup setup; setup.Type = TextureType::TextureCube; setup.IsRenderTarget = true; setup.Width = w; setup.Height = h; - setup.ColorFormat = colorFmt; - setup.DepthFormat = depthFmt; + setup.Format = fmt; setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; return setup; } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTarget3D(int w, int h, int d, PixelFormat::Code colorFmt, PixelFormat::Code depthFmt) { +TextureSetup TextureSetup::RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); TextureSetup setup; setup.Type = TextureType::Texture3D; @@ -1052,15 +1033,14 @@ TextureSetup TextureSetup::RenderTarget3D(int w, int h, int d, PixelFormat::Code setup.Width = w; setup.Height = h; setup.Depth = d; - setup.ColorFormat = colorFmt; - setup.DepthFormat = depthFmt; + setup.Format = fmt; setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; return setup; } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTargetArray(int w, int h, int layers, PixelFormat::Code colorFmt, PixelFormat::Code depthFmt) { +TextureSetup TextureSetup::RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); TextureSetup setup; setup.Type = TextureType::TextureArray; @@ -1068,8 +1048,7 @@ TextureSetup TextureSetup::RenderTargetArray(int w, int h, int layers, PixelForm setup.Width = w; setup.Height = h; setup.Depth = layers; - setup.ColorFormat = colorFmt; - setup.DepthFormat = depthFmt; + setup.Format = fmt; setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; return setup; @@ -1087,7 +1066,7 @@ TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, Textu setup.Width = w; setup.Height = h; setup.NumMipMaps = numMipMaps; - setup.ColorFormat = fmt; + setup.Format = fmt; setup.TextureUsage = usage; setup.NativeTextures[0] = t0; setup.NativeTextures[1] = t1; @@ -1109,11 +1088,6 @@ bool TextureSetup::ShouldSetupEmpty() const { return this->setupEmpty; } -//------------------------------------------------------------------------------ -bool TextureSetup::HasDepth() const { - return this->DepthFormat != PixelFormat::Invalid; -} - //------------------------------------------------------------------------------ TextureSetup::TextureSetup() { NativeTextures.Fill(0); diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index c3f037171..250e7cbd8 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -800,10 +800,8 @@ struct TextureAttrs { class Locator Locator; /// the texture type (2D, 3D, cube...) TextureType::Code Type = TextureType::Invalid; - /// the RGBA pixel format of texture data - PixelFormat::Code ColorFormat = PixelFormat::Invalid; - /// optional depth format (only used for render target textures) - PixelFormat::Code DepthFormat = PixelFormat::Invalid; + /// the pixel format of texture data + PixelFormat::Code Format = PixelFormat::Invalid; /// optional sample count (only used for MSAA render target textures) int SampleCount = 1; /// texture usage hint @@ -818,8 +816,6 @@ struct TextureAttrs { int NumMipMaps = 1; /// true if this is a render target texture bool IsRenderTarget = false; - /// true if this render target texture has an attached depth buffer - bool HasDepthBuffer = false; }; //------------------------------------------------------------------------------ @@ -856,9 +852,6 @@ struct DisplayAttrs { int SwapInterval = 1; /// window title as UTF-8 String WindowTitle; - - /// init a DisplayAttrs object from a TextureAttrs object - static DisplayAttrs FromTextureAttrs(const TextureAttrs& texAttrs); }; //------------------------------------------------------------------------------ @@ -1215,13 +1208,13 @@ class TextureSetup { /// setup empty array texture static TextureSetup EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint=TextureSetup()); /// setup as 2D render target - static TextureSetup RenderTarget2D(int w, int h, PixelFormat::Code colorFmt=PixelFormat::RGBA8, PixelFormat::Code depthFmt=PixelFormat::None); + static TextureSetup RenderTarget2D(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup as cube render target - static TextureSetup RenderTargetCube(int w, int h, PixelFormat::Code colorFmt=PixelFormat::RGBA8, PixelFormat::Code depthFmt=PixelFormat::None); + static TextureSetup RenderTargetCube(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup as 3D render target - static TextureSetup RenderTarget3D(int w, int h, int d, PixelFormat::Code colorFmt=PixelFormat::RGBA8, PixelFormat::Code depthFmt=PixelFormat::None); + static TextureSetup RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup as array render target - static TextureSetup RenderTargetArray(int w, int h, int layers, PixelFormat::Code colorFmt=PixelFormat::RGBA8, PixelFormat::Code depthFmt=PixelFormat::None); + static TextureSetup RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup texture from existing native texture(s) (needs GfxFeature::NativeTexture) static TextureSetup FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t h0, intptr_t h1=0); /// return true if texture should be setup from raw pixel data @@ -1246,10 +1239,8 @@ class TextureSetup { int Depth = 1; /// number of mipmaps (default is 1, only for FromPixelData) int NumMipMaps = 1; - /// the color pixel format - PixelFormat::Code ColorFormat = PixelFormat::RGBA8; - /// the depth pixel format (only if render target, PixelFormat::None if render target should not have depth buffer) - PixelFormat::Code DepthFormat = PixelFormat::None; + /// the pixel format + PixelFormat::Code Format = PixelFormat::RGBA8; /// MSAA samples (2, 4, 8... no MSAA: 1), check MSAARenderTargets feature availability! int SampleCount = 1; /// sampler state diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 08e4f0d9f..fd0894a51 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -566,7 +566,7 @@ sokolGfxBackend::CreateTexture(const TextureSetup& setup, const void* data, int sgDesc.depth = setup.Depth; sgDesc.num_mipmaps = setup.NumMipMaps; sgDesc.usage = convertUsage(setup.TextureUsage); - sgDesc.pixel_format = convertPixelFormat(setup.ColorFormat); + sgDesc.pixel_format = convertPixelFormat(setup.Format); sgDesc.sample_count = setup.SampleCount; sgDesc.min_filter = convertFilter(setup.Sampler.MinFilter); sgDesc.mag_filter = convertFilter(setup.Sampler.MagFilter); From c2c286024ddd1b9ecb2d63f69733671242b01c95 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 13 Jan 2018 11:07:47 +0100 Subject: [PATCH 16/91] More sokol-gfx migration --- code/Samples/BlendTest/BlendTest.cc | 61 +++++++++---------- code/Samples/BlendTest/shaders.glsl | 15 +++-- .../SeparateBuffers/SeparateBuffers.cc | 51 ++++++++-------- code/Samples/SeparateBuffers/shaders.glsl | 8 +-- .../SimpleRenderTarget/SimpleRenderTarget.cc | 57 ++++++++++------- code/Samples/SimpleRenderTarget/shaders.glsl | 20 +++--- 6 files changed, 109 insertions(+), 103 deletions(-) diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index dc47d9b29..742bec7c3 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -16,8 +16,8 @@ class BlendTestApp : public App { AppState::Code OnCleanup(); DrawState bgDrawState; - Id triMesh; - Id pipelines[BlendFactor::NumBlendFactors][BlendFactor::NumBlendFactors]; + Id triVBuf; + Id pipelines[BlendFactor::Num][BlendFactor::Num]; TriShader::params params; }; OryolMain(BlendTestApp); @@ -31,44 +31,41 @@ BlendTestApp::OnInit() { Gfx::Setup(gfxSetup); // create pipeline object for a patterned background - auto ms = MeshSetup::FullScreenQuad(); - this->bgDrawState.Mesh[0] = Gfx::CreateResource(ms); + float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + auto bgBuf = BufferSetup::Make(sizeof(bgVertices)); + this->bgDrawState.VertexBuffers[0] = Gfx::CreateResource(bgBuf, bgVertices, sizeof(bgVertices)); Id bgShd = Gfx::CreateResource(BGShader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(ms.Layout, bgShd); + auto ps = PipelineSetup::FromShaderAndLayout(bgShd, { + { "in_pos", VertexFormat::Float2 } + }); + ps.PrimType = PrimitiveType::TriangleStrip; this->bgDrawState.Pipeline = Gfx::CreateResource(ps); // setup a triangle mesh and shader - MeshBuilder meshBuilder; - meshBuilder.NumVertices = 3; - meshBuilder.IndicesType = IndexType::None; - meshBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::Float4 } + float triVertices[] = { + // pos color + 0.0f, 0.05f, 0.5f, 0.7f, 0.0f, 0.0f, 0.75f, + 0.05f, -0.05f, 0.5f, 0.0f, 0.75f, 0.0f, 0.75f, + -0.05f, -0.05f, 0.5f, 0.0f, 0.0f, 0.75f, 0.75f }; - meshBuilder.PrimitiveGroups.Add(0, 3); - meshBuilder.Begin() - .Vertex(0, VertexAttr::Position, 0.0f, 0.05f, 0.5f) - .Vertex(0, VertexAttr::Color0, 0.75f, 0.0f, 0.0f, 0.75f) - .Vertex(1, VertexAttr::Position, 0.05f, -0.05f, 0.5f) - .Vertex(1, VertexAttr::Color0, 0.0f, 0.75f, 0.0f, 0.75f) - .Vertex(2, VertexAttr::Position, -0.05f, -0.05f, 0.5f) - .Vertex(2, VertexAttr::Color0, 0.0f, 0.0f, 0.75f, 0.75f); - this->triMesh = Gfx::CreateResource(meshBuilder.Build()); - Id shd = Gfx::CreateResource(TriShader::Setup()); - + this->triVBuf = Gfx::CreateResource(BufferSetup::Make(sizeof(triVertices)), triVertices, sizeof(triVertices)); + // setup one draw state for each blend factor combination - ps = PipelineSetup::FromLayoutAndShader(meshBuilder.Layout, shd); + Id shd = Gfx::CreateResource(TriShader::Setup()); + ps = PipelineSetup::FromShaderAndLayout(shd, { + { "in_pos", VertexFormat::Float3 }, + { "in_color", VertexFormat::Float4 } + }); ps.BlendState.BlendEnabled = true; ps.BlendColor = glm::vec4(1.0f, 1.0f, 0.0f, 1.0f); ps.BlendState.ColorWriteMask = PixelChannel::RGB; - for (uint32_t y = 0; y < BlendFactor::NumBlendFactors; y++) { - for (uint32_t x = 0; x < BlendFactor::NumBlendFactors; x++) { + for (uint32_t y = 0; y < BlendFactor::Num; y++) { + for (uint32_t x = 0; x < BlendFactor::Num; x++) { ps.BlendState.SrcFactorRGB = (BlendFactor::Code) x; ps.BlendState.DstFactorRGB = (BlendFactor::Code) y; this->pipelines[y][x] = Gfx::CreateResource(ps); } } - return App::OnInit(); } @@ -79,20 +76,20 @@ BlendTestApp::OnRunning() { // draw checkboard background Gfx::BeginPass(); Gfx::ApplyDrawState(this->bgDrawState); - Gfx::Draw(); + Gfx::Draw(0, 4); // draw blended triangles DrawState triDrawState; - triDrawState.Mesh[0] = this->triMesh; - float d = 1.0f / BlendFactor::NumBlendFactors; - for (uint32_t y = 0; y < BlendFactor::NumBlendFactors; y++) { - for (uint32_t x = 0; x < BlendFactor::NumBlendFactors; x++) { + triDrawState.VertexBuffers[0] = this->triVBuf; + float d = 1.0f / BlendFactor::Num; + for (uint32_t y = 0; y < BlendFactor::Num; y++) { + for (uint32_t x = 0; x < BlendFactor::Num; x++) { this->params.translate.x = ((d * x) + d*0.5f) * 2.0f - 1.0f; this->params.translate.y = ((d * y) + d*0.5f) * 2.0f - 1.0f; triDrawState.Pipeline = this->pipelines[y][x]; Gfx::ApplyDrawState(triDrawState); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(); + Gfx::Draw(0, 3); } } Gfx::EndPass(); diff --git a/code/Samples/BlendTest/shaders.glsl b/code/Samples/BlendTest/shaders.glsl index 50e4401fb..6ad84c797 100644 --- a/code/Samples/BlendTest/shaders.glsl +++ b/code/Samples/BlendTest/shaders.glsl @@ -2,13 +2,12 @@ // background shader // @vs backgroundVS -in vec4 position; -in vec2 texcoord0; +in vec2 in_pos; out vec2 uv0; void main() { - gl_Position = position; - uv0 = texcoord0; + gl_Position = vec4(in_pos*2.0-1.0, 0.5f, 1.0f); + uv0 = in_pos; } @end @@ -30,13 +29,13 @@ void main() { uniform params { vec4 translate; }; -in vec4 position; -in vec4 color0; +in vec4 in_pos; +in vec4 in_color; out vec4 color; void main() { - gl_Position = position + translate; - color = color0; + gl_Position = in_pos + translate; + color = in_color; } @end diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index f9f25b997..d2a8adeaf 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -27,8 +27,9 @@ class SeparateBuffersApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - static const int NumColorMeshes = 3; - StaticArray colorMesh; + static const int NumColorBuffer = 3; + ShapeBuilder::Result cubeShape; + StaticArray colorBuffers; DrawState drawState; Shader::params params; glm::mat4 view; @@ -47,35 +48,33 @@ SeparateBuffersApp::OnInit() { // create a cube mesh with positions only, this will be placed // into the first vertex buffer bind slot - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - }; - auto cubeSetupAndData = shapeBuilder.Box(1.0f, 1.0f, 1.0f, 1).Build(); - this->drawState.Mesh[0] = Gfx::CreateResource(cubeSetupAndData); + ShapeBuilder shapeBuilder; + this->cubeShape = shapeBuilder + .AddPositions("in_pos", VertexFormat::Float3) + .Box(1.0f, 1.0f, 1.0f, 1) + .Build(); + this->drawState.VertexBuffers[0] = Gfx::CreateResource(this->cubeShape.VertexBufferSetup, this->cubeShape.Data); + this->drawState.IndexBuffer = Gfx::CreateResource(this->cubeShape.IndexBufferSetup, this->cubeShape.Data); // create 3 meshes with only color data - auto colorSetup = MeshSetup::FromData(); - colorSetup.Layout = { - { VertexAttr::Color0, VertexFormat::Float3 } - }; - static const int NumVertices = 24; - o_assert(cubeSetupAndData.Setup.NumVertices == NumVertices); - colorSetup.NumVertices = NumVertices; - for (int i = 0; i < NumColorMeshes; i++) { - float colorVertices[NumVertices][NumColorMeshes] = { }; - for (int vi = 0; vi < NumVertices; vi++) { - colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); - } - this->colorMesh[i] = Gfx::CreateResource(colorSetup, colorVertices, sizeof(colorVertices)); - } + static const int NumVertices = 24; + static const int NumColorChannels = 3; + float colorVertices[NumVertices][NumColorChannels]= { }; + auto colorSetup = BufferSetup::Make(sizeof(colorVertices)); + for (int i = 0; i < NumColorChannels; i++) { + for (int vi = 0; vi < NumVertices; vi++) { + colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); + } + this->colorBuffers[i] = Gfx::CreateResource(colorSetup, colorVertices, sizeof(colorVertices)); + } // create shader and pipeline, the position data vertex Layout // goes into the first slot, and the color data vertex layout into the second slot Id shd = Gfx::CreateResource(Shader::Setup()); auto ps = PipelineSetup::FromShader(shd); - ps.Layouts[0] = cubeSetupAndData.Setup.Layout; - ps.Layouts[1] = colorSetup.Layout; + ps.Layouts[0] = this->cubeShape.Layout; + ps.Layouts[1] = { { "in_color", VertexFormat::Float3 } }; + ps.IndexType = this->cubeShape.IndexType; ps.DepthStencilState.DepthWriteEnabled = true; ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; ps.RasterizerState.SampleCount = gfxSetup.SampleCount; @@ -105,11 +104,11 @@ SeparateBuffersApp::OnRunning() { for (int i = 0; i < 3; i++) { // switch to the next color data buffer, but keep the // same position data buffer - this->drawState.Mesh[1] = this->colorMesh[i]; + this->drawState.VertexBuffers[1] = this->colorBuffers[i]; Gfx::ApplyDrawState(this->drawState); this->params.mvp = this->computeMVP(positions[i]); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(); + Gfx::Draw(this->cubeShape.PrimitiveGroups[0]); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/SeparateBuffers/shaders.glsl b/code/Samples/SeparateBuffers/shaders.glsl index c687e4610..ffe85825a 100644 --- a/code/Samples/SeparateBuffers/shaders.glsl +++ b/code/Samples/SeparateBuffers/shaders.glsl @@ -3,13 +3,13 @@ uniform params { mat4 mvp; }; -in vec4 position; -in vec3 color0; +in vec4 in_pos; +in vec3 in_color; out vec3 color; void main() { - gl_Position = mvp * position; - color = color0; + gl_Position = mvp * in_pos; + color = in_color; } @end diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 39840c570..43a760682 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -19,7 +19,9 @@ class SimpleRenderTargetApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::mat4& proj, float rotX, float rotY, const glm::vec3& pos); - + + ShapeBuilder::Result donutShape; + ShapeBuilder::Result sphereShape; Id renderPass; DrawState offscreenDrawState; DrawState displayDrawState; @@ -41,9 +43,8 @@ SimpleRenderTargetApp::OnInit() { gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.25f, 0.45f, 0.65f, 1.0f)); Gfx::Setup(gfxSetup); - // create an offscreen render pass object with a single color attachment - // texture, we explicitly want repeat texture wrap mode and linear blending... - auto rtSetup = TextureSetup::RenderTarget2D(128, 128, PixelFormat::RGBA8, PixelFormat::DEPTH); + // create an offscreen render pass object with a color-attachment and depth-attachment + auto rtSetup = TextureSetup::RenderTarget2D(128, 128, PixelFormat::RGBA8); rtSetup.Sampler.WrapU = TextureWrapMode::Repeat; rtSetup.Sampler.WrapV = TextureWrapMode::Repeat; rtSetup.Sampler.MagFilter = TextureFilterMode::Linear; @@ -53,24 +54,30 @@ SimpleRenderTargetApp::OnInit() { rtSetup.SampleCount = 4; Log::Info("Using MSAA4 render target\n"); } - Id rtTexture = Gfx::CreateResource(rtSetup); - auto rpSetup = PassSetup::From(rtTexture, rtTexture); + Id colorTexture = Gfx::CreateResource(rtSetup); + rtSetup.Format = PixelFormat::Depth; + Id depthTexture = Gfx::CreateResource(rtSetup); + auto rpSetup = PassSetup::From(colorTexture, depthTexture); rpSetup.DefaultAction = PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f)); this->renderPass = Gfx::CreateResource(rpSetup); // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Byte4N } - }; - shapeBuilder.Torus(0.3f, 0.5f, 20, 36); - this->offscreenDrawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); + ShapeBuilder shapeBuilder; + this->donutShape = shapeBuilder + .AddPositions("in_pos", VertexFormat::Float3) + .AddNormals("in_normal", VertexFormat::Byte4N) + .Torus(0.3f, 0.5f, 20, 36) + .Build(); + this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateResource( + this->donutShape.VertexBufferSetup, this->donutShape.Data); + this->offscreenDrawState.IndexBuffer = Gfx::CreateResource( + this->donutShape.IndexBufferSetup, this->donutShape.Data); // create shader and pipeline-state-object for offscreen rendering Id offScreenShader = Gfx::CreateResource(OffscreenShader::Setup()); - auto offpsSetup = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, offScreenShader); + auto offpsSetup = PipelineSetup::FromShaderAndLayout(offScreenShader, this->donutShape.Layout); + offpsSetup.IndexType = this->donutShape.IndexType; offpsSetup.DepthStencilState.DepthWriteEnabled = true; offpsSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; offpsSetup.BlendState.ColorFormat = rtSetup.ColorFormat; @@ -78,17 +85,21 @@ SimpleRenderTargetApp::OnInit() { offpsSetup.RasterizerState.SampleCount = rtSetup.SampleCount; this->offscreenDrawState.Pipeline = Gfx::CreateResource(offpsSetup); - // create a sphere mesh, shader and pipeline object for rendering to display - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Byte4N }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Sphere(0.5f, 72, 40); - this->displayDrawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); + // create a sphere mesh, shader and pipeline object for rendering to display + this->sphereShape = shapeBuilder + .AddPositions("in_pos", VertexFormat::Float3) + .AddNormals("in_normal", VertexFormat::Byte4N) + .AddTexCoords("in_uv", VertexFormat::Float2) + .Sphere(0.5f, 72, 40) + .Build(); + this->displayDrawState.VertexBuffers[0] = Gfx::CreateResource( + this->sphereShape.VertexBufferSetup, this->sphereShape.Data); + this->displayDrawState.IndexBuffer = Gfx::CreateResource( + this->sphereShape.IndexBufferSetup, this->sphereShape.Data); Id dispShader = Gfx::CreateResource(DisplayShader::Setup()); - auto disppsSetup = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, dispShader); + auto disppsSetup = PipelineSetup::FromShaderAndLayout(dispShader, this->sphereShape.Layout); + disppsSetup.IndexType = IndexType::UInt16; disppsSetup.DepthStencilState.DepthWriteEnabled = true; disppsSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; disppsSetup.RasterizerState.SampleCount = gfxSetup.SampleCount; diff --git a/code/Samples/SimpleRenderTarget/shaders.glsl b/code/Samples/SimpleRenderTarget/shaders.glsl index 313e2ecbd..56fc8c3f7 100644 --- a/code/Samples/SimpleRenderTarget/shaders.glsl +++ b/code/Samples/SimpleRenderTarget/shaders.glsl @@ -6,13 +6,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 normal; +in vec4 in_pos; +in vec4 in_normal; out vec4 nrm; void main() { - gl_Position = mvp * position; - nrm = normal; + gl_Position = mvp * in_pos; + nrm = in_normal; } @end @@ -34,16 +34,16 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 normal; -in vec2 texcoord0; +in vec4 in_pos; +in vec4 in_normal; +in vec2 in_uv; out vec2 uv; out vec4 nrm; void main() { - gl_Position = mvp * position; - uv = texcoord0; - nrm = normalize(mvp * normal); + gl_Position = mvp * in_pos; + uv = in_uv; + nrm = normalize(mvp * in_normal); } @end From 2aa6d6968f0cf8f5325dd5d00af52d9eae49558d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 14 Jan 2018 14:56:11 +0100 Subject: [PATCH 17/91] Make resource creation more convenient with separate builder classes --- code/Modules/Gfx/Gfx.cc | 50 +++--- code/Modules/Gfx/Gfx.h | 50 +++--- code/Modules/Gfx/GfxTypes.cc | 147 +++++++---------- code/Modules/Gfx/GfxTypes.h | 173 ++++++++++++++------ code/Modules/Gfx/private/sokolGfxBackend.cc | 134 +++++++-------- code/Modules/Gfx/private/sokolGfxBackend.h | 20 +-- code/Samples/Quad/Quad.cc | 32 ++-- code/Samples/Triangle/Triangle.cc | 21 ++- fips-generators/Shader.py | 26 +-- 9 files changed, 342 insertions(+), 311 deletions(-) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 30ce8c55b..c67e2a585 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -304,61 +304,61 @@ Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { } //------------------------------------------------------------------------------ -template<> Id -Gfx::CreateResource(const TextureSetup& setup, const void* data, int size) { +Id +Gfx::CreateTexture(const TextureDesc& desc, const void* data, int size) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(setup.Locator); + Id resId = state->backend.LookupResource(desc.Locator); if (!resId.IsValid()) { - resId = state->backend.CreateTexture(setup, data, size); - state->backend.AddResource(setup.Locator, resId); + resId = state->backend.CreateTexture(desc, data, size); + state->backend.AddResource(desc.Locator, resId); } return resId; } //------------------------------------------------------------------------------ -template<> Id -Gfx::CreateResource(const BufferSetup& setup, const void* data, int size) { +Id +Gfx::CreateBuffer(const BufferDesc& desc, const void* data, int size) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(setup.Locator); + Id resId = state->backend.LookupResource(desc.Locator); if (!resId.IsValid()) { - resId = state->backend.CreateBuffer(setup, data, size); - state->backend.AddResource(setup.Locator, resId); + resId = state->backend.CreateBuffer(desc, data, size); + state->backend.AddResource(desc.Locator, resId); } return resId; } //------------------------------------------------------------------------------ -template<> Id -Gfx::CreateResource(const ShaderSetup& setup) { +Id +Gfx::CreateShader(const ShaderDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(setup.Locator); + Id resId = state->backend.LookupResource(desc.Locator); if (!resId.IsValid()) { - resId = state->backend.CreateShader(setup); - state->backend.AddResource(setup.Locator, resId); + resId = state->backend.CreateShader(desc); + state->backend.AddResource(desc.Locator, resId); } return resId; } //------------------------------------------------------------------------------ -template<> Id -Gfx::CreateResource(const PipelineSetup& setup) { +Id +Gfx::CreatePipeline(const PipelineDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(setup.Locator); + Id resId = state->backend.LookupResource(desc.Locator); if (!resId.IsValid()) { - resId = state->backend.CreatePipeline(setup); - state->backend.AddResource(setup.Locator, resId); + resId = state->backend.CreatePipeline(desc); + state->backend.AddResource(desc.Locator, resId); } return resId; } //------------------------------------------------------------------------------ -template<> Id -Gfx::CreateResource(const PassSetup& setup) { +Id +Gfx::CreatePass(const PassDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(setup.Locator); + Id resId = state->backend.LookupResource(desc.Locator); if (!resId.IsValid()) { - resId = state->backend.CreatePass(setup); - state->backend.AddResource(setup.Locator, resId); + resId = state->backend.CreatePass(desc); + state->backend.AddResource(desc.Locator, resId); } return resId; } diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 680b209ec..a96cac249 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -55,15 +55,25 @@ class Gfx { /// push explicit resource label on label stack static void PushResourceLabel(ResourceLabel label); /// pop resource label from label stack - static ResourceLabel PopResourceLabel(); - /// create a resource object without associated data - template static Id CreateResource(const SETUP& setup); - /// create a resource object with associated data - template static Id CreateResource(const SetupAndData& setupAndData); - /// create a resource object with associated data - template static Id CreateResource(const SETUP& setup, const Buffer& data); - /// create a resource object with raw pointer to associated data - template static Id CreateResource(const SETUP& setup, const void* data, int size); + static ResourceLabel PopResourceLabel(); + /// create a buffer object without associated data + static Id CreateBuffer(const BufferDesc& desc); + /// create a buffer object with associated data + static Id CreateBuffer(const BufferDesc& setup, const Buffer& data); + /// create a buffer object with raw pointer to associated data + static Id CreateBuffer(const BufferDesc& setup, const void* data, int size); + /// create a texture object without associated data + static Id CreateTexture(const TextureDesc& desc); + /// create a texture object with associated data + static Id CreateTexture(const TextureDesc& setup, const Buffer& data); + /// create a texture object with raw pointer to associated data + static Id CreateTexture(const TextureDesc& setup, const void* data, int size); + /// create a shader object + static Id CreateShader(const ShaderDesc& desc); + /// create a pipeline object + static Id CreatePipeline(const PipelineDesc& desc); + /// create a render-pass object + static Id CreatePass(const PassDesc& desc); /// lookup a resource Id by Locator static Id LookupResource(const Locator& locator); /// destroy one or several resources by matching label @@ -122,26 +132,4 @@ Gfx::ApplyUniformBlock(const T& ub) { applyUniformBlock(T::_bindShaderStage, T::_bindSlotIndex, (const uint8_t*)&ub, sizeof(ub)); } -//------------------------------------------------------------------------------ -template inline Id -Gfx::CreateResource(const SETUP& setup) { - o_assert_dbg(IsValid()); - return CreateResource(setup, nullptr, 0); -} - -//------------------------------------------------------------------------------ -template inline Id -Gfx::CreateResource(const SETUP& setup, const Buffer& data) { - o_assert_dbg(IsValid()); - o_assert_dbg(!data.Empty()); - return CreateResource(setup, data.Data(), data.Size()); -} - -//------------------------------------------------------------------------------ -template inline Id -Gfx::CreateResource(const SetupAndData& setupAndData) { - o_assert_dbg(IsValid()); - return CreateResource(setupAndData.Setup, setupAndData.Data); -} - } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 7ccd6f091..2c1906f58 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -648,49 +648,16 @@ GfxSetup::GfxSetup() { } //------------------------------------------------------------------------------ -BufferSetup::BufferSetup() { - this->NativeBuffers.Fill(0); -} - -//------------------------------------------------------------------------------ -BufferSetup -BufferSetup::Make(int size, BufferType::Code type, Usage::Code usage) { - o_assert_dbg(size > 0); - BufferSetup setup; - setup.Size = size; - setup.Type = type; - setup.Usage = usage; - return setup; -} - -//------------------------------------------------------------------------------ -PipelineSetup PipelineSetup::FromShader(const Id& shd) { - o_assert_dbg(shd.IsValid()); - PipelineSetup setup; - setup.Shader = shd; - return setup; -} - -//------------------------------------------------------------------------------ -PipelineSetup PipelineSetup::FromShaderAndLayout(const Id& shd, const VertexLayout& layout) { - o_assert_dbg(!layout.Empty() && shd.IsValid()); - PipelineSetup setup; - setup.Layouts[0] = layout; - setup.Shader = shd; - return setup; -} - -//------------------------------------------------------------------------------ -PassSetup PassSetup::From(Id colorTexture, Id depthStencilTexture) { - PassSetup setup; +PassDesc PassDesc::From(Id colorTexture, Id depthStencilTexture) { + PassDesc setup; setup.ColorAttachments[0].Texture = colorTexture; setup.DepthStencilTexture = depthStencilTexture; return setup; } //------------------------------------------------------------------------------ -PassSetup PassSetup::From(std::initializer_list colorTextures, Id depthStencilTexture) { - PassSetup setup; +PassDesc PassDesc::From(std::initializer_list colorTextures, Id depthStencilTexture) { + PassDesc setup; int i = 0; for (const auto& id : colorTextures) { setup.ColorAttachments[i++].Texture = id; @@ -700,14 +667,14 @@ PassSetup PassSetup::From(std::initializer_list colorTextures, Id depthStenc } //------------------------------------------------------------------------------ -void ShaderSetup::SetProgramFromSources(ShaderLang::Code slang, const String& vsSource, const String& fsSource) { +void ShaderDesc::SetProgramFromSources(ShaderLang::Code slang, const String& vsSource, const String& fsSource) { o_assert_dbg(vsSource.IsValid() && fsSource.IsValid()); this->program.vsSources[slang] = vsSource; this->program.fsSources[slang] = fsSource; } //------------------------------------------------------------------------------ -void ShaderSetup::SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* vsByteCode, uint32_t vsNumBytes, const uint8_t* fsByteCode, uint32_t fsNumBytes, const char* vsFunc, const char* fsFunc) { +void ShaderDesc::SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* vsByteCode, uint32_t vsNumBytes, const uint8_t* fsByteCode, uint32_t fsNumBytes, const char* vsFunc, const char* fsFunc) { o_assert_dbg(vsByteCode && (vsNumBytes > 0)); o_assert_dbg(fsByteCode && (fsNumBytes > 0)); this->program.vsByteCode[slang].ptr = vsByteCode; @@ -729,7 +696,7 @@ void ShaderSetup::SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* } //------------------------------------------------------------------------------ -void ShaderSetup::AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot) { +void ShaderDesc::AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot) { o_assert_dbg(type.IsValid()); o_assert_dbg(bindSlot >= 0); uniformBlockEntry& entry = this->uniformBlocks[this->numUniformBlocks++]; @@ -741,7 +708,7 @@ void ShaderSetup::AddUniformBlock(const StringAtom& type, const StringAtom& name } //------------------------------------------------------------------------------ -void ShaderSetup::AddTexture(const StringAtom& name, TextureType::Code type, ShaderStage::Code bindStage, int32_t bindSlot) { +void ShaderDesc::AddTexture(const StringAtom& name, TextureType::Code type, ShaderStage::Code bindStage, int32_t bindSlot) { o_assert_dbg(name.IsValid()); o_assert_dbg(bindSlot >= 0); textureEntry& entry = this->textures[this->numTextures++]; @@ -752,44 +719,44 @@ void ShaderSetup::AddTexture(const StringAtom& name, TextureType::Code type, Sha } //------------------------------------------------------------------------------ -const String& ShaderSetup::VertexShaderSource(ShaderLang::Code slang) const { +const String& ShaderDesc::VertexShaderSource(ShaderLang::Code slang) const { return this->program.vsSources[slang]; } //------------------------------------------------------------------------------ -const String& ShaderSetup::FragmentShaderSource(ShaderLang::Code slang) const { +const String& ShaderDesc::FragmentShaderSource(ShaderLang::Code slang) const { return this->program.fsSources[slang]; } //------------------------------------------------------------------------------ -void ShaderSetup::VertexShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const { +void ShaderDesc::VertexShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const { outPtr = this->program.vsByteCode[slang].ptr; outSize = this->program.vsByteCode[slang].size; } //------------------------------------------------------------------------------ -void ShaderSetup::FragmentShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const { +void ShaderDesc::FragmentShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const { outPtr = this->program.fsByteCode[slang].ptr; outSize = this->program.fsByteCode[slang].size; } //------------------------------------------------------------------------------ -const StringAtom& ShaderSetup::VertexShaderFunc(ShaderLang::Code slang) const { +const StringAtom& ShaderDesc::VertexShaderFunc(ShaderLang::Code slang) const { return this->program.vsFuncs[slang]; } //------------------------------------------------------------------------------ -const StringAtom& ShaderSetup::FragmentShaderFunc(ShaderLang::Code slang) const { +const StringAtom& ShaderDesc::FragmentShaderFunc(ShaderLang::Code slang) const { return this->program.fsFuncs[slang]; } //------------------------------------------------------------------------------ -int ShaderSetup::NumUniformBlocks() const { +int ShaderDesc::NumUniformBlocks() const { return this->numUniformBlocks; } //------------------------------------------------------------------------------ -int ShaderSetup::UniformBlockIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const { +int ShaderDesc::UniformBlockIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const { for (int i = 0; i < this->numUniformBlocks; i++) { const auto& entry = this->uniformBlocks[i]; if ((entry.bindStage == bindStage) && (entry.bindSlot == bindSlot)) { @@ -800,37 +767,37 @@ int ShaderSetup::UniformBlockIndexByStageAndSlot(ShaderStage::Code bindStage, in } //------------------------------------------------------------------------------ -const StringAtom& ShaderSetup::UniformBlockName(int index) const { +const StringAtom& ShaderDesc::UniformBlockName(int index) const { return this->uniformBlocks[index].name; } //------------------------------------------------------------------------------ -const StringAtom& ShaderSetup::UniformBlockType(int index) const { +const StringAtom& ShaderDesc::UniformBlockType(int index) const { return this->uniformBlocks[index].type; } //------------------------------------------------------------------------------ -uint32_t ShaderSetup::UniformBlockByteSize(int index) const { +uint32_t ShaderDesc::UniformBlockByteSize(int index) const { return this->uniformBlocks[index].byteSize; } //------------------------------------------------------------------------------ -ShaderStage::Code ShaderSetup::UniformBlockBindStage(int index) const { +ShaderStage::Code ShaderDesc::UniformBlockBindStage(int index) const { return this->uniformBlocks[index].bindStage; } //------------------------------------------------------------------------------ -int ShaderSetup::UniformBlockBindSlot(int index) const { +int ShaderDesc::UniformBlockBindSlot(int index) const { return this->uniformBlocks[index].bindSlot; } //------------------------------------------------------------------------------ -int ShaderSetup::NumTextures() const { +int ShaderDesc::NumTextures() const { return this->numTextures; } //------------------------------------------------------------------------------ -int ShaderSetup::TextureIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const { +int ShaderDesc::TextureIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const { for (int i = 0; i < this->numTextures; i++) { const auto& entry = this->textures[i]; if ((entry.bindStage == bindStage) && (entry.bindSlot == bindSlot)) { @@ -841,31 +808,31 @@ int ShaderSetup::TextureIndexByStageAndSlot(ShaderStage::Code bindStage, int bin } //------------------------------------------------------------------------------ -const StringAtom& ShaderSetup::TexName(int index) const { +const StringAtom& ShaderDesc::TexName(int index) const { return this->textures[index].name; } //------------------------------------------------------------------------------ -TextureType::Code ShaderSetup::TexType(int index) const { +TextureType::Code ShaderDesc::TexType(int index) const { return this->textures[index].type; } //------------------------------------------------------------------------------ -ShaderStage::Code ShaderSetup::TexBindStage(int index) const { +ShaderStage::Code ShaderDesc::TexBindStage(int index) const { return this->textures[index].bindStage; } //------------------------------------------------------------------------------ -int ShaderSetup::TexBindSlot(int index) const { +int ShaderDesc::TexBindSlot(int index) const { return this->textures[index].bindSlot; } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint) { +TextureDesc TextureDesc::FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupFromPixelData = true; setup.Type = TextureType::Texture2D; setup.Width = w; @@ -878,11 +845,11 @@ TextureSetup TextureSetup::FromPixelData2D(int w, int h, int numMipMaps, PixelFo } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromPixelDataCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint) { +TextureDesc TextureDesc::FromPixelDataCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupFromPixelData = true; setup.Type = TextureType::TextureCube; setup.Width = w; @@ -895,11 +862,11 @@ TextureSetup TextureSetup::FromPixelDataCube(int w, int h, int numMipMaps, Pixel } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromPixelData3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint) { +TextureDesc TextureDesc::FromPixelData3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0) && (d > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupFromPixelData = true; setup.Type = TextureType::Texture3D; setup.Width = w; @@ -913,11 +880,11 @@ TextureSetup TextureSetup::FromPixelData3D(int w, int h, int d, int numMipMaps, } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromPixelDataArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint) { +TextureDesc TextureDesc::FromPixelDataArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0) && (layers > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupFromPixelData = true; setup.Type = TextureType::TextureArray; setup.Width = w; @@ -931,11 +898,11 @@ TextureSetup TextureSetup::FromPixelDataArray(int w, int h, int layers, int numM } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::Empty2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint) { +TextureDesc TextureDesc::Empty2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupEmpty = true; setup.Type = TextureType::Texture2D; setup.Width = w; @@ -947,11 +914,11 @@ TextureSetup TextureSetup::Empty2D(int w, int h, int numMipMaps, PixelFormat::Co } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::EmptyCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint) { +TextureDesc TextureDesc::EmptyCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupEmpty = true; setup.Type = TextureType::TextureCube; setup.Width = w; @@ -963,11 +930,11 @@ TextureSetup TextureSetup::EmptyCube(int w, int h, int numMipMaps, PixelFormat:: } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::Empty3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint) { +TextureDesc TextureDesc::Empty3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0) && (d > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupEmpty = true; setup.Type = TextureType::Texture3D; setup.Width = w; @@ -980,11 +947,11 @@ TextureSetup TextureSetup::Empty3D(int w, int h, int d, int numMipMaps, PixelFor } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint) { +TextureDesc TextureDesc::EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { o_assert_dbg((w > 0) && (h > 0) && (layers > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureSetup setup(blueprint); + TextureDesc setup(blueprint); setup.setupEmpty = true; setup.Type = TextureType::TextureArray; setup.Width = w; @@ -997,9 +964,9 @@ TextureSetup TextureSetup::EmptyArray(int w, int h, int layers, int numMipMaps, } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTarget2D(int w, int h, PixelFormat::Code fmt) { +TextureDesc TextureDesc::RenderTarget2D(int w, int h, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); - TextureSetup setup; + TextureDesc setup; setup.Type = TextureType::Texture2D; setup.IsRenderTarget = true; setup.Width = w; @@ -1011,9 +978,9 @@ TextureSetup TextureSetup::RenderTarget2D(int w, int h, PixelFormat::Code fmt) { } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTargetCube(int w, int h, PixelFormat::Code fmt) { +TextureDesc TextureDesc::RenderTargetCube(int w, int h, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); - TextureSetup setup; + TextureDesc setup; setup.Type = TextureType::TextureCube; setup.IsRenderTarget = true; setup.Width = w; @@ -1025,9 +992,9 @@ TextureSetup TextureSetup::RenderTargetCube(int w, int h, PixelFormat::Code fmt) } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt) { +TextureDesc TextureDesc::RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); - TextureSetup setup; + TextureDesc setup; setup.Type = TextureType::Texture3D; setup.IsRenderTarget = true; setup.Width = w; @@ -1040,9 +1007,9 @@ TextureSetup TextureSetup::RenderTarget3D(int w, int h, int d, PixelFormat::Code } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt) { +TextureDesc TextureDesc::RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt) { o_assert_dbg((w > 0) && (h > 0)); - TextureSetup setup; + TextureDesc setup; setup.Type = TextureType::TextureArray; setup.IsRenderTarget = true; setup.Width = w; @@ -1055,12 +1022,12 @@ TextureSetup TextureSetup::RenderTargetArray(int w, int h, int layers, PixelForm } //------------------------------------------------------------------------------ -TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t t0, intptr_t t1) { +TextureDesc TextureDesc::FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t t0, intptr_t t1) { o_assert_dbg((w > 0) && (h > 0)); o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); o_assert((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); o_assert_dbg(t0 != 0); - TextureSetup setup; + TextureDesc setup; setup.setupFromNativeHandle = true; setup.Type = type; setup.Width = w; @@ -1074,22 +1041,22 @@ TextureSetup TextureSetup::FromNativeTexture(int w, int h, int numMipMaps, Textu } //------------------------------------------------------------------------------ -bool TextureSetup::ShouldSetupFromPixelData() const { +bool TextureDesc::ShouldSetupFromPixelData() const { return this->setupFromPixelData; } //------------------------------------------------------------------------------ -bool TextureSetup::ShouldSetupFromNativeTexture() const { +bool TextureDesc::ShouldSetupFromNativeTexture() const { return this->setupFromNativeHandle; } //------------------------------------------------------------------------------ -bool TextureSetup::ShouldSetupEmpty() const { +bool TextureDesc::ShouldSetupEmpty() const { return this->setupEmpty; } //------------------------------------------------------------------------------ -TextureSetup::TextureSetup() { +TextureDesc::TextureDesc() { NativeTextures.Fill(0); } diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 250e7cbd8..a27c78fa3 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -545,7 +545,8 @@ struct BlendState { PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; PixelFormat::Code ColorFormat = PixelFormat::RGBA8; PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; - int MRTCount = 1; + int MRTCount = 1; + glm::vec4 Color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); }; //------------------------------------------------------------------------------ @@ -938,7 +939,7 @@ struct VertexBufferAttrs { //------------------------------------------------------------------------------ /** - @class Oryol::GfxSetup + @class Oryol::GfxDesc @ingroup Gfx @brief Gfx module setup parameters @@ -1005,14 +1006,11 @@ class GfxSetup { //------------------------------------------------------------------------------ /** - @class Oryol::BufferSetup + @class Oryol::BufferDesc @ingroup Gfx - @brief setup attributes for vertex- and index-buffers + @brief creation attributes for vertex- and index-buffers */ -class BufferSetup { -public: - /// create initialized BufferSetup object - static BufferSetup Make(int size, BufferType::Code type=BufferType::VertexBuffer, Usage::Code usage=Usage::Immutable); +struct BufferDesc { /// resource locator class Locator Locator = Locator::NonShared(); /// the buffer type (vertex- or index-buffer) @@ -1020,59 +1018,126 @@ class BufferSetup { /// the buffer usage Usage::Code Usage = Usage::Immutable; /// the buffer size in bytes - int Size = 0; - /// optional byte-offset to data pointer + int Size = 0; + /// optional byte-offset to init-data int Offset = 0; /// optional native 3D-API buffers StaticArray NativeBuffers; - - BufferSetup(); }; + +//------------------------------------------------------------------------------ +/** + @class Oryol::BufferBuilder + @ingroup Gfx + @brief builder for BufferDesc object +*/ +class BufferBuilder { +public: + BufferDesc desc; + operator BufferDesc() { + return desc; + } + BufferBuilder& Locator(const class Locator& loc) { + desc.Locator = loc; return *this; + } + BufferBuilder& Type(BufferType::Code t) { + desc.Type = t; return *this; + } + BufferBuilder& Usage(Usage::Code u) { + desc.Usage = u; return *this; + } + BufferBuilder& Size(int s) { + desc.Size = s; return *this; + } + BufferBuilder& Offset(int o) { + desc.Offset = o; return *this; + } + BufferBuilder& NativeBuffer(int index, intptr_t buf) { + desc.NativeBuffers[index] = buf; return *this; + } +}; +inline BufferBuilder MakeBufferDesc() { + return BufferBuilder(); +} //------------------------------------------------------------------------------ /** - @class Oryol::PipelineSetup + @class Oryol::PipelineDesc @ingroup Gfx - @brief setup object for pipeline resources + @brief creation attribute for pipeline state objects */ -class PipelineSetup { -public: - /// construct from shader - static PipelineSetup FromShader(const Id& shd); - /// construct from vertex layout and shader - static PipelineSetup FromShaderAndLayout(const Id& shd, const VertexLayout& layout); +struct PipelineDesc { /// resource locator class Locator Locator = Locator::NonShared(); /// shader Id Shader; + /// input vertex layouts (one per vertex buffer slot) + StaticArray Layouts; /// primitive type PrimitiveType::Code PrimType = PrimitiveType::Triangles; /// index type (none, 16-bit or 32-bit) IndexType::Code IndexType = IndexType::None; /// blend state (GLES3.0 doesn't allow separate MRT blend state struct BlendState BlendState; - /// blend color - glm::vec4 BlendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); /// depth-stencil state struct DepthStencilState DepthStencilState; /// rasterizer state struct RasterizerState RasterizerState; - /// input vertex layouts (one per mesh slot) - StaticArray Layouts; -}; - +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::PipelineBuilder + @ingroup Gfx + @brief builder for PipelineDesc objects +*/ +class PipelineBuilder { +public: + PipelineDesc desc; + operator PipelineDesc() { + return desc; + } + PipelineBuilder& Locator(const class Locator& loc) { + desc.Locator = loc; return *this; + } + PipelineBuilder& Shader(const Id& shd) { + desc.Shader = shd; return *this; + } + PipelineBuilder& Layout(int slotIndex, const VertexLayout& layout) { + desc.Layouts[slotIndex] = layout; return *this; + } + PipelineBuilder& PrimitiveType(PrimitiveType::Code t) { + desc.PrimType = t; return *this; + } + PipelineBuilder& IndexType(IndexType::Code t) { + desc.IndexType = t; return *this; + } + PipelineBuilder& BlendState(const struct BlendState& bs) { + desc.BlendState = bs; return *this; + } + PipelineBuilder& DepthStencilState(const struct DepthStencilState& dss) { + desc.DepthStencilState = dss; return *this; + } + PipelineBuilder& RasterizerState(const struct RasterizerState& rs) { + desc.RasterizerState = rs; return *this; + } +}; +inline PipelineBuilder MakePipelineDesc() { + return PipelineBuilder(); +} + //------------------------------------------------------------------------------ /** - @class Oryol::PassSetup + @class Oryol::PassDesc @ingroup Gfx - @brief setup attributes for render pass resource + @brief creation attributes for render pass resource */ -class PassSetup { +class PassDesc { public: /// construct from single render target textures, and option depth-stencil texture - static PassSetup From(Id colorTexture, Id depthStencilTexture=Id::InvalidId()); + static PassDesc From(Id colorTexture, Id depthStencilTexture=Id::InvalidId()); /// construct from MRT render target textures, and option depth-stencil texture - static PassSetup From(std::initializer_list colorTextures, Id depthStencilTexture=Id::InvalidId()); + static PassDesc From(std::initializer_list colorTextures, Id depthStencilTexture=Id::InvalidId()); /// resource locator class Locator Locator = Locator::NonShared(); /// 1..N color attachments @@ -1090,16 +1155,16 @@ class PassSetup { //------------------------------------------------------------------------------ /** - @class Oryol::ShaderSetup + @class Oryol::ShaderDesc @ingroup Gfx - @brief setup class for shaders + @brief creation attributes for shaders */ -class ShaderSetup { +class ShaderDesc { public: /// default constructor - ShaderSetup() { } + ShaderDesc() { } /// construct with resource locator - ShaderSetup(const Locator& loc) : Locator(loc) { } + ShaderDesc(const Locator& loc) : Locator(loc) { } /// the resource locator class Locator Locator = Locator::NonShared(); /// set shader program from vertex- and fragment-shader sources @@ -1185,38 +1250,38 @@ class ShaderSetup { //------------------------------------------------------------------------------ /** - @class Oryol::TextureSetup + @class Oryol::TextureDesc @ingroup Gfx @brief setup object for textures and render targets */ -class TextureSetup { +class TextureDesc { public: /// setup 2D texture from raw pixel data - static TextureSetup FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); /// setup cube texture from raw pixel data - static TextureSetup FromPixelDataCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc FromPixelDataCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); //// setup 3D texture from raw pixel data - static TextureSetup FromPixelData3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc FromPixelData3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); /// setup array texture from raw pixel data - static TextureSetup FromPixelDataArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc FromPixelDataArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); /// setup empty 2D texture - static TextureSetup Empty2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc Empty2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); /// setup empty cube texture - static TextureSetup EmptyCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc EmptyCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); /// setup empty 3D texture - static TextureSetup Empty3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc Empty3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); /// setup empty array texture - static TextureSetup EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureSetup& blueprint=TextureSetup()); + static TextureDesc EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); /// setup as 2D render target - static TextureSetup RenderTarget2D(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); + static TextureDesc RenderTarget2D(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup as cube render target - static TextureSetup RenderTargetCube(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); + static TextureDesc RenderTargetCube(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup as 3D render target - static TextureSetup RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt=PixelFormat::RGBA8); + static TextureDesc RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup as array render target - static TextureSetup RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt=PixelFormat::RGBA8); + static TextureDesc RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt=PixelFormat::RGBA8); /// setup texture from existing native texture(s) (needs GfxFeature::NativeTexture) - static TextureSetup FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t h0, intptr_t h1=0); + static TextureDesc FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t h0, intptr_t h1=0); /// return true if texture should be setup from raw pixel data bool ShouldSetupFromPixelData() const; /// return true if texture should be setup from native texture handles @@ -1249,12 +1314,12 @@ class TextureSetup { class Locator Locator = Locator::NonShared(); /// resource placeholder Id Placeholder; - /// optional: native textures (only on platforms which support GfxFeature::NativeTextures) - StaticArray NativeTextures; + /// optional: native textures (only on platforms which support GfxFeature::NativeTextures) + StaticArray NativeTextures; /// optional image surface offsets and sizes ImageDataAttrs ImageData; /// default constructor - TextureSetup(); + TextureDesc(); private: bool setupFromPixelData = false; bool setupFromNativeHandle = false; diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index fd0894a51..f37fbdf6d 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -208,7 +208,7 @@ static void convertStencilState(const StencilState& src, sg_stencil_state& dst) } //------------------------------------------------------------------------------ -static void convertDepthStencilState(const PipelineSetup& src, sg_pipeline_desc& dst) { +static void convertDepthStencilState(const PipelineDesc& src, sg_pipeline_desc& dst) { convertStencilState(src.DepthStencilState.StencilFront, dst.depth_stencil.stencil_front); convertStencilState(src.DepthStencilState.StencilBack, dst.depth_stencil.stencil_back); dst.depth_stencil.depth_compare_func = convertCompareFunc(src.DepthStencilState.DepthCmpFunc); @@ -295,7 +295,7 @@ static sg_pixel_format convertPixelFormat(PixelFormat::Code fmt) { } //------------------------------------------------------------------------------ -static void convertBlendState(const PipelineSetup& src, sg_pipeline_desc& dst) { +static void convertBlendState(const PipelineDesc& src, sg_pipeline_desc& dst) { dst.blend.enabled = src.BlendState.BlendEnabled; dst.blend.src_factor_rgb = convertBlendFactor(src.BlendState.SrcFactorRGB); dst.blend.dst_factor_rgb = convertBlendFactor(src.BlendState.DstFactorRGB); @@ -306,10 +306,10 @@ static void convertBlendState(const PipelineSetup& src, sg_pipeline_desc& dst) { dst.blend.color_write_mask = convertColorMask(src.BlendState.ColorWriteMask); dst.blend.color_format = convertPixelFormat(src.BlendState.ColorFormat); dst.blend.depth_format = convertPixelFormat(src.BlendState.DepthFormat); - dst.blend.blend_color[0] = src.BlendColor.r; - dst.blend.blend_color[1] = src.BlendColor.g; - dst.blend.blend_color[2] = src.BlendColor.b; - dst.blend.blend_color[3] = src.BlendColor.a; + dst.blend.blend_color[0] = src.BlendState.Color.r; + dst.blend.blend_color[1] = src.BlendState.Color.g; + dst.blend.blend_color[2] = src.BlendState.Color.b; + dst.blend.blend_color[3] = src.BlendState.Color.a; } //------------------------------------------------------------------------------ @@ -328,7 +328,7 @@ static sg_cull_mode convertCullMode(bool enabled, Face::Code face) { } //------------------------------------------------------------------------------ -static void convertRasterizerState(const PipelineSetup& src, sg_pipeline_desc& dst) { +static void convertRasterizerState(const PipelineDesc& src, sg_pipeline_desc& dst) { dst.rasterizer.alpha_to_coverage_enabled = src.RasterizerState.AlphaToCoverageEnabled; dst.rasterizer.cull_mode = convertCullMode(src.RasterizerState.CullFaceEnabled, src.RasterizerState.CullFace); dst.rasterizer.face_winding = _SG_FACEWINDING_DEFAULT; @@ -368,7 +368,7 @@ static sg_vertex_format convertVertexFormat(VertexFormat::Code fmt) { } //------------------------------------------------------------------------------ -static void convertVertexLayouts(const PipelineSetup& src, sg_pipeline_desc& dst) { +static void convertVertexLayouts(const PipelineDesc& src, sg_pipeline_desc& dst) { o_assert_dbg(GfxConfig::MaxNumVertexBuffers <= SG_MAX_SHADERSTAGE_BUFFERS); for (int layoutIndex = 0; layoutIndex < GfxConfig::MaxNumVertexBuffers; layoutIndex++) { const auto& srcLayout = src.Layouts[layoutIndex]; @@ -531,74 +531,74 @@ sokolGfxBackend::PopResourceLabel() { //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreateBuffer(const BufferSetup& setup, const void* data, int dataSize) { +sokolGfxBackend::CreateBuffer(const BufferDesc& desc, const void* data, int dataSize) { o_assert_dbg(this->isValid); - o_assert_dbg((data == nullptr) || (setup.Size+setup.Offset) <= dataSize); + o_assert_dbg((data == nullptr) || (desc.Size+desc.Offset) <= dataSize); sg_buffer_desc sgDesc = { }; - sgDesc.size = setup.Size; - sgDesc.type = convertBufferType(setup.Type); - sgDesc.usage = convertUsage(setup.Usage); - sgDesc.content = (uint8_t*)data + setup.Offset; + sgDesc.size = desc.Size; + sgDesc.type = convertBufferType(desc.Type); + sgDesc.usage = convertUsage(desc.Usage); + sgDesc.content = (uint8_t*)data + desc.Offset; o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); #if ORYOL_OPENGL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.gl_buffers[i] = (uint32_t) setup.NativeBuffers[i]; + sgDesc.gl_buffers[i] = (uint32_t) desc.NativeBuffers[i]; } #elif ORYOL_METAL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.mtl_buffers[i] = (const void*) setup.NativeBuffers[i]; + sgDesc.mtl_buffers[i] = (const void*) desc.NativeBuffers[i]; } #elif ORYOL_D3D11 - sgDesc.d3d11_buffer = (const void*) setup.NativeBuffers[0] + sgDesc.d3d11_buffer = (const void*) desc.NativeBuffers[0] #endif return makeId(GfxResourceType::Buffer, sg_make_buffer(&sgDesc).id); } //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreateTexture(const TextureSetup& setup, const void* data, int size) { +sokolGfxBackend::CreateTexture(const TextureDesc& desc, const void* data, int size) { o_assert_dbg(this->isValid); sg_image_desc sgDesc = { }; - sgDesc.type = convertTextureType(setup.Type); - sgDesc.render_target = setup.IsRenderTarget; - sgDesc.width = setup.Width; - sgDesc.height = setup.Height; - sgDesc.depth = setup.Depth; - sgDesc.num_mipmaps = setup.NumMipMaps; - sgDesc.usage = convertUsage(setup.TextureUsage); - sgDesc.pixel_format = convertPixelFormat(setup.Format); - sgDesc.sample_count = setup.SampleCount; - sgDesc.min_filter = convertFilter(setup.Sampler.MinFilter); - sgDesc.mag_filter = convertFilter(setup.Sampler.MagFilter); - sgDesc.wrap_u = convertWrap(setup.Sampler.WrapU); - sgDesc.wrap_v = convertWrap(setup.Sampler.WrapV); - sgDesc.wrap_w = convertWrap(setup.Sampler.WrapW); - o_assert_dbg(setup.ImageData.NumFaces <= SG_CUBEFACE_NUM); - o_assert_dbg(setup.ImageData.NumMipMaps <= SG_MAX_MIPMAPS); - for (int f = 0; f < setup.ImageData.NumFaces; f++) { - for (int m = 0; m < setup.ImageData.NumMipMaps; m++) { - sgDesc.content.subimage[f][m].ptr = (uint8_t*)data + setup.ImageData.Offsets[f][m]; - sgDesc.content.subimage[f][m].size = setup.ImageData.Sizes[f][m]; + sgDesc.type = convertTextureType(desc.Type); + sgDesc.render_target = desc.IsRenderTarget; + sgDesc.width = desc.Width; + sgDesc.height = desc.Height; + sgDesc.depth = desc.Depth; + sgDesc.num_mipmaps = desc.NumMipMaps; + sgDesc.usage = convertUsage(desc.TextureUsage); + sgDesc.pixel_format = convertPixelFormat(desc.Format); + sgDesc.sample_count = desc.SampleCount; + sgDesc.min_filter = convertFilter(desc.Sampler.MinFilter); + sgDesc.mag_filter = convertFilter(desc.Sampler.MagFilter); + sgDesc.wrap_u = convertWrap(desc.Sampler.WrapU); + sgDesc.wrap_v = convertWrap(desc.Sampler.WrapV); + sgDesc.wrap_w = convertWrap(desc.Sampler.WrapW); + o_assert_dbg(desc.ImageData.NumFaces <= SG_CUBEFACE_NUM); + o_assert_dbg(desc.ImageData.NumMipMaps <= SG_MAX_MIPMAPS); + for (int f = 0; f < desc.ImageData.NumFaces; f++) { + for (int m = 0; m < desc.ImageData.NumMipMaps; m++) { + sgDesc.content.subimage[f][m].ptr = (uint8_t*)data + desc.ImageData.Offsets[f][m]; + sgDesc.content.subimage[f][m].size = desc.ImageData.Sizes[f][m]; } } o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); #if ORYOL_OPENGL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.gl_textures[i] = (uint32_t) setup.NativeTextures[i]; + sgDesc.gl_textures[i] = (uint32_t) desc.NativeTextures[i]; } #elif ORYOL_METAL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.mtl_buffers[i] = (const void*) setup.NativeTextures[i]; + sgDesc.mtl_buffers[i] = (const void*) desc.NativeTextures[i]; } #elif ORYOL_D3D11 - sgDesc.d3d11_buffer = (const void*) setup.NativeTextures[0] + sgDesc.d3d11_buffer = (const void*) desc.NativeTextures[0] #endif return makeId(GfxResourceType::Texture, sg_make_image(&sgDesc).id); } //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreateShader(const ShaderSetup& setup) { +sokolGfxBackend::CreateShader(const ShaderDesc& desc) { o_assert_dbg(this->isValid); sg_shader_desc sgDesc = { }; @@ -625,29 +625,29 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { // set source- or byte-code, and optional entry function #if ORYOL_OPENGL - sgDesc.vs.source = setup.VertexShaderSource(slang).AsCStr(); - sgDesc.fs.source = setup.FragmentShaderSource(slang).AsCStr(); + sgDesc.vs.source = desc.VertexShaderSource(slang).AsCStr(); + sgDesc.fs.source = desc.FragmentShaderSource(slang).AsCStr(); #elif ORYOL_METAL || ORYOL_D3D11 const void* byteCodePtr; uint32_t byteCodeSize; - setup.VertexShaderByteCode(slang, byteCodePtr, byteCodeSize); + desc.VertexShaderByteCode(slang, byteCodePtr, byteCodeSize); sgDesc.vs.byte_code = byteCodePtr; sgDesc.vs.byte_code_size = byteCodeSize; - setup.FragmentShaderByteCode(slang, byteCodePtr, byteCodeSize); + desc.FragmentShaderByteCode(slang, byteCodePtr, byteCodeSize); sgDesc.fs.byte_code = byteCodePtr; sgDesc.fs.byte_code_size = byteCodeSize; #endif - if (setup.VertexShaderFunc(slang).IsValid()) { - sgDesc.vs.entry = setup.VertexShaderFunc(slang).AsCStr(); + if (desc.VertexShaderFunc(slang).IsValid()) { + sgDesc.vs.entry = desc.VertexShaderFunc(slang).AsCStr(); } - if (setup.FragmentShaderFunc(slang).IsValid()) { - sgDesc.fs.entry = setup.FragmentShaderFunc(slang).AsCStr(); + if (desc.FragmentShaderFunc(slang).IsValid()) { + sgDesc.fs.entry = desc.FragmentShaderFunc(slang).AsCStr(); } // uniform block declarations int vsUbIndex = 0, fsUbIndex = 0; - for (int i = 0; i < setup.NumUniformBlocks(); i++) { + for (int i = 0; i < desc.NumUniformBlocks(); i++) { sg_shader_uniform_block_desc* ubDesc; - if (setup.UniformBlockBindStage(i) == ShaderStage::VS) { + if (desc.UniformBlockBindStage(i) == ShaderStage::VS) { o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); ubDesc = &sgDesc.vs.uniform_blocks[vsUbIndex++]; } @@ -655,19 +655,19 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); ubDesc = &sgDesc.fs.uniform_blocks[fsUbIndex++]; } - ubDesc->size = setup.UniformBlockByteSize(i); + ubDesc->size = desc.UniformBlockByteSize(i); // size must be a multiple of 16 (sizeof(vec4)) o_assert_dbg((ubDesc->size & 15) == 0); - ubDesc->uniforms[0].name = setup.UniformBlockType(i).AsCStr(); + ubDesc->uniforms[0].name = desc.UniformBlockType(i).AsCStr(); ubDesc->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; ubDesc->uniforms[0].array_count = ubDesc->size / 16; } // texture declarations int vsImgIndex = 0, fsImgIndex = 0; - for (int i = 0; i < setup.NumTextures(); i++) { + for (int i = 0; i < desc.NumTextures(); i++) { sg_shader_image_desc* imgDesc; - if (setup.TexBindStage(i) == ShaderStage::VS) { + if (desc.TexBindStage(i) == ShaderStage::VS) { o_assert_dbg(vsImgIndex < SG_MAX_SHADERSTAGE_IMAGES); imgDesc = &sgDesc.vs.images[vsImgIndex++]; } @@ -675,8 +675,8 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { o_assert_dbg(fsImgIndex < SG_MAX_SHADERSTAGE_IMAGES); imgDesc = &sgDesc.fs.images[fsImgIndex++]; } - imgDesc->type = convertTextureType(setup.TexType(i)); - imgDesc->name = setup.TexName(i).AsCStr(); + imgDesc->type = convertTextureType(desc.TexType(i)); + imgDesc->name = desc.TexName(i).AsCStr(); } return makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); @@ -684,22 +684,22 @@ sokolGfxBackend::CreateShader(const ShaderSetup& setup) { //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreatePipeline(const PipelineSetup& setup) { +sokolGfxBackend::CreatePipeline(const PipelineDesc& desc) { o_assert_dbg(this->isValid); sg_pipeline_desc sgDesc = { }; - sgDesc.shader = makeShaderId(setup.Shader); - sgDesc.primitive_type = convertPrimitiveType(setup.PrimType); - sgDesc.index_type = convertIndexType(setup.IndexType); - convertVertexLayouts(setup, sgDesc); - convertDepthStencilState(setup, sgDesc); - convertBlendState(setup, sgDesc); - convertRasterizerState(setup, sgDesc); + sgDesc.shader = makeShaderId(desc.Shader); + sgDesc.primitive_type = convertPrimitiveType(desc.PrimType); + sgDesc.index_type = convertIndexType(desc.IndexType); + convertVertexLayouts(desc, sgDesc); + convertDepthStencilState(desc, sgDesc); + convertBlendState(desc, sgDesc); + convertRasterizerState(desc, sgDesc); return makeId(GfxResourceType::Pipeline, sg_make_pipeline(&sgDesc).id); } //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreatePass(const PassSetup& setup) { +sokolGfxBackend::CreatePass(const PassDesc& desc) { o_assert_dbg(this->isValid); // FIXME return Id::InvalidId(); diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 096bfcb4d..f92d6295f 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -45,15 +45,15 @@ class sokolGfxBackend { ResourceLabel PopResourceLabel(); /// create (alloc+init) a buffer resource - Id CreateBuffer(const BufferSetup& setup, const void* data, int dataSize); + Id CreateBuffer(const BufferDesc& desc, const void* data, int dataSize); /// create (alloc+init) an texture resource - Id CreateTexture(const TextureSetup& setup, const void* data, int dataSize); + Id CreateTexture(const TextureDesc& desc, const void* data, int dataSize); /// create (alloc+init) a shader resource - Id CreateShader(const ShaderSetup& setup); + Id CreateShader(const ShaderDesc& desc); /// create (alloc+init) a pipeline resource - Id CreatePipeline(const PipelineSetup& setup); + Id CreatePipeline(const PipelineDesc& desc); /// create (alloc+init) a pass resource - Id CreatePass(const PassSetup& setup); + Id CreatePass(const PassDesc& desc); /// allocate a new buffer id Id AllocBuffer(const Locator& loc); @@ -67,15 +67,15 @@ class sokolGfxBackend { Id AllocPass(const Locator& loc); /// initialize a buffer - void InitBuffer(const Id& id, const BufferSetup& setup); + void InitBuffer(const Id& id, const BufferDesc& desc); /// initialize a texture - void InitTexture(const Id& id, const TextureSetup& setup); + void InitTexture(const Id& id, const TextureDesc& desc); /// initialize a shader - void InitShader(const Id& id, const ShaderSetup& setup); + void InitShader(const Id& id, const ShaderDesc& desc); /// initialize a pipeline - void InitPipeline(const Id& id, const PipelineSetup& setup); + void InitPipeline(const Id& id, const PipelineDesc& desc); /// initialize a pass - void InitPass(const Id& id, const PassSetup& setup); + void InitPass(const Id& id, const PassDesc& desc); /// lookup a resource Id by locator Id LookupResource(const Locator& loc); diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index a44ad41ed..ba67822a4 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -31,26 +31,34 @@ QuadApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, }; - auto vbufSetup = BufferSetup::Make(sizeof(vertices), BufferType::VertexBuffer); - this->drawState.VertexBuffers[0] = Gfx::CreateResource(vbufSetup, vertices, sizeof(vertices)); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer( + MakeBufferDesc() + .Size(sizeof(vertices)) + .Type(BufferType::VertexBuffer), + vertices, sizeof(vertices)); // create index buffer const uint16_t indices[2 * 3] = { 0, 1, 2, // first triangle 0, 2, 3, // second triangle }; - auto ibufSetup = BufferSetup::Make(sizeof(indices), BufferType::IndexBuffer); - this->drawState.IndexBuffer = Gfx::CreateResource(ibufSetup, indices, sizeof(indices)); + this->drawState.IndexBuffer = Gfx::CreateBuffer( + MakeBufferDesc() + .Size(sizeof(indices)) + .Type(BufferType::IndexBuffer), + indices, sizeof(indices)); // create shader and pipeline-state-object - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromShaderAndLayout(shd, { - { "in_pos", VertexFormat::Float3 }, - { "in_color", VertexFormat::Float4 } - }); - ps.IndexType = IndexType::UInt16; - this->drawState.Pipeline = Gfx::CreateResource(ps); - + Id shd = Gfx::CreateShader(Shader::Desc()); + this->drawState.Pipeline = Gfx::CreatePipeline( + MakePipelineDesc() + .Shader(shd) + .Layout(0, { + { "in_pos", VertexFormat::Float3 }, + { "in_color", VertexFormat::Float4 } + }) + .IndexType(IndexType::UInt16)); + return App::OnInit(); } diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index c541f89cc..ee7b5206a 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -31,16 +31,19 @@ TriangleApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f , 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, }; - auto bufSetup = BufferSetup::Make(sizeof(vertices)); - this->drawState.VertexBuffers[0] = Gfx::CreateResource(bufSetup, vertices, sizeof(vertices)); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer( + MakeBufferDesc().Size(sizeof(vertices)), + vertices, sizeof(vertices)); - // create shader and pipeline-state-object - Id shd = Gfx::CreateResource(Shader::Setup()); - auto pipSetup = PipelineSetup::FromShaderAndLayout(shd, { - { "position", VertexFormat::Float3 }, - { "color0", VertexFormat::Float4 } - }); - this->drawState.Pipeline = Gfx::CreateResource(pipSetup); + // create shader and pipeline-state-object + Id shd = Gfx::CreateShader(Shader::Desc()); + this->drawState.Pipeline = Gfx::CreatePipeline( + MakePipelineDesc() + .Shader(shd) + .Layout(0, { + { "position", VertexFormat::Float3 }, + { "color0", VertexFormat::Float4 } + })); return App::OnInit(); } diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 5758b55cd..156e4bd84 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,7 +2,7 @@ Code generator for shader libraries. ''' -Version = 52 +Version = 53 import os, platform, json import genutil as util @@ -483,7 +483,7 @@ def writeProgramHeader(f, shdLib, prog, slang) : f.write(' #pragma pack(pop)\n') for tex in refl['textures']: f.write(' static const int {} = {};\n'.format(tex['name'], tex['slot'])) - f.write(' extern Oryol::ShaderSetup Setup();\n') + f.write(' extern Oryol::ShaderDesc Desc();\n') f.write('}\n') #------------------------------------------------------------------------------- @@ -556,9 +556,9 @@ def writeShaderSource(f, absPath, shdLib, shd, slVersion) : #------------------------------------------------------------------------------- def writeProgramSource(f, shdLib, prog, slangs) : - # write the Setup() function - f.write('Oryol::ShaderSetup ' + prog.name + '::Setup() {\n') - f.write(' Oryol::ShaderSetup setup("' + prog.name + '");\n') + # write the Desc() function + f.write('Oryol::ShaderDesc ' + prog.name + '::Desc() {\n') + f.write(' Oryol::ShaderDesc desc("' + prog.name + '");\n') vs = shdLib.vertexShaders[prog.vs] fs = shdLib.fragmentShaders[prog.fs] vsName = vs.name @@ -568,20 +568,20 @@ def writeProgramSource(f, shdLib, prog, slangs) : vsSource = '{}_{}_src'.format(vsName, slang) fsSource = '{}_{}_src'.format(fsName, slang) if isGLSL(slang): - f.write(' setup.SetProgramFromSources({}, {}, {});\n'.format( + f.write(' desc.SetProgramFromSources({}, {}, {});\n'.format( slangType, vsSource, fsSource)); elif isHLSL(slang): vs_c_name = '{}_vs_hlsl5'.format(vs.name) fs_c_name = '{}_fs_hlsl5'.format(fs.name) - f.write(' setup.SetProgramFromByteCode({}, {}, sizeof({}), {}, sizeof({}));\n'.format( + f.write(' desc.SetProgramFromByteCode({}, {}, sizeof({}), {}, sizeof({}));\n'.format( slangType, vs_c_name, vs_c_name, fs_c_name, fs_c_name)) elif isMetal(slang): vs_c_name = '{}_vs_metallib'.format(vs.name) fs_c_name = '{}_fs_metallib'.format(fs.name) - f.write(' setup.SetProgramFromByteCode({}, {}, sizeof({}), {}, sizeof({}), "main0", "main0");\n'.format( + f.write(' desc.SetProgramFromByteCode({}, {}, sizeof({}), {}, sizeof({}), "main0", "main0");\n'.format( slangType, vs_c_name, vs_c_name, fs_c_name, fs_c_name)) - # add uniform layouts to setup object + # add uniform layouts to desc object for stage in ['VS', 'FS']: shd = shdLib.vertexShaders[prog.vs] if stage == 'VS' else shdLib.fragmentShaders[prog.fs] refl = shd.slReflection[slang] @@ -590,12 +590,12 @@ def writeProgramSource(f, shdLib, prog, slangs) : ub_size = ub['size'] if 'glsl' in slang: ub_size = roundup(ub_size, 16) - f.write(' setup.AddUniformBlock("{}", "{}", {}, {}::_bindShaderStage, {}::_bindSlotIndex);\n'.format( + f.write(' desc.AddUniformBlock("{}", "{}", {}, {}::_bindShaderStage, {}::_bindSlotIndex);\n'.format( ub['type'], ub['name'], ub_size, ub['type'], ub['type'])) - # add textures layouts to setup objects + # add textures layouts to desc objects for tex in refl['textures']: - f.write(' setup.AddTexture("{}", {}, Oryol::ShaderStage::{}, {});\n'.format(tex['name'], texOryolType[tex['type']], stage, tex['slot'])) - f.write(' return setup;\n') + f.write(' desc.AddTexture("{}", {}, Oryol::ShaderStage::{}, {});\n'.format(tex['name'], texOryolType[tex['type']], stage, tex['slot'])) + f.write(' return desc;\n') f.write('}\n') #------------------------------------------------------------------------------- From fd544a7b0b4c85e2ae17a4db6acad9baec52aded Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 14 Jan 2018 18:46:44 +0100 Subject: [PATCH 18/91] Gfx: more resource creation simplification --- code/Modules/Assets/Gfx/MeshBuilder.cc | 18 +- code/Modules/Assets/Gfx/MeshBuilder.h | 4 +- code/Modules/Assets/Gfx/ShapeBuilder.cc | 4 +- code/Modules/Assets/Gfx/ShapeBuilder.h | 4 +- code/Modules/Dbg/private/debugTextRenderer.cc | 50 +- code/Modules/Gfx/Gfx.cc | 24 + code/Modules/Gfx/GfxTypes.cc | 233 --------- code/Modules/Gfx/GfxTypes.h | 448 +++++++++++------- code/Modules/Gfx/private/sokolGfxBackend.cc | 93 ++-- code/Samples/BlendTest/BlendTest.cc | 44 +- code/Samples/PackedNormals/PackedNormals.cc | 20 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 26 +- code/Samples/Shapes/Shapes.cc | 21 +- 13 files changed, 453 insertions(+), 536 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index 0469b20d3..4fe5e29e9 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -29,13 +29,19 @@ MeshBuilder::Begin() { // setup Result object this->result.Layout = this->Layout; this->result.IndexType = this->IndexType; - this->result.VertexBufferSetup = BufferSetup::Make(vbSize, BufferType::VertexBuffer, this->VertexUsage); + this->result.VertexBufferDesc = MakeBufferDesc() + .Size(vbSize) + .Type(BufferType::VertexBuffer) + .Usage(this->VertexUsage); if (ibSize > 0) { - this->result.IndexBufferSetup = BufferSetup::Make(ibSize, BufferType::IndexBuffer, this->IndexUsage); - this->result.IndexBufferSetup.Offset = this->result.VertexBufferSetup.Size; + this->result.IndexBufferDesc = MakeBufferDesc() + .Size(ibSize) + .Type(BufferType::IndexBuffer) + .Usage(this->IndexUsage) + .Offset(this->result.VertexBufferDesc.Size); } else { - this->result.IndexBufferSetup = BufferSetup(); + this->result.IndexBufferDesc = BufferDesc(); } return *this; } @@ -54,8 +60,8 @@ MeshBuilder::Build() { this->vertexPointer = nullptr; this->indexPointer = nullptr; this->endPointer = nullptr; - this->result.VertexBufferSetup = BufferSetup(); - this->result.IndexBufferSetup = BufferSetup(); + this->result.VertexBufferDesc = BufferDesc(); + this->result.IndexBufferDesc = BufferDesc(); this->result.Layout = VertexLayout(); this->result.IndexType = IndexType::Invalid; this->result.Data.Clear(); diff --git a/code/Modules/Assets/Gfx/MeshBuilder.h b/code/Modules/Assets/Gfx/MeshBuilder.h index d7529d372..e5ef9fa57 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.h +++ b/code/Modules/Assets/Gfx/MeshBuilder.h @@ -78,8 +78,8 @@ class MeshBuilder { MeshBuilder& Triangle32(uint32_t triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); /// mesh builder result struct Result { - BufferSetup VertexBufferSetup; - BufferSetup IndexBufferSetup; + BufferDesc VertexBufferDesc; + BufferDesc IndexBufferDesc; VertexLayout Layout; IndexType::Code IndexType; Buffer Data; diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.cc b/code/Modules/Assets/Gfx/ShapeBuilder.cc index 0f50bdcd1..5dfa5c541 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.cc +++ b/code/Modules/Assets/Gfx/ShapeBuilder.cc @@ -281,8 +281,8 @@ ShapeBuilder::Build() { } MeshBuilder::Result meshResult = this->meshBuilder.Build(); ShapeBuilder::Result shapeResult; - shapeResult.VertexBufferSetup = std::move(meshResult.VertexBufferSetup); - shapeResult.IndexBufferSetup = std::move(meshResult.IndexBufferSetup); + shapeResult.VertexBufferDesc = std::move(meshResult.VertexBufferDesc); + shapeResult.IndexBufferDesc = std::move(meshResult.IndexBufferDesc); shapeResult.Layout = std::move(meshResult.Layout); shapeResult.IndexType = meshResult.IndexType; shapeResult.Data = std::move(meshResult.Data); diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.h b/code/Modules/Assets/Gfx/ShapeBuilder.h index b6f188ce8..f32acc3e0 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.h +++ b/code/Modules/Assets/Gfx/ShapeBuilder.h @@ -45,8 +45,8 @@ class ShapeBuilder { /// result struct struct Result { - BufferSetup VertexBufferSetup; - BufferSetup IndexBufferSetup; + BufferDesc VertexBufferDesc; + BufferDesc IndexBufferDesc; VertexLayout Layout; IndexType::Code IndexType; Buffer Data; diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index f3c006d41..b48691aac 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -145,23 +145,25 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { { "color0", VertexFormat::UByte4N } }; const int vbufSize = this->maxNumVertices * this->vertexLayout.ByteSize(); - auto vbuf = BufferSetup::Make(vbufSize, BufferType::VertexBuffer, Usage::Stream); - this->drawState.VertexBuffers[0] = Gfx::CreateResource(vbuf); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(MakeBufferDesc() + .Size(vbufSize) + .Type(BufferType::VertexBuffer) + .Usage(Usage::Stream)); o_assert_dbg(this->drawState.VertexBuffers[0].IsValid()); // create pipeline object - Id shd = Gfx::CreateResource(DbgTextShader::Setup()); - auto ps = PipelineSetup::FromShaderAndLayout(shd, this->vertexLayout); - ps.DepthStencilState.DepthWriteEnabled = false; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::Always; - ps.BlendState.BlendEnabled = true; - ps.BlendState.SrcFactorRGB = BlendFactor::SrcAlpha; - ps.BlendState.DstFactorRGB = BlendFactor::OneMinusSrcAlpha; - ps.BlendState.ColorWriteMask = PixelChannel::RGB; - ps.BlendState.ColorFormat = setup.ColorFormat; - ps.BlendState.DepthFormat = setup.DepthFormat; - ps.RasterizerState.SampleCount = setup.SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(ps); + this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + .Shader(Gfx::CreateShader(DbgTextShader::Desc())) + .Layout(0, this->vertexLayout) + .DepthWriteEnabled(false) + .DepthCmpFunc(CompareFunc::Always) + .BlendEnabled(true) + .BlendSrcFactor(BlendChannel::RGB, BlendFactor::SrcAlpha) + .BlendDstFactor(BlendChannel::RGB, BlendFactor::OneMinusSrcAlpha) + .ColorWriteMask(PixelChannel::RGB) + .ColorFormat(setup.ColorFormat) + .DepthFormat(setup.DepthFormat) + .SampleCount(setup.SampleCount)); // convert the KC85/4 font into 8bpp image data const int numChars = 128; @@ -190,15 +192,17 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { } // setup texture, pixel format is 8bpp uncompressed - auto texSetup = TextureSetup::FromPixelData2D(imgWidth, imgHeight, 1, PixelFormat::L8); - texSetup.Sampler.MinFilter = TextureFilterMode::Nearest; - texSetup.Sampler.MagFilter = TextureFilterMode::Nearest; - texSetup.Sampler.WrapU = TextureWrapMode::ClampToEdge; - texSetup.Sampler.WrapV = TextureWrapMode::ClampToEdge; - texSetup.ImageData.Sizes[0][0] = imgDataSize; - Id tex = Gfx::CreateResource(texSetup, data); - o_assert_dbg(tex.IsValid()); - this->drawState.FSTexture[DbgTextShader::tex] = tex; + this->drawState.FSTexture[DbgTextShader::tex] = Gfx::CreateTexture(MakeTextureDesc() + .Type(TextureType::Texture2D) + .Width(imgWidth) + .Height(imgHeight) + .Format(PixelFormat::L8) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .WrapU(TextureWrapMode::ClampToEdge) + .WrapV(TextureWrapMode::ClampToEdge) + .ImageDataSize(0, 0, imgDataSize), + data); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index c67e2a585..90b51a2b2 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -314,6 +314,18 @@ Gfx::CreateTexture(const TextureDesc& desc, const void* data, int size) { } return resId; } + +//------------------------------------------------------------------------------ +Id +Gfx::CreateTexture(const TextureDesc& desc) { + return Gfx::CreateTexture(desc, nullptr, 0); +} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateTexture(const TextureDesc& desc, const Buffer& data) { + return Gfx::CreateTexture(desc, data.Data(), data.Size()); +} //------------------------------------------------------------------------------ Id @@ -326,6 +338,18 @@ Gfx::CreateBuffer(const BufferDesc& desc, const void* data, int size) { } return resId; } + +//------------------------------------------------------------------------------ +Id +Gfx::CreateBuffer(const BufferDesc& desc) { + return Gfx::CreateBuffer(desc, nullptr, 0); +} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateBuffer(const BufferDesc& desc, const Buffer& data) { + return Gfx::CreateBuffer(desc, data.Data(), data.Size()); +} //------------------------------------------------------------------------------ Id diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 2c1906f58..609992677 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -827,237 +827,4 @@ int ShaderDesc::TexBindSlot(int index) const { return this->textures[index].bindSlot; } -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupFromPixelData = true; - setup.Type = TextureType::Texture2D; - setup.Width = w; - setup.Height = h; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.ImageData.NumFaces = 1; - setup.ImageData.NumMipMaps = numMipMaps; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::FromPixelDataCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupFromPixelData = true; - setup.Type = TextureType::TextureCube; - setup.Width = w; - setup.Height = h; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.ImageData.NumFaces = 6; - setup.ImageData.NumMipMaps = numMipMaps; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::FromPixelData3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0) && (d > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupFromPixelData = true; - setup.Type = TextureType::Texture3D; - setup.Width = w; - setup.Height = h; - setup.Depth = d; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.ImageData.NumFaces = 1; - setup.ImageData.NumMipMaps = numMipMaps; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::FromPixelDataArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0) && (layers > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupFromPixelData = true; - setup.Type = TextureType::TextureArray; - setup.Width = w; - setup.Height = h; - setup.Depth = layers; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.ImageData.NumFaces = 1; - setup.ImageData.NumMipMaps = numMipMaps; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::Empty2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupEmpty = true; - setup.Type = TextureType::Texture2D; - setup.Width = w; - setup.Height = h; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.TextureUsage = usage; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::EmptyCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupEmpty = true; - setup.Type = TextureType::TextureCube; - setup.Width = w; - setup.Height = h; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.TextureUsage = usage; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::Empty3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0) && (d > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupEmpty = true; - setup.Type = TextureType::Texture3D; - setup.Width = w; - setup.Height = h; - setup.Depth = d; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.TextureUsage = usage; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint) { - o_assert_dbg((w > 0) && (h > 0) && (layers > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert_dbg((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - TextureDesc setup(blueprint); - setup.setupEmpty = true; - setup.Type = TextureType::TextureArray; - setup.Width = w; - setup.Height = h; - setup.Depth = layers; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.TextureUsage = usage; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::RenderTarget2D(int w, int h, PixelFormat::Code fmt) { - o_assert_dbg((w > 0) && (h > 0)); - TextureDesc setup; - setup.Type = TextureType::Texture2D; - setup.IsRenderTarget = true; - setup.Width = w; - setup.Height = h; - setup.Format = fmt; - setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; - setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::RenderTargetCube(int w, int h, PixelFormat::Code fmt) { - o_assert_dbg((w > 0) && (h > 0)); - TextureDesc setup; - setup.Type = TextureType::TextureCube; - setup.IsRenderTarget = true; - setup.Width = w; - setup.Height = h; - setup.Format = fmt; - setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; - setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt) { - o_assert_dbg((w > 0) && (h > 0)); - TextureDesc setup; - setup.Type = TextureType::Texture3D; - setup.IsRenderTarget = true; - setup.Width = w; - setup.Height = h; - setup.Depth = d; - setup.Format = fmt; - setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; - setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt) { - o_assert_dbg((w > 0) && (h > 0)); - TextureDesc setup; - setup.Type = TextureType::TextureArray; - setup.IsRenderTarget = true; - setup.Width = w; - setup.Height = h; - setup.Depth = layers; - setup.Format = fmt; - setup.Sampler.WrapU = TextureWrapMode::ClampToEdge; - setup.Sampler.WrapV = TextureWrapMode::ClampToEdge; - return setup; -} - -//------------------------------------------------------------------------------ -TextureDesc TextureDesc::FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t t0, intptr_t t1) { - o_assert_dbg((w > 0) && (h > 0)); - o_assert_dbg(PixelFormat::IsValidTextureColorFormat(fmt)); - o_assert((numMipMaps > 0) && (numMipMaps < GfxConfig::MaxNumTextureMipMaps)); - o_assert_dbg(t0 != 0); - TextureDesc setup; - setup.setupFromNativeHandle = true; - setup.Type = type; - setup.Width = w; - setup.Height = h; - setup.NumMipMaps = numMipMaps; - setup.Format = fmt; - setup.TextureUsage = usage; - setup.NativeTextures[0] = t0; - setup.NativeTextures[1] = t1; - return setup; -} - -//------------------------------------------------------------------------------ -bool TextureDesc::ShouldSetupFromPixelData() const { - return this->setupFromPixelData; -} - -//------------------------------------------------------------------------------ -bool TextureDesc::ShouldSetupFromNativeTexture() const { - return this->setupFromNativeHandle; -} - -//------------------------------------------------------------------------------ -bool TextureDesc::ShouldSetupEmpty() const { - return this->setupEmpty; -} - -//------------------------------------------------------------------------------ -TextureDesc::TextureDesc() { - NativeTextures.Fill(0); -} - } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index a27c78fa3..1501f7a6c 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -394,12 +394,9 @@ struct GfxFeature { */ struct Face { enum Code { - Front = 0, - Back, - Both, - - Num, - Invalid, + Front = (1<<0), + Back = (1<<1), + Both = Front|Back }; static const int NumSides = 2; }; @@ -493,6 +490,20 @@ struct BlendOperation { Invalid }; }; + +//------------------------------------------------------------------------------ +/** + @class Oryol::BlendChannel + @ingroup Gfx + @brief channels which are affected by blend operation (RGB or Alpha) +*/ +struct BlendChannel { + enum Code { + RGB = (1<<0), + Alpha = (1<<1), + All = RGB|Alpha + }; +}; //------------------------------------------------------------------------------ /** @@ -528,86 +539,6 @@ struct PrimitiveGroup { NumElements(numElements) { } }; -//------------------------------------------------------------------------------ -/** - @class Oryol::BlendState - @ingroup Gfx - @brief describe alpha blending state -*/ -struct BlendState { - bool BlendEnabled = false; - BlendFactor::Code SrcFactorRGB = BlendFactor::One; - BlendFactor::Code DstFactorRGB = BlendFactor::Zero; - BlendOperation::Code OpRGB = BlendOperation::Add; - BlendFactor::Code SrcFactorAlpha = BlendFactor::One; - BlendFactor::Code DstFactorAlpha = BlendFactor::Zero; - BlendOperation::Code OpAlpha = BlendOperation::Add; - PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; - PixelFormat::Code ColorFormat = PixelFormat::RGBA8; - PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; - int MRTCount = 1; - glm::vec4 Color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::StencilState - @ingroup Gfx - @brief holds stencil-buffer render state for one face side -*/ -struct StencilState { - StencilOp::Code FailOp = StencilOp::Keep; - StencilOp::Code DepthFailOp = StencilOp::Keep; - StencilOp::Code PassOp = StencilOp::Keep; - CompareFunc::Code CmpFunc = CompareFunc::Always; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::DepthStencilState - @ingroup Gfx - @brief holds the complete depth and stencil render state -*/ -struct DepthStencilState { - StencilState StencilFront; - StencilState StencilBack; - CompareFunc::Code DepthCmpFunc = CompareFunc::Always; - bool DepthWriteEnabled = false; - bool StencilEnabled = false; - uint8_t StencilReadMask = 0xFF; - uint8_t StencilWriteMask = 0xFF; - uint8_t StencilRef = 0x00; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::RasterizerState - @ingroup Gfx - @brief rasterizer state flags -*/ -struct RasterizerState { - bool CullFaceEnabled = false; - bool ScissorTestEnabled = false; - bool DitherEnabled = true; - bool AlphaToCoverageEnabled = false; - Face::Code CullFace = Face::Back; - int SampleCount = 1; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::SamplerState - @ingroup Gfx - @brief wrap texture sampler state -*/ -struct SamplerState { - TextureWrapMode::Code WrapU = TextureWrapMode::Repeat; - TextureWrapMode::Code WrapV = TextureWrapMode::Repeat; - TextureWrapMode::Code WrapW = TextureWrapMode::Repeat; - TextureFilterMode::Code MagFilter = TextureFilterMode::Nearest; - TextureFilterMode::Code MinFilter = TextureFilterMode::Nearest; -}; - //------------------------------------------------------------------------------ /** @class Oryol::PassAction @@ -893,10 +824,6 @@ class ImageDataAttrs { public: /// constructor ImageDataAttrs(); - /// number of faces - int NumFaces = 0; - /// number of mipmaps - int NumMipMaps = 0; /// pixel data mipmap image offsets StaticArray, GfxConfig::MaxNumTextureFaces> Offsets; /// pixel data mipmap image sizes @@ -1076,13 +1003,44 @@ struct PipelineDesc { /// primitive type PrimitiveType::Code PrimType = PrimitiveType::Triangles; /// index type (none, 16-bit or 32-bit) - IndexType::Code IndexType = IndexType::None; - /// blend state (GLES3.0 doesn't allow separate MRT blend state - struct BlendState BlendState; - /// depth-stencil state - struct DepthStencilState DepthStencilState; - /// rasterizer state - struct RasterizerState RasterizerState; + IndexType::Code IndexType = IndexType::None; + + /// depth-stencil-state + CompareFunc::Code DepthCmpFunc = CompareFunc::Always; + bool DepthWriteEnabled = false; + bool StencilEnabled = false; + uint8_t StencilReadMask = 0xFF; + uint8_t StencilWriteMask = 0xFF; + uint8_t StencilRef = 0x00; + StencilOp::Code StencilFrontFailOp = StencilOp::Keep; + StencilOp::Code StencilFrontDepthFailOp = StencilOp::Keep; + StencilOp::Code StencilFrontPassOp = StencilOp::Keep; + CompareFunc::Code StencilFrontCmpFunc = CompareFunc::Always; + StencilOp::Code StencilBackFailOp = StencilOp::Keep; + StencilOp::Code StencilBackDepthFailOp = StencilOp::Keep; + StencilOp::Code StencilBackPassOp = StencilOp::Keep; + CompareFunc::Code StencilBackCmpFunc = CompareFunc::Always; + + /// blend state + bool BlendEnabled = false; + BlendFactor::Code BlendSrcFactorRGB = BlendFactor::One; + BlendFactor::Code BlendDstFactorRGB = BlendFactor::Zero; + BlendOperation::Code BlendOpRGB = BlendOperation::Add; + BlendFactor::Code BlendSrcFactorAlpha = BlendFactor::One; + BlendFactor::Code BlendDstFactorAlpha = BlendFactor::Zero; + BlendOperation::Code BlendOpAlpha = BlendOperation::Add; + PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; + PixelFormat::Code ColorFormat = PixelFormat::RGBA8; + PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; + int MRTCount = 1; + glm::vec4 BlendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); + + /// rasterizer state + bool CullFaceEnabled = false; + bool ScissorTestEnabled = false; + bool AlphaToCoverageEnabled = false; + Face::Code CullFace = Face::Back; + int SampleCount = 1; }; //------------------------------------------------------------------------------ @@ -1112,14 +1070,119 @@ class PipelineBuilder { PipelineBuilder& IndexType(IndexType::Code t) { desc.IndexType = t; return *this; } - PipelineBuilder& BlendState(const struct BlendState& bs) { - desc.BlendState = bs; return *this; + PipelineBuilder& DepthCmpFunc(CompareFunc::Code f) { + desc.DepthCmpFunc = f; return *this; + } + PipelineBuilder& DepthWriteEnabled(bool b) { + desc.DepthWriteEnabled = b; return *this; + } + PipelineBuilder& StencilEnabled(bool b) { + desc.StencilEnabled = b; return *this; + } + PipelineBuilder& StencilReadMask(uint8_t m) { + desc.StencilReadMask = m; return *this; + } + PipelineBuilder& StencilWriteMask(uint8_t m) { + desc.StencilWriteMask = m; return *this; + } + PipelineBuilder& StencilRef(uint8_t r) { + desc.StencilRef = r; return *this; + } + PipelineBuilder& StencilFailOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + desc.StencilFrontFailOp = op; + } + if (Face::Back & face) { + desc.StencilBackFailOp = op; + } + return *this; + } + PipelineBuilder& StencilDepthFailOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + desc.StencilFrontDepthFailOp = op; + } + if (Face::Back & face) { + desc.StencilBackDepthFailOp = op; + } + return *this; + } + PipelineBuilder& StencilPassOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + desc.StencilFrontPassOp = op; + } + if (Face::Back & face) { + desc.StencilBackPassOp = op; + } + return *this; + } + PipelineBuilder& StencilCmpFunc(Face::Code face, CompareFunc::Code fn) { + if (Face::Front & face) { + desc.StencilFrontCmpFunc = fn; + } + if (Face::Back & face) { + desc.StencilBackCmpFunc = fn; + } + return *this; } - PipelineBuilder& DepthStencilState(const struct DepthStencilState& dss) { - desc.DepthStencilState = dss; return *this; + PipelineBuilder& BlendEnabled(bool b) { + desc.BlendEnabled = b; return *this; } - PipelineBuilder& RasterizerState(const struct RasterizerState& rs) { - desc.RasterizerState = rs; return *this; + PipelineBuilder& BlendSrcFactor(BlendChannel::Code chn, BlendFactor::Code f) { + if (BlendChannel::RGB & chn) { + desc.BlendSrcFactorRGB = f; + } + if (BlendChannel::Alpha & chn) { + desc.BlendSrcFactorAlpha = f; + } + return *this; + } + PipelineBuilder& BlendDstFactor(BlendChannel::Code chn, BlendFactor::Code f) { + if (BlendChannel::RGB & chn) { + desc.BlendDstFactorRGB = f; + } + if (BlendChannel::Alpha & chn) { + desc.BlendDstFactorAlpha = f; + } + return *this; + } + PipelineBuilder& BlendOp(BlendChannel::Code chn, BlendOperation::Code op) { + if (BlendChannel::RGB & chn) { + desc.BlendOpRGB = op; + } + if (BlendChannel::Alpha & chn) { + desc.BlendOpAlpha = op; + } + return *this; + } + PipelineBuilder& ColorWriteMask(PixelChannel::Mask m) { + desc.ColorWriteMask = m; return *this; + } + PipelineBuilder& ColorFormat(PixelFormat::Code fmt) { + desc.ColorFormat = fmt; return *this; + } + PipelineBuilder& DepthFormat(PixelFormat::Code fmt) { + desc.DepthFormat = fmt; return *this; + } + PipelineBuilder& SampleCount(int c) { + desc.SampleCount = c; return *this; + } + PipelineBuilder& MRTCount(int c) { + desc.MRTCount = c; return *this; + } + PipelineBuilder& BlendColor(const glm::vec4& c) { + desc.BlendColor = c; return *this; + } + PipelineBuilder& CullFaceEnabled(bool b) { + desc.CullFaceEnabled = b; return *this; + } + PipelineBuilder& CullFace(Face::Code f) { + desc.CullFace = f; return *this; + } + PipelineBuilder& ScissorTestEnabled(bool b) { + desc.ScissorTestEnabled = b; return *this; + } + PipelineBuilder& AlphaToCoverageEnabled(bool b) { + desc.AlphaToCoverageEnabled = b; return *this; } }; inline PipelineBuilder MakePipelineDesc() { @@ -1255,76 +1318,119 @@ class ShaderDesc { @brief setup object for textures and render targets */ class TextureDesc { -public: - /// setup 2D texture from raw pixel data - static TextureDesc FromPixelData2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); - /// setup cube texture from raw pixel data - static TextureDesc FromPixelDataCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); - //// setup 3D texture from raw pixel data - static TextureDesc FromPixelData3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); - /// setup array texture from raw pixel data - static TextureDesc FromPixelDataArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, const TextureDesc& blueprint=TextureDesc()); - /// setup empty 2D texture - static TextureDesc Empty2D(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); - /// setup empty cube texture - static TextureDesc EmptyCube(int w, int h, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); - /// setup empty 3D texture - static TextureDesc Empty3D(int w, int h, int d, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); - /// setup empty array texture - static TextureDesc EmptyArray(int w, int h, int layers, int numMipMaps, PixelFormat::Code fmt, Usage::Code usage, const TextureDesc& blueprint=TextureDesc()); - /// setup as 2D render target - static TextureDesc RenderTarget2D(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); - /// setup as cube render target - static TextureDesc RenderTargetCube(int w, int h, PixelFormat::Code fmt=PixelFormat::RGBA8); - /// setup as 3D render target - static TextureDesc RenderTarget3D(int w, int h, int d, PixelFormat::Code fmt=PixelFormat::RGBA8); - /// setup as array render target - static TextureDesc RenderTargetArray(int w, int h, int layers, PixelFormat::Code fmt=PixelFormat::RGBA8); - /// setup texture from existing native texture(s) (needs GfxFeature::NativeTexture) - static TextureDesc FromNativeTexture(int w, int h, int numMipMaps, TextureType::Code type, PixelFormat::Code fmt, Usage::Code usage, intptr_t h0, intptr_t h1=0); - /// return true if texture should be setup from raw pixel data - bool ShouldSetupFromPixelData() const; - /// return true if texture should be setup from native texture handles - bool ShouldSetupFromNativeTexture() const; - /// return true if texture should be created empty - bool ShouldSetupEmpty() const; - /// return true if render target has depth - bool HasDepth() const; - /// intended usage - Usage::Code TextureUsage = Usage::Immutable; - /// texture type - TextureType::Code Type = TextureType::Texture2D; - /// use as render target? - bool IsRenderTarget = false; - /// width in pixels - int Width = 1; - /// height in pixels - int Height = 1; - /// depth/layers in pixels (for 3D and Array textures) - int Depth = 1; - /// number of mipmaps (default is 1, only for FromPixelData) - int NumMipMaps = 1; - /// the pixel format - PixelFormat::Code Format = PixelFormat::RGBA8; - /// MSAA samples (2, 4, 8... no MSAA: 1), check MSAARenderTargets feature availability! - int SampleCount = 1; - /// sampler state - SamplerState Sampler; - /// resource locator - class Locator Locator = Locator::NonShared(); - /// resource placeholder - Id Placeholder; - /// optional: native textures (only on platforms which support GfxFeature::NativeTextures) +public: + /// resource locator + class Locator Locator = Locator::NonShared(); + /// the texture type + TextureType::Code Type = TextureType::Texture2D; + /// whether the texture will be used as a render target + bool RenderTarget = false; + /// the texture width + int Width = 1; + /// the texture height + int Height = 1; + /// the texture depth or number of layers + int Depth = 1; + /// number of mipmaps in the texture + int NumMipMaps = 1; + /// the usage-hint of the texture + Usage::Code Usage = Usage::Immutable; + /// the pixel format (can be one of the depth formats if this is a depth-render-target) + PixelFormat::Code Format = PixelFormat::RGBA8; + /// the sample count, for MSAA render targets + int SampleCount = 1; + /// magnification texture filter mode + TextureFilterMode::Code MagFilter = TextureFilterMode::Nearest; + /// minification texture filter mode + TextureFilterMode::Code MinFilter = TextureFilterMode::Nearest; + /// texture coordinate wrapping mode along U + TextureWrapMode::Code WrapU = TextureWrapMode::Repeat; + /// texture coordinate wrapping mode along V + TextureWrapMode::Code WrapV = TextureWrapMode::Repeat; + /// texture coordinate wrapping mode along W + TextureWrapMode::Code WrapW = TextureWrapMode::Repeat; + /// optional native textures (only on platforms which support GfxFeature::NativeTextures) StaticArray NativeTextures; /// optional image surface offsets and sizes ImageDataAttrs ImageData; - /// default constructor - TextureDesc(); -private: - bool setupFromPixelData = false; - bool setupFromNativeHandle = false; - bool setupEmpty = false; - bool hasMipMaps = false; + + /// default constructor + TextureDesc() { + NativeTextures.Fill(0); + } }; - + +//------------------------------------------------------------------------------ +/** + @class Oryol::TextureBuilder + @ingroup Gfx + @brief builder for TextureDesc objects +*/ +class TextureBuilder { +public: + TextureDesc desc; + operator TextureDesc() { + return desc; + } + TextureBuilder& Locator(const class Locator& loc) { + desc.Locator = loc; return *this; + } + TextureBuilder& Type(TextureType::Code t) { + desc.Type = t; return *this; + } + TextureBuilder& RenderTarget(bool b) { + desc.RenderTarget = b; return *this; + } + TextureBuilder& Width(int w) { + desc.Width = w; return *this; + } + TextureBuilder& Height(int h) { + desc.Height = h; return *this; + } + TextureBuilder& Depth(int d) { + desc.Depth = d; return *this; + } + TextureBuilder& NumMipMaps(int n) { + desc.NumMipMaps = n; return *this; + } + TextureBuilder& Usage(Usage::Code u) { + desc.Usage = u; return *this; + } + TextureBuilder& Format(PixelFormat::Code fmt) { + desc.Format = fmt; return *this; + } + TextureBuilder& SampleCount(int c) { + desc.SampleCount = c; return *this; + } + TextureBuilder& MagFilter(TextureFilterMode::Code f) { + desc.MagFilter = f; return *this; + } + TextureBuilder& MinFilter(TextureFilterMode::Code f) { + desc.MinFilter = f; return *this; + } + TextureBuilder& WrapU(TextureWrapMode::Code m) { + desc.WrapU = m; return *this; + } + TextureBuilder& WrapV(TextureWrapMode::Code m) { + desc.WrapV = m; return *this; + } + TextureBuilder& WrapW(TextureWrapMode::Code m) { + desc.WrapW = m; return *this; + } + TextureBuilder& NativeTexture(int index, intptr_t tex) { + desc.NativeTextures[index] = tex; return *this; + } + TextureBuilder& ImageDataSize(int faceIndex, int mipIndex, int size) { + desc.ImageData.Sizes[faceIndex][mipIndex] = size; + return *this; + } + TextureBuilder& ImageDataOffset(int faceIndex, int mipIndex, int offset) { + desc.ImageData.Offsets[faceIndex][mipIndex] = offset; + return *this; + } +}; +inline TextureBuilder MakeTextureDesc() { + return TextureBuilder(); +} + } // namespace Oryol diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index f37fbdf6d..3cbf221ca 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -199,24 +199,22 @@ static sg_compare_func convertCompareFunc(CompareFunc::Code f) { } } -//------------------------------------------------------------------------------ -static void convertStencilState(const StencilState& src, sg_stencil_state& dst) { - dst.fail_op = convertStencilOp(src.FailOp); - dst.depth_fail_op = convertStencilOp(src.DepthFailOp); - dst.pass_op = convertStencilOp(src.PassOp); - dst.compare_func = convertCompareFunc(src.CmpFunc); -} - //------------------------------------------------------------------------------ static void convertDepthStencilState(const PipelineDesc& src, sg_pipeline_desc& dst) { - convertStencilState(src.DepthStencilState.StencilFront, dst.depth_stencil.stencil_front); - convertStencilState(src.DepthStencilState.StencilBack, dst.depth_stencil.stencil_back); - dst.depth_stencil.depth_compare_func = convertCompareFunc(src.DepthStencilState.DepthCmpFunc); - dst.depth_stencil.depth_write_enabled = src.DepthStencilState.DepthWriteEnabled; - dst.depth_stencil.stencil_enabled = src.DepthStencilState.StencilEnabled; - dst.depth_stencil.stencil_read_mask = src.DepthStencilState.StencilReadMask; - dst.depth_stencil.stencil_write_mask = src.DepthStencilState.StencilWriteMask; - dst.depth_stencil.stencil_ref = src.DepthStencilState.StencilRef; + dst.depth_stencil.stencil_front.fail_op = convertStencilOp(src.StencilFrontFailOp); + dst.depth_stencil.stencil_front.depth_fail_op = convertStencilOp(src.StencilFrontDepthFailOp); + dst.depth_stencil.stencil_front.pass_op = convertStencilOp(src.StencilFrontPassOp); + dst.depth_stencil.stencil_front.compare_func = convertCompareFunc(src.StencilFrontCmpFunc); + dst.depth_stencil.stencil_back.fail_op = convertStencilOp(src.StencilBackFailOp); + dst.depth_stencil.stencil_back.depth_fail_op = convertStencilOp(src.StencilBackDepthFailOp); + dst.depth_stencil.stencil_back.pass_op = convertStencilOp(src.StencilBackPassOp); + dst.depth_stencil.stencil_back.compare_func = convertCompareFunc(src.StencilBackCmpFunc); + dst.depth_stencil.depth_compare_func = convertCompareFunc(src.DepthCmpFunc); + dst.depth_stencil.depth_write_enabled = src.DepthWriteEnabled; + dst.depth_stencil.stencil_enabled = src.StencilEnabled; + dst.depth_stencil.stencil_read_mask = src.StencilReadMask; + dst.depth_stencil.stencil_write_mask = src.StencilWriteMask; + dst.depth_stencil.stencil_ref = src.StencilRef; } //------------------------------------------------------------------------------ @@ -296,20 +294,21 @@ static sg_pixel_format convertPixelFormat(PixelFormat::Code fmt) { //------------------------------------------------------------------------------ static void convertBlendState(const PipelineDesc& src, sg_pipeline_desc& dst) { - dst.blend.enabled = src.BlendState.BlendEnabled; - dst.blend.src_factor_rgb = convertBlendFactor(src.BlendState.SrcFactorRGB); - dst.blend.dst_factor_rgb = convertBlendFactor(src.BlendState.DstFactorRGB); - dst.blend.op_rgb = convertBlendOp(src.BlendState.OpRGB); - dst.blend.src_factor_alpha = convertBlendFactor(src.BlendState.SrcFactorAlpha); - dst.blend.dst_factor_alpha = convertBlendFactor(src.BlendState.DstFactorAlpha); - dst.blend.op_alpha = convertBlendOp(src.BlendState.OpAlpha); - dst.blend.color_write_mask = convertColorMask(src.BlendState.ColorWriteMask); - dst.blend.color_format = convertPixelFormat(src.BlendState.ColorFormat); - dst.blend.depth_format = convertPixelFormat(src.BlendState.DepthFormat); - dst.blend.blend_color[0] = src.BlendState.Color.r; - dst.blend.blend_color[1] = src.BlendState.Color.g; - dst.blend.blend_color[2] = src.BlendState.Color.b; - dst.blend.blend_color[3] = src.BlendState.Color.a; + dst.blend.enabled = src.BlendEnabled; + dst.blend.src_factor_rgb = convertBlendFactor(src.BlendSrcFactorRGB); + dst.blend.dst_factor_rgb = convertBlendFactor(src.BlendDstFactorRGB); + dst.blend.op_rgb = convertBlendOp(src.BlendOpRGB); + dst.blend.src_factor_alpha = convertBlendFactor(src.BlendSrcFactorAlpha); + dst.blend.dst_factor_alpha = convertBlendFactor(src.BlendDstFactorAlpha); + dst.blend.op_alpha = convertBlendOp(src.BlendOpAlpha); + dst.blend.color_write_mask = convertColorMask(src.ColorWriteMask); + dst.blend.color_attachment_count = src.MRTCount; + dst.blend.color_format = convertPixelFormat(src.ColorFormat); + dst.blend.depth_format = convertPixelFormat(src.DepthFormat); + dst.blend.blend_color[0] = src.BlendColor.r; + dst.blend.blend_color[1] = src.BlendColor.g; + dst.blend.blend_color[2] = src.BlendColor.b; + dst.blend.blend_color[3] = src.BlendColor.a; } //------------------------------------------------------------------------------ @@ -329,10 +328,10 @@ static sg_cull_mode convertCullMode(bool enabled, Face::Code face) { //------------------------------------------------------------------------------ static void convertRasterizerState(const PipelineDesc& src, sg_pipeline_desc& dst) { - dst.rasterizer.alpha_to_coverage_enabled = src.RasterizerState.AlphaToCoverageEnabled; - dst.rasterizer.cull_mode = convertCullMode(src.RasterizerState.CullFaceEnabled, src.RasterizerState.CullFace); + dst.rasterizer.alpha_to_coverage_enabled = src.AlphaToCoverageEnabled; + dst.rasterizer.cull_mode = convertCullMode(src.CullFaceEnabled, src.CullFace); dst.rasterizer.face_winding = _SG_FACEWINDING_DEFAULT; - dst.rasterizer.sample_count = src.RasterizerState.SampleCount; + dst.rasterizer.sample_count = src.SampleCount; dst.rasterizer.depth_bias = 0.0f; dst.rasterizer.depth_bias_slope_scale = 0.0f; dst.rasterizer.depth_bias_clamp = 0.0f; @@ -560,25 +559,27 @@ sokolGfxBackend::CreateTexture(const TextureDesc& desc, const void* data, int si o_assert_dbg(this->isValid); sg_image_desc sgDesc = { }; sgDesc.type = convertTextureType(desc.Type); - sgDesc.render_target = desc.IsRenderTarget; + sgDesc.render_target = desc.RenderTarget; sgDesc.width = desc.Width; sgDesc.height = desc.Height; sgDesc.depth = desc.Depth; sgDesc.num_mipmaps = desc.NumMipMaps; - sgDesc.usage = convertUsage(desc.TextureUsage); + sgDesc.usage = convertUsage(desc.Usage); sgDesc.pixel_format = convertPixelFormat(desc.Format); sgDesc.sample_count = desc.SampleCount; - sgDesc.min_filter = convertFilter(desc.Sampler.MinFilter); - sgDesc.mag_filter = convertFilter(desc.Sampler.MagFilter); - sgDesc.wrap_u = convertWrap(desc.Sampler.WrapU); - sgDesc.wrap_v = convertWrap(desc.Sampler.WrapV); - sgDesc.wrap_w = convertWrap(desc.Sampler.WrapW); - o_assert_dbg(desc.ImageData.NumFaces <= SG_CUBEFACE_NUM); - o_assert_dbg(desc.ImageData.NumMipMaps <= SG_MAX_MIPMAPS); - for (int f = 0; f < desc.ImageData.NumFaces; f++) { - for (int m = 0; m < desc.ImageData.NumMipMaps; m++) { - sgDesc.content.subimage[f][m].ptr = (uint8_t*)data + desc.ImageData.Offsets[f][m]; - sgDesc.content.subimage[f][m].size = desc.ImageData.Sizes[f][m]; + sgDesc.min_filter = convertFilter(desc.MinFilter); + sgDesc.mag_filter = convertFilter(desc.MagFilter); + sgDesc.wrap_u = convertWrap(desc.WrapU); + sgDesc.wrap_v = convertWrap(desc.WrapV); + sgDesc.wrap_w = convertWrap(desc.WrapW); + o_assert_dbg(GfxConfig::MaxNumTextureMipMaps <= SG_MAX_MIPMAPS); + o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); + for (int f = 0; f < GfxConfig::MaxNumTextureFaces; f++) { + for (int m = 0; m < GfxConfig::MaxNumTextureMipMaps; m++) { + if (desc.ImageData.Sizes[f][m] > 0) { + sgDesc.content.subimage[f][m].ptr = (uint8_t*)data + desc.ImageData.Offsets[f][m]; + sgDesc.content.subimage[f][m].size = desc.ImageData.Sizes[f][m]; + } } } o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index 742bec7c3..6c38570db 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -32,14 +32,15 @@ BlendTestApp::OnInit() { // create pipeline object for a patterned background float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - auto bgBuf = BufferSetup::Make(sizeof(bgVertices)); - this->bgDrawState.VertexBuffers[0] = Gfx::CreateResource(bgBuf, bgVertices, sizeof(bgVertices)); - Id bgShd = Gfx::CreateResource(BGShader::Setup()); - auto ps = PipelineSetup::FromShaderAndLayout(bgShd, { - { "in_pos", VertexFormat::Float2 } - }); - ps.PrimType = PrimitiveType::TriangleStrip; - this->bgDrawState.Pipeline = Gfx::CreateResource(ps); + this->bgDrawState.VertexBuffers[0] = Gfx::CreateBuffer(MakeBufferDesc() + .Size(sizeof(bgVertices)), + bgVertices, sizeof(bgVertices)); + this->bgDrawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + .Shader(Gfx::CreateShader(BGShader::Desc())) + .Layout(0, { + { "in_pos", VertexFormat::Float2 } + }) + .PrimitiveType(PrimitiveType::TriangleStrip)); // setup a triangle mesh and shader float triVertices[] = { @@ -48,22 +49,25 @@ BlendTestApp::OnInit() { 0.05f, -0.05f, 0.5f, 0.0f, 0.75f, 0.0f, 0.75f, -0.05f, -0.05f, 0.5f, 0.0f, 0.0f, 0.75f, 0.75f }; - this->triVBuf = Gfx::CreateResource(BufferSetup::Make(sizeof(triVertices)), triVertices, sizeof(triVertices)); + this->triVBuf = Gfx::CreateBuffer(MakeBufferDesc() + .Size(sizeof(triVertices)), + triVertices, sizeof(triVertices)); // setup one draw state for each blend factor combination - Id shd = Gfx::CreateResource(TriShader::Setup()); - ps = PipelineSetup::FromShaderAndLayout(shd, { - { "in_pos", VertexFormat::Float3 }, - { "in_color", VertexFormat::Float4 } - }); - ps.BlendState.BlendEnabled = true; - ps.BlendColor = glm::vec4(1.0f, 1.0f, 0.0f, 1.0f); - ps.BlendState.ColorWriteMask = PixelChannel::RGB; + auto ps = MakePipelineDesc() + .Shader(Gfx::CreateShader(TriShader::Desc())) + .Layout(0, { + { "in_pos", VertexFormat::Float3 }, + { "in_color", VertexFormat::Float4 } + }) + .BlendEnabled(true) + .BlendColor(glm::vec4(1.0f, 1.0f, 1.0f, 1.0f)) + .ColorWriteMask(PixelChannel::RGB); for (uint32_t y = 0; y < BlendFactor::Num; y++) { for (uint32_t x = 0; x < BlendFactor::Num; x++) { - ps.BlendState.SrcFactorRGB = (BlendFactor::Code) x; - ps.BlendState.DstFactorRGB = (BlendFactor::Code) y; - this->pipelines[y][x] = Gfx::CreateResource(ps); + ps.BlendSrcFactor(BlendChannel::RGB, (BlendFactor::Code)x); + ps.BlendDstFactor(BlendChannel::RGB, (BlendFactor::Code)y); + this->pipelines[y][x] = Gfx::CreatePipeline(ps); } } return App::OnInit(); diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index b830095ee..06aab90e3 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -43,16 +43,16 @@ PackedNormalsApp::OnInit() { .Torus(0.3f, 0.5f, 20, 36) .Plane(1.5f, 1.5f, 10) .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateResource(this->shapes.VertexBufferSetup, this->shapes.Data); - this->drawState.IndexBuffer = Gfx::CreateResource(this->shapes.IndexBufferSetup, this->shapes.Data); - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromShaderAndLayout(shd, this->shapes.Layout); - ps.IndexType = this->shapes.IndexType; - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.CullFaceEnabled = true; - ps.RasterizerState.SampleCount = 4; - this->drawState.Pipeline = Gfx::CreateResource(ps); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->shapes.VertexBufferDesc, this->shapes.Data); + this->drawState.IndexBuffer = Gfx::CreateBuffer(this->shapes.IndexBufferDesc, this->shapes.Data); + this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .SampleCount(4)); float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index 39e5ed2fc..af70f4c0d 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -40,20 +40,24 @@ OryolMain(PrimitiveTypesApp); //------------------------------------------------------------------------------ Id createIndexBuffer(const uint16_t* data, int dataSize) { - auto setup = BufferSetup::Make(dataSize, BufferType::IndexBuffer, Usage::Immutable); - return Gfx::CreateResource(setup, data, dataSize); + return Gfx::CreateBuffer(MakeBufferDesc() + .Size(dataSize) + .Type(BufferType::IndexBuffer) + .Usage(Usage::Immutable), + data, dataSize); } //------------------------------------------------------------------------------ Id createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const VertexLayout& layout, Id shd, int sampleCount) { - auto pipSetup = PipelineSetup::FromShaderAndLayout(shd, layout); - pipSetup.DepthStencilState.DepthWriteEnabled = true; - pipSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - pipSetup.RasterizerState.SampleCount = sampleCount; - pipSetup.IndexType = indexType; - pipSetup.PrimType = primType; - return Gfx::CreateResource(pipSetup); + return Gfx::CreatePipeline(MakePipelineDesc() + .Shader(shd) + .Layout(0, layout) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(sampleCount) + .IndexType(indexType) + .PrimitiveType(primType)); } //------------------------------------------------------------------------------ @@ -89,10 +93,10 @@ PrimitiveTypesApp::OnInit() { } } auto meshResult = meshBuilder.Build(); - Id vbuf = Gfx::CreateResource(meshResult.VertexBufferSetup, meshResult.Data); + Id vbuf = Gfx::CreateBuffer(meshResult.VertexBufferDesc, meshResult.Data); // a single shader used by all pipeline objects - Id shd = Gfx::CreateResource(Shader::Setup()); + Id shd = Gfx::CreateShader(Shader::Desc()); // now setup a complete draw state (pipeline + index mesh + shared vertex mesh) for // each primitive type (points, lines, linestrip, triangles, trianglestrip) diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index 636db6df9..c90f5cb7e 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -46,16 +46,17 @@ ShapeApp::OnInit() { .Torus(0.3f, 0.5f, 20, 36) .Plane(1.5f, 1.5f, 10) .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateResource(shapes.VertexBufferSetup, shapes.Data); - this->drawState.IndexBuffer = Gfx::CreateResource(shapes.IndexBufferSetup, shapes.Data); - Id shd = Gfx::CreateResource(Shader::Setup()); - - auto ps = PipelineSetup::FromShaderAndLayout(shd, shapes.Layout); - ps.IndexType = shapes.IndexType; - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(ps); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->shapes.VertexBufferDesc, this->shapes.Data); + this->drawState.IndexBuffer = Gfx::CreateBuffer(this->shapes.IndexBufferDesc, this->shapes.Data); + + Id shd = Gfx::CreateShader(Shader::Desc()); + this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + .Shader(shd) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxSetup.SampleCount)); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; From 9cec193b8be4e143c2907501a739ffc4a1e897e2 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 14 Jan 2018 18:51:20 +0100 Subject: [PATCH 19/91] Fix SeparateBuffers sample for new resource creation --- .../SeparateBuffers/SeparateBuffers.cc | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index d2a8adeaf..93305749f 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -53,32 +53,32 @@ SeparateBuffersApp::OnInit() { .AddPositions("in_pos", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1) .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateResource(this->cubeShape.VertexBufferSetup, this->cubeShape.Data); - this->drawState.IndexBuffer = Gfx::CreateResource(this->cubeShape.IndexBufferSetup, this->cubeShape.Data); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->cubeShape.VertexBufferDesc, this->cubeShape.Data); + this->drawState.IndexBuffer = Gfx::CreateBuffer(this->cubeShape.IndexBufferDesc, this->cubeShape.Data); // create 3 meshes with only color data static const int NumVertices = 24; static const int NumColorChannels = 3; float colorVertices[NumVertices][NumColorChannels]= { }; - auto colorSetup = BufferSetup::Make(sizeof(colorVertices)); for (int i = 0; i < NumColorChannels; i++) { for (int vi = 0; vi < NumVertices; vi++) { colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); } - this->colorBuffers[i] = Gfx::CreateResource(colorSetup, colorVertices, sizeof(colorVertices)); + this->colorBuffers[i] = Gfx::CreateBuffer(MakeBufferDesc() + .Size(sizeof(colorVertices)), + colorVertices, sizeof(colorVertices)); } // create shader and pipeline, the position data vertex Layout - // goes into the first slot, and the color data vertex layout into the second slot - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromShader(shd); - ps.Layouts[0] = this->cubeShape.Layout; - ps.Layouts[1] = { { "in_color", VertexFormat::Float3 } }; - ps.IndexType = this->cubeShape.IndexType; - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(ps); + // goes into the first slot, and the color data vertex layout into the second slot + this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, this->cubeShape.Layout) + .Layout(1, { { "in_color", VertexFormat::Float3 } }) + .IndexType(this->cubeShape.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxSetup.SampleCount)); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; From abcbe8bf7161f176380992c4cc27cd01c1bc16b9 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 14 Jan 2018 22:11:31 +0100 Subject: [PATCH 20/91] Another attempt at Gfx resource setup --- code/Modules/Assets/Gfx/MeshBuilder.cc | 13 +- code/Modules/Dbg/private/debugTextRenderer.cc | 17 +- code/Modules/Gfx/Gfx.cc | 4 +- code/Modules/Gfx/Gfx.h | 29 ++- code/Modules/Gfx/GfxTypes.cc | 19 ++ code/Modules/Gfx/GfxTypes.h | 191 ++++++++++-------- code/Samples/PackedNormals/PackedNormals.cc | 5 +- code/Samples/Quad/Quad.cc | 37 ++-- code/Samples/Shapes/Shapes.cc | 5 +- .../SimpleRenderTarget/SimpleRenderTarget.cc | 47 +++-- code/Samples/Triangle/Triangle.cc | 24 +-- 11 files changed, 240 insertions(+), 151 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index 4fe5e29e9..ac67115d6 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -3,7 +3,8 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "MeshBuilder.h" -#include "Core/Assertion.h" +#include "Core/Assertion.h" +#include "Gfx/Gfx.h" #include namespace Oryol { @@ -29,16 +30,18 @@ MeshBuilder::Begin() { // setup Result object this->result.Layout = this->Layout; this->result.IndexType = this->IndexType; - this->result.VertexBufferDesc = MakeBufferDesc() + this->result.VertexBufferDesc = Gfx::Buffer() .Size(vbSize) .Type(BufferType::VertexBuffer) - .Usage(this->VertexUsage); + .Usage(this->VertexUsage) + .Desc; if (ibSize > 0) { - this->result.IndexBufferDesc = MakeBufferDesc() + this->result.IndexBufferDesc = Gfx::Buffer() .Size(ibSize) .Type(BufferType::IndexBuffer) .Usage(this->IndexUsage) - .Offset(this->result.VertexBufferDesc.Size); + .Offset(this->result.VertexBufferDesc.Size) + .Desc; } else { this->result.IndexBufferDesc = BufferDesc(); diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index b48691aac..998b4f888 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -145,14 +145,15 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { { "color0", VertexFormat::UByte4N } }; const int vbufSize = this->maxNumVertices * this->vertexLayout.ByteSize(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(MakeBufferDesc() + this->drawState.VertexBuffers[0] = Gfx::Buffer() .Size(vbufSize) .Type(BufferType::VertexBuffer) - .Usage(Usage::Stream)); + .Usage(Usage::Stream) + .Create(); o_assert_dbg(this->drawState.VertexBuffers[0].IsValid()); // create pipeline object - this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + this->drawState.Pipeline = Gfx::Pipeline() .Shader(Gfx::CreateShader(DbgTextShader::Desc())) .Layout(0, this->vertexLayout) .DepthWriteEnabled(false) @@ -163,7 +164,8 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .ColorWriteMask(PixelChannel::RGB) .ColorFormat(setup.ColorFormat) .DepthFormat(setup.DepthFormat) - .SampleCount(setup.SampleCount)); + .SampleCount(setup.SampleCount) + .Create(); // convert the KC85/4 font into 8bpp image data const int numChars = 128; @@ -192,7 +194,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { } // setup texture, pixel format is 8bpp uncompressed - this->drawState.FSTexture[DbgTextShader::tex] = Gfx::CreateTexture(MakeTextureDesc() + this->drawState.FSTexture[DbgTextShader::tex] = Gfx::Texture() .Type(TextureType::Texture2D) .Width(imgWidth) .Height(imgHeight) @@ -201,8 +203,9 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .MagFilter(TextureFilterMode::Nearest) .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge) - .ImageDataSize(0, 0, imgDataSize), - data); + .Content(data) + .MipDataSize(0, 0, imgDataSize) + .Create(); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 90b51a2b2..cd6310359 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -323,7 +323,7 @@ Gfx::CreateTexture(const TextureDesc& desc) { //------------------------------------------------------------------------------ Id -Gfx::CreateTexture(const TextureDesc& desc, const Buffer& data) { +Gfx::CreateTexture(const TextureDesc& desc, const class Buffer& data) { return Gfx::CreateTexture(desc, data.Data(), data.Size()); } @@ -347,7 +347,7 @@ Gfx::CreateBuffer(const BufferDesc& desc) { //------------------------------------------------------------------------------ Id -Gfx::CreateBuffer(const BufferDesc& desc, const Buffer& data) { +Gfx::CreateBuffer(const BufferDesc& desc, const class Buffer& data) { return Gfx::CreateBuffer(desc, data.Data(), data.Size()); } diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index a96cac249..37ed829c9 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -49,6 +49,13 @@ class Gfx { static const struct DisplayAttrs& PassAttrs(); /// get frame-render stats, gets reset in CommitFrame()! static const GfxFrameInfo& FrameInfo(); + + /// start creating a buffer through a BufferBuilder object + static class BufferBuilder Buffer(); + /// start creating a texture through a texture builder object + static class TextureBuilder Texture(); + /// start creating a pipeline through a pipeline builder object + static class PipelineBuilder Pipeline(); /// generate new resource label and push on label stack static ResourceLabel PushResourceLabel(); @@ -59,13 +66,13 @@ class Gfx { /// create a buffer object without associated data static Id CreateBuffer(const BufferDesc& desc); /// create a buffer object with associated data - static Id CreateBuffer(const BufferDesc& setup, const Buffer& data); + static Id CreateBuffer(const BufferDesc& setup, const class Buffer& data); /// create a buffer object with raw pointer to associated data static Id CreateBuffer(const BufferDesc& setup, const void* data, int size); /// create a texture object without associated data static Id CreateTexture(const TextureDesc& desc); /// create a texture object with associated data - static Id CreateTexture(const TextureDesc& setup, const Buffer& data); + static Id CreateTexture(const TextureDesc& setup, const class Buffer& data); /// create a texture object with raw pointer to associated data static Id CreateTexture(const TextureDesc& setup, const void* data, int size); /// create a shader object @@ -131,5 +138,23 @@ template inline void Gfx::ApplyUniformBlock(const T& ub) { applyUniformBlock(T::_bindShaderStage, T::_bindSlotIndex, (const uint8_t*)&ub, sizeof(ub)); } + +//------------------------------------------------------------------------------ +inline BufferBuilder +Gfx::Buffer() { + return BufferBuilder(); +} + +//------------------------------------------------------------------------------ +inline TextureBuilder +Gfx::Texture() { + return TextureBuilder(); +} + +//------------------------------------------------------------------------------ +inline PipelineBuilder +Gfx::Pipeline() { + return PipelineBuilder(); +} } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 609992677..57e1eb87d 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -3,6 +3,7 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "GfxTypes.h" +#include "Gfx.h" #include namespace Oryol { @@ -827,4 +828,22 @@ int ShaderDesc::TexBindSlot(int index) const { return this->textures[index].bindSlot; } +//------------------------------------------------------------------------------ +Id BufferBuilder::Create() { + if (this->ContentSize != 0) { + o_assert_dbg(this->ContentSize >= this->Desc.Size); + } + return Gfx::CreateBuffer(this->Desc, this->ContentPtr, this->Desc.Size); +} + +//------------------------------------------------------------------------------ +Id PipelineBuilder::Create() { + return Gfx::CreatePipeline(this->Desc); +} + +//------------------------------------------------------------------------------ +Id TextureBuilder::Create() { + return Gfx::CreateTexture(this->Desc, this->ContentPtr, this->ContentSize); +} + } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 1501f7a6c..ae206c90d 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -6,7 +6,8 @@ #include "Core/String/StringAtom.h" #include "Resource/Id.h" #include "Resource/Locator.h" -#include "Core/Containers/StaticArray.h" +#include "Core/Containers/StaticArray.h" +#include "Core/Containers/Buffer.h" #include "Gfx/GfxConfig.h" #include "glm/vec4.hpp" #include @@ -949,7 +950,12 @@ struct BufferDesc { /// optional byte-offset to init-data int Offset = 0; /// optional native 3D-API buffers - StaticArray NativeBuffers; + StaticArray NativeBuffers; + + /// default constructor + BufferDesc() { + NativeBuffers.Fill(0); + } }; //------------------------------------------------------------------------------ @@ -960,32 +966,41 @@ struct BufferDesc { */ class BufferBuilder { public: - BufferDesc desc; - operator BufferDesc() { - return desc; - } + BufferDesc Desc; + const void* ContentPtr = nullptr; + int ContentSize = 0; + BufferBuilder() { }; + BufferBuilder(const BufferBuilder& rhs): Desc(rhs.Desc) { }; BufferBuilder& Locator(const class Locator& loc) { - desc.Locator = loc; return *this; + Desc.Locator = loc; return *this; } BufferBuilder& Type(BufferType::Code t) { - desc.Type = t; return *this; + Desc.Type = t; return *this; } BufferBuilder& Usage(Usage::Code u) { - desc.Usage = u; return *this; + Desc.Usage = u; return *this; } BufferBuilder& Size(int s) { - desc.Size = s; return *this; + Desc.Size = s; return *this; } BufferBuilder& Offset(int o) { - desc.Offset = o; return *this; + Desc.Offset = o; return *this; } BufferBuilder& NativeBuffer(int index, intptr_t buf) { - desc.NativeBuffers[index] = buf; return *this; + Desc.NativeBuffers[index] = buf; return *this; + } + BufferBuilder& Content(const void* ptr) { + ContentPtr = ptr; + ContentSize = 0; + return *this; + } + BufferBuilder& Content(const Buffer& content) { + ContentPtr = content.Data(); + ContentSize = content.Size(); + return *this; } + Id Create(); }; -inline BufferBuilder MakeBufferDesc() { - return BufferBuilder(); -} //------------------------------------------------------------------------------ /** @@ -1051,143 +1066,140 @@ struct PipelineDesc { */ class PipelineBuilder { public: - PipelineDesc desc; - operator PipelineDesc() { - return desc; - } + PipelineDesc Desc; + PipelineBuilder() { }; + PipelineBuilder(const PipelineBuilder& rhs): Desc(rhs.Desc) { }; PipelineBuilder& Locator(const class Locator& loc) { - desc.Locator = loc; return *this; + Desc.Locator = loc; return *this; } PipelineBuilder& Shader(const Id& shd) { - desc.Shader = shd; return *this; + Desc.Shader = shd; return *this; } PipelineBuilder& Layout(int slotIndex, const VertexLayout& layout) { - desc.Layouts[slotIndex] = layout; return *this; + Desc.Layouts[slotIndex] = layout; return *this; } PipelineBuilder& PrimitiveType(PrimitiveType::Code t) { - desc.PrimType = t; return *this; + Desc.PrimType = t; return *this; } PipelineBuilder& IndexType(IndexType::Code t) { - desc.IndexType = t; return *this; + Desc.IndexType = t; return *this; } PipelineBuilder& DepthCmpFunc(CompareFunc::Code f) { - desc.DepthCmpFunc = f; return *this; + Desc.DepthCmpFunc = f; return *this; } PipelineBuilder& DepthWriteEnabled(bool b) { - desc.DepthWriteEnabled = b; return *this; + Desc.DepthWriteEnabled = b; return *this; } PipelineBuilder& StencilEnabled(bool b) { - desc.StencilEnabled = b; return *this; + Desc.StencilEnabled = b; return *this; } PipelineBuilder& StencilReadMask(uint8_t m) { - desc.StencilReadMask = m; return *this; + Desc.StencilReadMask = m; return *this; } PipelineBuilder& StencilWriteMask(uint8_t m) { - desc.StencilWriteMask = m; return *this; + Desc.StencilWriteMask = m; return *this; } PipelineBuilder& StencilRef(uint8_t r) { - desc.StencilRef = r; return *this; + Desc.StencilRef = r; return *this; } PipelineBuilder& StencilFailOp(Face::Code face, StencilOp::Code op) { if (Face::Front & face) { - desc.StencilFrontFailOp = op; + Desc.StencilFrontFailOp = op; } if (Face::Back & face) { - desc.StencilBackFailOp = op; + Desc.StencilBackFailOp = op; } return *this; } PipelineBuilder& StencilDepthFailOp(Face::Code face, StencilOp::Code op) { if (Face::Front & face) { - desc.StencilFrontDepthFailOp = op; + Desc.StencilFrontDepthFailOp = op; } if (Face::Back & face) { - desc.StencilBackDepthFailOp = op; + Desc.StencilBackDepthFailOp = op; } return *this; } PipelineBuilder& StencilPassOp(Face::Code face, StencilOp::Code op) { if (Face::Front & face) { - desc.StencilFrontPassOp = op; + Desc.StencilFrontPassOp = op; } if (Face::Back & face) { - desc.StencilBackPassOp = op; + Desc.StencilBackPassOp = op; } return *this; } PipelineBuilder& StencilCmpFunc(Face::Code face, CompareFunc::Code fn) { if (Face::Front & face) { - desc.StencilFrontCmpFunc = fn; + Desc.StencilFrontCmpFunc = fn; } if (Face::Back & face) { - desc.StencilBackCmpFunc = fn; + Desc.StencilBackCmpFunc = fn; } return *this; } PipelineBuilder& BlendEnabled(bool b) { - desc.BlendEnabled = b; return *this; + Desc.BlendEnabled = b; return *this; } PipelineBuilder& BlendSrcFactor(BlendChannel::Code chn, BlendFactor::Code f) { if (BlendChannel::RGB & chn) { - desc.BlendSrcFactorRGB = f; + Desc.BlendSrcFactorRGB = f; } if (BlendChannel::Alpha & chn) { - desc.BlendSrcFactorAlpha = f; + Desc.BlendSrcFactorAlpha = f; } return *this; } PipelineBuilder& BlendDstFactor(BlendChannel::Code chn, BlendFactor::Code f) { if (BlendChannel::RGB & chn) { - desc.BlendDstFactorRGB = f; + Desc.BlendDstFactorRGB = f; } if (BlendChannel::Alpha & chn) { - desc.BlendDstFactorAlpha = f; + Desc.BlendDstFactorAlpha = f; } return *this; } PipelineBuilder& BlendOp(BlendChannel::Code chn, BlendOperation::Code op) { if (BlendChannel::RGB & chn) { - desc.BlendOpRGB = op; + Desc.BlendOpRGB = op; } if (BlendChannel::Alpha & chn) { - desc.BlendOpAlpha = op; + Desc.BlendOpAlpha = op; } return *this; } PipelineBuilder& ColorWriteMask(PixelChannel::Mask m) { - desc.ColorWriteMask = m; return *this; + Desc.ColorWriteMask = m; return *this; } PipelineBuilder& ColorFormat(PixelFormat::Code fmt) { - desc.ColorFormat = fmt; return *this; + Desc.ColorFormat = fmt; return *this; } PipelineBuilder& DepthFormat(PixelFormat::Code fmt) { - desc.DepthFormat = fmt; return *this; + Desc.DepthFormat = fmt; return *this; } PipelineBuilder& SampleCount(int c) { - desc.SampleCount = c; return *this; + Desc.SampleCount = c; return *this; } PipelineBuilder& MRTCount(int c) { - desc.MRTCount = c; return *this; + Desc.MRTCount = c; return *this; } PipelineBuilder& BlendColor(const glm::vec4& c) { - desc.BlendColor = c; return *this; + Desc.BlendColor = c; return *this; } PipelineBuilder& CullFaceEnabled(bool b) { - desc.CullFaceEnabled = b; return *this; + Desc.CullFaceEnabled = b; return *this; } PipelineBuilder& CullFace(Face::Code f) { - desc.CullFace = f; return *this; + Desc.CullFace = f; return *this; } PipelineBuilder& ScissorTestEnabled(bool b) { - desc.ScissorTestEnabled = b; return *this; + Desc.ScissorTestEnabled = b; return *this; } PipelineBuilder& AlphaToCoverageEnabled(bool b) { - desc.AlphaToCoverageEnabled = b; return *this; + Desc.AlphaToCoverageEnabled = b; return *this; } + Id Create(); }; -inline PipelineBuilder MakePipelineDesc() { - return PipelineBuilder(); -} //------------------------------------------------------------------------------ /** @@ -1368,69 +1380,78 @@ class TextureDesc { */ class TextureBuilder { public: - TextureDesc desc; - operator TextureDesc() { - return desc; - } + TextureDesc Desc; + const void* ContentPtr = nullptr; + int ContentSize = 0; + TextureBuilder() { }; + TextureBuilder(const TextureBuilder& rhs): Desc(rhs.Desc) { }; TextureBuilder& Locator(const class Locator& loc) { - desc.Locator = loc; return *this; + Desc.Locator = loc; return *this; } TextureBuilder& Type(TextureType::Code t) { - desc.Type = t; return *this; + Desc.Type = t; return *this; } TextureBuilder& RenderTarget(bool b) { - desc.RenderTarget = b; return *this; + Desc.RenderTarget = b; return *this; } TextureBuilder& Width(int w) { - desc.Width = w; return *this; + Desc.Width = w; return *this; } TextureBuilder& Height(int h) { - desc.Height = h; return *this; + Desc.Height = h; return *this; } TextureBuilder& Depth(int d) { - desc.Depth = d; return *this; + Desc.Depth = d; return *this; } TextureBuilder& NumMipMaps(int n) { - desc.NumMipMaps = n; return *this; + Desc.NumMipMaps = n; return *this; } TextureBuilder& Usage(Usage::Code u) { - desc.Usage = u; return *this; + Desc.Usage = u; return *this; } TextureBuilder& Format(PixelFormat::Code fmt) { - desc.Format = fmt; return *this; + Desc.Format = fmt; return *this; } TextureBuilder& SampleCount(int c) { - desc.SampleCount = c; return *this; + Desc.SampleCount = c; return *this; } TextureBuilder& MagFilter(TextureFilterMode::Code f) { - desc.MagFilter = f; return *this; + Desc.MagFilter = f; return *this; } TextureBuilder& MinFilter(TextureFilterMode::Code f) { - desc.MinFilter = f; return *this; + Desc.MinFilter = f; return *this; } TextureBuilder& WrapU(TextureWrapMode::Code m) { - desc.WrapU = m; return *this; + Desc.WrapU = m; return *this; } TextureBuilder& WrapV(TextureWrapMode::Code m) { - desc.WrapV = m; return *this; + Desc.WrapV = m; return *this; } TextureBuilder& WrapW(TextureWrapMode::Code m) { - desc.WrapW = m; return *this; + Desc.WrapW = m; return *this; } TextureBuilder& NativeTexture(int index, intptr_t tex) { - desc.NativeTextures[index] = tex; return *this; + Desc.NativeTextures[index] = tex; return *this; + } + TextureBuilder& Content(const void* ptr, int size) { + ContentPtr = ptr; + ContentSize = size; + return *this; + } + TextureBuilder& Content(const Buffer& content) { + ContentPtr = content.Data(); + ContentSize = content.Size(); + return *this; } - TextureBuilder& ImageDataSize(int faceIndex, int mipIndex, int size) { - desc.ImageData.Sizes[faceIndex][mipIndex] = size; + TextureBuilder& MipDataSize(int faceIndex, int mipIndex, int size) { + Desc.ImageData.Sizes[faceIndex][mipIndex] = size; return *this; } - TextureBuilder& ImageDataOffset(int faceIndex, int mipIndex, int offset) { - desc.ImageData.Offsets[faceIndex][mipIndex] = offset; + TextureBuilder& MipDataOffset(int faceIndex, int mipIndex, int offset) { + Desc.ImageData.Offsets[faceIndex][mipIndex] = offset; return *this; } + Id Create(); }; -inline TextureBuilder MakeTextureDesc() { - return TextureBuilder(); -} } // namespace Oryol diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index 06aab90e3..38e8e5c99 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -45,14 +45,15 @@ PackedNormalsApp::OnInit() { .Build(); this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->shapes.VertexBufferDesc, this->shapes.Data); this->drawState.IndexBuffer = Gfx::CreateBuffer(this->shapes.IndexBufferDesc, this->shapes.Data); - this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + this->drawState.Pipeline = Gfx::Pipeline() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, this->shapes.Layout) .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) - .SampleCount(4)); + .SampleCount(4) + .Create(); float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index ba67822a4..089deb430 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -31,33 +31,32 @@ QuadApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer( - MakeBufferDesc() - .Size(sizeof(vertices)) - .Type(BufferType::VertexBuffer), - vertices, sizeof(vertices)); + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .Type(BufferType::VertexBuffer) + .Size(sizeof(vertices)) + .Content(vertices) + .Create(); // create index buffer const uint16_t indices[2 * 3] = { 0, 1, 2, // first triangle 0, 2, 3, // second triangle }; - this->drawState.IndexBuffer = Gfx::CreateBuffer( - MakeBufferDesc() - .Size(sizeof(indices)) - .Type(BufferType::IndexBuffer), - indices, sizeof(indices)); + this->drawState.IndexBuffer = Gfx::Buffer() + .Type(BufferType::IndexBuffer) + .Size(sizeof(indices)) + .Content(indices) + .Create(); // create shader and pipeline-state-object - Id shd = Gfx::CreateShader(Shader::Desc()); - this->drawState.Pipeline = Gfx::CreatePipeline( - MakePipelineDesc() - .Shader(shd) - .Layout(0, { - { "in_pos", VertexFormat::Float3 }, - { "in_color", VertexFormat::Float4 } - }) - .IndexType(IndexType::UInt16)); + this->drawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, { + { "in_pos", VertexFormat::Float3 }, + { "in_color", VertexFormat::Float4 } + }) + .IndexType(IndexType::UInt16) + .Create(); return App::OnInit(); } diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index c90f5cb7e..2bdc606d6 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -50,13 +50,14 @@ ShapeApp::OnInit() { this->drawState.IndexBuffer = Gfx::CreateBuffer(this->shapes.IndexBufferDesc, this->shapes.Data); Id shd = Gfx::CreateShader(Shader::Desc()); - this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + this->drawState.Pipeline = Gfx::Pipeline() .Shader(shd) .Layout(0, this->shapes.Layout) .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxSetup.SampleCount)); + .SampleCount(gfxSetup.SampleCount) + .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 43a760682..9073c0792 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -43,20 +43,26 @@ SimpleRenderTargetApp::OnInit() { gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.25f, 0.45f, 0.65f, 1.0f)); Gfx::Setup(gfxSetup); - // create an offscreen render pass object with a color-attachment and depth-attachment - auto rtSetup = TextureSetup::RenderTarget2D(128, 128, PixelFormat::RGBA8); - rtSetup.Sampler.WrapU = TextureWrapMode::Repeat; - rtSetup.Sampler.WrapV = TextureWrapMode::Repeat; - rtSetup.Sampler.MagFilter = TextureFilterMode::Linear; - rtSetup.Sampler.MinFilter = TextureFilterMode::Linear; + // create an offscreen render pass object with a color-attachment and depth-attachment + auto colorDesc = MakeTextureDesc() + .Type(TextureType::Texture2D) + .RenderTarget(true) + .Width(128) + .Height(128) + .Format(PixelFormat::RGBA8) + .WrapU(TextureWrapMode::Repeat) + .WrapV(TextureWrapMode::Repeat) + .MagFilter(TextureFilterMode::Linear) + .MinFilter(TextureFilterMode::Linear); // if supported, use an anti-aliased offscreen render target if (Gfx::QueryFeature(GfxFeature::MSAARenderTargets)) { - rtSetup.SampleCount = 4; + colorDesc.SampleCount(4); Log::Info("Using MSAA4 render target\n"); } - Id colorTexture = Gfx::CreateResource(rtSetup); - rtSetup.Format = PixelFormat::Depth; - Id depthTexture = Gfx::CreateResource(rtSetup); + Id colorTexture = Gfx::CreateTexture(colorDesc); + auto depthDesc = MakeTextureDesc(colorDesc).Format(PixelFormat::DEPTH); + Id depthTexture = Gfx::CreateTexture(depthDesc); + auto rpSetup = PassSetup::From(colorTexture, depthTexture); rpSetup.DefaultAction = PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f)); this->renderPass = Gfx::CreateResource(rpSetup); @@ -69,12 +75,23 @@ SimpleRenderTargetApp::OnInit() { .AddNormals("in_normal", VertexFormat::Byte4N) .Torus(0.3f, 0.5f, 20, 36) .Build(); - this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateResource( - this->donutShape.VertexBufferSetup, this->donutShape.Data); - this->offscreenDrawState.IndexBuffer = Gfx::CreateResource( - this->donutShape.IndexBufferSetup, this->donutShape.Data); + this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer( + this->donutShape.VertexBufferDesc, this->donutShape.Data); + this->offscreenDrawState.IndexBuffer = Gfx::CreateBuffer( + this->donutShape.IndexBufferDesc, this->donutShape.Data); + + // create shader and pipeline-state-object for offscreen rendering + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + .Shader(Gfx::CreateShader(OffscreenShader::Desc())) + .Layout(0, this->donutShape.Layout) + .IndexType(this->donutShape.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .ColorFormat(colorDesc.Desc.Format) + .DepthFormat(depthDesc.Desc.Format) + .SampleCount(colorDesc.Desc.SampleCount) + - // create shader and pipeline-state-object for offscreen rendering Id offScreenShader = Gfx::CreateResource(OffscreenShader::Setup()); auto offpsSetup = PipelineSetup::FromShaderAndLayout(offScreenShader, this->donutShape.Layout); offpsSetup.IndexType = this->donutShape.IndexType; diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index ee7b5206a..56f7f8f63 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -31,19 +31,19 @@ TriangleApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f , 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer( - MakeBufferDesc().Size(sizeof(vertices)), - vertices, sizeof(vertices)); - + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .Size(sizeof(vertices)) + .Content(vertices) + .Create(); + // create shader and pipeline-state-object - Id shd = Gfx::CreateShader(Shader::Desc()); - this->drawState.Pipeline = Gfx::CreatePipeline( - MakePipelineDesc() - .Shader(shd) - .Layout(0, { - { "position", VertexFormat::Float3 }, - { "color0", VertexFormat::Float4 } - })); + this->drawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, { + { "position", VertexFormat::Float3 }, + { "color0", VertexFormat::Float4 } + }) + .Create(); return App::OnInit(); } From 4cff151f01d9bd7e74bf072591d62afc83a3d47d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 15 Jan 2018 17:27:34 +0100 Subject: [PATCH 21/91] More Gfx resource builder changes --- code/Modules/Dbg/private/debugTextRenderer.cc | 4 +- code/Modules/Gfx/Gfx.cc | 23 +- code/Modules/Gfx/Gfx.h | 22 +- code/Modules/Gfx/GfxTypes.cc | 219 +------ code/Modules/Gfx/GfxTypes.h | 617 ++++++++---------- code/Modules/Gfx/private/displayMgrBase.cc | 10 +- code/Modules/Gfx/private/displayMgrBase.h | 6 +- code/Modules/Gfx/private/glfwDisplayMgr.cc | 22 +- code/Modules/Gfx/private/glfwDisplayMgr.h | 4 +- code/Modules/Gfx/private/sokolGfxBackend.cc | 161 ++--- code/Modules/Gfx/private/sokolGfxBackend.h | 4 +- code/Samples/BlendTest/BlendTest.cc | 33 +- code/Samples/Clear/Clear.cc | 2 +- code/Samples/DebugText/DebugText.cc | 2 +- code/Samples/PackedNormals/PackedNormals.cc | 2 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 26 +- code/Samples/Quad/Quad.cc | 2 +- .../SeparateBuffers/SeparateBuffers.cc | 18 +- code/Samples/Shapes/Shapes.cc | 6 +- code/Samples/Triangle/Triangle.cc | 2 +- fips-generators/Shader.py | 33 +- 21 files changed, 503 insertions(+), 715 deletions(-) diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 998b4f888..7d5834069 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -159,8 +159,8 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .DepthWriteEnabled(false) .DepthCmpFunc(CompareFunc::Always) .BlendEnabled(true) - .BlendSrcFactor(BlendChannel::RGB, BlendFactor::SrcAlpha) - .BlendDstFactor(BlendChannel::RGB, BlendFactor::OneMinusSrcAlpha) + .BlendSrcFactorRGB(BlendFactor::SrcAlpha) + .BlendDstFactorRGB(BlendFactor::OneMinusSrcAlpha) .ColorWriteMask(PixelChannel::RGB) .ColorFormat(setup.ColorFormat) .DepthFormat(setup.DepthFormat) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index cd6310359..f693098ce 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -14,7 +14,7 @@ using namespace _priv; namespace { struct _state { - class GfxSetup gfxSetup; + class GfxDesc gfxDesc; GfxFrameInfo gfxFrameInfo; RunLoop::Id runLoopId = RunLoop::InvalidId; _priv::gfxBackend backend; @@ -25,15 +25,15 @@ namespace { //------------------------------------------------------------------------------ void -Gfx::Setup(const class GfxSetup& setup) { +Gfx::Setup(const class GfxDesc& desc) { o_assert_dbg(!IsValid()); state = Memory::New<_state>(); - state->gfxSetup = setup; + state->gfxDesc = desc; gfxPointers pointers; pointers.displayMgr = &state->backend.displayManager; - state->backend.Setup(setup, pointers); + state->backend.Setup(desc, pointers); state->runLoopId = Core::PreRunLoop()->Add([] { state->backend.ProcessSystemEvents(); }); @@ -79,10 +79,10 @@ Gfx::Unsubscribe(GfxEvent::HandlerId id) { } //------------------------------------------------------------------------------ -const GfxSetup& -Gfx::GfxSetup() { +const GfxDesc& +Gfx::Desc() { o_assert_dbg(IsValid()); - return state->gfxSetup; + return state->gfxDesc; } //------------------------------------------------------------------------------ @@ -115,7 +115,7 @@ Gfx::BeginPass() { o_assert_dbg(!state->inPass); state->inPass = true; state->gfxFrameInfo.NumPasses++; - state->backend.BeginPass(Id::InvalidId(), &state->gfxSetup.DefaultPassAction); + state->backend.BeginPass(Id::InvalidId(), &state->gfxDesc.DefaultPassAction); } //------------------------------------------------------------------------------ @@ -162,6 +162,13 @@ bool Gfx::QueryFeature(GfxFeature::Code feat) { o_assert_dbg(IsValid()); return state->backend.QueryFeature(feat); +} + +//------------------------------------------------------------------------------ +ShaderLang::Code +Gfx::QueryShaderLang() { + o_assert_dbg(IsValid()); + return state->backend.QueryShaderLang(); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 37ed829c9..17ebaa587 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -27,7 +27,7 @@ class mesh; class Gfx { public: /// setup Gfx module - static void Setup(const GfxSetup& setup); + static void Setup(const GfxDesc& desc); /// discard Gfx module static void Discard(); /// check if Gfx module is setup @@ -42,7 +42,7 @@ class Gfx { static void Unsubscribe(GfxEvent::HandlerId id); /// get the original render setup object - static const class GfxSetup& GfxSetup(); + static const class GfxDesc& Desc(); /// get the default frame buffer attributes static const struct DisplayAttrs& DisplayAttrs(); /// get the current render pass attributes (default or offscreen) @@ -51,11 +51,13 @@ class Gfx { static const GfxFrameInfo& FrameInfo(); /// start creating a buffer through a BufferBuilder object - static class BufferBuilder Buffer(); + static BufferBuilder Buffer(); /// start creating a texture through a texture builder object - static class TextureBuilder Texture(); + static TextureBuilder Texture(); + /// start creating a shader through a shader builder object + static ShaderBuilder Shader(); /// start creating a pipeline through a pipeline builder object - static class PipelineBuilder Pipeline(); + static PipelineBuilder Pipeline(); /// generate new resource label and push on label stack static ResourceLabel PushResourceLabel(); @@ -87,7 +89,9 @@ class Gfx { static void DestroyResources(ResourceLabel label); /// test if an optional feature is supported - static bool QueryFeature(GfxFeature::Code feat); + static bool QueryFeature(GfxFeature::Code feat); + /// get the supported shader language + static ShaderLang::Code QueryShaderLang(); /// query number of free slots for resource type static int QueryFreeResourceSlots(GfxResourceType::Code resourceType); /// query resource info (fast) @@ -151,6 +155,12 @@ Gfx::Texture() { return TextureBuilder(); } +//------------------------------------------------------------------------------ +inline ShaderBuilder +Gfx::Shader() { + return ShaderBuilder(); +} + //------------------------------------------------------------------------------ inline PipelineBuilder Gfx::Pipeline() { diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 57e1eb87d..55975d843 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -577,53 +577,43 @@ ImageDataAttrs::ImageDataAttrs() { } //------------------------------------------------------------------------------ -int IndexBufferAttrs::ByteSize() const { - return NumIndices * IndexType::ByteSize(Type); -} - -//------------------------------------------------------------------------------ -int VertexBufferAttrs::ByteSize() const { - return NumVertices * Layout.ByteSize(); -} - -//------------------------------------------------------------------------------ -GfxSetup GfxSetup::Window(int width, int height, String windowTitle) { +GfxDesc GfxDesc::Window(int width, int height, String windowTitle) { o_assert_dbg((width > 0) && (height > 0)); - GfxSetup setup; - setup.Width = width; - setup.Height = height; - setup.Windowed = true; - setup.Title = windowTitle; - return setup; + GfxDesc desc; + desc.Width = width; + desc.Height = height; + desc.Windowed = true; + desc.Title = windowTitle; + return desc; } //------------------------------------------------------------------------------ -GfxSetup GfxSetup::Fullscreen(int width, int height, String windowTitle) { +GfxDesc GfxDesc::Fullscreen(int width, int height, String windowTitle) { o_assert_dbg((width > 0) && (height > 0)); - GfxSetup setup; - setup.Width = width; - setup.Height = height; - setup.Windowed = false; - setup.Title = windowTitle; - return setup; + GfxDesc desc; + desc.Width = width; + desc.Height = height; + desc.Windowed = false; + desc.Title = windowTitle; + return desc; } //------------------------------------------------------------------------------ -GfxSetup GfxSetup::WindowMSAA4(int width, int height, String windowTitle) { - GfxSetup setup = Window(width, height, windowTitle); - setup.SampleCount = 4; - return setup; +GfxDesc GfxDesc::WindowMSAA4(int width, int height, String windowTitle) { + GfxDesc desc = Window(width, height, windowTitle); + desc.SampleCount = 4; + return desc; } //------------------------------------------------------------------------------ -GfxSetup GfxSetup::FullscreenMSAA4(int width, int height, String windowTitle) { - GfxSetup setup = Fullscreen(width, height, windowTitle); - setup.SampleCount = 4; - return setup; +GfxDesc GfxDesc::FullscreenMSAA4(int width, int height, String windowTitle) { + GfxDesc desc = Fullscreen(width, height, windowTitle); + desc.SampleCount = 4; + return desc; } //------------------------------------------------------------------------------ -DisplayAttrs GfxSetup::GetDisplayAttrs() const { +DisplayAttrs GfxDesc::GetDisplayAttrs() const { DisplayAttrs attrs; attrs.WindowWidth = this->Width; attrs.WindowHeight = this->Height; @@ -641,7 +631,7 @@ DisplayAttrs GfxSetup::GetDisplayAttrs() const { } //------------------------------------------------------------------------------ -GfxSetup::GfxSetup() { +GfxDesc::GfxDesc() { for (int i = 0; i < GfxResourceType::Num; i++) { ResourcePoolSize[i] = GfxConfig::DefaultResourcePoolSize; ResourceThrottling[i] = 0; // unthrottled @@ -667,167 +657,6 @@ PassDesc PassDesc::From(std::initializer_list colorTextures, Id depthStencil return setup; } -//------------------------------------------------------------------------------ -void ShaderDesc::SetProgramFromSources(ShaderLang::Code slang, const String& vsSource, const String& fsSource) { - o_assert_dbg(vsSource.IsValid() && fsSource.IsValid()); - this->program.vsSources[slang] = vsSource; - this->program.fsSources[slang] = fsSource; -} - -//------------------------------------------------------------------------------ -void ShaderDesc::SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* vsByteCode, uint32_t vsNumBytes, const uint8_t* fsByteCode, uint32_t fsNumBytes, const char* vsFunc, const char* fsFunc) { - o_assert_dbg(vsByteCode && (vsNumBytes > 0)); - o_assert_dbg(fsByteCode && (fsNumBytes > 0)); - this->program.vsByteCode[slang].ptr = vsByteCode; - this->program.vsByteCode[slang].size = vsNumBytes; - this->program.fsByteCode[slang].ptr = fsByteCode; - this->program.fsByteCode[slang].size = fsNumBytes; - if (vsFunc) { - this->program.vsFuncs[slang] = vsFunc; - } - else { - this->program.vsFuncs[slang].Clear(); - } - if (fsFunc) { - this->program.fsFuncs[slang] = fsFunc; - } - else { - this->program.fsFuncs[slang].Clear(); - } -} - -//------------------------------------------------------------------------------ -void ShaderDesc::AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot) { - o_assert_dbg(type.IsValid()); - o_assert_dbg(bindSlot >= 0); - uniformBlockEntry& entry = this->uniformBlocks[this->numUniformBlocks++]; - entry.type = type; - entry.name = name; - entry.byteSize = byteSize; - entry.bindStage = bindStage; - entry.bindSlot = bindSlot; -} - -//------------------------------------------------------------------------------ -void ShaderDesc::AddTexture(const StringAtom& name, TextureType::Code type, ShaderStage::Code bindStage, int32_t bindSlot) { - o_assert_dbg(name.IsValid()); - o_assert_dbg(bindSlot >= 0); - textureEntry& entry = this->textures[this->numTextures++]; - entry.name = name; - entry.type = type; - entry.bindStage = bindStage; - entry.bindSlot = bindSlot; -} - -//------------------------------------------------------------------------------ -const String& ShaderDesc::VertexShaderSource(ShaderLang::Code slang) const { - return this->program.vsSources[slang]; -} - -//------------------------------------------------------------------------------ -const String& ShaderDesc::FragmentShaderSource(ShaderLang::Code slang) const { - return this->program.fsSources[slang]; -} - -//------------------------------------------------------------------------------ -void ShaderDesc::VertexShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const { - outPtr = this->program.vsByteCode[slang].ptr; - outSize = this->program.vsByteCode[slang].size; -} - -//------------------------------------------------------------------------------ -void ShaderDesc::FragmentShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const { - outPtr = this->program.fsByteCode[slang].ptr; - outSize = this->program.fsByteCode[slang].size; -} - -//------------------------------------------------------------------------------ -const StringAtom& ShaderDesc::VertexShaderFunc(ShaderLang::Code slang) const { - return this->program.vsFuncs[slang]; -} - -//------------------------------------------------------------------------------ -const StringAtom& ShaderDesc::FragmentShaderFunc(ShaderLang::Code slang) const { - return this->program.fsFuncs[slang]; -} - -//------------------------------------------------------------------------------ -int ShaderDesc::NumUniformBlocks() const { - return this->numUniformBlocks; -} - -//------------------------------------------------------------------------------ -int ShaderDesc::UniformBlockIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const { - for (int i = 0; i < this->numUniformBlocks; i++) { - const auto& entry = this->uniformBlocks[i]; - if ((entry.bindStage == bindStage) && (entry.bindSlot == bindSlot)) { - return i; - } - } - return InvalidIndex; -} - -//------------------------------------------------------------------------------ -const StringAtom& ShaderDesc::UniformBlockName(int index) const { - return this->uniformBlocks[index].name; -} - -//------------------------------------------------------------------------------ -const StringAtom& ShaderDesc::UniformBlockType(int index) const { - return this->uniformBlocks[index].type; -} - -//------------------------------------------------------------------------------ -uint32_t ShaderDesc::UniformBlockByteSize(int index) const { - return this->uniformBlocks[index].byteSize; -} - -//------------------------------------------------------------------------------ -ShaderStage::Code ShaderDesc::UniformBlockBindStage(int index) const { - return this->uniformBlocks[index].bindStage; -} - -//------------------------------------------------------------------------------ -int ShaderDesc::UniformBlockBindSlot(int index) const { - return this->uniformBlocks[index].bindSlot; -} - -//------------------------------------------------------------------------------ -int ShaderDesc::NumTextures() const { - return this->numTextures; -} - -//------------------------------------------------------------------------------ -int ShaderDesc::TextureIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const { - for (int i = 0; i < this->numTextures; i++) { - const auto& entry = this->textures[i]; - if ((entry.bindStage == bindStage) && (entry.bindSlot == bindSlot)) { - return i; - } - } - return InvalidIndex; -} - -//------------------------------------------------------------------------------ -const StringAtom& ShaderDesc::TexName(int index) const { - return this->textures[index].name; -} - -//------------------------------------------------------------------------------ -TextureType::Code ShaderDesc::TexType(int index) const { - return this->textures[index].type; -} - -//------------------------------------------------------------------------------ -ShaderStage::Code ShaderDesc::TexBindStage(int index) const { - return this->textures[index].bindStage; -} - -//------------------------------------------------------------------------------ -int ShaderDesc::TexBindSlot(int index) const { - return this->textures[index].bindSlot; -} - //------------------------------------------------------------------------------ Id BufferBuilder::Create() { if (this->ContentSize != 0) { diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index ae206c90d..b278463a6 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -14,6 +14,78 @@ #include namespace Oryol { + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxFeature + @ingroup Gfx + @brief optional rendering features +*/ +struct GfxFeature { + enum Code { + TextureCompressionDXT = 0, ///< GPU supports DXT compressed textures + TextureCompressionPVRTC, ///< GPU supports PVRTC compressed textures + TextureCompressionATC, ///< GPU supports ATC compressed textures + TextureCompressionETC2, ///< GPU supports ETC2 compressed textures (OpenGLES3) + TextureFloat, ///< support for float textures + TextureHalfFloat, ///< support for half-float textures + Instancing, ///< supports hardware-instanced rendering + OriginBottomLeft, ///< image space origin is bottom-left (GL-style) + OriginTopLeft, ///< image space origin is top-left (D3D-style) + MSAARenderTargets, ///< MSAA support in offscreen-render-targets + PackedVertexFormat_10_2, ///< support for 10.10.10.2 bit packed vertex formats + MultipleRenderTarget, ///< support for MRT offscreen rendering + Texture3D, ///< support for 3D textures + TextureArray, ///< support for array textures + NativeTexture, ///< can work with externally created texture objects + + Num, + Invalid + }; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxResourceType + @ingroup Gfx + @brief Gfx module resource types + + These types are used for the type in Id for Gfx module + resources. +*/ +struct GfxResourceType { + enum Code { + Texture, ///< a texture + Buffer, ///< a vertex- or index-buffer + Shader, ///< a shader + Pipeline, ///< a pipeline state object + Pass, ///< a render-pass object + + Num, + Invalid, + }; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::Usage + @ingroup Gfx + @brief graphics resource usage types + + - Immutable: requires initialization data + - Dynamic: update infrequently + - Stream: changed every frame +*/ +struct Usage { + enum Code { + Immutable = 0, + Dynamic, + Stream, + + Num, + Invalid, + }; +}; //------------------------------------------------------------------------------ /** @@ -165,50 +237,28 @@ struct PixelFormat { static int ImagePitch(PixelFormat::Code fmt, int width, int height); }; -//------------------------------------------------------------------------------ -/** - @class Oryol::PrimitiveType - @ingroup Gfx - @brief primitive type enum (triangle strips, lists, etc...) -*/ -struct PrimitiveType { - /// primitive type enum (don't change order, append to end!) - enum Code { - Points = 0, - Lines, - LineStrip, - Triangles, - TriangleStrip, - - Num, - Invalid - }; - /// convert primitive type to string - static const char* ToString(PrimitiveType::Code c); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxResourceType - @ingroup Gfx - @brief Gfx module resource types - - These types are used for the type in Id for Gfx module - resources. -*/ -struct GfxResourceType { - enum Code { - Texture, ///< a texture - Buffer, ///< a vertex- or index-buffer - Shader, ///< a shader - Pipeline, ///< a pipeline state object - RenderPass, ///< a render-pass object - - Num, - Invalid, - }; -}; - +//------------------------------------------------------------------------------ +/** + @class Oryol::PrimitiveType + @ingroup Gfx + @brief primitive type enum (triangle strips, lists, etc...) +*/ +struct PrimitiveType { + /// primitive type enum (don't change order, append to end!) + enum Code { + Points = 0, + Lines, + LineStrip, + Triangles, + TriangleStrip, + + Num, + Invalid + }; + /// convert primitive type to string + static const char* ToString(PrimitiveType::Code c); +}; + //------------------------------------------------------------------------------ /** @class Oryol::ShaderStage @@ -225,26 +275,6 @@ struct ShaderStage { }; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureFilterMode - @ingroup Gfx - @brief texture sampling filter mode -*/ -struct TextureFilterMode { - enum Code { - Nearest = 0, - Linear, - NearestMipmapNearest, - NearestMipmapLinear, - LinearMipmapNearest, - LinearMipmapLinear, - - Num, - Invalid, - }; -}; - //------------------------------------------------------------------------------ /** @class Oryol::TextureType @@ -262,6 +292,26 @@ struct TextureType { Invalid, }; }; + +//------------------------------------------------------------------------------ +/** + @class Oryol::TextureFilterMode + @ingroup Gfx + @brief texture sampling filter mode +*/ +struct TextureFilterMode { + enum Code { + Nearest = 0, + Linear, + NearestMipmapNearest, + NearestMipmapLinear, + LinearMipmapNearest, + LinearMipmapLinear, + + Num, + Invalid, + }; +}; //------------------------------------------------------------------------------ /** @@ -280,27 +330,6 @@ struct TextureWrapMode { }; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::Usage - @ingroup Gfx - @brief graphics resource usage types - - - Immutable: requires initialization data - - Dynamic: update infrequently - - Stream: changed every frame -*/ -struct Usage { - enum Code { - Immutable = 0, - Dynamic, - Stream, - - Num, - Invalid, - }; -}; - //------------------------------------------------------------------------------ /** @class Oryol::VertexFormat @@ -358,35 +387,6 @@ struct ShaderLang { }; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxFeature - @ingroup Gfx - @brief optional rendering features -*/ -struct GfxFeature { - enum Code { - TextureCompressionDXT = 0, ///< GPU supports DXT compressed textures - TextureCompressionPVRTC, ///< GPU supports PVRTC compressed textures - TextureCompressionATC, ///< GPU supports ATC compressed textures - TextureCompressionETC2, ///< GPU supports ETC2 compressed textures (OpenGLES3) - TextureFloat, ///< support for float textures - TextureHalfFloat, ///< support for half-float textures - Instancing, ///< supports hardware-instanced rendering - OriginBottomLeft, ///< image space origin is bottom-left (GL-style) - OriginTopLeft, ///< image space origin is top-left (D3D-style) - MSAARenderTargets, ///< MSAA support in offscreen-render-targets - PackedVertexFormat_10_2, ///< support for 10.10.10.2 bit packed vertex formats - MultipleRenderTarget, ///< support for MRT offscreen rendering - Texture3D, ///< support for 3D textures - TextureArray, ///< support for array textures - NativeTexture, ///< can work with externally created texture objects - - Num, - Invalid - }; -}; - //------------------------------------------------------------------------------ /** @class Oryol::Face @@ -492,20 +492,6 @@ struct BlendOperation { }; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::BlendChannel - @ingroup Gfx - @brief channels which are affected by blend operation (RGB or Alpha) -*/ -struct BlendChannel { - enum Code { - RGB = (1<<0), - Alpha = (1<<1), - All = RGB|Alpha - }; -}; - //------------------------------------------------------------------------------ /** @class Oryol::VertexStepFunction @@ -625,23 +611,6 @@ struct DrawState { StaticArray FSTexture; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxFrameInfo - @brief per-frame stats of the Gfx module -*/ -struct GfxFrameInfo { - int NumPasses = 0; - int NumApplyViewPort = 0; - int NumApplyScissorRect = 0; - int NumApplyDrawState = 0; - int NumApplyUniformBlock = 0; - int NumUpdateBuffers = 0; - int NumUpdateTextures = 0; - int NumDraw = 0; - int NumDrawInstanced = 0; -}; - //------------------------------------------------------------------------------ /** @class Oryol::VertexLayout @@ -720,37 +689,6 @@ class VertexLayout { int byteSize = 0; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureAttrs - @ingroup Gfx - @brief holds the public attributes of a Texture object - - @todo: describe TextureAttrs -*/ -struct TextureAttrs { - /// texture locator (usually the URL of the texture file) - class Locator Locator; - /// the texture type (2D, 3D, cube...) - TextureType::Code Type = TextureType::Invalid; - /// the pixel format of texture data - PixelFormat::Code Format = PixelFormat::Invalid; - /// optional sample count (only used for MSAA render target textures) - int SampleCount = 1; - /// texture usage hint - Usage::Code TextureUsage = Usage::Invalid; - /// width of top-level mipmap in pixels - int Width = 0; - /// height of top-level mipmap in pixels - int Height = 0; - /// depth of top-level mipmap in pixels (only used for 3D textures) - int Depth = 0; - /// number of mipmaps (1 for 'no child mipmaps') - int NumMipMaps = 1; - /// true if this is a render target texture - bool IsRenderTarget = false; -}; - //------------------------------------------------------------------------------ /** @class Oryol::DisplayAttrs @@ -831,40 +769,6 @@ class ImageDataAttrs { StaticArray, GfxConfig::MaxNumTextureFaces> Sizes; }; -//------------------------------------------------------------------------------ -/** - @class Oryol::IndexBufferAttrs - @ingroup Gfx - @brief attributes of an index buffer -*/ -struct IndexBufferAttrs { - /// number of indices in the index buffer - int NumIndices = 0; - /// type of indices (16-bit or 32-bit) - IndexType::Code Type = IndexType::Invalid; - /// buffer usage hint - Usage::Code BufferUsage = Usage::Invalid; - /// computes the byte size of index buffer data - int ByteSize() const; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::VertexBufferAttrs - @ingroup Gfx - @brief attributes of one vertex buffer -*/ -struct VertexBufferAttrs { - /// number of vertices in the vertex buffer - int NumVertices = 0; - /// describes the vertex layout of a vertex in the buffer - VertexLayout Layout; - /// buffer usage hint - Usage::Code BufferUsage = Usage::Invalid; - /// computes the byte size of the contained vertex buffer data - int ByteSize() const; -}; - //------------------------------------------------------------------------------ /** @class Oryol::GfxDesc @@ -878,16 +782,16 @@ struct VertexBufferAttrs { @see Gfx, DisplayAttrs */ -class GfxSetup { +class GfxDesc { public: /// shortcut for windowed mode (with RGBA8, 24+8 stencil/depth, no MSAA) - static GfxSetup Window(int width, int height, String windowTitle); + static GfxDesc Window(int width, int height, String windowTitle); /// shortcut for fullscreen mode (with RGBA8, 24+8 stencil/depth, no MSAA) - static GfxSetup Fullscreen(int width, int height, String windowTitle); + static GfxDesc Fullscreen(int width, int height, String windowTitle); /// shortcut for windowed mode with 4xMSAA (with RGBA8, 24+8 stencil/depth) - static GfxSetup WindowMSAA4(int width, int height, String windowTitle); + static GfxDesc WindowMSAA4(int width, int height, String windowTitle); /// shortcut for fullscreen mode with 4xMSAA (with RGBA8, 24+8 stencil/depth) - static GfxSetup FullscreenMSAA4(int width, int height, String windowTitle); + static GfxDesc FullscreenMSAA4(int width, int height, String windowTitle); /// canvas width int Width = 640; /// canvas height @@ -929,7 +833,7 @@ class GfxSetup { /// get DisplayAttrs object initialized to setup values DisplayAttrs GetDisplayAttrs() const; /// default constructor - GfxSetup(); + GfxDesc(); }; //------------------------------------------------------------------------------ @@ -1056,6 +960,9 @@ struct PipelineDesc { bool AlphaToCoverageEnabled = false; Face::Code CullFace = Face::Back; int SampleCount = 1; + float DepthBias = 0.0f; + float DepthBiasSlopeScale = 0.0f; + float DepthBiasClamp = 0.0f; }; //------------------------------------------------------------------------------ @@ -1141,33 +1048,39 @@ class PipelineBuilder { PipelineBuilder& BlendEnabled(bool b) { Desc.BlendEnabled = b; return *this; } - PipelineBuilder& BlendSrcFactor(BlendChannel::Code chn, BlendFactor::Code f) { - if (BlendChannel::RGB & chn) { - Desc.BlendSrcFactorRGB = f; - } - if (BlendChannel::Alpha & chn) { - Desc.BlendSrcFactorAlpha = f; - } + PipelineBuilder& BlendSrcFactor(BlendFactor::Code f) { + Desc.BlendSrcFactorRGB = f; + Desc.BlendSrcFactorAlpha = f; return *this; } - PipelineBuilder& BlendDstFactor(BlendChannel::Code chn, BlendFactor::Code f) { - if (BlendChannel::RGB & chn) { - Desc.BlendDstFactorRGB = f; - } - if (BlendChannel::Alpha & chn) { - Desc.BlendDstFactorAlpha = f; - } + PipelineBuilder& BlendSrcFactorRGB(BlendFactor::Code f) { + Desc.BlendSrcFactorRGB = f; return *this; + } + PipelineBuilder& BlendSrcFactorAlpha(BlendFactor::Code f) { + Desc.BlendSrcFactorAlpha = f; return *this; + } + PipelineBuilder& BlendDstFactor(BlendFactor::Code f) { + Desc.BlendDstFactorRGB = f; + Desc.BlendDstFactorAlpha = f; return *this; } - PipelineBuilder& BlendOp(BlendChannel::Code chn, BlendOperation::Code op) { - if (BlendChannel::RGB & chn) { - Desc.BlendOpRGB = op; - } - if (BlendChannel::Alpha & chn) { - Desc.BlendOpAlpha = op; - } + PipelineBuilder& BlendDstFactorRGB(BlendFactor::Code f) { + Desc.BlendDstFactorRGB = f; return *this; + } + PipelineBuilder& BlendDstFactorAlpha(BlendFactor::Code f) { + Desc.BlendDstFactorAlpha = f; return *this; + } + PipelineBuilder& BlendOp(BlendOperation::Code op) { + Desc.BlendOpRGB = op; + Desc.BlendOpAlpha = op; return *this; } + PipelineBuilder& BlendOpRGB(BlendOperation::Code op) { + Desc.BlendOpRGB = op; return *this; + } + PipelineBuilder& BlendOpAlpha(BlendOperation::Code op) { + Desc.BlendOpAlpha = op; return *this; + } PipelineBuilder& ColorWriteMask(PixelChannel::Mask m) { Desc.ColorWriteMask = m; return *this; } @@ -1198,129 +1111,87 @@ class PipelineBuilder { PipelineBuilder& AlphaToCoverageEnabled(bool b) { Desc.AlphaToCoverageEnabled = b; return *this; } + PipelineBuilder& DepthBias(float f) { + Desc.DepthBias = f; return *this; + } + PipelineBuilder& DepthBiasSlopeScale(float f) { + Desc.DepthBiasSlopeScale = f; return *this; + } + PipelineBuilder& DepthBiasClamp(float f) { + Desc.DepthBiasClamp = f; return *this; + } Id Create(); }; -//------------------------------------------------------------------------------ -/** - @class Oryol::PassDesc - @ingroup Gfx - @brief creation attributes for render pass resource -*/ -class PassDesc { -public: - /// construct from single render target textures, and option depth-stencil texture - static PassDesc From(Id colorTexture, Id depthStencilTexture=Id::InvalidId()); - /// construct from MRT render target textures, and option depth-stencil texture - static PassDesc From(std::initializer_list colorTextures, Id depthStencilTexture=Id::InvalidId()); - /// resource locator - class Locator Locator = Locator::NonShared(); - /// 1..N color attachments - struct ColorAttachment { - Id Texture; - uint16_t MipLevel = 0; ///< mipmap-level - uint16_t Slice = 0; ///< 2D-array-slice, 3D-depth-slice or cubemap face - }; - StaticArray ColorAttachments; - /// optional depth-stencil attachment - Id DepthStencilTexture; - /// default pass action, if no PassAction provided in BeginPass - PassAction DefaultAction; -}; - //------------------------------------------------------------------------------ /** @class Oryol::ShaderDesc @ingroup Gfx @brief creation attributes for shaders */ -class ShaderDesc { -public: - /// default constructor - ShaderDesc() { } - /// construct with resource locator - ShaderDesc(const Locator& loc) : Locator(loc) { } - /// the resource locator - class Locator Locator = Locator::NonShared(); - /// set shader program from vertex- and fragment-shader sources - void SetProgramFromSources(ShaderLang::Code slang, const String& vsSource, const String& fsSource); - /// set shader program from precompiled shader byte code - void SetProgramFromByteCode(ShaderLang::Code slang, const uint8_t* vsByteCode, uint32_t vsNumBytes, const uint8_t* fsByteCode, uint32_t fsNumBytes, const char* vsFunc=nullptr, const char* fsFunc=nullptr); - /// add a uniform block - void AddUniformBlock(const StringAtom& type, const StringAtom& name, uint32_t byteSize, ShaderStage::Code bindStage, int32_t bindSlot); - /// add a texture declaration - void AddTexture(const StringAtom& name, TextureType::Code type, ShaderStage::Code bindStage, int32_t bindSlot); - /// get program vertex shader source (only valid if setup from sources) - const String& VertexShaderSource(ShaderLang::Code slang) const; - /// get program fragment shader source (only valid if setup from sources) - const String& FragmentShaderSource(ShaderLang::Code slang) const; - /// get program vertex shader byte code, returns nullptr if no byte code exists - void VertexShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const; - /// get program fragment shader byte code, returns nullptr if no byte code exists - void FragmentShaderByteCode(ShaderLang::Code slang, const void*& outPtr, uint32_t& outSize) const; - /// get vertex shader name (if using metal-style shader library - const StringAtom& VertexShaderFunc(ShaderLang::Code slang) const; - /// get fragment shader name (if using metal-style shader library - const StringAtom& FragmentShaderFunc(ShaderLang::Code slang) const; - /// get number of uniform blocks - int NumUniformBlocks() const; - /// find uniform block index by bind stage and slot (return InvalidIndex if not found) - int UniformBlockIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const; - /// get uniform block type at index - const StringAtom& UniformBlockType(int index) const; - /// get uniform block name at index - const StringAtom& UniformBlockName(int index) const; - /// get uniform block byte size - uint32_t UniformBlockByteSize(int index) const; - /// get uniform block shader stage at index - ShaderStage::Code UniformBlockBindStage(int index) const; - /// get uniform block bind slot at index - int UniformBlockBindSlot(int index) const; - /// get number of textures - int NumTextures() const; - /// find texture index by bind stage and slot (return InvalidIndex if not found) - int TextureIndexByStageAndSlot(ShaderStage::Code bindStage, int bindSlot) const; - /// get texture name at index - const StringAtom& TexName(int index) const; - /// get texture type at index - TextureType::Code TexType(int index) const; - /// get texture bind stage - ShaderStage::Code TexBindStage(int index) const; - /// get texture bind slot - int TexBindSlot(int index) const; -private: - struct programEntry { - StaticArray vsSources; - StaticArray fsSources; - StaticArray vsFuncs; - StaticArray fsFuncs; - struct byteCodeEntry { - const void* ptr = nullptr; - uint32_t size = 0; - }; - StaticArray vsByteCode; - StaticArray fsByteCode; - }; - struct uniformBlockEntry { - StringAtom type; - StringAtom name; - uint32_t byteSize = 0; - ShaderStage::Code bindStage = ShaderStage::Invalid; - int bindSlot = InvalidIndex; - }; - struct textureEntry { - StringAtom name; - TextureType::Code type = TextureType::Invalid; - ShaderStage::Code bindStage = ShaderStage::Invalid; - int bindSlot = InvalidIndex; - }; - static const int MaxNumUniformBlocks = ShaderStage::Num * GfxConfig::MaxNumUniformBlocksPerStage; - static const int MaxNumTextures = GfxConfig::MaxNumVertexTextures + GfxConfig::MaxNumFragmentTextures; - programEntry program; - int numUniformBlocks = 0; - StaticArray uniformBlocks; - int numTextures = 0; - StaticArray textures; +struct ShaderDesc { + /// the resource locator + class Locator Locator = Locator::NonShared(); + + /// shader stage descriptions + struct UniformBlockDesc { + const char* Name = nullptr; + const char* Type = nullptr; + int Size = 0; + }; + struct TextureDesc { + const char* Name = nullptr; + TextureType::Code Type = TextureType::Invalid; + }; + struct StageDesc { + const char* Source = nullptr; + const uint8_t* ByteCode = nullptr; + int ByteCodeSize = 0; + const char* Entry = nullptr; + StaticArray UniformBlocks; + StaticArray Textures; + }; + StaticArray Stage; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::ShaderBuilder + @ingroup Gfx + @brief builder for ShaderDesc objects +*/ +class ShaderBuilder { +public: + ShaderDesc Desc; + ShaderBuilder() { }; + ShaderBuilder(const ShaderBuilder& rhs): Desc(rhs.Desc) { }; + ShaderBuilder& Locator(const class Locator& loc) { + Desc.Locator = loc; return *this; + } + ShaderBuilder& Source(ShaderStage::Code stage, const char* src) { + Desc.Stage[stage].Source = src; return *this; + } + ShaderBuilder& ByteCode(ShaderStage::Code stage, const uint8_t* ptr, int size) { + Desc.Stage[stage].ByteCode = ptr; + Desc.Stage[stage].ByteCodeSize = size; + return *this; + } + ShaderBuilder& Entry(ShaderStage::Code stage, const char* entry) { + Desc.Stage[stage].Entry = entry; return *this; + } + ShaderBuilder& UniformBlock(ShaderStage::Code stage, int slot, const char* name, const char* type, int size) { + auto& ubSlot = Desc.Stage[stage].UniformBlocks[slot]; + ubSlot.Name = name; + ubSlot.Type = type; + ubSlot.Size = size; + return *this; + } + ShaderBuilder& Texture(ShaderStage::Code stage, int slot, const char* name, TextureType::Code type) { + auto& texSlot = Desc.Stage[stage].Textures[slot]; + texSlot.Name = name; + texSlot.Type = type; + return *this; + } }; //------------------------------------------------------------------------------ @@ -1453,5 +1324,49 @@ class TextureBuilder { } Id Create(); }; + +//------------------------------------------------------------------------------ +/** + @class Oryol::PassDesc + @ingroup Gfx + @brief creation attributes for render pass resource +*/ +class PassDesc { +public: + /// construct from single render target textures, and option depth-stencil texture + static PassDesc From(Id colorTexture, Id depthStencilTexture=Id::InvalidId()); + /// construct from MRT render target textures, and option depth-stencil texture + static PassDesc From(std::initializer_list colorTextures, Id depthStencilTexture=Id::InvalidId()); + /// resource locator + class Locator Locator = Locator::NonShared(); + /// 1..N color attachments + struct ColorAttachment { + Id Texture; + uint16_t MipLevel = 0; ///< mipmap-level + uint16_t Slice = 0; ///< 2D-array-slice, 3D-depth-slice or cubemap face + }; + StaticArray ColorAttachments; + /// optional depth-stencil attachment + Id DepthStencilTexture; + /// default pass action, if no PassAction provided in BeginPass + PassAction DefaultAction; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxFrameInfo + @brief per-frame stats of the Gfx module +*/ +struct GfxFrameInfo { + int NumPasses = 0; + int NumApplyViewPort = 0; + int NumApplyScissorRect = 0; + int NumApplyDrawState = 0; + int NumApplyUniformBlock = 0; + int NumUpdateBuffers = 0; + int NumUpdateTextures = 0; + int NumDraw = 0; + int NumDrawInstanced = 0; +}; } // namespace Oryol diff --git a/code/Modules/Gfx/private/displayMgrBase.cc b/code/Modules/Gfx/private/displayMgrBase.cc index 8a8607c00..480f146b7 100644 --- a/code/Modules/Gfx/private/displayMgrBase.cc +++ b/code/Modules/Gfx/private/displayMgrBase.cc @@ -21,12 +21,12 @@ displayMgrBase::~displayMgrBase() { This method must be overwritten in a platform-specific subclass. */ void -displayMgrBase::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs) { +displayMgrBase::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { o_assert(!this->displayValid); this->displayValid = true; - this->gfxSetup = setup; - this->displayAttrs = setup.GetDisplayAttrs(); + this->gfxDesc = desc; + this->displayAttrs = desc.GetDisplayAttrs(); this->pointers = ptrs; this->curFramebufferWidth = this->displayAttrs.FramebufferWidth; this->curFramebufferHeight = this->displayAttrs.FramebufferHeight; @@ -48,9 +48,9 @@ displayMgrBase::IsDisplayValid() const { //------------------------------------------------------------------------------ void -displayMgrBase::ModifyDisplay(const GfxSetup& setup) { +displayMgrBase::ModifyDisplay(const GfxDesc& desc) { o_assert(this->displayValid); - this->displayAttrs = setup.GetDisplayAttrs(); + this->displayAttrs = desc.GetDisplayAttrs(); this->notifyEventHandlers(GfxEvent(GfxEvent::DisplayModified, this->displayAttrs)); } diff --git a/code/Modules/Gfx/private/displayMgrBase.h b/code/Modules/Gfx/private/displayMgrBase.h index 1c952c6c4..17652edc9 100644 --- a/code/Modules/Gfx/private/displayMgrBase.h +++ b/code/Modules/Gfx/private/displayMgrBase.h @@ -26,13 +26,13 @@ class displayMgrBase { ~displayMgrBase(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& setup, const gfxPointers& ptrs); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// return true if display is currently setup bool IsDisplayValid() const; /// modify the display settings, may not be supported on all platforms - void ModifyDisplay(const GfxSetup& setup); + void ModifyDisplay(const GfxDesc& setup); /// process window system events (call near start of frame) void ProcessSystemEvents(); /// present the current rendered frame @@ -52,7 +52,7 @@ class displayMgrBase { /// notify event handlers, all handlers get the same message object void notifyEventHandlers(const GfxEvent& gfxEvent); - GfxSetup gfxSetup; + GfxDesc gfxDesc; DisplayAttrs displayAttrs; eventHandlerId uniqueIdCounter = 0; Map handlers; diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.cc b/code/Modules/Gfx/private/glfwDisplayMgr.cc index 541978475..b4da91fca 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.cc +++ b/code/Modules/Gfx/private/glfwDisplayMgr.cc @@ -41,10 +41,10 @@ glfwDisplayMgr::getGlfwWindow() { //------------------------------------------------------------------------------ void -glfwDisplayMgr::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs) { +glfwDisplayMgr::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(setup, ptrs); + displayMgrBase::SetupDisplay(desc, ptrs); // setup GLFW if (!glfwInit()) { @@ -53,11 +53,11 @@ glfwDisplayMgr::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs) { glfwSetErrorCallback(glfwErrorCallback); // setup the GLFW main window - this->createMainWindow(setup); + this->createMainWindow(desc); // and make the window's GL context current glfwMakeContextCurrent(glfwWindow); - glfwSwapInterval(setup.SwapInterval); + glfwSwapInterval(desc.SwapInterval); // setup extensions and platform-dependent constants flextInit(glfwWindow); @@ -140,7 +140,7 @@ glfwDisplayMgr::glwfFramebufferSizeChanged(GLFWwindow* win, int width, int heigh //------------------------------------------------------------------------------ void -glfwDisplayMgr::createMainWindow(const GfxSetup& setup) { +glfwDisplayMgr::createMainWindow(const GfxDesc& desc) { o_assert_dbg(nullptr == glfwDisplayMgr::glfwWindow); #if ORYOL_MACOS @@ -157,9 +157,9 @@ glfwDisplayMgr::createMainWindow(const GfxSetup& setup) { glfwWindowHint(GLFW_BLUE_BITS, PixelFormat::NumBits(setup.ColorFormat, PixelChannel::Blue)); glfwWindowHint(GLFW_ALPHA_BITS, PixelFormat::NumBits(setup.ColorFormat, PixelChannel::Alpha)); #endif - glfwWindowHint(GLFW_DEPTH_BITS, PixelFormat::NumBits(setup.DepthFormat, PixelChannel::Depth)); - glfwWindowHint(GLFW_STENCIL_BITS, PixelFormat::NumBits(setup.DepthFormat, PixelChannel::Stencil)); - glfwWindowHint(GLFW_SAMPLES, setup.SampleCount > 1 ? setup.SampleCount : 0); + glfwWindowHint(GLFW_DEPTH_BITS, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth)); + glfwWindowHint(GLFW_STENCIL_BITS, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil)); + glfwWindowHint(GLFW_SAMPLES, desc.SampleCount > 1 ? desc.SampleCount : 0); #if ORYOL_DEBUG glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); #endif @@ -170,14 +170,14 @@ glfwDisplayMgr::createMainWindow(const GfxSetup& setup) { // windowed or fullscreen mode? GLFWmonitor* glfwMonitor = nullptr; - if (!setup.Windowed) { + if (!desc.Windowed) { glfwMonitor = glfwGetPrimaryMonitor(); } // now actually create the window - StringBuilder strBuilder(setup.Title); + StringBuilder strBuilder(desc.Title); strBuilder.Append(" (GL)"); - glfwDisplayMgr::glfwWindow = glfwCreateWindow(setup.Width, setup.Height, strBuilder.AsCStr(), glfwMonitor, 0); + glfwDisplayMgr::glfwWindow = glfwCreateWindow(desc.Width, desc.Height, strBuilder.AsCStr(), glfwMonitor, 0); o_assert(nullptr != glfwDisplayMgr::glfwWindow); } diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.h b/code/Modules/Gfx/private/glfwDisplayMgr.h index 3f0025a46..0f16dabcd 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.h +++ b/code/Modules/Gfx/private/glfwDisplayMgr.h @@ -24,7 +24,7 @@ class glfwDisplayMgr : public displayMgrBase { ~glfwDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& gfxDesc, const gfxPointers& ptrs); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// process window system events (call near start of frame) @@ -42,7 +42,7 @@ class glfwDisplayMgr : public displayMgrBase { /// framebuffer size changed callback for GLFW static void glwfFramebufferSizeChanged(GLFWwindow* win, int width, int height); /// create the main window - void createMainWindow(const GfxSetup& setup); + void createMainWindow(const GfxDesc& desc); /// destroy the main window void destroyMainWindow(); diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 3cbf221ca..9ccfa9169 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -332,9 +332,9 @@ static void convertRasterizerState(const PipelineDesc& src, sg_pipeline_desc& ds dst.rasterizer.cull_mode = convertCullMode(src.CullFaceEnabled, src.CullFace); dst.rasterizer.face_winding = _SG_FACEWINDING_DEFAULT; dst.rasterizer.sample_count = src.SampleCount; - dst.rasterizer.depth_bias = 0.0f; - dst.rasterizer.depth_bias_slope_scale = 0.0f; - dst.rasterizer.depth_bias_clamp = 0.0f; + dst.rasterizer.depth_bias = src.DepthBias; + dst.rasterizer.depth_bias_slope_scale = src.DepthBiasSlopeScale; + dst.rasterizer.depth_bias_clamp = src.DepthBiasClamp; } //------------------------------------------------------------------------------ @@ -431,17 +431,17 @@ sokolGfxBackend::~sokolGfxBackend() { //------------------------------------------------------------------------------ void -sokolGfxBackend::Setup(const GfxSetup& setup, const gfxPointers& ptrs) { +sokolGfxBackend::Setup(const GfxDesc& desc, const gfxPointers& ptrs) { o_assert(!this->isValid); - this->displayManager.SetupDisplay(setup, ptrs); + this->displayManager.SetupDisplay(desc, ptrs); // setup sokol-gfx sg_desc sgDesc = { }; - sgDesc.buffer_pool_size = setup.ResourcePoolSize[GfxResourceType::Buffer]; - sgDesc.image_pool_size = setup.ResourcePoolSize[GfxResourceType::Texture]; - sgDesc.shader_pool_size = setup.ResourcePoolSize[GfxResourceType::Shader]; - sgDesc.pipeline_pool_size = setup.ResourcePoolSize[GfxResourceType::Pipeline]; - sgDesc.pass_pool_size = setup.ResourcePoolSize[GfxResourceType::RenderPass]; + sgDesc.buffer_pool_size = desc.ResourcePoolSize[GfxResourceType::Buffer]; + sgDesc.image_pool_size = desc.ResourcePoolSize[GfxResourceType::Texture]; + sgDesc.shader_pool_size = desc.ResourcePoolSize[GfxResourceType::Shader]; + sgDesc.pipeline_pool_size = desc.ResourcePoolSize[GfxResourceType::Pipeline]; + sgDesc.pass_pool_size = desc.ResourcePoolSize[GfxResourceType::Pass]; #if ORYOL_EMSCRIPTEN sgDesc.gl_force_gles2 = this->displayManager.force_gles2; #elif ORYOL_METAL @@ -456,8 +456,8 @@ sokolGfxBackend::Setup(const GfxSetup& setup, const gfxPointers& ptrs) { #endif sg_setup(&sgDesc); - this->registry.Setup(setup.ResourceRegistryCapacity); - this->labelStack.Setup(setup.ResourceLabelStackCapacity); + this->registry.Setup(desc.ResourceRegistryCapacity); + this->labelStack.Setup(desc.ResourceLabelStackCapacity); this->isValid = true; } @@ -493,6 +493,32 @@ sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { return false; } +//------------------------------------------------------------------------------ +ShaderLang::Code +sokolGfxBackend::QueryShaderLang() { + o_assert_dbg(this->isValid); + ShaderLang::Code slang = ShaderLang::Invalid; + #if ORYOL_OPENGL_CORE_PROFILE + slang = ShaderLang::GLSL330; + #elif ORYOL_OPENGL_GLES2 + slang = ShaderLang::GLSL100; + #elif ORYOL_OPENGL_GLES3 + if (this->displayManager.force_gles2) { + slang = ShaderLang::GLSL100; + } + else { + slang = ShaderLang::GLSLES3; + } + #elif ORYOL_METAL + slang = ShaderLang::Metal; + #elif ORYOL_D3D11 + slang = ShaderLang::HLSL5; + #else + #error("Unknown Platform") + #endif + return slang; +} + //------------------------------------------------------------------------------ GfxEvent::HandlerId sokolGfxBackend::Subscribe(GfxEvent::Handler handler) { @@ -603,83 +629,68 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { o_assert_dbg(this->isValid); sg_shader_desc sgDesc = { }; - // select the shader language dialect - ShaderLang::Code slang = ShaderLang::Invalid; - #if ORYOL_OPENGL_CORE_PROFILE - slang = ShaderLang::GLSL330; - #elif ORYOL_OPENGL_GLES2 - slang = ShaderLang::GLSL100; - #elif ORYOL_OPENGL_GLES3 - if (this->displayManager.force_gles2) { - slang = ShaderLang::GLSL100; - } - else { - slang = ShaderLang::GLSLES3; - } - #elif ORYOL_METAL - slang = ShaderLang::Metal; - #elif ORYOL_D3D11 - slang = ShaderLang::HLSL5; - #else - #error("Unknown Platform") - #endif - // set source- or byte-code, and optional entry function #if ORYOL_OPENGL - sgDesc.vs.source = desc.VertexShaderSource(slang).AsCStr(); - sgDesc.fs.source = desc.FragmentShaderSource(slang).AsCStr(); + sgDesc.vs.source = desc.Stage[ShaderStage::VS].Source; + sgDesc.fs.source = desc.Stage[ShaderStage::FS].Source; #elif ORYOL_METAL || ORYOL_D3D11 - const void* byteCodePtr; uint32_t byteCodeSize; - desc.VertexShaderByteCode(slang, byteCodePtr, byteCodeSize); - sgDesc.vs.byte_code = byteCodePtr; - sgDesc.vs.byte_code_size = byteCodeSize; - desc.FragmentShaderByteCode(slang, byteCodePtr, byteCodeSize); - sgDesc.fs.byte_code = byteCodePtr; - sgDesc.fs.byte_code_size = byteCodeSize; + sgDesc.vs.byte_code = desc.Stage[ShaderStage::VS].ByteCode; + sgDesc.vs.byte_code_size = desc.Stage[ShaderStage::VS].ByteCodeSize; + sgDesc.fs.byte_code = desc.Stage[ShaderStage::FS].ByteCode; + sgDesc.fs.byte_code_size = desc.Stage[ShaderStage::FS].ByteCodeSize; #endif - if (desc.VertexShaderFunc(slang).IsValid()) { - sgDesc.vs.entry = desc.VertexShaderFunc(slang).AsCStr(); + if (desc.Stage[ShaderStage::VS].Entry) { + sgDesc.vs.entry = desc.Stage[ShaderStage::VS].Entry; } - if (desc.FragmentShaderFunc(slang).IsValid()) { - sgDesc.fs.entry = desc.FragmentShaderFunc(slang).AsCStr(); + if (desc.Stage[ShaderStage::FS].Entry) { + sgDesc.fs.entry = desc.Stage[ShaderStage::FS].Entry; } // uniform block declarations - int vsUbIndex = 0, fsUbIndex = 0; - for (int i = 0; i < desc.NumUniformBlocks(); i++) { - sg_shader_uniform_block_desc* ubDesc; - if (desc.UniformBlockBindStage(i) == ShaderStage::VS) { - o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); - ubDesc = &sgDesc.vs.uniform_blocks[vsUbIndex++]; - } - else { - o_assert_dbg(vsUbIndex < SG_MAX_SHADERSTAGE_UBS); - ubDesc = &sgDesc.fs.uniform_blocks[fsUbIndex++]; + o_assert_dbg(GfxConfig::MaxNumUniformBlocksPerStage <= SG_MAX_SHADERSTAGE_UBS); + int vsUbIndex = 0; + int fsUbIndex = 0; + for (int stageIndex = 0; stageIndex < ShaderStage::Num; stageIndex++) { + for (int ubIndex = 0; ubIndex < GfxConfig::MaxNumUniformBlocksPerStage; ubIndex++) { + auto& src = desc.Stage[stageIndex].UniformBlocks[ubIndex]; + if (src.Size > 0) { + sg_shader_uniform_block_desc* dst = nullptr; + if (stageIndex == ShaderStage::VS) { + dst = &sgDesc.vs.uniform_blocks[vsUbIndex++]; + } + else { + dst = &sgDesc.fs.uniform_blocks[fsUbIndex++]; + } + // size must be a multiple of 16 (sizeof(vec4)) + o_assert_dbg((src.Size & 15) == 0); + dst->size = src.Size; + dst->uniforms[0].name = src.Type; + dst->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + dst->uniforms[0].array_count = src.Size / 16; + } } - ubDesc->size = desc.UniformBlockByteSize(i); - // size must be a multiple of 16 (sizeof(vec4)) - o_assert_dbg((ubDesc->size & 15) == 0); - ubDesc->uniforms[0].name = desc.UniformBlockType(i).AsCStr(); - ubDesc->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; - ubDesc->uniforms[0].array_count = ubDesc->size / 16; } // texture declarations - int vsImgIndex = 0, fsImgIndex = 0; - for (int i = 0; i < desc.NumTextures(); i++) { - sg_shader_image_desc* imgDesc; - if (desc.TexBindStage(i) == ShaderStage::VS) { - o_assert_dbg(vsImgIndex < SG_MAX_SHADERSTAGE_IMAGES); - imgDesc = &sgDesc.vs.images[vsImgIndex++]; - } - else { - o_assert_dbg(fsImgIndex < SG_MAX_SHADERSTAGE_IMAGES); - imgDesc = &sgDesc.fs.images[fsImgIndex++]; + o_assert_dbg(GfxConfig::MaxNumShaderTextures <= SG_MAX_SHADERSTAGE_IMAGES); + int vsImgIndex = 0; + int fsImgIndex = 0; + for (int stageIndex = 0; stageIndex < ShaderStage::Num; stageIndex++) { + for (int texIndex = 0; texIndex < GfxConfig::MaxNumShaderTextures; texIndex++) { + auto& src = desc.Stage[stageIndex].Textures[texIndex]; + if (src.Type != TextureType::Invalid) { + sg_shader_image_desc* dst = nullptr; + if (stageIndex == ShaderStage::VS) { + dst = &sgDesc.vs.images[vsImgIndex++]; + } + else { + dst = &sgDesc.fs.images[fsImgIndex++]; + } + dst->type = convertTextureType(src.Type); + dst->name = src.Name; + } } - imgDesc->type = convertTextureType(desc.TexType(i)); - imgDesc->name = desc.TexName(i).AsCStr(); } - return makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); } diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index f92d6295f..4fc956642 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -22,7 +22,7 @@ class sokolGfxBackend { ~sokolGfxBackend(); /// setup the Gfx backend - void Setup(const GfxSetup& setup, const gfxPointers& ptrs); + void Setup(const GfxDesc& desc, const gfxPointers& ptrs); /// shutdown the Gfx backend void Discard(); /// check if Gfx backend has been setup @@ -31,6 +31,8 @@ class sokolGfxBackend { bool QuitRequested(); /// check if optional feature is supported bool QueryFeature(GfxFeature::Code feature); + /// query the supported shader language + ShaderLang::Code QueryShaderLang(); /// subscribe to display events GfxEvent::HandlerId Subscribe(GfxEvent::Handler handler); diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index 6c38570db..4128f12d5 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -26,21 +26,23 @@ OryolMain(BlendTestApp); AppState::Code BlendTestApp::OnInit() { // setup rendering system - auto gfxSetup = GfxSetup::Window(1024, 768, "Oryol Blend Sample"); - gfxSetup.ResourcePoolSize[GfxResourceType::Pipeline] = 512; - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::Window(1024, 768, "Oryol Blend Sample"); + gfxDesc.ResourcePoolSize[GfxResourceType::Pipeline] = 512; + Gfx::Setup(gfxDesc); // create pipeline object for a patterned background float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->bgDrawState.VertexBuffers[0] = Gfx::CreateBuffer(MakeBufferDesc() - .Size(sizeof(bgVertices)), - bgVertices, sizeof(bgVertices)); - this->bgDrawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + this->bgDrawState.VertexBuffers[0] = Gfx::Buffer() + .Size(sizeof(bgVertices)) + .Content(bgVertices) + .Create(); + this->bgDrawState.Pipeline = Gfx::Pipeline() .Shader(Gfx::CreateShader(BGShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip)); + .PrimitiveType(PrimitiveType::TriangleStrip) + .Create(); // setup a triangle mesh and shader float triVertices[] = { @@ -49,12 +51,13 @@ BlendTestApp::OnInit() { 0.05f, -0.05f, 0.5f, 0.0f, 0.75f, 0.0f, 0.75f, -0.05f, -0.05f, 0.5f, 0.0f, 0.0f, 0.75f, 0.75f }; - this->triVBuf = Gfx::CreateBuffer(MakeBufferDesc() - .Size(sizeof(triVertices)), - triVertices, sizeof(triVertices)); + this->triVBuf = Gfx::Buffer() + .Size(sizeof(triVertices)) + .Content(triVertices) + .Create(); // setup one draw state for each blend factor combination - auto ps = MakePipelineDesc() + auto ps = Gfx::Pipeline() .Shader(Gfx::CreateShader(TriShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float3 }, @@ -65,9 +68,9 @@ BlendTestApp::OnInit() { .ColorWriteMask(PixelChannel::RGB); for (uint32_t y = 0; y < BlendFactor::Num; y++) { for (uint32_t x = 0; x < BlendFactor::Num; x++) { - ps.BlendSrcFactor(BlendChannel::RGB, (BlendFactor::Code)x); - ps.BlendDstFactor(BlendChannel::RGB, (BlendFactor::Code)y); - this->pipelines[y][x] = Gfx::CreatePipeline(ps); + ps.BlendSrcFactorRGB((BlendFactor::Code)x); + ps.BlendDstFactorRGB((BlendFactor::Code)y); + this->pipelines[y][x] = ps.Create(); } } return App::OnInit(); diff --git a/code/Samples/Clear/Clear.cc b/code/Samples/Clear/Clear.cc index 282168067..cb69e5ca3 100644 --- a/code/Samples/Clear/Clear.cc +++ b/code/Samples/Clear/Clear.cc @@ -21,7 +21,7 @@ OryolMain(ClearApp); //------------------------------------------------------------------------------ AppState::Code ClearApp::OnInit() { - Gfx::Setup(GfxSetup::Window(400, 300, "Oryol Clear Sample")); + Gfx::Setup(GfxDesc::Window(400, 300, "Oryol Clear Sample")); return App::OnInit(); } diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index b00bf6ddd..6a6b1dd0e 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -30,7 +30,7 @@ OryolMain(DebugTextApp); //------------------------------------------------------------------------------ AppState::Code DebugTextApp::OnInit() { - auto gfxSetup = GfxSetup::Window(800, 600, "Oryol DebugText Sample"); + auto gfxSetup = GfxDesc::Window(800, 600, "Oryol DebugText Sample"); gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f)); Gfx::Setup(gfxSetup); DbgSetup dbgSetup; diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index 38e8e5c99..cd1d36c72 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -31,7 +31,7 @@ OryolMain(PackedNormalsApp); //------------------------------------------------------------------------------ AppState::Code PackedNormalsApp::OnInit() { - Gfx::Setup(GfxSetup::WindowMSAA4(600, 400, "Oryol Packed Normals Sample")); + Gfx::Setup(GfxDesc::WindowMSAA4(600, 400, "Oryol Packed Normals Sample")); ShapeBuilder shapeBuilder; this->shapes = shapeBuilder diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index af70f4c0d..825c24452 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -40,31 +40,33 @@ OryolMain(PrimitiveTypesApp); //------------------------------------------------------------------------------ Id createIndexBuffer(const uint16_t* data, int dataSize) { - return Gfx::CreateBuffer(MakeBufferDesc() + return Gfx::Buffer() .Size(dataSize) + .Content(data) .Type(BufferType::IndexBuffer) - .Usage(Usage::Immutable), - data, dataSize); + .Usage(Usage::Immutable) + .Create(); } //------------------------------------------------------------------------------ Id createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const VertexLayout& layout, Id shd, int sampleCount) { - return Gfx::CreatePipeline(MakePipelineDesc() + return Gfx::Pipeline() .Shader(shd) .Layout(0, layout) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(sampleCount) .IndexType(indexType) - .PrimitiveType(primType)); + .PrimitiveType(primType) + .Create(); } //------------------------------------------------------------------------------ AppState::Code PrimitiveTypesApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(640, 480, "Oryol PrimitiveTypes Test"); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(640, 480, "Oryol PrimitiveTypes Test"); + Gfx::Setup(gfxDesc); Dbg::Setup(); Input::Setup(); @@ -104,7 +106,7 @@ PrimitiveTypesApp::OnInit() { // point list (only need a pipeline object, no index buffer) { auto& ds = this->drawStates[PrimitiveType::Points]; - ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, gfxDesc.SampleCount); ds.VertexBuffers[0] = vbuf; } @@ -124,7 +126,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Lines]; - ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -143,7 +145,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::LineStrip]; - ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -166,7 +168,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Triangles]; - ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -191,7 +193,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::TriangleStrip]; - ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxSetup.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index 089deb430..1042b7675 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -21,7 +21,7 @@ OryolMain(QuadApp); //------------------------------------------------------------------------------ AppState::Code QuadApp::OnInit() { - Gfx::Setup(GfxSetup::Window(400, 400, "Oryol Quad Sample")); + Gfx::Setup(GfxDesc::Window(400, 400, "Oryol Quad Sample")); // create vertex buffer const float vertices[4 * 7] = { diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index 93305749f..ce380df09 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -43,8 +43,8 @@ OryolMain(SeparateBuffersApp); AppState::Code SeparateBuffersApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(600, 400, "Separate Buffers"); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Separate Buffers"); + Gfx::Setup(gfxDesc); // create a cube mesh with positions only, this will be placed // into the first vertex buffer bind slot @@ -64,21 +64,23 @@ SeparateBuffersApp::OnInit() { for (int vi = 0; vi < NumVertices; vi++) { colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); } - this->colorBuffers[i] = Gfx::CreateBuffer(MakeBufferDesc() - .Size(sizeof(colorVertices)), - colorVertices, sizeof(colorVertices)); + this->colorBuffers[i] = Gfx::Buffer() + .Size(sizeof(colorVertices)) + .Content(colorVertices) + .Create(); } // create shader and pipeline, the position data vertex Layout - // goes into the first slot, and the color data vertex layout into the second slot - this->drawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + // goes into the first layout slot, and the color data vertex layout into the second slot + this->drawState.Pipeline = Gfx::Pipeline() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, this->cubeShape.Layout) .Layout(1, { { "in_color", VertexFormat::Float3 } }) .IndexType(this->cubeShape.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxSetup.SampleCount)); + .SampleCount(gfxDesc.SampleCount) + .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index 2bdc606d6..ba59cab7c 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -32,8 +32,8 @@ OryolMain(ShapeApp); AppState::Code ShapeApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(600, 400, "Oryol Shapes Sample"); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Oryol Shapes Sample"); + Gfx::Setup(gfxDesc); ShapeBuilder shapeBuilder; shapeBuilder.RandomColors = true; @@ -56,7 +56,7 @@ ShapeApp::OnInit() { .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxSetup.SampleCount) + .SampleCount(gfxDesc.SampleCount) .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index 56f7f8f63..3f68b69fe 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -22,7 +22,7 @@ OryolMain(TriangleApp); AppState::Code TriangleApp::OnInit() { // setup rendering system - Gfx::Setup(GfxSetup::Window(400, 400, "Oryol Triangle Sample")); + Gfx::Setup(GfxDesc::Window(400, 400, "Oryol Triangle Sample")); // create a mesh with vertex data from memory const float vertices[] = { diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 156e4bd84..16c3878f2 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,7 +2,7 @@ Code generator for shader libraries. ''' -Version = 53 +Version = 56 import os, platform, json import genutil as util @@ -503,6 +503,7 @@ def writeSourceTop(f, absSourcePath, shdLib, slang) : f.write('// #version:{}# machine generated, do not edit!\n'.format(Version)) f.write('//-----------------------------------------------------------------------------\n') f.write('#include "Pre.h"\n') + f.write('#include "Gfx/Gfx.h"\n') f.write('#include "' + hdrFile + '.h"\n') f.write('\n') if slang == 'hlsl': @@ -558,7 +559,8 @@ def writeShaderSource(f, absPath, shdLib, shd, slVersion) : def writeProgramSource(f, shdLib, prog, slangs) : # write the Desc() function f.write('Oryol::ShaderDesc ' + prog.name + '::Desc() {\n') - f.write(' Oryol::ShaderDesc desc("' + prog.name + '");\n') + f.write(' Oryol::ShaderBuilder bld;\n') + f.write(' bld.Locator("' + prog.name + '");\n') vs = shdLib.vertexShaders[prog.vs] fs = shdLib.fragmentShaders[prog.fs] vsName = vs.name @@ -568,20 +570,24 @@ def writeProgramSource(f, shdLib, prog, slangs) : vsSource = '{}_{}_src'.format(vsName, slang) fsSource = '{}_{}_src'.format(fsName, slang) if isGLSL(slang): - f.write(' desc.SetProgramFromSources({}, {}, {});\n'.format( - slangType, vsSource, fsSource)); + f.write(' if (Oryol::Gfx::QueryShaderLang() == {}) {{\n'.format(slangType)) + f.write(' bld.Source(Oryol::ShaderStage::VS, {});\n'.format(vsSource)) + f.write(' bld.Source(Oryol::ShaderStage::FS, {});\n'.format(fsSource)) + f.write(' }\n') elif isHLSL(slang): vs_c_name = '{}_vs_hlsl5'.format(vs.name) fs_c_name = '{}_fs_hlsl5'.format(fs.name) - f.write(' desc.SetProgramFromByteCode({}, {}, sizeof({}), {}, sizeof({}));\n'.format( - slangType, vs_c_name, vs_c_name, fs_c_name, fs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}))\n'.format(vs_c_name, vs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}))\n'.format(fs_c_name, fs_c_name)) elif isMetal(slang): vs_c_name = '{}_vs_metallib'.format(vs.name) fs_c_name = '{}_fs_metallib'.format(fs.name) - f.write(' desc.SetProgramFromByteCode({}, {}, sizeof({}), {}, sizeof({}), "main0", "main0");\n'.format( - slangType, vs_c_name, vs_c_name, fs_c_name, fs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}))\n'.format(vs_c_name, vs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}))\n'.format(fs_c_name, fs_c_name)) + f.write(' bld.Entry(Oryol::ShaderStage::VS, "main0");\n') + f.write(' bld.Entry(Oryol::ShaderStage::FS, "main0");\n') - # add uniform layouts to desc object + # add uniform block layouts to desc object for stage in ['VS', 'FS']: shd = shdLib.vertexShaders[prog.vs] if stage == 'VS' else shdLib.fragmentShaders[prog.fs] refl = shd.slReflection[slang] @@ -590,12 +596,13 @@ def writeProgramSource(f, shdLib, prog, slangs) : ub_size = ub['size'] if 'glsl' in slang: ub_size = roundup(ub_size, 16) - f.write(' desc.AddUniformBlock("{}", "{}", {}, {}::_bindShaderStage, {}::_bindSlotIndex);\n'.format( - ub['type'], ub['name'], ub_size, ub['type'], ub['type'])) + f.write(' bld.UniformBlock(Oryol::ShaderStage::{}, {}, "{}", "{}", {});\n'.format( + stage, ub['slot'], ub['name'], ub['type'], ub_size)) # add textures layouts to desc objects for tex in refl['textures']: - f.write(' desc.AddTexture("{}", {}, Oryol::ShaderStage::{}, {});\n'.format(tex['name'], texOryolType[tex['type']], stage, tex['slot'])) - f.write(' return desc;\n') + f.write(' bld.Texture(Oryol::ShaderStage::{}, {}, "{}", {});\n'.format( + stage, tex['slot'], tex['name'], texOryolType[tex['type']])) + f.write(' return bld.Desc;\n') f.write('}\n') #------------------------------------------------------------------------------- From 866b1cb089e98cf40c598515c15e668427018c0e Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 16 Jan 2018 17:45:32 +0100 Subject: [PATCH 22/91] ShapeBuilder: fix cleanup bug after ShapeBuilder::Build() --- code/Modules/Assets/Gfx/ShapeBuilder.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.cc b/code/Modules/Assets/Gfx/ShapeBuilder.cc index 5dfa5c541..86a681b3f 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.cc +++ b/code/Modules/Assets/Gfx/ShapeBuilder.cc @@ -290,7 +290,11 @@ ShapeBuilder::Build() { // clear private data (but not config params) this->curPrimGroupBaseElement = 0; - this->curPrimGroupNumElements = 0; + this->curPrimGroupNumElements = 0; + this->posIndex = InvalidIndex; + this->normalIndex = InvalidIndex; + this->texCoordIndex = InvalidIndex; + this->colorIndex = InvalidIndex; this->transform = glm::mat4(); this->color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); this->shapes.Clear(); From a09a4ca6d8f4aa514660b268628b13948154f896 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 16 Jan 2018 17:46:22 +0100 Subject: [PATCH 23/91] sokol-migration: render passes, resource builder tweaks, and more samples ported --- code/Modules/Gfx/Gfx.cc | 10 - code/Modules/Gfx/Gfx.h | 108 +- code/Modules/Gfx/GfxTypes.cc | 32 +- code/Modules/Gfx/GfxTypes.h | 1215 +++++++++-------- code/Modules/Gfx/private/sokolGfxBackend.cc | 61 +- code/Modules/Gfx/private/sokolGfxBackend.h | 2 +- code/Samples/BlendTest/BlendTest.cc | 2 +- .../MultipleRenderTarget.cc | 182 ++- .../Samples/MultipleRenderTarget/shaders.glsl | 29 +- .../RenderToCubeMap/RenderToCubeMap.cc | 118 +- code/Samples/RenderToCubeMap/shaders.glsl | 20 +- .../SimpleRenderTarget/SimpleRenderTarget.cc | 108 +- 12 files changed, 1006 insertions(+), 881 deletions(-) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index f693098ce..eeba83c7c 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -108,16 +108,6 @@ Gfx::FrameInfo() { return state->gfxFrameInfo; } -//------------------------------------------------------------------------------ -void -Gfx::BeginPass() { - o_assert_dbg(IsValid()); - o_assert_dbg(!state->inPass); - state->inPass = true; - state->gfxFrameInfo.NumPasses++; - state->backend.BeginPass(Id::InvalidId(), &state->gfxDesc.DefaultPassAction); -} - //------------------------------------------------------------------------------ void Gfx::BeginPass(const PassAction& action) { diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 17ebaa587..ef8b332cc 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -49,48 +49,50 @@ class Gfx { static const struct DisplayAttrs& PassAttrs(); /// get frame-render stats, gets reset in CommitFrame()! static const GfxFrameInfo& FrameInfo(); - - /// start creating a buffer through a BufferBuilder object - static BufferBuilder Buffer(); - /// start creating a texture through a texture builder object - static TextureBuilder Texture(); - /// start creating a shader through a shader builder object - static ShaderBuilder Shader(); - /// start creating a pipeline through a pipeline builder object - static PipelineBuilder Pipeline(); + + /// start creating a buffer through a BufferBuilder object + static BufferBuilder Buffer(); + /// start creating a texture through a texture builder object + static TextureBuilder Texture(); + /// start creating a shader through a shader builder object + static ShaderBuilder Shader(); + /// start creating a pipeline through a pipeline builder object + static PipelineBuilder Pipeline(); + /// start creating a render pass through a pass builder object + static PassBuilder Pass(); /// generate new resource label and push on label stack static ResourceLabel PushResourceLabel(); /// push explicit resource label on label stack static void PushResourceLabel(ResourceLabel label); /// pop resource label from label stack - static ResourceLabel PopResourceLabel(); + static ResourceLabel PopResourceLabel(); /// create a buffer object without associated data static Id CreateBuffer(const BufferDesc& desc); /// create a buffer object with associated data static Id CreateBuffer(const BufferDesc& setup, const class Buffer& data); /// create a buffer object with raw pointer to associated data static Id CreateBuffer(const BufferDesc& setup, const void* data, int size); - /// create a texture object without associated data - static Id CreateTexture(const TextureDesc& desc); - /// create a texture object with associated data - static Id CreateTexture(const TextureDesc& setup, const class Buffer& data); - /// create a texture object with raw pointer to associated data - static Id CreateTexture(const TextureDesc& setup, const void* data, int size); - /// create a shader object - static Id CreateShader(const ShaderDesc& desc); - /// create a pipeline object - static Id CreatePipeline(const PipelineDesc& desc); - /// create a render-pass object - static Id CreatePass(const PassDesc& desc); + /// create a texture object without associated data + static Id CreateTexture(const TextureDesc& desc); + /// create a texture object with associated data + static Id CreateTexture(const TextureDesc& setup, const class Buffer& data); + /// create a texture object with raw pointer to associated data + static Id CreateTexture(const TextureDesc& setup, const void* data, int size); + /// create a shader object + static Id CreateShader(const ShaderDesc& desc); + /// create a pipeline object + static Id CreatePipeline(const PipelineDesc& desc); + /// create a render-pass object + static Id CreatePass(const PassDesc& desc); /// lookup a resource Id by Locator static Id LookupResource(const Locator& locator); /// destroy one or several resources by matching label static void DestroyResources(ResourceLabel label); /// test if an optional feature is supported - static bool QueryFeature(GfxFeature::Code feat); - /// get the supported shader language + static bool QueryFeature(GfxFeature::Code feat); + /// get the supported shader language static ShaderLang::Code QueryShaderLang(); /// query number of free slots for resource type static int QueryFreeResourceSlots(GfxResourceType::Code resourceType); @@ -99,12 +101,10 @@ class Gfx { /// query resource pool info (slow) static ResourcePoolInfo QueryResourcePoolInfo(GfxResourceType::Code resType); - /// begin rendering to default render pass - static void BeginPass(); /// begin rendering to default render pass with override clear values - static void BeginPass(const PassAction& action); + static void BeginPass(const PassAction& action=PassAction()); /// begin offscreen rendering with override clear colors - static void BeginPass(const Id& passId, const PassAction& action); + static void BeginPass(const Id& passId, const PassAction& action=PassAction()); /// finish rendering to current pass static void EndPass(); @@ -124,8 +124,8 @@ class Gfx { /// submit a draw call static void Draw(int baseElement, int numElements, int numInstances=1); - /// submit a draw call with baseElement and numElements taken from PrimitiveGroup - static void Draw(const PrimitiveGroup& primGroup, int numInstances=1); + /// submit a draw call with baseElement and numElements taken from PrimitiveGroup + static void Draw(const PrimitiveGroup& primGroup, int numInstances=1); /// commit (and display) the current frame static void CommitFrame(); @@ -142,29 +142,35 @@ template inline void Gfx::ApplyUniformBlock(const T& ub) { applyUniformBlock(T::_bindShaderStage, T::_bindSlotIndex, (const uint8_t*)&ub, sizeof(ub)); } + +//------------------------------------------------------------------------------ +inline BufferBuilder +Gfx::Buffer() { + return BufferBuilder(); +} + +//------------------------------------------------------------------------------ +inline TextureBuilder +Gfx::Texture() { + return TextureBuilder(); +} + +//------------------------------------------------------------------------------ +inline ShaderBuilder +Gfx::Shader() { + return ShaderBuilder(); +} + +//------------------------------------------------------------------------------ +inline PipelineBuilder +Gfx::Pipeline() { + return PipelineBuilder(); +} //------------------------------------------------------------------------------ -inline BufferBuilder -Gfx::Buffer() { - return BufferBuilder(); -} - -//------------------------------------------------------------------------------ -inline TextureBuilder -Gfx::Texture() { - return TextureBuilder(); -} - -//------------------------------------------------------------------------------ -inline ShaderBuilder -Gfx::Shader() { - return ShaderBuilder(); -} - -//------------------------------------------------------------------------------ -inline PipelineBuilder -Gfx::Pipeline() { - return PipelineBuilder(); +inline PassBuilder +Gfx::Pass() { + return PassBuilder(); } } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 55975d843..f456ae8f8 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -638,31 +638,16 @@ GfxDesc::GfxDesc() { } } -//------------------------------------------------------------------------------ -PassDesc PassDesc::From(Id colorTexture, Id depthStencilTexture) { - PassDesc setup; - setup.ColorAttachments[0].Texture = colorTexture; - setup.DepthStencilTexture = depthStencilTexture; - return setup; -} - -//------------------------------------------------------------------------------ -PassDesc PassDesc::From(std::initializer_list colorTextures, Id depthStencilTexture) { - PassDesc setup; - int i = 0; - for (const auto& id : colorTextures) { - setup.ColorAttachments[i++].Texture = id; - } - setup.DepthStencilTexture = depthStencilTexture; - return setup; -} - //------------------------------------------------------------------------------ Id BufferBuilder::Create() { + // FIXME: hmm this ContentSize vs Desc.Size thing is weird if (this->ContentSize != 0) { - o_assert_dbg(this->ContentSize >= this->Desc.Size); + o_assert_dbg(this->ContentSize >= (this->Desc.Offset+this->Desc.Size)); + return Gfx::CreateBuffer(this->Desc, this->ContentPtr, this->ContentSize); + } + else { + return Gfx::CreateBuffer(this->Desc, this->ContentPtr, this->Desc.Size); } - return Gfx::CreateBuffer(this->Desc, this->ContentPtr, this->Desc.Size); } //------------------------------------------------------------------------------ @@ -675,4 +660,9 @@ Id TextureBuilder::Create() { return Gfx::CreateTexture(this->Desc, this->ContentPtr, this->ContentSize); } +//------------------------------------------------------------------------------ +Id PassBuilder::Create() { + return Gfx::CreatePass(this->Desc); +} + } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index b278463a6..6f4e391ea 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -6,7 +6,7 @@ #include "Core/String/StringAtom.h" #include "Resource/Id.h" #include "Resource/Locator.h" -#include "Core/Containers/StaticArray.h" +#include "Core/Containers/StaticArray.h" #include "Core/Containers/Buffer.h" #include "Gfx/GfxConfig.h" #include "glm/vec4.hpp" @@ -14,78 +14,77 @@ #include namespace Oryol { - -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxFeature - @ingroup Gfx - @brief optional rendering features -*/ -struct GfxFeature { - enum Code { - TextureCompressionDXT = 0, ///< GPU supports DXT compressed textures - TextureCompressionPVRTC, ///< GPU supports PVRTC compressed textures - TextureCompressionATC, ///< GPU supports ATC compressed textures - TextureCompressionETC2, ///< GPU supports ETC2 compressed textures (OpenGLES3) - TextureFloat, ///< support for float textures - TextureHalfFloat, ///< support for half-float textures - Instancing, ///< supports hardware-instanced rendering - OriginBottomLeft, ///< image space origin is bottom-left (GL-style) - OriginTopLeft, ///< image space origin is top-left (D3D-style) - MSAARenderTargets, ///< MSAA support in offscreen-render-targets - PackedVertexFormat_10_2, ///< support for 10.10.10.2 bit packed vertex formats - MultipleRenderTarget, ///< support for MRT offscreen rendering - Texture3D, ///< support for 3D textures - TextureArray, ///< support for array textures - NativeTexture, ///< can work with externally created texture objects - - Num, - Invalid - }; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxResourceType - @ingroup Gfx - @brief Gfx module resource types - - These types are used for the type in Id for Gfx module - resources. -*/ -struct GfxResourceType { - enum Code { - Texture, ///< a texture - Buffer, ///< a vertex- or index-buffer - Shader, ///< a shader - Pipeline, ///< a pipeline state object - Pass, ///< a render-pass object - - Num, - Invalid, - }; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::Usage - @ingroup Gfx - @brief graphics resource usage types - - - Immutable: requires initialization data - - Dynamic: update infrequently - - Stream: changed every frame -*/ -struct Usage { - enum Code { - Immutable = 0, - Dynamic, - Stream, - - Num, - Invalid, - }; -}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxFeature + @ingroup Gfx + @brief optional rendering features +*/ +struct GfxFeature { + enum Code { + TextureCompressionDXT = 0, ///< GPU supports DXT compressed textures + TextureCompressionPVRTC, ///< GPU supports PVRTC compressed textures + TextureCompressionATC, ///< GPU supports ATC compressed textures + TextureCompressionETC2, ///< GPU supports ETC2 compressed textures (OpenGLES3) + TextureFloat, ///< support for float textures + TextureHalfFloat, ///< support for half-float textures + Instancing, ///< supports hardware-instanced rendering + OriginBottomLeft, ///< image space origin is bottom-left (GL-style) + OriginTopLeft, ///< image space origin is top-left (D3D-style) + MSAARenderTargets, ///< MSAA support in offscreen-render-targets + PackedVertexFormat_10_2, ///< support for 10.10.10.2 bit packed vertex formats + MultipleRenderTarget, ///< support for MRT offscreen rendering + Texture3D, ///< support for 3D textures + TextureArray, ///< support for array textures + + Num, + Invalid + }; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxResourceType + @ingroup Gfx + @brief Gfx module resource types + + These types are used for the type in Id for Gfx module + resources. +*/ +struct GfxResourceType { + enum Code { + Texture, ///< a texture + Buffer, ///< a vertex- or index-buffer + Shader, ///< a shader + Pipeline, ///< a pipeline state object + Pass, ///< a render-pass object + + Num, + Invalid, + }; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::Usage + @ingroup Gfx + @brief graphics resource usage types + + - Immutable: requires initialization data + - Dynamic: update infrequently + - Stream: changed every frame +*/ +struct Usage { + enum Code { + Immutable = 0, + Dynamic, + Stream, + + Num, + Invalid, + }; +}; //------------------------------------------------------------------------------ /** @@ -237,28 +236,28 @@ struct PixelFormat { static int ImagePitch(PixelFormat::Code fmt, int width, int height); }; -//------------------------------------------------------------------------------ -/** - @class Oryol::PrimitiveType - @ingroup Gfx - @brief primitive type enum (triangle strips, lists, etc...) -*/ -struct PrimitiveType { - /// primitive type enum (don't change order, append to end!) - enum Code { - Points = 0, - Lines, - LineStrip, - Triangles, - TriangleStrip, - - Num, - Invalid - }; - /// convert primitive type to string - static const char* ToString(PrimitiveType::Code c); -}; - +//------------------------------------------------------------------------------ +/** + @class Oryol::PrimitiveType + @ingroup Gfx + @brief primitive type enum (triangle strips, lists, etc...) +*/ +struct PrimitiveType { + /// primitive type enum (don't change order, append to end!) + enum Code { + Points = 0, + Lines, + LineStrip, + Triangles, + TriangleStrip, + + Num, + Invalid + }; + /// convert primitive type to string + static const char* ToString(PrimitiveType::Code c); +}; + //------------------------------------------------------------------------------ /** @class Oryol::ShaderStage @@ -292,26 +291,26 @@ struct TextureType { Invalid, }; }; - -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureFilterMode - @ingroup Gfx - @brief texture sampling filter mode -*/ -struct TextureFilterMode { - enum Code { - Nearest = 0, - Linear, - NearestMipmapNearest, - NearestMipmapLinear, - LinearMipmapNearest, - LinearMipmapLinear, - - Num, - Invalid, - }; -}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::TextureFilterMode + @ingroup Gfx + @brief texture sampling filter mode +*/ +struct TextureFilterMode { + enum Code { + Nearest = 0, + Linear, + NearestMipmapNearest, + NearestMipmapLinear, + LinearMipmapNearest, + LinearMipmapLinear, + + Num, + Invalid, + }; +}; //------------------------------------------------------------------------------ /** @@ -491,7 +490,7 @@ struct BlendOperation { Invalid }; }; - + //------------------------------------------------------------------------------ /** @class Oryol::VertexStepFunction @@ -810,8 +809,6 @@ class GfxDesc { String Title = "Oryol"; /// enable to render full-res on HighDPI displays (not supported on all platforms) bool HighDPI = false; - /// default clear values (or dont care) - PassAction DefaultPassAction; /// if true, ignore own size and instead track size of an HTML element (emscripten only) bool HtmlTrackElementSize = false; /// name of the HTML element to track (default: #canvas) @@ -854,57 +851,58 @@ struct BufferDesc { /// optional byte-offset to init-data int Offset = 0; /// optional native 3D-API buffers - StaticArray NativeBuffers; - - /// default constructor - BufferDesc() { - NativeBuffers.Fill(0); + StaticArray NativeBuffers; + + /// default constructor + BufferDesc() { + NativeBuffers.Fill(0); } }; - -//------------------------------------------------------------------------------ -/** - @class Oryol::BufferBuilder - @ingroup Gfx - @brief builder for BufferDesc object -*/ -class BufferBuilder { -public: - BufferDesc Desc; - const void* ContentPtr = nullptr; - int ContentSize = 0; - BufferBuilder() { }; - BufferBuilder(const BufferBuilder& rhs): Desc(rhs.Desc) { }; - BufferBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; - } - BufferBuilder& Type(BufferType::Code t) { - Desc.Type = t; return *this; - } - BufferBuilder& Usage(Usage::Code u) { - Desc.Usage = u; return *this; - } - BufferBuilder& Size(int s) { - Desc.Size = s; return *this; - } - BufferBuilder& Offset(int o) { - Desc.Offset = o; return *this; - } - BufferBuilder& NativeBuffer(int index, intptr_t buf) { - Desc.NativeBuffers[index] = buf; return *this; - } - BufferBuilder& Content(const void* ptr) { - ContentPtr = ptr; - ContentSize = 0; - return *this; - } - BufferBuilder& Content(const Buffer& content) { - ContentPtr = content.Data(); - ContentSize = content.Size(); - return *this; - } - Id Create(); -}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::BufferBuilder + @ingroup Gfx + @brief builder for BufferDesc object +*/ +class BufferBuilder { +public: + BufferDesc Desc; + const void* ContentPtr = nullptr; + int ContentSize = 0; + BufferBuilder& From(const BufferDesc& desc) { + Desc = desc; return *this; + } + BufferBuilder& Locator(const class Locator& loc) { + Desc.Locator = loc; return *this; + } + BufferBuilder& Type(BufferType::Code t) { + Desc.Type = t; return *this; + } + BufferBuilder& Usage(Usage::Code u) { + Desc.Usage = u; return *this; + } + BufferBuilder& Size(int s) { + Desc.Size = s; return *this; + } + BufferBuilder& Offset(int o) { + Desc.Offset = o; return *this; + } + BufferBuilder& NativeBuffer(int index, intptr_t buf) { + Desc.NativeBuffers[index] = buf; return *this; + } + BufferBuilder& Content(const void* ptr) { + ContentPtr = ptr; + ContentSize = 0; + return *this; + } + BufferBuilder& Content(const Buffer& content) { + ContentPtr = content.Data(); + ContentSize = content.Size(); + return *this; + } + Id Create(); +}; //------------------------------------------------------------------------------ /** @@ -917,212 +915,213 @@ struct PipelineDesc { class Locator Locator = Locator::NonShared(); /// shader Id Shader; - /// input vertex layouts (one per vertex buffer slot) - StaticArray Layouts; + /// input vertex layouts (one per vertex buffer slot) + StaticArray Layouts; /// primitive type PrimitiveType::Code PrimType = PrimitiveType::Triangles; /// index type (none, 16-bit or 32-bit) - IndexType::Code IndexType = IndexType::None; - - /// depth-stencil-state - CompareFunc::Code DepthCmpFunc = CompareFunc::Always; - bool DepthWriteEnabled = false; - bool StencilEnabled = false; - uint8_t StencilReadMask = 0xFF; - uint8_t StencilWriteMask = 0xFF; - uint8_t StencilRef = 0x00; - StencilOp::Code StencilFrontFailOp = StencilOp::Keep; - StencilOp::Code StencilFrontDepthFailOp = StencilOp::Keep; - StencilOp::Code StencilFrontPassOp = StencilOp::Keep; - CompareFunc::Code StencilFrontCmpFunc = CompareFunc::Always; - StencilOp::Code StencilBackFailOp = StencilOp::Keep; - StencilOp::Code StencilBackDepthFailOp = StencilOp::Keep; - StencilOp::Code StencilBackPassOp = StencilOp::Keep; - CompareFunc::Code StencilBackCmpFunc = CompareFunc::Always; - - /// blend state - bool BlendEnabled = false; - BlendFactor::Code BlendSrcFactorRGB = BlendFactor::One; - BlendFactor::Code BlendDstFactorRGB = BlendFactor::Zero; - BlendOperation::Code BlendOpRGB = BlendOperation::Add; - BlendFactor::Code BlendSrcFactorAlpha = BlendFactor::One; - BlendFactor::Code BlendDstFactorAlpha = BlendFactor::Zero; - BlendOperation::Code BlendOpAlpha = BlendOperation::Add; - PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; - PixelFormat::Code ColorFormat = PixelFormat::RGBA8; - PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; - int MRTCount = 1; - glm::vec4 BlendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - - /// rasterizer state - bool CullFaceEnabled = false; - bool ScissorTestEnabled = false; - bool AlphaToCoverageEnabled = false; - Face::Code CullFace = Face::Back; - int SampleCount = 1; - float DepthBias = 0.0f; - float DepthBiasSlopeScale = 0.0f; - float DepthBiasClamp = 0.0f; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::PipelineBuilder - @ingroup Gfx - @brief builder for PipelineDesc objects -*/ -class PipelineBuilder { -public: - PipelineDesc Desc; - PipelineBuilder() { }; - PipelineBuilder(const PipelineBuilder& rhs): Desc(rhs.Desc) { }; - PipelineBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; - } - PipelineBuilder& Shader(const Id& shd) { - Desc.Shader = shd; return *this; - } - PipelineBuilder& Layout(int slotIndex, const VertexLayout& layout) { - Desc.Layouts[slotIndex] = layout; return *this; - } - PipelineBuilder& PrimitiveType(PrimitiveType::Code t) { - Desc.PrimType = t; return *this; - } - PipelineBuilder& IndexType(IndexType::Code t) { - Desc.IndexType = t; return *this; - } - PipelineBuilder& DepthCmpFunc(CompareFunc::Code f) { - Desc.DepthCmpFunc = f; return *this; - } - PipelineBuilder& DepthWriteEnabled(bool b) { - Desc.DepthWriteEnabled = b; return *this; - } - PipelineBuilder& StencilEnabled(bool b) { - Desc.StencilEnabled = b; return *this; - } - PipelineBuilder& StencilReadMask(uint8_t m) { - Desc.StencilReadMask = m; return *this; - } - PipelineBuilder& StencilWriteMask(uint8_t m) { - Desc.StencilWriteMask = m; return *this; - } - PipelineBuilder& StencilRef(uint8_t r) { - Desc.StencilRef = r; return *this; - } - PipelineBuilder& StencilFailOp(Face::Code face, StencilOp::Code op) { - if (Face::Front & face) { - Desc.StencilFrontFailOp = op; - } - if (Face::Back & face) { - Desc.StencilBackFailOp = op; - } - return *this; - } - PipelineBuilder& StencilDepthFailOp(Face::Code face, StencilOp::Code op) { - if (Face::Front & face) { - Desc.StencilFrontDepthFailOp = op; - } - if (Face::Back & face) { - Desc.StencilBackDepthFailOp = op; - } - return *this; - } - PipelineBuilder& StencilPassOp(Face::Code face, StencilOp::Code op) { - if (Face::Front & face) { - Desc.StencilFrontPassOp = op; - } - if (Face::Back & face) { - Desc.StencilBackPassOp = op; - } - return *this; - } - PipelineBuilder& StencilCmpFunc(Face::Code face, CompareFunc::Code fn) { - if (Face::Front & face) { - Desc.StencilFrontCmpFunc = fn; - } - if (Face::Back & face) { - Desc.StencilBackCmpFunc = fn; - } - return *this; - } - PipelineBuilder& BlendEnabled(bool b) { - Desc.BlendEnabled = b; return *this; - } - PipelineBuilder& BlendSrcFactor(BlendFactor::Code f) { - Desc.BlendSrcFactorRGB = f; - Desc.BlendSrcFactorAlpha = f; - return *this; - } - PipelineBuilder& BlendSrcFactorRGB(BlendFactor::Code f) { - Desc.BlendSrcFactorRGB = f; return *this; - } - PipelineBuilder& BlendSrcFactorAlpha(BlendFactor::Code f) { - Desc.BlendSrcFactorAlpha = f; return *this; - } - PipelineBuilder& BlendDstFactor(BlendFactor::Code f) { - Desc.BlendDstFactorRGB = f; - Desc.BlendDstFactorAlpha = f; - return *this; - } - PipelineBuilder& BlendDstFactorRGB(BlendFactor::Code f) { - Desc.BlendDstFactorRGB = f; return *this; - } - PipelineBuilder& BlendDstFactorAlpha(BlendFactor::Code f) { - Desc.BlendDstFactorAlpha = f; return *this; - } - PipelineBuilder& BlendOp(BlendOperation::Code op) { - Desc.BlendOpRGB = op; - Desc.BlendOpAlpha = op; - return *this; - } - PipelineBuilder& BlendOpRGB(BlendOperation::Code op) { - Desc.BlendOpRGB = op; return *this; - } - PipelineBuilder& BlendOpAlpha(BlendOperation::Code op) { - Desc.BlendOpAlpha = op; return *this; - } - PipelineBuilder& ColorWriteMask(PixelChannel::Mask m) { - Desc.ColorWriteMask = m; return *this; - } - PipelineBuilder& ColorFormat(PixelFormat::Code fmt) { - Desc.ColorFormat = fmt; return *this; - } - PipelineBuilder& DepthFormat(PixelFormat::Code fmt) { - Desc.DepthFormat = fmt; return *this; - } - PipelineBuilder& SampleCount(int c) { - Desc.SampleCount = c; return *this; - } - PipelineBuilder& MRTCount(int c) { - Desc.MRTCount = c; return *this; - } - PipelineBuilder& BlendColor(const glm::vec4& c) { - Desc.BlendColor = c; return *this; - } - PipelineBuilder& CullFaceEnabled(bool b) { - Desc.CullFaceEnabled = b; return *this; - } - PipelineBuilder& CullFace(Face::Code f) { - Desc.CullFace = f; return *this; - } - PipelineBuilder& ScissorTestEnabled(bool b) { - Desc.ScissorTestEnabled = b; return *this; - } - PipelineBuilder& AlphaToCoverageEnabled(bool b) { - Desc.AlphaToCoverageEnabled = b; return *this; - } - PipelineBuilder& DepthBias(float f) { - Desc.DepthBias = f; return *this; - } - PipelineBuilder& DepthBiasSlopeScale(float f) { - Desc.DepthBiasSlopeScale = f; return *this; - } - PipelineBuilder& DepthBiasClamp(float f) { - Desc.DepthBiasClamp = f; return *this; - } - Id Create(); -}; - + IndexType::Code IndexType = IndexType::None; + + /// depth-stencil-state + CompareFunc::Code DepthCmpFunc = CompareFunc::Always; + bool DepthWriteEnabled = false; + bool StencilEnabled = false; + uint8_t StencilReadMask = 0xFF; + uint8_t StencilWriteMask = 0xFF; + uint8_t StencilRef = 0x00; + StencilOp::Code StencilFrontFailOp = StencilOp::Keep; + StencilOp::Code StencilFrontDepthFailOp = StencilOp::Keep; + StencilOp::Code StencilFrontPassOp = StencilOp::Keep; + CompareFunc::Code StencilFrontCmpFunc = CompareFunc::Always; + StencilOp::Code StencilBackFailOp = StencilOp::Keep; + StencilOp::Code StencilBackDepthFailOp = StencilOp::Keep; + StencilOp::Code StencilBackPassOp = StencilOp::Keep; + CompareFunc::Code StencilBackCmpFunc = CompareFunc::Always; + + /// blend state + bool BlendEnabled = false; + BlendFactor::Code BlendSrcFactorRGB = BlendFactor::One; + BlendFactor::Code BlendDstFactorRGB = BlendFactor::Zero; + BlendOperation::Code BlendOpRGB = BlendOperation::Add; + BlendFactor::Code BlendSrcFactorAlpha = BlendFactor::One; + BlendFactor::Code BlendDstFactorAlpha = BlendFactor::Zero; + BlendOperation::Code BlendOpAlpha = BlendOperation::Add; + PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; + PixelFormat::Code ColorFormat = PixelFormat::RGBA8; + PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; + int MRTCount = 1; + glm::vec4 BlendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); + + /// rasterizer state + bool CullFaceEnabled = false; + bool ScissorTestEnabled = false; + bool AlphaToCoverageEnabled = false; + Face::Code CullFace = Face::Back; + int SampleCount = 1; + float DepthBias = 0.0f; + float DepthBiasSlopeScale = 0.0f; + float DepthBiasClamp = 0.0f; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::PipelineBuilder + @ingroup Gfx + @brief builder for PipelineDesc objects +*/ +class PipelineBuilder { +public: + PipelineDesc Desc; + PipelineBuilder& From(const PipelineDesc& desc) { + Desc = desc; return *this; + } + PipelineBuilder& Locator(const class Locator& loc) { + Desc.Locator = loc; return *this; + } + PipelineBuilder& Shader(const Id& shd) { + Desc.Shader = shd; return *this; + } + PipelineBuilder& Layout(int slotIndex, const VertexLayout& layout) { + Desc.Layouts[slotIndex] = layout; return *this; + } + PipelineBuilder& PrimitiveType(PrimitiveType::Code t) { + Desc.PrimType = t; return *this; + } + PipelineBuilder& IndexType(IndexType::Code t) { + Desc.IndexType = t; return *this; + } + PipelineBuilder& DepthCmpFunc(CompareFunc::Code f) { + Desc.DepthCmpFunc = f; return *this; + } + PipelineBuilder& DepthWriteEnabled(bool b) { + Desc.DepthWriteEnabled = b; return *this; + } + PipelineBuilder& StencilEnabled(bool b) { + Desc.StencilEnabled = b; return *this; + } + PipelineBuilder& StencilReadMask(uint8_t m) { + Desc.StencilReadMask = m; return *this; + } + PipelineBuilder& StencilWriteMask(uint8_t m) { + Desc.StencilWriteMask = m; return *this; + } + PipelineBuilder& StencilRef(uint8_t r) { + Desc.StencilRef = r; return *this; + } + PipelineBuilder& StencilFailOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + Desc.StencilFrontFailOp = op; + } + if (Face::Back & face) { + Desc.StencilBackFailOp = op; + } + return *this; + } + PipelineBuilder& StencilDepthFailOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + Desc.StencilFrontDepthFailOp = op; + } + if (Face::Back & face) { + Desc.StencilBackDepthFailOp = op; + } + return *this; + } + PipelineBuilder& StencilPassOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + Desc.StencilFrontPassOp = op; + } + if (Face::Back & face) { + Desc.StencilBackPassOp = op; + } + return *this; + } + PipelineBuilder& StencilCmpFunc(Face::Code face, CompareFunc::Code fn) { + if (Face::Front & face) { + Desc.StencilFrontCmpFunc = fn; + } + if (Face::Back & face) { + Desc.StencilBackCmpFunc = fn; + } + return *this; + } + PipelineBuilder& BlendEnabled(bool b) { + Desc.BlendEnabled = b; return *this; + } + PipelineBuilder& BlendSrcFactor(BlendFactor::Code f) { + Desc.BlendSrcFactorRGB = f; + Desc.BlendSrcFactorAlpha = f; + return *this; + } + PipelineBuilder& BlendSrcFactorRGB(BlendFactor::Code f) { + Desc.BlendSrcFactorRGB = f; return *this; + } + PipelineBuilder& BlendSrcFactorAlpha(BlendFactor::Code f) { + Desc.BlendSrcFactorAlpha = f; return *this; + } + PipelineBuilder& BlendDstFactor(BlendFactor::Code f) { + Desc.BlendDstFactorRGB = f; + Desc.BlendDstFactorAlpha = f; + return *this; + } + PipelineBuilder& BlendDstFactorRGB(BlendFactor::Code f) { + Desc.BlendDstFactorRGB = f; return *this; + } + PipelineBuilder& BlendDstFactorAlpha(BlendFactor::Code f) { + Desc.BlendDstFactorAlpha = f; return *this; + } + PipelineBuilder& BlendOp(BlendOperation::Code op) { + Desc.BlendOpRGB = op; + Desc.BlendOpAlpha = op; + return *this; + } + PipelineBuilder& BlendOpRGB(BlendOperation::Code op) { + Desc.BlendOpRGB = op; return *this; + } + PipelineBuilder& BlendOpAlpha(BlendOperation::Code op) { + Desc.BlendOpAlpha = op; return *this; + } + PipelineBuilder& ColorWriteMask(PixelChannel::Mask m) { + Desc.ColorWriteMask = m; return *this; + } + PipelineBuilder& ColorFormat(PixelFormat::Code fmt) { + Desc.ColorFormat = fmt; return *this; + } + PipelineBuilder& DepthFormat(PixelFormat::Code fmt) { + Desc.DepthFormat = fmt; return *this; + } + PipelineBuilder& SampleCount(int c) { + Desc.SampleCount = c; return *this; + } + PipelineBuilder& MRTCount(int c) { + Desc.MRTCount = c; return *this; + } + PipelineBuilder& BlendColor(const glm::vec4& c) { + Desc.BlendColor = c; return *this; + } + PipelineBuilder& CullFaceEnabled(bool b) { + Desc.CullFaceEnabled = b; return *this; + } + PipelineBuilder& CullFace(Face::Code f) { + Desc.CullFace = f; return *this; + } + PipelineBuilder& ScissorTestEnabled(bool b) { + Desc.ScissorTestEnabled = b; return *this; + } + PipelineBuilder& AlphaToCoverageEnabled(bool b) { + Desc.AlphaToCoverageEnabled = b; return *this; + } + PipelineBuilder& DepthBias(float f) { + Desc.DepthBias = f; return *this; + } + PipelineBuilder& DepthBiasSlopeScale(float f) { + Desc.DepthBiasSlopeScale = f; return *this; + } + PipelineBuilder& DepthBiasClamp(float f) { + Desc.DepthBiasClamp = f; return *this; + } + Id Create(); +}; + //------------------------------------------------------------------------------ /** @class Oryol::ShaderDesc @@ -1130,68 +1129,69 @@ class PipelineBuilder { @brief creation attributes for shaders */ struct ShaderDesc { - /// the resource locator - class Locator Locator = Locator::NonShared(); - - /// shader stage descriptions - struct UniformBlockDesc { - const char* Name = nullptr; - const char* Type = nullptr; - int Size = 0; - }; - struct TextureDesc { - const char* Name = nullptr; - TextureType::Code Type = TextureType::Invalid; - }; - struct StageDesc { - const char* Source = nullptr; - const uint8_t* ByteCode = nullptr; - int ByteCodeSize = 0; - const char* Entry = nullptr; - StaticArray UniformBlocks; - StaticArray Textures; - }; - StaticArray Stage; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::ShaderBuilder - @ingroup Gfx - @brief builder for ShaderDesc objects -*/ -class ShaderBuilder { -public: - ShaderDesc Desc; - ShaderBuilder() { }; - ShaderBuilder(const ShaderBuilder& rhs): Desc(rhs.Desc) { }; - ShaderBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; - } - ShaderBuilder& Source(ShaderStage::Code stage, const char* src) { - Desc.Stage[stage].Source = src; return *this; - } - ShaderBuilder& ByteCode(ShaderStage::Code stage, const uint8_t* ptr, int size) { - Desc.Stage[stage].ByteCode = ptr; - Desc.Stage[stage].ByteCodeSize = size; - return *this; - } - ShaderBuilder& Entry(ShaderStage::Code stage, const char* entry) { - Desc.Stage[stage].Entry = entry; return *this; - } - ShaderBuilder& UniformBlock(ShaderStage::Code stage, int slot, const char* name, const char* type, int size) { - auto& ubSlot = Desc.Stage[stage].UniformBlocks[slot]; - ubSlot.Name = name; - ubSlot.Type = type; - ubSlot.Size = size; - return *this; - } - ShaderBuilder& Texture(ShaderStage::Code stage, int slot, const char* name, TextureType::Code type) { - auto& texSlot = Desc.Stage[stage].Textures[slot]; - texSlot.Name = name; - texSlot.Type = type; - return *this; - } + /// the resource locator + class Locator Locator = Locator::NonShared(); + + /// shader stage descriptions + struct UniformBlockDesc { + const char* Name = nullptr; + const char* Type = nullptr; + int Size = 0; + }; + struct TextureDesc { + const char* Name = nullptr; + TextureType::Code Type = TextureType::Invalid; + }; + struct StageDesc { + const char* Source = nullptr; + const uint8_t* ByteCode = nullptr; + int ByteCodeSize = 0; + const char* Entry = nullptr; + StaticArray UniformBlocks; + StaticArray Textures; + }; + StaticArray Stage; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::ShaderBuilder + @ingroup Gfx + @brief builder for ShaderDesc objects +*/ +class ShaderBuilder { +public: + ShaderDesc Desc; + ShaderBuilder& From(const ShaderDesc& desc) { + Desc = desc; return *this; + } + ShaderBuilder& Locator(const class Locator& loc) { + Desc.Locator = loc; return *this; + } + ShaderBuilder& Source(ShaderStage::Code stage, const char* src) { + Desc.Stage[stage].Source = src; return *this; + } + ShaderBuilder& ByteCode(ShaderStage::Code stage, const uint8_t* ptr, int size) { + Desc.Stage[stage].ByteCode = ptr; + Desc.Stage[stage].ByteCodeSize = size; + return *this; + } + ShaderBuilder& Entry(ShaderStage::Code stage, const char* entry) { + Desc.Stage[stage].Entry = entry; return *this; + } + ShaderBuilder& UniformBlock(ShaderStage::Code stage, int slot, const char* name, const char* type, int size) { + auto& ubSlot = Desc.Stage[stage].UniformBlocks[slot]; + ubSlot.Name = name; + ubSlot.Type = type; + ubSlot.Size = size; + return *this; + } + ShaderBuilder& Texture(ShaderStage::Code stage, int slot, const char* name, TextureType::Code type) { + auto& texSlot = Desc.Stage[stage].Textures[slot]; + texSlot.Name = name; + texSlot.Type = type; + return *this; + } }; //------------------------------------------------------------------------------ @@ -1201,172 +1201,203 @@ class ShaderBuilder { @brief setup object for textures and render targets */ class TextureDesc { -public: - /// resource locator - class Locator Locator = Locator::NonShared(); - /// the texture type - TextureType::Code Type = TextureType::Texture2D; - /// whether the texture will be used as a render target - bool RenderTarget = false; - /// the texture width - int Width = 1; - /// the texture height - int Height = 1; - /// the texture depth or number of layers - int Depth = 1; - /// number of mipmaps in the texture - int NumMipMaps = 1; - /// the usage-hint of the texture - Usage::Code Usage = Usage::Immutable; - /// the pixel format (can be one of the depth formats if this is a depth-render-target) - PixelFormat::Code Format = PixelFormat::RGBA8; - /// the sample count, for MSAA render targets - int SampleCount = 1; - /// magnification texture filter mode - TextureFilterMode::Code MagFilter = TextureFilterMode::Nearest; - /// minification texture filter mode - TextureFilterMode::Code MinFilter = TextureFilterMode::Nearest; - /// texture coordinate wrapping mode along U - TextureWrapMode::Code WrapU = TextureWrapMode::Repeat; - /// texture coordinate wrapping mode along V - TextureWrapMode::Code WrapV = TextureWrapMode::Repeat; - /// texture coordinate wrapping mode along W - TextureWrapMode::Code WrapW = TextureWrapMode::Repeat; +public: + /// resource locator + class Locator Locator = Locator::NonShared(); + /// the texture type + TextureType::Code Type = TextureType::Texture2D; + /// whether the texture will be used as a render target + bool RenderTarget = false; + /// the texture width + int Width = 1; + /// the texture height + int Height = 1; + /// the texture depth or number of layers + int Depth = 1; + /// number of mipmaps in the texture + int NumMipMaps = 1; + /// the usage-hint of the texture + Usage::Code Usage = Usage::Immutable; + /// the pixel format (can be one of the depth formats if this is a depth-render-target) + PixelFormat::Code Format = PixelFormat::RGBA8; + /// the sample count, for MSAA render targets + int SampleCount = 1; + /// magnification texture filter mode + TextureFilterMode::Code MagFilter = TextureFilterMode::Nearest; + /// minification texture filter mode + TextureFilterMode::Code MinFilter = TextureFilterMode::Nearest; + /// texture coordinate wrapping mode along U + TextureWrapMode::Code WrapU = TextureWrapMode::Repeat; + /// texture coordinate wrapping mode along V + TextureWrapMode::Code WrapV = TextureWrapMode::Repeat; + /// texture coordinate wrapping mode along W + TextureWrapMode::Code WrapW = TextureWrapMode::Repeat; /// optional native textures (only on platforms which support GfxFeature::NativeTextures) StaticArray NativeTextures; /// optional image surface offsets and sizes ImageDataAttrs ImageData; - + /// default constructor - TextureDesc() { - NativeTextures.Fill(0); + TextureDesc() { + NativeTextures.Fill(0); + } +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::TextureBuilder + @ingroup Gfx + @brief builder for TextureDesc objects +*/ +class TextureBuilder { +public: + TextureDesc Desc; + const void* ContentPtr = nullptr; + int ContentSize = 0; + TextureBuilder& From(const TextureDesc& desc) { + Desc = desc; return *this; + } + TextureBuilder& Locator(const class Locator& loc) { + Desc.Locator = loc; return *this; + } + TextureBuilder& Type(TextureType::Code t) { + Desc.Type = t; return *this; + } + TextureBuilder& RenderTarget(bool b) { + Desc.RenderTarget = b; return *this; + } + TextureBuilder& Width(int w) { + Desc.Width = w; return *this; + } + TextureBuilder& Height(int h) { + Desc.Height = h; return *this; + } + TextureBuilder& Depth(int d) { + Desc.Depth = d; return *this; + } + TextureBuilder& NumMipMaps(int n) { + Desc.NumMipMaps = n; return *this; + } + TextureBuilder& Usage(Usage::Code u) { + Desc.Usage = u; return *this; + } + TextureBuilder& Format(PixelFormat::Code fmt) { + Desc.Format = fmt; return *this; + } + TextureBuilder& SampleCount(int c) { + Desc.SampleCount = c; return *this; + } + TextureBuilder& MagFilter(TextureFilterMode::Code f) { + Desc.MagFilter = f; return *this; + } + TextureBuilder& MinFilter(TextureFilterMode::Code f) { + Desc.MinFilter = f; return *this; + } + TextureBuilder& WrapU(TextureWrapMode::Code m) { + Desc.WrapU = m; return *this; + } + TextureBuilder& WrapV(TextureWrapMode::Code m) { + Desc.WrapV = m; return *this; + } + TextureBuilder& WrapW(TextureWrapMode::Code m) { + Desc.WrapW = m; return *this; + } + TextureBuilder& NativeTexture(int index, intptr_t tex) { + Desc.NativeTextures[index] = tex; return *this; + } + TextureBuilder& Content(const void* ptr, int size) { + ContentPtr = ptr; + ContentSize = size; + return *this; + } + TextureBuilder& Content(const Buffer& content) { + ContentPtr = content.Data(); + ContentSize = content.Size(); + return *this; } + TextureBuilder& MipDataSize(int faceIndex, int mipIndex, int size) { + Desc.ImageData.Sizes[faceIndex][mipIndex] = size; + return *this; + } + TextureBuilder& MipDataOffset(int faceIndex, int mipIndex, int offset) { + Desc.ImageData.Offsets[faceIndex][mipIndex] = offset; + return *this; + } + Id Create(); +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::PassDesc + @ingroup Gfx + @brief creation attributes for render pass resource +*/ +struct PassDesc { + /// resource locator + class Locator Locator = Locator::NonShared(); + /// a color- or depth-stencil attachment description + struct Attachment { + Id Texture; + int MipLevel = 0; + union { + int Face = 0; + int Layer; + int Slice; + }; + }; + /// color attachments (at least the first must be valid) + StaticArray ColorAttachments; + /// optional depth-stencil attachment + Attachment DepthStencilAttachment; +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::PassBuilder + @ingroup Gfx + @brief builder class for render pass creation +*/ +class PassBuilder { +public: + PassDesc Desc; + PassBuilder& From(const PassDesc& desc) { + Desc = desc; return *this; + } + PassBuilder& Locator(const class Locator& loc) { + Desc.Locator = loc; return *this; + } + PassBuilder& ColorAttachment(int slotIndex, const Id& tex, int mipLevel=0, int faceLayerSlice=0) { + auto& att = this->Desc.ColorAttachments[slotIndex]; + att.Texture = tex; + att.MipLevel = mipLevel; + att.Face = faceLayerSlice; + return *this; + } + PassBuilder& DepthStencilAttachment(const Id& tex, int mipLevel=0, int faceLayerSlice=0) { + auto& att = this->Desc.DepthStencilAttachment; + att.Texture = tex; + att.MipLevel = mipLevel; + att.Face = faceLayerSlice; + return *this; + } + Id Create(); +}; + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxFrameInfo + @brief per-frame stats of the Gfx module +*/ +struct GfxFrameInfo { + int NumPasses = 0; + int NumApplyViewPort = 0; + int NumApplyScissorRect = 0; + int NumApplyDrawState = 0; + int NumApplyUniformBlock = 0; + int NumUpdateBuffers = 0; + int NumUpdateTextures = 0; + int NumDraw = 0; + int NumDrawInstanced = 0; }; - -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureBuilder - @ingroup Gfx - @brief builder for TextureDesc objects -*/ -class TextureBuilder { -public: - TextureDesc Desc; - const void* ContentPtr = nullptr; - int ContentSize = 0; - TextureBuilder() { }; - TextureBuilder(const TextureBuilder& rhs): Desc(rhs.Desc) { }; - TextureBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; - } - TextureBuilder& Type(TextureType::Code t) { - Desc.Type = t; return *this; - } - TextureBuilder& RenderTarget(bool b) { - Desc.RenderTarget = b; return *this; - } - TextureBuilder& Width(int w) { - Desc.Width = w; return *this; - } - TextureBuilder& Height(int h) { - Desc.Height = h; return *this; - } - TextureBuilder& Depth(int d) { - Desc.Depth = d; return *this; - } - TextureBuilder& NumMipMaps(int n) { - Desc.NumMipMaps = n; return *this; - } - TextureBuilder& Usage(Usage::Code u) { - Desc.Usage = u; return *this; - } - TextureBuilder& Format(PixelFormat::Code fmt) { - Desc.Format = fmt; return *this; - } - TextureBuilder& SampleCount(int c) { - Desc.SampleCount = c; return *this; - } - TextureBuilder& MagFilter(TextureFilterMode::Code f) { - Desc.MagFilter = f; return *this; - } - TextureBuilder& MinFilter(TextureFilterMode::Code f) { - Desc.MinFilter = f; return *this; - } - TextureBuilder& WrapU(TextureWrapMode::Code m) { - Desc.WrapU = m; return *this; - } - TextureBuilder& WrapV(TextureWrapMode::Code m) { - Desc.WrapV = m; return *this; - } - TextureBuilder& WrapW(TextureWrapMode::Code m) { - Desc.WrapW = m; return *this; - } - TextureBuilder& NativeTexture(int index, intptr_t tex) { - Desc.NativeTextures[index] = tex; return *this; - } - TextureBuilder& Content(const void* ptr, int size) { - ContentPtr = ptr; - ContentSize = size; - return *this; - } - TextureBuilder& Content(const Buffer& content) { - ContentPtr = content.Data(); - ContentSize = content.Size(); - return *this; - } - TextureBuilder& MipDataSize(int faceIndex, int mipIndex, int size) { - Desc.ImageData.Sizes[faceIndex][mipIndex] = size; - return *this; - } - TextureBuilder& MipDataOffset(int faceIndex, int mipIndex, int offset) { - Desc.ImageData.Offsets[faceIndex][mipIndex] = offset; - return *this; - } - Id Create(); -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::PassDesc - @ingroup Gfx - @brief creation attributes for render pass resource -*/ -class PassDesc { -public: - /// construct from single render target textures, and option depth-stencil texture - static PassDesc From(Id colorTexture, Id depthStencilTexture=Id::InvalidId()); - /// construct from MRT render target textures, and option depth-stencil texture - static PassDesc From(std::initializer_list colorTextures, Id depthStencilTexture=Id::InvalidId()); - /// resource locator - class Locator Locator = Locator::NonShared(); - /// 1..N color attachments - struct ColorAttachment { - Id Texture; - uint16_t MipLevel = 0; ///< mipmap-level - uint16_t Slice = 0; ///< 2D-array-slice, 3D-depth-slice or cubemap face - }; - StaticArray ColorAttachments; - /// optional depth-stencil attachment - Id DepthStencilTexture; - /// default pass action, if no PassAction provided in BeginPass - PassAction DefaultAction; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxFrameInfo - @brief per-frame stats of the Gfx module -*/ -struct GfxFrameInfo { - int NumPasses = 0; - int NumApplyViewPort = 0; - int NumApplyScissorRect = 0; - int NumApplyDrawState = 0; - int NumApplyUniformBlock = 0; - int NumUpdateBuffers = 0; - int NumUpdateTextures = 0; - int NumDraw = 0; - int NumDrawInstanced = 0; -}; } // namespace Oryol diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 9ccfa9169..f94a1a946 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -98,6 +98,14 @@ static sg_image makeImageId(const Id& id) { return sg_image{sgId}; } +//------------------------------------------------------------------------------ +static sg_pass makePassId(const Id& id) { + // convert an Oryol Id into a sokol sg_pass + o_assert_dbg(id.Type == GfxResourceType::Pass); + uint32_t sgId = (id.UniqueStamp<<16)|id.SlotIndex; + return sg_pass{sgId}; +} + //------------------------------------------------------------------------------ static void convertPassAction(const PassAction& src, sg_pass_action& dst) { o_assert_dbg(GfxConfig::MaxNumColorAttachments <= SG_MAX_COLOR_ATTACHMENTS); @@ -424,6 +432,27 @@ static sg_wrap convertWrap(TextureWrapMode::Code w) { } } +//------------------------------------------------------------------------------ +static sg_feature convertFeature(GfxFeature::Code f) { + switch (f) { + case GfxFeature::TextureCompressionDXT: return SG_FEATURE_TEXTURE_COMPRESSION_DXT; + case GfxFeature::TextureCompressionPVRTC: return SG_FEATURE_TEXTURE_COMPRESSION_PVRTC; + case GfxFeature::TextureCompressionATC: return SG_FEATURE_TEXTURE_COMPRESSION_ATC; + case GfxFeature::TextureCompressionETC2: return SG_FEATURE_TEXTURE_COMPRESSION_ETC2; + case GfxFeature::TextureFloat: return SG_FEATURE_TEXTURE_FLOAT; + case GfxFeature::TextureHalfFloat: return SG_FEATURE_TEXTURE_HALF_FLOAT; + case GfxFeature::Instancing: return SG_FEATURE_INSTANCING; + case GfxFeature::OriginBottomLeft: return SG_FEATURE_ORIGIN_BOTTOM_LEFT; + case GfxFeature::OriginTopLeft: return SG_FEATURE_ORIGIN_TOP_LEFT; + case GfxFeature::MSAARenderTargets: return SG_FEATURE_MSAA_RENDER_TARGETS; + case GfxFeature::PackedVertexFormat_10_2: return SG_FEATURE_PACKED_VERTEX_FORMAT_10_2; + case GfxFeature::MultipleRenderTarget: return SG_FEATURE_MULTIPLE_RENDER_TARGET; + case GfxFeature::Texture3D: return SG_FEATURE_IMAGETYPE_3D; + case GfxFeature::TextureArray: return SG_FEATURE_IMAGETYPE_ARRAY; + default: o_assert_dbg(false); return (sg_feature)0; + } +} + //------------------------------------------------------------------------------ sokolGfxBackend::~sokolGfxBackend() { o_assert(!this->isValid); @@ -488,9 +517,7 @@ sokolGfxBackend::QuitRequested() { bool sokolGfxBackend::QueryFeature(GfxFeature::Code feature) { o_assert_dbg(this->isValid); - // FIXME - o_error("sokolGfxBackend::QueryFeature FIXME!\n"); - return false; + return sg_query_feature(convertFeature(feature)); } //------------------------------------------------------------------------------ @@ -713,8 +740,25 @@ sokolGfxBackend::CreatePipeline(const PipelineDesc& desc) { Id sokolGfxBackend::CreatePass(const PassDesc& desc) { o_assert_dbg(this->isValid); - // FIXME - return Id::InvalidId(); + o_assert_dbg(GfxConfig::MaxNumColorAttachments <= SG_MAX_COLOR_ATTACHMENTS); + sg_pass_desc sgDesc = { }; + for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { + const auto& src = desc.ColorAttachments[i]; + if (src.Texture.IsValid()) { + auto& dst = sgDesc.color_attachments[i]; + dst.image = makeImageId(src.Texture); + dst.mip_level = src.MipLevel; + dst.layer = src.Layer; + } + } + const auto& src = desc.DepthStencilAttachment; + if (src.Texture.IsValid()) { + auto& dst = sgDesc.depth_stencil_attachment; + dst.image = makeImageId(src.Texture); + dst.mip_level = src.MipLevel; + dst.layer = src.Layer; + } + return makeId(GfxResourceType::Pass, sg_make_pass(&sgDesc).id); } //------------------------------------------------------------------------------ @@ -754,16 +798,17 @@ sokolGfxBackend::UpdateTexture(const Id& id, const void* data, const ImageDataAt //------------------------------------------------------------------------------ void -sokolGfxBackend::BeginPass(Id passId, const PassAction* action) { +sokolGfxBackend::BeginPass(const Id& passId, const PassAction* action) { o_assert_dbg(this->isValid); o_assert_dbg(action); + sg_pass_action sgAction = { }; + convertPassAction(*action, sgAction); if (passId.IsValid()) { // offscreen framebuffer + sg_begin_pass(makePassId(passId), &sgAction); } else { // default framebuffer - sg_pass_action sgAction = { }; - convertPassAction(*action, sgAction); const DisplayAttrs& attrs = this->displayManager.GetDisplayAttrs(); sg_begin_default_pass(&sgAction, attrs.FramebufferWidth, attrs.FramebufferHeight); } diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 4fc956642..cefad952b 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -92,7 +92,7 @@ class sokolGfxBackend { void UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs); /// begin rendering pass - void BeginPass(Id passId, const PassAction* action); + void BeginPass(const Id& passId, const PassAction* action); /// finish rendering pass void EndPass(); diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index 4128f12d5..59ff4a5ba 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -31,7 +31,7 @@ BlendTestApp::OnInit() { Gfx::Setup(gfxDesc); // create pipeline object for a patterned background - float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + const float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; this->bgDrawState.VertexBuffers[0] = Gfx::Buffer() .Size(sizeof(bgVertices)) .Content(bgVertices) diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 3455f1c4a..d7e176c0f 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -26,7 +26,10 @@ class MultipleRenderTargetApp : public App { const int OffscreenWidth = 200; const int OffscreenHeight = 200; + ShapeBuilder::Result shapes; + Id mrtPass; + PassAction mrtPassAction; DrawState rt0DrawState; DrawState rt1DrawState; DrawState rt2DrawState; @@ -46,9 +49,8 @@ OryolMain(MultipleRenderTargetApp); //------------------------------------------------------------------------------ AppState::Code MultipleRenderTargetApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(DisplayWidth, DisplayHeight, "Oryol MRT Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f)); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(DisplayWidth, DisplayHeight, "Oryol MRT Sample"); + Gfx::Setup(gfxDesc); Dbg::Setup(); // if rendering backend doesn't support MRT, drop out now @@ -59,82 +61,114 @@ MultipleRenderTargetApp::OnInit() { // create 3 rendertarget textures, the first one with a DepthStencil // surface, note that the render target textures use MSAA anti-aliasing - auto rtSetup = TextureSetup::RenderTarget2D(OffscreenWidth, OffscreenHeight, PixelFormat::RGBA8, PixelFormat::DEPTHSTENCIL); - rtSetup.SampleCount = 4; - rtSetup.Sampler.MinFilter = TextureFilterMode::Linear; - rtSetup.Sampler.MagFilter = TextureFilterMode::Linear; - Id rt0 = Gfx::CreateResource(rtSetup); - rtSetup.DepthFormat = PixelFormat::None; - Id rt1 = Gfx::CreateResource(rtSetup); - Id rt2 = Gfx::CreateResource(rtSetup); - - // create a render pass which uses the 3 texture we just created - // as color attachments, and the first texture as depth-stencil buffer - // FIXME: depth-stencil should be its own texture! - auto passSetup = PassSetup::From({ rt0, rt1, rt2 }, rt0); - passSetup.DefaultAction + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; + const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTHSTENCIL; + const int rtSampleCount = 4; + auto rtDesc = Gfx::Texture() + .Type(TextureType::Texture2D) + .RenderTarget(true) + .Width(OffscreenWidth) + .Height(OffscreenHeight) + .Format(rtColorFormat) + .MinFilter(TextureFilterMode::Linear) + .MagFilter(TextureFilterMode::Linear) + .SampleCount(rtSampleCount) + .Desc; + Id rtColor0 = Gfx::CreateTexture(rtDesc); + Id rtColor1 = Gfx::CreateTexture(rtDesc); + Id rtColor2 = Gfx::CreateTexture(rtDesc); + Id rtDepth = Gfx::Texture().From(rtDesc).Format(rtDepthFormat).Create(); + + // create a render pass with the 3 color- and 1 depth-attachment + this->mrtPass = Gfx::Pass() + .ColorAttachment(0, rtColor0) + .ColorAttachment(1, rtColor1) + .ColorAttachment(2, rtColor2) + .DepthStencilAttachment(rtDepth) + .Create(); + + // a pass-action to clear the multiple-render-target + this->mrtPassAction .ClearColor(0, glm::vec4(0.25f, 0.0f, 0.0f, 1.0f)) .ClearColor(1, glm::vec4(0.0f, 0.25f, 0.0f, 1.0f)) .ClearColor(2, glm::vec4(0.0f, 0.0f, 0.25f, 1.0f)); - this->mrtPass = Gfx::CreateResource(passSetup); // create a mesh with 2 shapes, a box and a plane ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::UByte4N }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 1); - shapeBuilder.Plane(1.0f, 1.0f, 1); - Id cubeMesh = Gfx::CreateResource(shapeBuilder.Build()); + this->shapes = shapeBuilder + .AddPositions("in_pos", VertexFormat::Float3) + .AddNormals("in_normal", VertexFormat::UByte4N) + .AddTexCoords("in_uv", VertexFormat::Float2) + .Box(1.0f, 1.0f, 1.0f, 1) + .Plane(1.0f, 1.0f, 1) + .Build(); + Id shapesVertexBuffer = Gfx::Buffer() + .From(this->shapes.VertexBufferDesc) + .Content(this->shapes.Data) + .Create(); + Id shapesIndexBuffer = Gfx::Buffer() + .From(this->shapes.IndexBufferDesc) + .Content(this->shapes.Data) + .Create(); // create a draw state to render a cube into the // offscreen render targets (this is where the MRT rendering happens) - Id shd = Gfx::CreateResource(OffscreenShader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.CullFaceEnabled = true; - ps.RasterizerState.SampleCount = rtSetup.SampleCount; - ps.BlendState.ColorFormat = rtSetup.ColorFormat; - ps.BlendState.MRTCount = 3; - this->cubeDrawState.Pipeline = Gfx::CreateResource(ps); - this->cubeDrawState.Mesh[0] = cubeMesh; - - // create a quad-mesh for displaying the 3 render target - // textures on screen - auto quadMeshSetup = MeshSetup::FullScreenQuad(); - Id quadMesh = Gfx::CreateResource(quadMeshSetup); - Id quadShd = Gfx::CreateResource(QuadShader::Setup()); - ps = PipelineSetup::FromLayoutAndShader(quadMeshSetup.Layout, quadShd); - ps.DepthStencilState.DepthWriteEnabled = false; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::Always; - ps.RasterizerState.CullFaceEnabled = false; - ps.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->rt0DrawState.Pipeline = Gfx::CreateResource(ps); - this->rt0DrawState.Mesh[0] = quadMesh; - this->rt0DrawState.FSTexture[QuadShader::tex] = rt0; - this->rt1DrawState.Pipeline = this->rt0DrawState.Pipeline; - this->rt1DrawState.Mesh[0] = quadMesh; - this->rt1DrawState.FSTexture[QuadShader::tex] = rt1; - this->rt2DrawState.Pipeline = this->rt0DrawState.Pipeline; - this->rt2DrawState.Mesh[0] = quadMesh; - this->rt2DrawState.FSTexture[QuadShader::tex] = rt2; + this->cubeDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(OffscreenShader::Desc())) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .ColorFormat(rtColorFormat) + .DepthFormat(rtDepthFormat) + .SampleCount(rtSampleCount) + .MRTCount(3) + .Create(); + this->cubeDrawState.VertexBuffers[0] = shapesVertexBuffer; + this->cubeDrawState.IndexBuffer = shapesIndexBuffer; + + // create a quad-mesh for displaying the 3 render target textures on screen + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + Id quadVertexBuffer = Gfx::Buffer() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Create(); + Id quadPipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(QuadShader::Desc())) + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) + .DepthWriteEnabled(false) + .DepthCmpFunc(CompareFunc::Always) + .CullFaceEnabled(false) + .SampleCount(gfxDesc.SampleCount) + .Create(); + this->rt0DrawState.Pipeline = quadPipeline; + this->rt0DrawState.VertexBuffers[0] = quadVertexBuffer; + this->rt0DrawState.FSTexture[QuadShader::tex] = rtColor0; + this->rt1DrawState.Pipeline = quadPipeline; + this->rt1DrawState.VertexBuffers[0] = quadVertexBuffer; + this->rt1DrawState.FSTexture[QuadShader::tex] = rtColor1; + this->rt2DrawState.Pipeline = quadPipeline; + this->rt2DrawState.VertexBuffers[0] = quadVertexBuffer; + this->rt2DrawState.FSTexture[QuadShader::tex] = rtColor2; // and finally create a draw state to render a plane to the // main display which samples the 3 offscreen render targets - Id displayShd = Gfx::CreateResource(DisplayShader::Setup()); - ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, displayShd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.CullFaceEnabled = false; - ps.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->displayDrawState.Pipeline = Gfx::CreateResource(ps); - this->displayDrawState.Mesh[0] = cubeMesh; - this->displayDrawState.FSTexture[DisplayShader::redTex] = rt0; - this->displayDrawState.FSTexture[DisplayShader::greenTex] = rt1; - this->displayDrawState.FSTexture[DisplayShader::blueTex] = rt2; + this->displayDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(DisplayShader::Desc())) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(false) + .SampleCount(gfxDesc.SampleCount) + .Create(); + this->displayDrawState.VertexBuffers[0] = shapesVertexBuffer; + this->displayDrawState.IndexBuffer = shapesIndexBuffer; + this->displayDrawState.FSTexture[DisplayShader::redTex] = rtColor0; + this->displayDrawState.FSTexture[DisplayShader::greenTex] = rtColor1; + this->displayDrawState.FSTexture[DisplayShader::blueTex] = rtColor2; this->proj = glm::perspectiveFov(glm::radians(45.0f), float(OffscreenWidth), float(OffscreenHeight), 0.01f, 100.0f); @@ -159,30 +193,30 @@ MultipleRenderTargetApp::OnRunning() { // render the cube into the 3 MRT render targets using a single draw call, // the fragment shader writes 3 colors, one for each color attachment - Gfx::BeginPass(this->mrtPass); + Gfx::BeginPass(this->mrtPass, this->mrtPassAction); Gfx::ApplyDrawState(this->cubeDrawState); Gfx::ApplyUniformBlock(this->cubeParams); - Gfx::Draw(0); + Gfx::Draw(this->shapes.PrimitiveGroups[0]); Gfx::EndPass(); // debug-visualize the 3 offscreen render targets at the bottom of the screen - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); Gfx::ApplyViewPort(0, 0, 200, 200); Gfx::ApplyDrawState(this->rt0DrawState); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::ApplyViewPort(200, 0, 200, 200); Gfx::ApplyDrawState(this->rt1DrawState); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::ApplyViewPort(400, 0, 200, 200); Gfx::ApplyDrawState(this->rt2DrawState); - Gfx::Draw(); + Gfx::Draw(0, 4); // render the final plane which samples from all 3 offscreen rendertarget textures const auto& rpAttrs = Gfx::PassAttrs(); Gfx::ApplyViewPort(0, 0, rpAttrs.FramebufferWidth, rpAttrs.FramebufferHeight); Gfx::ApplyDrawState(this->displayDrawState); Gfx::ApplyUniformBlock(this->displayParams); - Gfx::Draw(1); + Gfx::Draw(this->shapes.PrimitiveGroups[1]); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/MultipleRenderTarget/shaders.glsl b/code/Samples/MultipleRenderTarget/shaders.glsl index a9cfb0bb7..aae8d7414 100644 --- a/code/Samples/MultipleRenderTarget/shaders.glsl +++ b/code/Samples/MultipleRenderTarget/shaders.glsl @@ -4,13 +4,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 normal; +in vec4 in_pos; +in vec4 in_normal; out vec4 nrm; void main() { - gl_Position = mvp * position; - nrm = normal; + gl_Position = mvp * in_pos; + nrm = in_normal; } @end @@ -31,12 +31,11 @@ void main() { //------------------------------------------------------------------------------ @vs quadVS -in vec4 position; -in vec2 texcoord0; +in vec2 in_pos; out vec2 uv; void main() { - gl_Position = position; - uv = texcoord0; + gl_Position = vec4(in_pos*2.0-1.0, 0.5f, 1.0f); + uv = in_pos; } @end @@ -58,18 +57,18 @@ uniform vsParams { vec2 offsets; }; -in vec4 position; -in vec4 normal; -in vec2 texcoord0; +in vec4 in_pos; +in vec4 in_normal; +in vec2 in_uv; out vec2 uvRed; out vec2 uvGreen; out vec2 uvBlue; void main() { - gl_Position = mvp * position; - uvRed = texcoord0 + vec2(offsets.x, 0.0); - uvGreen = texcoord0 + vec2(0.0, offsets.y); - uvBlue = texcoord0; + gl_Position = mvp * in_pos; + uvRed = in_uv + vec2(offsets.x, 0.0); + uvGreen = in_uv + vec2(0.0, offsets.y); + uvBlue = in_uv; } @end diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index f32fdc81e..80cf4968c 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -34,10 +34,13 @@ class RenderToCubeMapApp : public App { const glm::vec4 ClearColor = glm::vec4(0.5f, 0.5f, 0.7f, 1.0f); const glm::vec3 LightDir = glm::normalize(glm::vec3(-0.75, 1.0, 0.0)); + ShapeBuilder::Result shapes; + Id cubeMap; Id passes[NumFaces]; - Id shapesMesh; + Id shapesVertexBuffer; + Id shapesIndexBuffer; Id displayShapesPipeline; Id offscreenShapesPipeline; @@ -64,59 +67,89 @@ OryolMain(RenderToCubeMapApp); //------------------------------------------------------------------------------ AppState::Code RenderToCubeMapApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(800, 600, "Render To CubeMap"); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Render To CubeMap"); + Gfx::Setup(gfxDesc); Input::Setup(); // create a cubemap which will serve as render target - auto cubeMapSetup = TextureSetup::RenderTargetCube(1024, 1024, PixelFormat::RGBA8, PixelFormat::DEPTH); - cubeMapSetup.Sampler.MinFilter = TextureFilterMode::Linear; - cubeMapSetup.Sampler.MagFilter = TextureFilterMode::Linear; - this->cubeMap = Gfx::CreateResource(cubeMapSetup); + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; + const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; + this->cubeMap = Gfx::Texture() + .Type(TextureType::TextureCube) + .RenderTarget(true) + .Width(1024) + .Height(1024) + .Format(rtColorFormat) + .MinFilter(TextureFilterMode::Linear) + .MagFilter(TextureFilterMode::Linear) + .Create(); + + // ...and a matching 2D depth buffer render target + Id rtDepth = Gfx::Texture() + .Type(TextureType::Texture2D) + .RenderTarget(true) + .Width(1024) + .Height(1024) + .Format(rtDepthFormat) + .Create(); // create 6 render passes, one per cubemap face - auto rpSetup = PassSetup::From(this->cubeMap, this->cubeMap); - rpSetup.DefaultAction = PassAction::Clear(ClearColor); for (int faceIndex = 0; faceIndex < NumFaces; faceIndex++) { - rpSetup.ColorAttachments[0].Slice = faceIndex; - this->passes[faceIndex] = Gfx::CreateResource(rpSetup); + this->passes[faceIndex] = Gfx::Pass() + .ColorAttachment(0, this->cubeMap, 0, faceIndex) + .DepthStencilAttachment(rtDepth) + .Create(); } // mesh, shaders and pipelines to render color shapes ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Float3 } - }; - shapeBuilder + this->shapes = shapeBuilder + .AddPositions("in_pos", VertexFormat::Float3) + .AddNormals("in_normal", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1, true) .Cylinder(0.5f, 1.0f, 36, 1, true) .Torus(0.25f, 0.5f, 8, 36, true) - .Sphere(0.5f, 18, 12, true); - this->shapesMesh = Gfx::CreateResource(shapeBuilder.Build()); - Id envShd = Gfx::CreateResource(ShapeShader::Setup()); - auto pipSetup = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, envShd); - pipSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - pipSetup.DepthStencilState.DepthWriteEnabled = true; - pipSetup.RasterizerState.SampleCount = gfxSetup.SampleCount; - pipSetup.BlendState.ColorFormat = gfxSetup.ColorFormat; - pipSetup.BlendState.DepthFormat = gfxSetup.DepthFormat; - this->displayShapesPipeline = Gfx::CreateResource(pipSetup); - pipSetup.Shader = Gfx::CreateResource(ShapeShaderWithGamma::Setup()); - pipSetup.RasterizerState.SampleCount = cubeMapSetup.SampleCount; - pipSetup.BlendState.ColorFormat = cubeMapSetup.ColorFormat; - pipSetup.BlendState.DepthFormat = cubeMapSetup.DepthFormat; - this->offscreenShapesPipeline = Gfx::CreateResource(pipSetup); + .Sphere(0.5f, 18, 12, true) + .Sphere(3.5f, 72, 48, true) // this is the big center sphere + .Build(); + this->shapesVertexBuffer = Gfx::Buffer() + .From(this->shapes.VertexBufferDesc) + .Content(this->shapes.Data) + .Create(); + this->shapesIndexBuffer = Gfx::Buffer() + .From(this->shapes.IndexBufferDesc) + .Content(this->shapes.Data) + .Create(); + this->displayShapesPipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(ShapeShader::Desc())) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); + this->offscreenShapesPipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(ShapeShaderWithGamma::Desc())) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .ColorFormat(rtColorFormat) + .DepthFormat(rtDepthFormat) + .Create(); // create a sphere where the env-shapes reflect and refract in - this->sphereDrawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Sphere(3.5f, 72, 48).Build()); - Id sphereShd = Gfx::CreateResource(SphereShader::Setup()); - pipSetup = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, sphereShd); - pipSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - pipSetup.DepthStencilState.DepthWriteEnabled = true; - pipSetup.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->sphereDrawState.Pipeline = Gfx::CreateResource(pipSetup); + this->sphereDrawState.VertexBuffers[0] = this->shapesVertexBuffer; + this->sphereDrawState.IndexBuffer = this->shapesIndexBuffer; this->sphereDrawState.FSTexture[SphereShader::tex] = this->cubeMap; + this->sphereDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(SphereShader::Desc())) + .Layout(0, this->shapes.Layout) + .IndexType(this->shapes.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); // setup projection matrix for main view float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -162,7 +195,7 @@ RenderToCubeMapApp::OnRunning() { { glm::vec3(0.0f, 0.0f, -1.0f), glm::vec3(0.0f, -1.0f, 0.0f) }, }; for (int i = 0; i < NumFaces; i++) { - Gfx::BeginPass(this->passes[i]); + Gfx::BeginPass(this->passes[i], PassAction::Clear(ClearColor)); const glm::mat4 view = glm::lookAt(glm::vec3(0.0f), centerAndUp[i][0], centerAndUp[i][1]); this->drawEnvShapes(this->offscreenShapesPipeline, glm::vec3(0.0f), view, this->offscreenProj); Gfx::EndPass(); @@ -184,7 +217,7 @@ RenderToCubeMapApp::OnRunning() { vsParams.lightDir = LightDir; vsParams.eyePos = eyePos; Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(); + Gfx::Draw(this->shapes.PrimitiveGroups[4]); Gfx::EndPass(); Gfx::CommitFrame(); @@ -232,7 +265,8 @@ RenderToCubeMapApp::drawEnvShapes(Id pipeline, const glm::vec3& eyePos, const gl const glm::mat4 viewProj = proj * view; DrawState drawState; drawState.Pipeline = pipeline; - drawState.Mesh[0] = this->shapesMesh; + drawState.VertexBuffers[0] = this->shapesVertexBuffer; + drawState.IndexBuffer = this->shapesIndexBuffer; Gfx::ApplyDrawState(drawState); ShapeShader::vsParams vsParams; for (int i = 0; i < NumShapes; i++) { @@ -243,7 +277,7 @@ RenderToCubeMapApp::drawEnvShapes(Id pipeline, const glm::vec3& eyePos, const gl vsParams.lightDir = LightDir; vsParams.eyePos = eyePos; Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(shape.shapeIndex); + Gfx::Draw(this->shapes.PrimitiveGroups[shape.shapeIndex]); } } diff --git a/code/Samples/RenderToCubeMap/shaders.glsl b/code/Samples/RenderToCubeMap/shaders.glsl index b1c4a638a..0069a5b23 100644 --- a/code/Samples/RenderToCubeMap/shaders.glsl +++ b/code/Samples/RenderToCubeMap/shaders.glsl @@ -40,8 +40,8 @@ uniform vsParams { vec3 eyePos; }; -in vec4 position; -in vec3 normal; +in vec4 in_pos; +in vec3 in_normal; out vec3 worldPosition; out vec3 worldNormal; out vec3 worldEyePos; @@ -49,9 +49,9 @@ out vec3 worldLightDir; out vec4 color; void main() { - gl_Position = mvp * position; - worldPosition = vec4(model * position).xyz; - worldNormal = vec4(model * vec4(normal, 0.0)).xyz; + gl_Position = mvp * in_pos; + worldPosition = vec4(model * in_pos).xyz; + worldNormal = vec4(model * vec4(in_normal, 0.0)).xyz; worldEyePos = eyePos; worldLightDir = lightDir; color = shapeColor; @@ -105,17 +105,17 @@ uniform vsParams { vec3 eyePos; }; -in vec4 position; -in vec3 normal; +in vec4 in_pos; +in vec3 in_normal; out vec3 worldPosition; out vec3 worldNormal; out vec3 worldEyePos; out vec3 worldLightDir; void main() { - gl_Position = mvp * position; - worldPosition = vec4(model * position).xyz; - worldNormal = vec4(model * vec4(normal, 0.0)).xyz; + gl_Position = mvp * in_pos; + worldPosition = vec4(model * in_pos).xyz; + worldNormal = vec4(model * vec4(in_normal, 0.0)).xyz; worldEyePos = eyePos; worldLightDir = lightDir; } diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 9073c0792..cba94e409 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -39,33 +39,31 @@ OryolMain(SimpleRenderTargetApp); AppState::Code SimpleRenderTargetApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(800, 600, "Oryol Simple Render Target Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.25f, 0.45f, 0.65f, 1.0f)); - Gfx::Setup(gfxSetup); - - // create an offscreen render pass object with a color-attachment and depth-attachment - auto colorDesc = MakeTextureDesc() + auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Oryol Simple Render Target Sample"); + Gfx::Setup(gfxDesc); + + // create a color render target texture and compatible depth render target + // texture for offscreen rendering + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; + const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; + const int rtSampleCount = Gfx::QueryFeature(GfxFeature::MSAARenderTargets) ? 4 : 1; + auto rtCommon = Gfx::Texture() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(128) .Height(128) - .Format(PixelFormat::RGBA8) .WrapU(TextureWrapMode::Repeat) .WrapV(TextureWrapMode::Repeat) .MagFilter(TextureFilterMode::Linear) - .MinFilter(TextureFilterMode::Linear); - // if supported, use an anti-aliased offscreen render target - if (Gfx::QueryFeature(GfxFeature::MSAARenderTargets)) { - colorDesc.SampleCount(4); - Log::Info("Using MSAA4 render target\n"); - } - Id colorTexture = Gfx::CreateTexture(colorDesc); - auto depthDesc = MakeTextureDesc(colorDesc).Format(PixelFormat::DEPTH); - Id depthTexture = Gfx::CreateTexture(depthDesc); - - auto rpSetup = PassSetup::From(colorTexture, depthTexture); - rpSetup.DefaultAction = PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f)); - this->renderPass = Gfx::CreateResource(rpSetup); + .MinFilter(TextureFilterMode::Linear) + .SampleCount(rtSampleCount) + .Desc; + Id rtColorTexture = Gfx::Texture().From(rtCommon).Format(rtColorFormat).Create(); + Id rtDepthTexture = Gfx::Texture().From(rtCommon).Format(rtDepthFormat).Create(); + this->renderPass = Gfx::Pass() + .ColorAttachment(0, rtColorTexture) + .DepthStencilAttachment(rtDepthTexture) + .Create(); // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) @@ -75,32 +73,26 @@ SimpleRenderTargetApp::OnInit() { .AddNormals("in_normal", VertexFormat::Byte4N) .Torus(0.3f, 0.5f, 20, 36) .Build(); - this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer( - this->donutShape.VertexBufferDesc, this->donutShape.Data); - this->offscreenDrawState.IndexBuffer = Gfx::CreateBuffer( - this->donutShape.IndexBufferDesc, this->donutShape.Data); + this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() + .From(this->donutShape.VertexBufferDesc) + .Content(this->donutShape.Data) + .Create(); + this->offscreenDrawState.IndexBuffer = Gfx::Buffer() + .From(this->donutShape.IndexBufferDesc) + .Content(this->donutShape.Data) + .Create(); // create shader and pipeline-state-object for offscreen rendering - this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(MakePipelineDesc() + this->offscreenDrawState.Pipeline = Gfx::Pipeline() .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .Layout(0, this->donutShape.Layout) .IndexType(this->donutShape.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .ColorFormat(colorDesc.Desc.Format) - .DepthFormat(depthDesc.Desc.Format) - .SampleCount(colorDesc.Desc.SampleCount) - - - Id offScreenShader = Gfx::CreateResource(OffscreenShader::Setup()); - auto offpsSetup = PipelineSetup::FromShaderAndLayout(offScreenShader, this->donutShape.Layout); - offpsSetup.IndexType = this->donutShape.IndexType; - offpsSetup.DepthStencilState.DepthWriteEnabled = true; - offpsSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - offpsSetup.BlendState.ColorFormat = rtSetup.ColorFormat; - offpsSetup.BlendState.DepthFormat = rtSetup.DepthFormat; - offpsSetup.RasterizerState.SampleCount = rtSetup.SampleCount; - this->offscreenDrawState.Pipeline = Gfx::CreateResource(offpsSetup); + .ColorFormat(rtColorFormat) + .DepthFormat(rtDepthFormat) + .SampleCount(rtSampleCount) + .Create(); // create a sphere mesh, shader and pipeline object for rendering to display this->sphereShape = shapeBuilder @@ -109,19 +101,23 @@ SimpleRenderTargetApp::OnInit() { .AddTexCoords("in_uv", VertexFormat::Float2) .Sphere(0.5f, 72, 40) .Build(); - this->displayDrawState.VertexBuffers[0] = Gfx::CreateResource( - this->sphereShape.VertexBufferSetup, this->sphereShape.Data); - this->displayDrawState.IndexBuffer = Gfx::CreateResource( - this->sphereShape.IndexBufferSetup, this->sphereShape.Data); - - Id dispShader = Gfx::CreateResource(DisplayShader::Setup()); - auto disppsSetup = PipelineSetup::FromShaderAndLayout(dispShader, this->sphereShape.Layout); - disppsSetup.IndexType = IndexType::UInt16; - disppsSetup.DepthStencilState.DepthWriteEnabled = true; - disppsSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - disppsSetup.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->displayDrawState.Pipeline = Gfx::CreateResource(disppsSetup); - this->displayDrawState.FSTexture[DisplayShader::tex] = rtTexture; + this->displayDrawState.VertexBuffers[0] = Gfx::Buffer() + .From(this->sphereShape.VertexBufferDesc) + .Content(this->sphereShape.Data) + .Create(); + this->displayDrawState.IndexBuffer = Gfx::Buffer() + .From(this->sphereShape.IndexBufferDesc) + .Content(this->sphereShape.Data) + .Create(); + this->displayDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(DisplayShader::Desc())) + .Layout(0, this->sphereShape.Layout) + .IndexType(this->sphereShape.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); + this->displayDrawState.FSTexture[DisplayShader::tex] = rtColorTexture; // setup static transform matrices float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -142,19 +138,19 @@ SimpleRenderTargetApp::OnRunning() { this->angleX += 0.02f; // render donut to offscreen render target - Gfx::BeginPass(this->renderPass); + Gfx::BeginPass(this->renderPass, PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f))); Gfx::ApplyDrawState(this->offscreenDrawState); this->offscreenParams.mvp = this->computeMVP(this->offscreenProj, this->angleX, this->angleY, glm::vec3(0.0f, 0.0f, -3.0f)); Gfx::ApplyUniformBlock(this->offscreenParams); - Gfx::Draw(); + Gfx::Draw(this->donutShape.PrimitiveGroups[0]); Gfx::EndPass(); // render sphere to display, with offscreen render target as texture - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.25f, 0.45f, 0.65f, 1.0f))); Gfx::ApplyDrawState(this->displayDrawState); this->displayVSParams.mvp = this->computeMVP(this->displayProj, -this->angleX * 0.25f, this->angleY * 0.25f, glm::vec3(0.0f, 0.0f, -1.5f)); Gfx::ApplyUniformBlock(this->displayVSParams); - Gfx::Draw(); + Gfx::Draw(this->sphereShape.PrimitiveGroups[0]); Gfx::EndPass(); Gfx::CommitFrame(); From b9382b68d6f47128e4606032ca303564d264611c Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 16 Jan 2018 18:26:56 +0100 Subject: [PATCH 24/91] more samples ported to new resource creation --- code/Modules/Gfx/private/sokolGfxBackend.cc | 1 + .../InfiniteSpheres/InfiniteSpheres.cc | 109 +++++++++++------- code/Samples/InfiniteSpheres/shaders.glsl | 12 +- code/Samples/TextureFloat/TextureFloat.cc | 69 ++++++----- code/Samples/TextureFloat/shaders.glsl | 16 ++- 5 files changed, 121 insertions(+), 86 deletions(-) diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index f94a1a946..b9d63ae3b 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -275,6 +275,7 @@ static uint8_t convertColorMask(PixelChannel::Mask src) { //------------------------------------------------------------------------------ static sg_pixel_format convertPixelFormat(PixelFormat::Code fmt) { switch (fmt) { + case PixelFormat::None: return SG_PIXELFORMAT_NONE; case PixelFormat::RGBA8: return SG_PIXELFORMAT_RGBA8; case PixelFormat::RGB8: return SG_PIXELFORMAT_RGB8; case PixelFormat::RGBA4: return SG_PIXELFORMAT_RGBA4; diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index 61fd30208..be8b00cea 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -20,7 +20,8 @@ class InfiniteSpheresApp : public App { glm::mat4 computeModel(float rotX, float rotY, const glm::vec3& pos); glm::mat4 computeMVP(const glm::mat4& proj, const glm::mat4& model); - + + ShapeBuilder::Result sphere; DrawState offscreenDrawState; DrawState displayDrawState; struct { @@ -42,49 +43,73 @@ OryolMain(InfiniteSpheresApp); AppState::Code InfiniteSpheresApp::OnInit() { // setup rendering system - auto gfxSetup = GfxSetup::WindowMSAA4(800, 600, "Oryol Infinite Spheres Sample"); - Gfx::Setup(gfxSetup); - - // create 2 ping-pong offscreen render targets - auto rtSetup = TextureSetup::RenderTarget2D(512, 512, PixelFormat::RGBA8, PixelFormat::DEPTH); - rtSetup.Sampler.MinFilter = TextureFilterMode::Linear; - rtSetup.Sampler.MagFilter = TextureFilterMode::Linear; - rtSetup.Sampler.WrapU = TextureWrapMode::Repeat; - rtSetup.Sampler.WrapV = TextureWrapMode::Repeat; - for (int i = 0; i < 2; i++) { - Id tex = Gfx::CreateResource(rtSetup); - this->passInfo[i].texture = tex; - auto rpSetup = PassSetup::From(tex, tex); - this->passInfo[i].pass = Gfx::CreateResource(rpSetup); - } + auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Oryol Infinite Spheres Sample"); + Gfx::Setup(gfxDesc); + + // create 2 ping-pong offscreen render targets, only need 1 depth buffer + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; + const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; + const int rtWidth = 512; + const int rtHeight = 512; + Id rtDepth = Gfx::Texture() + .RenderTarget(true) + .Width(rtWidth) + .Height(rtHeight) + .Format(rtDepthFormat) + .Create(); + for (int i = 0; i < 2; i++) { + this->passInfo[i].texture = Gfx::Texture() + .RenderTarget(true) + .Width(rtWidth) + .Height(rtHeight) + .Format(rtColorFormat) + .MinFilter(TextureFilterMode::Linear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::Repeat) + .WrapV(TextureWrapMode::Repeat) + .Create(); + this->passInfo[i].pass = Gfx::Pass() + .ColorAttachment(0, this->passInfo[i].texture) + .DepthStencilAttachment(rtDepth) + .Create(); + } // create a sphere shape mesh - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Byte4N }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Sphere(0.75f, 72, 40); - Id sphere = Gfx::CreateResource(shapeBuilder.Build()); - this->offscreenDrawState.Mesh[0] = sphere; - this->displayDrawState.Mesh[0] = sphere; + ShapeBuilder shapeBuilder; + this->sphere = shapeBuilder + .AddPositions("in_pos", VertexFormat::Float3) + .AddNormals("in_normal", VertexFormat::Byte4N) + .AddTexCoords("in_uv", VertexFormat::Float2) + .Sphere(0.75f, 72, 40) + .Build(); + Id vbuf = Gfx::Buffer().From(this->sphere.VertexBufferDesc).Content(this->sphere.Data).Create(); + Id ibuf = Gfx::Buffer().From(this->sphere.IndexBufferDesc).Content(this->sphere.Data).Create(); + this->offscreenDrawState.VertexBuffers[0] = vbuf; + this->offscreenDrawState.IndexBuffer = ibuf; + this->displayDrawState.VertexBuffers[0] = vbuf; + this->displayDrawState.IndexBuffer = ibuf; // create shader which is used for both offscreen- and display-rendering - Id shd = Gfx::CreateResource(Shader::Setup()); - - // create draw state for rendering into default render target - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->displayDrawState.Pipeline = Gfx::CreateResource(ps); - - // create draw state for rendering into offscreen render target - ps.BlendState.ColorFormat = rtSetup.ColorFormat; - ps.BlendState.DepthFormat = rtSetup.DepthFormat; - ps.RasterizerState.SampleCount = 1; - this->offscreenDrawState.Pipeline = Gfx::CreateResource(ps); + Id shd = Gfx::CreateShader(Shader::Desc()); + + // create draw state for rendering into default render target + this->displayDrawState.Pipeline = Gfx::Pipeline() + .Shader(shd) + .Layout(0, this->sphere.Layout) + .IndexType(this->sphere.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); + this->offscreenDrawState.Pipeline = Gfx::Pipeline() + .Shader(shd) + .Layout(0, this->sphere.Layout) + .IndexType(this->sphere.IndexType) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .ColorFormat(rtColorFormat) + .DepthFormat(rtDepthFormat) + .Create(); // setup static transform matrices const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -115,7 +140,7 @@ InfiniteSpheresApp::OnRunning() { this->offscreenDrawState.FSTexture[Shader::tex] = this->passInfo[index1].texture; Gfx::ApplyDrawState(this->offscreenDrawState); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(); + Gfx::Draw(this->sphere.PrimitiveGroups[0]); Gfx::EndPass(); // ...and again to display @@ -125,7 +150,7 @@ InfiniteSpheresApp::OnRunning() { this->displayDrawState.FSTexture[Shader::tex] = this->passInfo[index0].texture; Gfx::ApplyDrawState(this->displayDrawState); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(); + Gfx::Draw(this->sphere.PrimitiveGroups[0]); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/InfiniteSpheres/shaders.glsl b/code/Samples/InfiniteSpheres/shaders.glsl index 71596ebaf..e3a6b0a1d 100644 --- a/code/Samples/InfiniteSpheres/shaders.glsl +++ b/code/Samples/InfiniteSpheres/shaders.glsl @@ -7,15 +7,15 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 normal; -in vec2 texcoord0; +in vec4 in_pos; +in vec4 in_normal; +in vec2 in_uv; out vec4 nrm; out vec2 uv; void main() { - gl_Position = mvp * position; - nrm = normal; - uv = texcoord0; + gl_Position = mvp * in_pos; + nrm = in_normal; + uv = in_uv; } @end diff --git a/code/Samples/TextureFloat/TextureFloat.cc b/code/Samples/TextureFloat/TextureFloat.cc index e5f54638d..5db559322 100644 --- a/code/Samples/TextureFloat/TextureFloat.cc +++ b/code/Samples/TextureFloat/TextureFloat.cc @@ -18,7 +18,8 @@ class TextureFloatApp : public App { AppState::Code OnInit(); AppState::Code OnCleanup(); - Id renderPass; + Id renderPass; + PassAction renderPassAction; DrawState offscreenDrawState; DrawState copyDrawState; glm::mat4 view; @@ -32,8 +33,8 @@ OryolMain(TextureFloatApp); AppState::Code TextureFloatApp::OnInit() { // setup rendering system - auto gfxSetup = GfxSetup::Window(512, 512, "Oryol Float Texture Sample"); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::Window(512, 512, "Oryol Float Texture Sample"); + Gfx::Setup(gfxDesc); Dbg::Setup(); // check required extensions @@ -42,33 +43,43 @@ TextureFloatApp::OnInit() { } // create an offscreen float render target, same size as display, - // configure texture sampler with point-filtering - auto rtSetup = TextureSetup::RenderTarget2D(gfxSetup.Width, gfxSetup.Height, PixelFormat::RGBA32F); - rtSetup.Sampler.MagFilter = TextureFilterMode::Nearest; - rtSetup.Sampler.MinFilter = TextureFilterMode::Nearest; - Id rt = Gfx::CreateResource(rtSetup); - auto passSetup = PassSetup::From(rt); - passSetup.DefaultAction.DontCareColor(0); - this->renderPass = Gfx::CreateResource(passSetup); + // configure texture sampler with point-filtering + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA32F; + Id rt = Gfx::Texture() + .RenderTarget(true) + .Width(gfxDesc.Width) + .Height(gfxDesc.Height) + .Format(rtColorFormat) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .Create(); + this->renderPass = Gfx::Pass().ColorAttachment(0, rt).Create(); + this->renderPassAction.DontCareColor(0); - // fullscreen mesh, we'll reuse this several times - auto quadSetup = MeshSetup::FullScreenQuad(); - Id quadMesh = Gfx::CreateResource(quadSetup); - this->offscreenDrawState.Mesh[0] = quadMesh; - this->copyDrawState.Mesh[0] = quadMesh; + // fullscreen mesh, we'll reuse this several times + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Create(); + this->copyDrawState.VertexBuffers[0] = this->offscreenDrawState.VertexBuffers[0]; - // setup draw state for offscreen rendering to float render target - Id offscreenShader = Gfx::CreateResource(OffscreenShader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(quadSetup.Layout, offscreenShader); - ps.BlendState.ColorFormat = rtSetup.ColorFormat; - ps.BlendState.DepthFormat = rtSetup.DepthFormat; - this->offscreenDrawState.Pipeline = Gfx::CreateResource(ps); + // setup draw state for offscreen rendering to float render target + this->offscreenDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(OffscreenShader::Desc())) + .Layout(0, {{"in_pos", VertexFormat::Float2}}) + .PrimitiveType(PrimitiveType::TriangleStrip) + .ColorFormat(rtColorFormat) + .DepthFormat(PixelFormat::None) + .Create(); this->offscreenFSParams.time = 0.0f; - // fullscreen-copy resources - Id copyShader = Gfx::CreateResource(CopyShader::Setup()); - ps = PipelineSetup::FromLayoutAndShader(quadSetup.Layout, copyShader); - this->copyDrawState.Pipeline = Gfx::CreateResource(ps); + // fullscreen-copy resources + this->copyDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(CopyShader::Desc())) + .Layout(0, {{"in_pos", VertexFormat::Float2}}) + .PrimitiveType(PrimitiveType::TriangleStrip) + .Create(); this->copyDrawState.FSTexture[CopyShader::tex] = rt; // setup static transform matrices @@ -87,16 +98,16 @@ TextureFloatApp::OnRunning() { this->offscreenFSParams.time += 1.0f / 60.0f; // render plasma to offscreen render target, do not clear - Gfx::BeginPass(this->renderPass); + Gfx::BeginPass(this->renderPass, this->renderPassAction); Gfx::ApplyDrawState(this->offscreenDrawState); Gfx::ApplyUniformBlock(this->offscreenFSParams); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::EndPass(); // copy fullscreen quad Gfx::BeginPass(); Gfx::ApplyDrawState(this->copyDrawState); - Gfx::Draw(); + Gfx::Draw(0, 4); Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/TextureFloat/shaders.glsl b/code/Samples/TextureFloat/shaders.glsl index 2a8ce8eb5..fe0a33ff7 100644 --- a/code/Samples/TextureFloat/shaders.glsl +++ b/code/Samples/TextureFloat/shaders.glsl @@ -77,12 +77,11 @@ float snoise(vec2 v) //------------------------------------------------------------------------------ @vs offscreenVS -in vec4 position; -in vec2 texcoord0; -out vec2 uv; +in vec2 in_pos; +out vec2 uv; void main() { - gl_Position = position; - uv = texcoord0; + gl_Position = vec4(in_pos*2.0-1.0, 0.5f, 1.0f); + uv = in_pos; } @end @@ -125,12 +124,11 @@ void main() { // Copy offscreen render target to back buffer // @vs copyVS -in vec4 position; -in vec2 texcoord0; +in vec2 in_pos; out vec2 uv; void main() { - gl_Position = position; - uv = texcoord0; + gl_Position = vec4(in_pos*2.0-1.0, 0.5f, 1.0f); + uv = in_pos; } @end From a464b6c3d28e33dd99f4b40b8d0c06253d8b3498 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 17 Jan 2018 18:27:21 +0100 Subject: [PATCH 25/91] Renamed Buffer to MemoryBuffer --- code/Modules/Core/CMakeLists.txt | 2 +- .../Containers/{Buffer.h => MemoryBuffer.h} | 65 ++++++++----------- code/Modules/Dbg/private/debugTextRenderer.cc | 2 +- .../HttpFS/private/curl/curlURLLoader.cc | 4 +- code/Modules/IO/IO.cc | 2 +- code/Modules/IO/IO.h | 2 +- code/Modules/IO/private/ioRequests.h | 4 +- code/Modules/IO/private/loadQueue.h | 6 +- code/Modules/Resource/CMakeLists.txt | 1 - code/Modules/Resource/SetupAndData.h | 47 -------------- 10 files changed, 39 insertions(+), 96 deletions(-) rename code/Modules/Core/Containers/{Buffer.h => MemoryBuffer.h} (85%) delete mode 100644 code/Modules/Resource/SetupAndData.h diff --git a/code/Modules/Core/CMakeLists.txt b/code/Modules/Core/CMakeLists.txt index bcbabb64c..382313689 100644 --- a/code/Modules/Core/CMakeLists.txt +++ b/code/Modules/Core/CMakeLists.txt @@ -30,7 +30,7 @@ fips_begin_module(Core) Array.h ArrayMap.h Slice.h - Buffer.h + MemoryBuffer.h HashSet.h KeyValuePair.h Map.h diff --git a/code/Modules/Core/Containers/Buffer.h b/code/Modules/Core/Containers/MemoryBuffer.h similarity index 85% rename from code/Modules/Core/Containers/Buffer.h rename to code/Modules/Core/Containers/MemoryBuffer.h index a4df21b19..fc60d4359 100644 --- a/code/Modules/Core/Containers/Buffer.h +++ b/code/Modules/Core/Containers/MemoryBuffer.h @@ -1,7 +1,7 @@ #pragma once //------------------------------------------------------------------------------ /** - @class Oryol::Buffer + @class Oryol::MemoryBuffer @ingroup Core @brief growable memory buffer for raw data */ @@ -11,22 +11,22 @@ namespace Oryol { -class Buffer { +class MemoryBuffer { public: /// default constructor - Buffer(); + MemoryBuffer() { }; /// move constructor - Buffer(Buffer&& rhs); + MemoryBuffer(MemoryBuffer&& rhs); /// destructor - ~Buffer(); + ~MemoryBuffer(); /// always force move-construct - Buffer(const Buffer& rhs) = delete; + MemoryBuffer(const MemoryBuffer& rhs) = delete; /// always force move-assign - void operator=(const Buffer& rhs) = delete; + void operator=(const MemoryBuffer& rhs) = delete; /// move-assignment - void operator=(Buffer&& rhs); + void operator=(MemoryBuffer&& rhs); /// get number of bytes in buffer int Size() const; @@ -60,23 +60,14 @@ class Buffer { /// append-copy content into currently allocated buffer, bump size void copy(const uint8_t* ptr, int numBytes); - int size; - int capacity; - uint8_t* data; + int size = 0; + int capacity = 0; + uint8_t* data = nullptr; }; //------------------------------------------------------------------------------ inline -Buffer::Buffer() : -size(0), -capacity(0), -data(nullptr) { - // empty -} - -//------------------------------------------------------------------------------ -inline -Buffer::Buffer(Buffer&& rhs) : +MemoryBuffer::MemoryBuffer(MemoryBuffer&& rhs) : size(rhs.size), capacity(rhs.capacity), data(rhs.data) { @@ -87,13 +78,13 @@ data(rhs.data) { //------------------------------------------------------------------------------ inline -Buffer::~Buffer() { +MemoryBuffer::~MemoryBuffer() { this->destroy(); } //------------------------------------------------------------------------------ inline void -Buffer::alloc(int newCapacity) { +MemoryBuffer::alloc(int newCapacity) { o_assert_dbg(newCapacity > this->capacity); o_assert_dbg(newCapacity > this->size); @@ -111,7 +102,7 @@ Buffer::alloc(int newCapacity) { //------------------------------------------------------------------------------ inline void -Buffer::destroy() { +MemoryBuffer::destroy() { if (this->data) { Memory::Free(this->data); } @@ -122,7 +113,7 @@ Buffer::destroy() { //------------------------------------------------------------------------------ inline void -Buffer::copy(const uint8_t* ptr, int numBytes) { +MemoryBuffer::copy(const uint8_t* ptr, int numBytes) { // NOTE: it is valid to call copy with numBytes==0 o_assert_dbg(this->data); o_assert_dbg((this->size + numBytes) <= this->capacity); @@ -132,7 +123,7 @@ Buffer::copy(const uint8_t* ptr, int numBytes) { //------------------------------------------------------------------------------ inline void -Buffer::operator=(Buffer&& rhs) { +MemoryBuffer::operator=(MemoryBuffer&& rhs) { this->destroy(); this->size = rhs.size; this->capacity = rhs.capacity; @@ -144,31 +135,31 @@ Buffer::operator=(Buffer&& rhs) { //------------------------------------------------------------------------------ inline int -Buffer::Size() const { +MemoryBuffer::Size() const { return this->size; } //------------------------------------------------------------------------------ inline bool -Buffer::Empty() const { +MemoryBuffer::Empty() const { return 0 == this->size; } //------------------------------------------------------------------------------ inline int -Buffer::Capacity() const { +MemoryBuffer::Capacity() const { return this->capacity; } //------------------------------------------------------------------------------ inline int -Buffer::Spare() const { +MemoryBuffer::Spare() const { return this->capacity - this->size; } //------------------------------------------------------------------------------ inline void -Buffer::Reserve(int numBytes) { +MemoryBuffer::Reserve(int numBytes) { // need to grow? if ((this->size + numBytes) > this->capacity) { const int newCapacity = this->size + numBytes; @@ -178,14 +169,14 @@ Buffer::Reserve(int numBytes) { //------------------------------------------------------------------------------ inline void -Buffer::Add(const uint8_t* data, int numBytes) { +MemoryBuffer::Add(const uint8_t* data, int numBytes) { this->Reserve(numBytes); this->copy(data, numBytes); } //------------------------------------------------------------------------------ inline uint8_t* -Buffer::Add(int numBytes) { +MemoryBuffer::Add(int numBytes) { this->Reserve(numBytes); uint8_t* ptr = this->data + this->size; this->size += numBytes; @@ -194,13 +185,13 @@ Buffer::Add(int numBytes) { //------------------------------------------------------------------------------ inline void -Buffer::Clear() { +MemoryBuffer::Clear() { this->size = 0; } //------------------------------------------------------------------------------ inline int -Buffer::Remove(int offset, int numBytes) { +MemoryBuffer::Remove(int offset, int numBytes) { o_assert_dbg(offset >= 0); o_assert_dbg(numBytes >= 0); if (offset >= this->size) { @@ -224,14 +215,14 @@ Buffer::Remove(int offset, int numBytes) { //------------------------------------------------------------------------------ inline const uint8_t* -Buffer::Data() const { +MemoryBuffer::Data() const { o_assert(this->data); return this->data; } //------------------------------------------------------------------------------ inline uint8_t* -Buffer::Data() { +MemoryBuffer::Data() { o_assert(this->data); return this->data; } diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 7d5834069..0078064f1 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -178,7 +178,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { o_assert_dbg((imgWidth * imgHeight) == imgDataSize); // setup a memory buffer and write font image data to it - Buffer data; + MemoryBuffer data; uint8_t* dstPtr = data.Add(imgDataSize); const char* srcPtr = kc85_4_Font; for (int charIndex = 0; charIndex < numChars; charIndex++) { diff --git a/code/Modules/HttpFS/private/curl/curlURLLoader.cc b/code/Modules/HttpFS/private/curl/curlURLLoader.cc index 768b9db65..62b582e95 100644 --- a/code/Modules/HttpFS/private/curl/curlURLLoader.cc +++ b/code/Modules/HttpFS/private/curl/curlURLLoader.cc @@ -4,7 +4,7 @@ #include "Pre.h" #include "curlURLLoader.h" #include "Core/String/StringConverter.h" -#include "Core/Containers/Buffer.h" +#include "Core/Containers/MemoryBuffer.h" #include "curl/curl.h" #include @@ -89,7 +89,7 @@ curlURLLoader::curlWriteDataCallback(char* ptr, size_t size, size_t nmemb, void* // userData is expected to point to a Buffer object int bytesToWrite = (int) (size * nmemb); if (bytesToWrite > 0) { - Buffer* buf = (Buffer*) userData; + MemoryBuffer* buf = (MemoryBuffer*) userData; buf->Add((const uint8_t*)ptr, bytesToWrite); return bytesToWrite; } diff --git a/code/Modules/IO/IO.cc b/code/Modules/IO/IO.cc index ed5db00f3..6a7155cdf 100644 --- a/code/Modules/IO/IO.cc +++ b/code/Modules/IO/IO.cc @@ -171,7 +171,7 @@ IO::LoadFile(const URL& url) { //------------------------------------------------------------------------------ Ptr -IO::WriteFile(const URL& url, const Buffer& data) { +IO::WriteFile(const URL& url, const MemoryBuffer& data) { o_assert_dbg(IsValid()); Ptr ioReq = IOWrite::Create(); ioReq->Url = url; diff --git a/code/Modules/IO/IO.h b/code/Modules/IO/IO.h index c7efa9e67..d260112d9 100644 --- a/code/Modules/IO/IO.h +++ b/code/Modules/IO/IO.h @@ -59,7 +59,7 @@ class IO { /// low-level: start async loading of file from URL, return message for polling result static Ptr LoadFile(const URL& url); /// low-level: start async writing of file via URL, return message for polling result - static Ptr WriteFile(const URL& url, const Buffer& data); + static Ptr WriteFile(const URL& url, const MemoryBuffer& data); /// low-level: push a generic asynchronous IO request static void Put(const Ptr& ioReq); diff --git a/code/Modules/IO/private/ioRequests.h b/code/Modules/IO/private/ioRequests.h index 85b367f01..dc75a224a 100644 --- a/code/Modules/IO/private/ioRequests.h +++ b/code/Modules/IO/private/ioRequests.h @@ -10,7 +10,7 @@ */ #include "Core/Config.h" #include "Core/RefCounted.h" -#include "Core/Containers/Buffer.h" +#include "Core/Containers/MemoryBuffer.h" #include "IO/IOTypes.h" namespace Oryol { @@ -39,7 +39,7 @@ class IORequest : public _priv::ioMsg { URL Url; int StartOffset = 0; int EndOffset = EndOfFile; - Buffer Data; + MemoryBuffer Data; IOStatus::Code Status = IOStatus::InvalidIOStatus; String ErrorDesc; }; diff --git a/code/Modules/IO/private/loadQueue.h b/code/Modules/IO/private/loadQueue.h index b867cd0f7..f155aa281 100644 --- a/code/Modules/IO/private/loadQueue.h +++ b/code/Modules/IO/private/loadQueue.h @@ -10,7 +10,7 @@ #include "Core/Types.h" #include "Core/String/StringAtom.h" #include "Core/Containers/Array.h" -#include "Core/Containers/Buffer.h" +#include "Core/Containers/MemoryBuffer.h" #include "IO/IOTypes.h" #include "IO/private/ioRequests.h" #include @@ -21,7 +21,7 @@ class loadQueue { public: /// loading result (iff successful) struct result { - result(const URL& url, Buffer&& data) : Url(url), Data(std::move(data)) { }; + result(const URL& url, MemoryBuffer&& data) : Url(url), Data(std::move(data)) { }; result(result&& rhs) { this->Url = std::move(rhs.Url); this->Data = std::move(rhs.Data); @@ -31,7 +31,7 @@ class loadQueue { this->Data = std::move(rhs.Data); }; URL Url; - Buffer Data; + MemoryBuffer Data; }; /// callback function signature for success diff --git a/code/Modules/Resource/CMakeLists.txt b/code/Modules/Resource/CMakeLists.txt index 42af03fe1..22b94c182 100644 --- a/code/Modules/Resource/CMakeLists.txt +++ b/code/Modules/Resource/CMakeLists.txt @@ -10,7 +10,6 @@ fips_begin_module(Resource) ResourceState.h ResourceLoader.cc ResourceLoader.h ResourcePool.h - SetupAndData.h ResourceLabelStack.cc ResourceLabelStack.h ResourceRegistry.cc ResourceRegistry.h ResourceBase.h diff --git a/code/Modules/Resource/SetupAndData.h b/code/Modules/Resource/SetupAndData.h deleted file mode 100644 index 767f677d3..000000000 --- a/code/Modules/Resource/SetupAndData.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::SetupAndData - @ingroup Resource - @brief holds a setup and a data buffer object - - This is used to transfer both a resource setup object and - a stream object to resource creation functions. -*/ -#include "Core/Containers/Buffer.h" - -namespace Oryol { - -template class SetupAndData { -public: - /// default constructor - SetupAndData() { }; - /// construct from Setup and Stream object - SetupAndData(const SETUP& setup, Buffer&& data) : - Setup(setup), - Data(std::move(data)) { - // empty - }; - /// move construct - SetupAndData(SetupAndData&& rhs) { - this->Setup = std::move(rhs.Setup); - this->Data = std::move(rhs.Data); - }; - /// move assignment - void operator=(SetupAndData&& rhs) { - this->Setup = std::move(rhs.Setup); - this->Data = std::move(rhs.Data); - }; - - /// disable copy constructor - SetupAndData(const SetupAndData& rhs) = delete; - /// disable copy assignment - void operator=(const SetupAndData& rhs) = delete; - - /// embedded setup object - SETUP Setup; - /// embedded data buffer - Buffer Data; -}; - -} // namespace Oryol \ No newline at end of file From 9cd3ffce3564ba3f0c580ef8c5b9722acb16bbe0 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 17 Jan 2018 18:28:08 +0100 Subject: [PATCH 26/91] All samples working on sokol GL backend, except the ones with resource loading --- code/Modules/Assets/Gfx/MeshBuilder.h | 3 +- code/Modules/Assets/Gfx/ShapeBuilder.cc | 49 +++--- code/Modules/Assets/Gfx/ShapeBuilder.h | 57 ++++--- code/Modules/Gfx/Gfx.cc | 4 +- code/Modules/Gfx/Gfx.h | 5 +- code/Modules/Gfx/GfxTypes.cc | 5 + code/Modules/Gfx/GfxTypes.h | 21 +-- code/Modules/Gfx/private/sokolGfxBackend.cc | 19 ++- code/Samples/ArrayTexture/ArrayTexture.cc | 60 ++++--- code/Samples/ArrayTexture/shaders.glsl | 12 +- code/Samples/DrawCallPerf/DrawCallPerf.cc | 52 +++--- code/Samples/DrawCallPerf/shaders.glsl | 8 +- code/Samples/FullscreenQuad/FullscreenQuad.cc | 19 ++- code/Samples/FullscreenQuad/shaders.glsl | 7 +- code/Samples/GPUParticles/GPUParticles.cc | 151 ++++++++++-------- code/Samples/GPUParticles/shaders.glsl | 18 +-- .../GamepadExplorer/GamepadExplorer.cc | 4 +- .../InfiniteSpheres/InfiniteSpheres.cc | 28 ++-- code/Samples/Instancing/Instancing.cc | 69 ++++---- code/Samples/Instancing/shaders.glsl | 10 +- .../MultipleRenderTarget.cc | 33 ++-- code/Samples/NativeTexture/NativeTexture.cc | 93 ++++++----- code/Samples/NativeTexture/shaders.glsl | 8 +- code/Samples/PackedNormals/PackedNormals.cc | 27 ++-- .../RenderToCubeMap/RenderToCubeMap.cc | 32 ++-- code/Samples/Sensors/Sensors.cc | 43 +++-- code/Samples/Sensors/shaders.glsl | 8 +- .../SeparateBuffers/SeparateBuffers.cc | 23 +-- code/Samples/Shapes/Shapes.cc | 43 ++--- .../SimpleRenderTarget/SimpleRenderTarget.cc | 51 +++--- code/Samples/TestInput/TestInput.cc | 47 +++--- code/Samples/TestInput/shaders.glsl | 8 +- code/Samples/VertexTexture/VertexTexture.cc | 88 ++++++---- code/Samples/VertexTexture/shaders.glsl | 15 +- code/Samples/VolumeTexture/VolumeTexture.cc | 58 ++++--- code/Samples/VolumeTexture/shaders.glsl | 6 +- 36 files changed, 664 insertions(+), 520 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.h b/code/Modules/Assets/Gfx/MeshBuilder.h index e5ef9fa57..587da32e8 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.h +++ b/code/Modules/Assets/Gfx/MeshBuilder.h @@ -39,7 +39,6 @@ #include "Core/Types.h" #include "Gfx/GfxTypes.h" #include "Assets/Gfx/VertexWriter.h" -#include "Resource/SetupAndData.h" namespace Oryol { @@ -82,7 +81,7 @@ class MeshBuilder { BufferDesc IndexBufferDesc; VertexLayout Layout; IndexType::Code IndexType; - Buffer Data; + MemoryBuffer Data; }; /// end writing vertex and index data, return result, and reset MeshBuilfer Result Build(); diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.cc b/code/Modules/Assets/Gfx/ShapeBuilder.cc index 86a681b3f..19e2ba381 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.cc +++ b/code/Modules/Assets/Gfx/ShapeBuilder.cc @@ -12,7 +12,14 @@ namespace Oryol { //------------------------------------------------------------------------------ ShapeBuilder& -ShapeBuilder::AddPositions(const StringAtom& name, VertexFormat::Code fmt) { +ShapeBuilder::RandomColors(bool b) { + this->randomColors = b; + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::Positions(const StringAtom& name, VertexFormat::Code fmt) { o_assert_dbg(this->posIndex == InvalidIndex); this->posIndex = this->meshBuilder.Layout.NumComponents(); this->meshBuilder.Layout.Add(name, fmt); @@ -21,7 +28,21 @@ ShapeBuilder::AddPositions(const StringAtom& name, VertexFormat::Code fmt) { //------------------------------------------------------------------------------ ShapeBuilder& -ShapeBuilder::AddNormals(const StringAtom& name, VertexFormat::Code fmt) { +ShapeBuilder::Transform(const glm::mat4& m) { + this->transform = m; + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::VertexColor(const glm::vec4& c) { + this->color = c; + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::Normals(const StringAtom& name, VertexFormat::Code fmt) { o_assert_dbg(this->normalIndex == InvalidIndex); this->normalIndex = this->meshBuilder.Layout.NumComponents(); this->meshBuilder.Layout.Add(name, fmt); @@ -30,7 +51,7 @@ ShapeBuilder::AddNormals(const StringAtom& name, VertexFormat::Code fmt) { //------------------------------------------------------------------------------ ShapeBuilder& -ShapeBuilder::AddTexCoords(const StringAtom& name, VertexFormat::Code fmt) { +ShapeBuilder::TexCoords(const StringAtom& name, VertexFormat::Code fmt) { o_assert_dbg(this->texCoordIndex == InvalidIndex); this->texCoordIndex = this->meshBuilder.Layout.NumComponents(); this->meshBuilder.Layout.Add(name, fmt); @@ -39,27 +60,13 @@ ShapeBuilder::AddTexCoords(const StringAtom& name, VertexFormat::Code fmt) { //------------------------------------------------------------------------------ ShapeBuilder& -ShapeBuilder::AddColors(const Oryol::StringAtom &name, VertexFormat::Code fmt) { +ShapeBuilder::Colors(const Oryol::StringAtom &name, VertexFormat::Code fmt) { o_assert_dbg(this->colorIndex == InvalidIndex); this->colorIndex = this->meshBuilder.Layout.NumComponents(); this->meshBuilder.Layout.Add(name, fmt); return *this; } -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::Transform(const glm::mat4& m) { - this->transform = m; - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::Color(const glm::vec4& c) { - this->color = c; - return *this; -} - //------------------------------------------------------------------------------ void ShapeBuilder::buildPrimitiveGroup() { @@ -283,8 +290,8 @@ ShapeBuilder::Build() { ShapeBuilder::Result shapeResult; shapeResult.VertexBufferDesc = std::move(meshResult.VertexBufferDesc); shapeResult.IndexBufferDesc = std::move(meshResult.IndexBufferDesc); - shapeResult.Layout = std::move(meshResult.Layout); - shapeResult.IndexType = meshResult.IndexType; + shapeResult.PipelineDesc.Layouts[0] = std::move(meshResult.Layout); + shapeResult.PipelineDesc.IndexType = meshResult.IndexType; shapeResult.Data = std::move(meshResult.Data); shapeResult.PrimitiveGroups = std::move(this->primGroups); @@ -308,7 +315,7 @@ ShapeBuilder::Build() { void ShapeBuilder::BuildVertexColors(const ShapeData& shape, int startVertexIndex) { o_assert(InvalidIndex != this->colorIndex); - if (this->RandomColors) { + if (this->randomColors) { const glm::vec3 minRand(0.0f, 0.0f, 0.0f); const glm::vec3 maxRand(1.0f, 1.0f, 1.0f); for (int i = 0; i < shape.numVertices; i++) { diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.h b/code/Modules/Assets/Gfx/ShapeBuilder.h index f32acc3e0..49a7e3ae1 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.h +++ b/code/Modules/Assets/Gfx/ShapeBuilder.h @@ -17,21 +17,22 @@ namespace Oryol { class ShapeBuilder { public: - /// random-vertex-colors flag - bool RandomColors = false; - - /// add position component to vertex layout - ShapeBuilder& AddPositions(const StringAtom& name, VertexFormat::Code fmt); - /// add a normal component to vertex layout - ShapeBuilder& AddNormals(const StringAtom& name, VertexFormat::Code fmt); - /// add a texcoord component to vertex layout - ShapeBuilder& AddTexCoords(const StringAtom& name, VertexFormat::Code fmt); - /// add c color component to vertex layout - ShapeBuilder& AddColors(const StringAtom& name, VertexFormat::Code fmt); - /// put new transform - ShapeBuilder& Transform(const glm::mat4& t); - /// put new color - ShapeBuilder& Color(const glm::vec4& c); + /// return a new ShapeBuilder object + static ShapeBuilder New(); + /// declare position vertex components + ShapeBuilder& Positions(const StringAtom& name, VertexFormat::Code fmt); + /// declare normal vertex components + ShapeBuilder& Normals(const StringAtom& name, VertexFormat::Code fmt); + /// declare texture coords vertex components + ShapeBuilder& TexCoords(const StringAtom& name, VertexFormat::Code fmt); + /// declare color + ShapeBuilder& Colors(const StringAtom& name, VertexFormat::Code fmt); + /// enable random vertex colors + ShapeBuilder& RandomColors(bool b); + /// put new transform + ShapeBuilder& Transform(const glm::mat4& t); + /// put a new vertex color + ShapeBuilder& VertexColor(const glm::vec4& c); /// add a box shape ShapeBuilder& Box(float w, float h, float d, int tiles, bool buildPrimGroup=true); /// add a sphere shape @@ -47,9 +48,8 @@ class ShapeBuilder { struct Result { BufferDesc VertexBufferDesc; BufferDesc IndexBufferDesc; - VertexLayout Layout; - IndexType::Code IndexType; - Buffer Data; + struct PipelineDesc PipelineDesc; + MemoryBuffer Data; Array PrimitiveGroups; }; /// build geometry and clear object state @@ -77,23 +77,16 @@ class ShapeBuilder { int numTris; }; - /// update number of vertices and triangles in shape void UpdateNumElements(ShapeData& shapeData); - /// helper method: build vertex colors void BuildVertexColors(const ShapeData& shape, int startVertexIndex); - /// build box vertices and indices void BuildBox(const ShapeData& shape, int curVertexIndex, int curTriIndex); - /// build sphere vertices and indices void BuildSphere(const ShapeData& shape, int curVertexIndex, int curTriIndex); - /// build cylinder vertices and indices void BuildCylinder(const ShapeData& shape, int curVertexIndex, int curTriIndex); - /// build torus vertices and indices void BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriIndex); - /// build plane vertices and indices void BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriIndex); - /// build a primitive group void buildPrimitiveGroup(); - + + bool randomColors = false; int curPrimGroupBaseElement = 0; int curPrimGroupNumElements = 0; int posIndex = InvalidIndex; @@ -105,6 +98,12 @@ class ShapeBuilder { Array shapes; Array primGroups; MeshBuilder meshBuilder; -}; - +}; + +//------------------------------------------------------------------------------ +inline ShapeBuilder +ShapeBuilder::New() { + return ShapeBuilder(); +} + } // namespace Oryol diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index eeba83c7c..7f8a2bb40 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -320,7 +320,7 @@ Gfx::CreateTexture(const TextureDesc& desc) { //------------------------------------------------------------------------------ Id -Gfx::CreateTexture(const TextureDesc& desc, const class Buffer& data) { +Gfx::CreateTexture(const TextureDesc& desc, const MemoryBuffer& data) { return Gfx::CreateTexture(desc, data.Data(), data.Size()); } @@ -344,7 +344,7 @@ Gfx::CreateBuffer(const BufferDesc& desc) { //------------------------------------------------------------------------------ Id -Gfx::CreateBuffer(const BufferDesc& desc, const class Buffer& data) { +Gfx::CreateBuffer(const BufferDesc& desc, const MemoryBuffer& data) { return Gfx::CreateBuffer(desc, data.Data(), data.Size()); } diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index ef8b332cc..60956560f 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -11,7 +11,6 @@ #include "Core/RunLoop.h" #include "Gfx/GfxTypes.h" #include "Resource/ResourceLabel.h" -#include "Resource/SetupAndData.h" #include "Resource/ResourceInfo.h" #include "Resource/ResourcePoolInfo.h" @@ -70,13 +69,13 @@ class Gfx { /// create a buffer object without associated data static Id CreateBuffer(const BufferDesc& desc); /// create a buffer object with associated data - static Id CreateBuffer(const BufferDesc& setup, const class Buffer& data); + static Id CreateBuffer(const BufferDesc& setup, const MemoryBuffer& data); /// create a buffer object with raw pointer to associated data static Id CreateBuffer(const BufferDesc& setup, const void* data, int size); /// create a texture object without associated data static Id CreateTexture(const TextureDesc& desc); /// create a texture object with associated data - static Id CreateTexture(const TextureDesc& setup, const class Buffer& data); + static Id CreateTexture(const TextureDesc& setup, const MemoryBuffer& data); /// create a texture object with raw pointer to associated data static Id CreateTexture(const TextureDesc& setup, const void* data, int size); /// create a shader object diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index f456ae8f8..788d1c9e7 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -481,6 +481,11 @@ VertexLayout::VertexLayout(std::initializer_list l) { } } +//------------------------------------------------------------------------------ +VertexLayout VertexLayout::New() { + return VertexLayout(); +} + //------------------------------------------------------------------------------ VertexLayout& VertexLayout::Clear() { this->StepFunction = VertexStepFunction::PerVertex; diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 6f4e391ea..8dcfc9c27 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -6,8 +6,8 @@ #include "Core/String/StringAtom.h" #include "Resource/Id.h" #include "Resource/Locator.h" -#include "Core/Containers/StaticArray.h" -#include "Core/Containers/Buffer.h" +#include "Core/Containers/StaticArray.h" +#include "Core/Containers/MemoryBuffer.h" #include "Gfx/GfxConfig.h" #include "glm/vec4.hpp" #include @@ -655,7 +655,9 @@ class VertexLayout { /// default constructor VertexLayout(); /// initializer list constructor - VertexLayout(std::initializer_list l); + VertexLayout(std::initializer_list l); + /// return a new vertex layout object to start building via chained methods + static VertexLayout New(); /// clear the vertex layout, chainable VertexLayout& Clear(); /// return true if layout is empty @@ -896,7 +898,7 @@ class BufferBuilder { ContentSize = 0; return *this; } - BufferBuilder& Content(const Buffer& content) { + BufferBuilder& Content(const MemoryBuffer& content) { ContentPtr = content.Data(); ContentSize = content.Size(); return *this; @@ -954,7 +956,6 @@ struct PipelineDesc { /// rasterizer state bool CullFaceEnabled = false; - bool ScissorTestEnabled = false; bool AlphaToCoverageEnabled = false; Face::Code CullFace = Face::Back; int SampleCount = 1; @@ -1104,9 +1105,6 @@ class PipelineBuilder { PipelineBuilder& CullFace(Face::Code f) { Desc.CullFace = f; return *this; } - PipelineBuilder& ScissorTestEnabled(bool b) { - Desc.ScissorTestEnabled = b; return *this; - } PipelineBuilder& AlphaToCoverageEnabled(bool b) { Desc.AlphaToCoverageEnabled = b; return *this; } @@ -1274,7 +1272,10 @@ class TextureBuilder { } TextureBuilder& Depth(int d) { Desc.Depth = d; return *this; - } + } + TextureBuilder& Layers(int l) { + Desc.Depth = l; return *this; + } TextureBuilder& NumMipMaps(int n) { Desc.NumMipMaps = n; return *this; } @@ -1310,7 +1311,7 @@ class TextureBuilder { ContentSize = size; return *this; } - TextureBuilder& Content(const Buffer& content) { + TextureBuilder& Content(const MemoryBuffer& content) { ContentPtr = content.Data(); ContentSize = content.Size(); return *this; diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index b9d63ae3b..729127b66 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -726,6 +726,7 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { Id sokolGfxBackend::CreatePipeline(const PipelineDesc& desc) { o_assert_dbg(this->isValid); + o_assert_dbg(desc.Shader.IsValid()); sg_pipeline_desc sgDesc = { }; sgDesc.shader = makeShaderId(desc.Shader); sgDesc.primitive_type = convertPrimitiveType(desc.PrimType); @@ -794,7 +795,23 @@ sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { void sokolGfxBackend::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs) { o_assert_dbg(this->isValid); - // FIXME + o_assert_dbg(data); + o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); + o_assert_dbg(GfxConfig::MaxNumTextureMipMaps <= SG_MAX_MIPMAPS); + sg_image_content content = { }; + for (int faceIndex = 0; faceIndex < GfxConfig::MaxNumTextureFaces; faceIndex++) { + for (int mipIndex = 0; mipIndex < GfxConfig::MaxNumTextureMipMaps; mipIndex++) { + if (attrs.Sizes[faceIndex][mipIndex] > 0) { + auto& dst = content.subimage[faceIndex][mipIndex]; + dst.size = attrs.Sizes[faceIndex][mipIndex]; + dst.ptr = ((uint8_t*)data)+attrs.Offsets[faceIndex][mipIndex]; + } + else { + break; + } + } + } + sg_update_image(makeImageId(id), &content); } //------------------------------------------------------------------------------ diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index 1974c4c4d..168fe679e 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -24,6 +24,7 @@ class ArrayTextureApp : public App { AppState::Code notSupported(); Shader::vsParams computeShaderParams(); + PrimitiveGroup primGroup; DrawState drawState; int frameIndex = 0; glm::mat4 proj; @@ -33,9 +34,8 @@ OryolMain(ArrayTextureApp); //------------------------------------------------------------------------------ AppState::Code ArrayTextureApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(800, 512, "Array Texture Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.2f, 0.2f, 0.3f, 1.0f)); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(800, 512, "Array Texture Sample"); + Gfx::Setup(gfxDesc); Dbg::Setup(); // if array textures are not supported, only show a warning @@ -64,28 +64,42 @@ ArrayTextureApp::OnInit() { } } } - auto texSetup = TextureSetup::FromPixelDataArray(16, 16, numLayers, 1, PixelFormat::RGBA8); - texSetup.Sampler.MinFilter = TextureFilterMode::Linear; - texSetup.Sampler.MagFilter = TextureFilterMode::Linear; - texSetup.ImageData.Sizes[0][0] = sizeof(data); - this->drawState.FSTexture[Shader::tex] = Gfx::CreateResource(texSetup, data, sizeof(data)); + this->drawState.FSTexture[Shader::tex] = Gfx::Texture() + .Type(TextureType::TextureArray) + .Width(width) + .Height(height) + .Layers(numLayers) + .Format(PixelFormat::RGBA8) + .MinFilter(TextureFilterMode::Linear) + .MagFilter(TextureFilterMode::Linear) + .MipDataSize(0, 0, sizeof(data)) + .Content(data, sizeof(data)) + .Create(); // build a cube mesh - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 1); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Box(1.0f, 1.0f, 1.0f, 1) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); // ...and a pipeline object to complete the DrawState - Id shd = Gfx::CreateResource(Shader::Setup()); - auto pipSetup = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - pipSetup.DepthStencilState.DepthWriteEnabled = true; - pipSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - pipSetup.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(pipSetup); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); // setup a projection matrix with the right aspect ratio const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -108,10 +122,10 @@ ArrayTextureApp::OnRunning() { auto vsParams = this->computeShaderParams(); // render texture cube - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.2f, 0.2f, 0.3f, 1.0f))); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(); + Gfx::Draw(this->primGroup); Gfx::EndPass(); Gfx::CommitFrame(); this->frameIndex++; diff --git a/code/Samples/ArrayTexture/shaders.glsl b/code/Samples/ArrayTexture/shaders.glsl index 342fccffa..a4251a5f3 100644 --- a/code/Samples/ArrayTexture/shaders.glsl +++ b/code/Samples/ArrayTexture/shaders.glsl @@ -10,17 +10,17 @@ uniform vsParams { vec2 uvOffset2; }; -in vec4 position; -in vec2 texcoord0; +in vec4 in_pos; +in vec2 in_uv; out vec3 uv0; out vec3 uv1; out vec3 uv2; void main() { - gl_Position = mvp * position; - uv0 = vec3(texcoord0 + uvOffset0, 0.0); - uv1 = vec3(texcoord0 + uvOffset1, 1.0); - uv2 = vec3(texcoord0 + uvOffset2, 2.0); + gl_Position = mvp * in_pos; + uv0 = vec3(in_uv + uvOffset0, 0.0); + uv1 = vec3(in_uv + uvOffset1, 1.0); + uv2 = vec3(in_uv + uvOffset2, 2.0); } @end diff --git a/code/Samples/DrawCallPerf/DrawCallPerf.cc b/code/Samples/DrawCallPerf/DrawCallPerf.cc index 3afb9eacb..5f7ae2f9f 100644 --- a/code/Samples/DrawCallPerf/DrawCallPerf.cc +++ b/code/Samples/DrawCallPerf/DrawCallPerf.cc @@ -24,7 +24,8 @@ class DrawCallPerfApp : public App { void updateCamera(); void emitParticles(); void updateParticles(); - + + PrimitiveGroup primGroup; DrawState drawState; glm::mat4 view; glm::mat4 proj; @@ -48,29 +49,38 @@ OryolMain(DrawCallPerfApp); AppState::Code DrawCallPerfApp::OnInit() { // setup rendering system - GfxSetup gfxSetup = GfxSetup::Window(800, 500, "Oryol DrawCallPerf Sample"); - gfxSetup.GlobalUniformBufferSize = 1024 * 1024 * 32; - Gfx::Setup(gfxSetup); + GfxDesc gfxDesc = GfxDesc::Window(800, 500, "Oryol DrawCallPerf Sample"); + gfxDesc.GlobalUniformBufferSize = 1024 * 1024 * 32; + Gfx::Setup(gfxDesc); Dbg::Setup(); Input::Setup(); // create resources - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - ShapeBuilder shapeBuilder; - shapeBuilder.RandomColors = true; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::Float4 } - }; - shapeBuilder.Transform(rot90).Sphere(0.05f, 3, 2); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.RasterizerState.CullFaceEnabled = true; - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - this->drawState.Pipeline = Gfx::CreateResource(ps); - + const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .Colors("in_color", VertexFormat::Float4) + .Transform(rot90) + .Sphere(0.05f, 3, 2) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .CullFaceEnabled(true) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Create(); + // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -107,7 +117,7 @@ DrawCallPerfApp::OnRunning() { for (int i = 0; i < this->curNumParticles; i++) { this->perParticleParams.translate = this->particles[i].pos; Gfx::ApplyUniformBlock(this->perParticleParams); - Gfx::Draw(); + Gfx::Draw(this->primGroup); } drawTime = Clock::Since(drawStart); diff --git a/code/Samples/DrawCallPerf/shaders.glsl b/code/Samples/DrawCallPerf/shaders.glsl index a9010df25..8e16c8de1 100644 --- a/code/Samples/DrawCallPerf/shaders.glsl +++ b/code/Samples/DrawCallPerf/shaders.glsl @@ -9,12 +9,12 @@ uniform perFrameParams { uniform perParticleParams { vec4 translate; }; -in vec4 position; -in vec4 color0; +in vec4 in_pos; +in vec4 in_color; out vec4 color; void main() { - gl_Position = mvp * (position + translate); - color = color0; + gl_Position = mvp * (in_pos + translate); + color = in_color; } @end diff --git a/code/Samples/FullscreenQuad/FullscreenQuad.cc b/code/Samples/FullscreenQuad/FullscreenQuad.cc index 15a9735c2..93332b30c 100644 --- a/code/Samples/FullscreenQuad/FullscreenQuad.cc +++ b/code/Samples/FullscreenQuad/FullscreenQuad.cc @@ -22,12 +22,17 @@ OryolMain(FullscreenQuadApp); //------------------------------------------------------------------------------ AppState::Code FullscreenQuadApp::OnInit() { - Gfx::Setup(GfxSetup::Window(600, 600, "Oryol Fullscreen Quad Sample")); - auto quadSetup = MeshSetup::FullScreenQuad(); - this->drawState.Mesh[0] = Gfx::CreateResource(quadSetup); - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(quadSetup.Layout, shd); - this->drawState.Pipeline = Gfx::CreateResource(ps); + Gfx::Setup(GfxDesc::Window(600, 600, "Oryol Fullscreen Quad Sample")); + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) + .Create(); this->params.time = 0.0f; return App::OnInit(); } @@ -40,7 +45,7 @@ FullscreenQuadApp::OnRunning() { Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/FullscreenQuad/shaders.glsl b/code/Samples/FullscreenQuad/shaders.glsl index cab56de5e..1afee8a71 100644 --- a/code/Samples/FullscreenQuad/shaders.glsl +++ b/code/Samples/FullscreenQuad/shaders.glsl @@ -31,8 +31,7 @@ uniform params { float time; }; -in vec4 position; -in vec2 texcoord0; +in vec2 in_pos; out vec2 uv; out vec3 eye; out vec3 up; @@ -41,8 +40,8 @@ out vec3 fwd; out vec4 sinTime; void main() { - gl_Position = position; - uv = texcoord0 * 2.0 - 1.0; + gl_Position = vec4(in_pos * 2.0 - 1.0, 0.5, 1.0); + uv = in_pos * 2.0 - 1.0; vec3 center = vec3(0.0, 0.0, 0.0); eye = eyePos(time, center); lookatResult lookatVecs = lookat(eye, center, vec3(0.0, 1.0, 0.0)); diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index 320deb573..a5a865d29 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -36,7 +36,8 @@ class GPUParticlesApp : public App { DrawState initParticles; DrawState updParticles; DrawState drawParticles; - + + PrimitiveGroup shapePrimGroup; glm::mat4 view; glm::mat4 proj; glm::mat4 model; @@ -54,7 +55,7 @@ OryolMain(GPUParticlesApp); AppState::Code GPUParticlesApp::OnInit() { // setup rendering system - Gfx::Setup(GfxSetup::Window(800, 500, "Oryol GPU Particles Sample")); + Gfx::Setup(GfxDesc::Window(800, 500, "Oryol GPU Particles Sample")); Dbg::Setup(); // check required extensions @@ -76,66 +77,90 @@ GPUParticlesApp::OnInit() { // - 2 fullscreen-quad draw-states for emitting and updating particles // - 1 particle-rendering draw state - // the 2 ping/pong particle state textures and render passes - auto particleTextureSetup = TextureSetup::RenderTarget2D(ParticleBufferWidth, ParticleBufferHeight, PixelFormat::RGBA32F); - particleTextureSetup.Sampler.MinFilter = TextureFilterMode::Nearest; - particleTextureSetup.Sampler.MagFilter = TextureFilterMode::Nearest; - for (int i = 0; i < 2; i++) { - this->particleBuffer[i].texture = Gfx::CreateResource(particleTextureSetup); - auto particlePassSetup = PassSetup::From(this->particleBuffer[i].texture); - particlePassSetup.DefaultAction.DontCareColor(0); - this->particleBuffer[i].pass = Gfx::CreateResource(particlePassSetup); + // the 2 ping/pong particle state textures and render passes + for (int i = 0; i < 2; i++) { + this->particleBuffer[i].texture = Gfx::Texture() + .RenderTarget(true) + .Width(ParticleBufferWidth) + .Height(ParticleBufferHeight) + .Format(PixelFormat::RGBA32F) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .Create(); + this->particleBuffer[i].pass = Gfx::Pass() + .ColorAttachment(0, this->particleBuffer[i].texture) + .Create(); } - // a fullscreen mesh for the particle init- and update-shaders - auto quadSetup = MeshSetup::FullScreenQuad(Gfx::QueryFeature(GfxFeature::OriginTopLeft)); - Id quadMesh = Gfx::CreateResource(quadSetup); - this->initParticles.Mesh[0] = quadMesh; - this->updParticles.Mesh[0] = quadMesh; - - // particle initialization and update resources - Id initShader = Gfx::CreateResource(InitShader::Setup()); - Id updShader = Gfx::CreateResource(UpdateShader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(quadSetup.Layout, initShader); - ps.BlendState.ColorFormat = particleTextureSetup.ColorFormat; - ps.BlendState.DepthFormat = particleTextureSetup.DepthFormat; - this->initParticles.Pipeline = Gfx::CreateResource(ps); - ps.Shader = updShader; - ps.RasterizerState.ScissorTestEnabled = true; - this->updParticles.Pipeline = Gfx::CreateResource(ps); + // a fullscreen mesh for the particle init- and update-shaders + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + Id quadVbuf = Gfx::Buffer() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Create(); + this->initParticles.VertexBuffers[0] = quadVbuf; + this->updParticles.VertexBuffers[0] = quadVbuf; + + // particle initialization and update resources + auto particlePipDesc = Gfx::Pipeline() + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) + .ColorFormat(PixelFormat::RGBA32F) + .DepthFormat(PixelFormat::None) + .Desc; + this->initParticles.Pipeline = Gfx::Pipeline() + .From(particlePipDesc) + .Shader(Gfx::CreateShader(InitShader::Desc())) + .Create(); + this->updParticles.Pipeline = Gfx::Pipeline() + .From(particlePipDesc) + .Shader(Gfx::CreateShader(UpdateShader::Desc())) + .Create(); // the static geometry of a single particle is at mesh slot 0 - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - ShapeBuilder shapeBuilder; - shapeBuilder.RandomColors = true; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::Float4 } - }; - shapeBuilder.Transform(rot90).Sphere(0.05f, 3, 2); - this->drawParticles.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - - // a instancing vertex buffer with the particleIds at mesh slot 1 - const int particleIdSize = MaxNumParticles * sizeof(float); - float* particleIdData = (float*) Memory::Alloc(particleIdSize); - for (int i = 0; i < MaxNumParticles; i++) { - particleIdData[i] = (float) i; - } - auto particleIdSetup = MeshSetup::FromData(Usage::Immutable); - particleIdSetup.NumVertices = MaxNumParticles; - particleIdSetup.Layout.EnableInstancing().Add(VertexAttr::Instance0, VertexFormat::Float); - this->drawParticles.Mesh[1] = Gfx::CreateResource(particleIdSetup, particleIdData, particleIdSize); - Memory::Free(particleIdData); - - // particle rendering texture blocks and draw state - Id drawShader = Gfx::CreateResource(DrawShader::Setup()); - ps = PipelineSetup::FromShader(drawShader); - ps.Layouts[0] = shapeBuilder.Layout; - ps.Layouts[1] = particleIdSetup.Layout; - ps.RasterizerState.CullFaceEnabled = true; - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::Less; - this->drawParticles.Pipeline = Gfx::CreateResource(ps); + const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .Colors("in_color", VertexFormat::Float4) + .Transform(rot90) + .Sphere(0.05f, 3, 2) + .Build(); + this->shapePrimGroup = shape.PrimitiveGroups[0]; + this->drawParticles.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawParticles.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + + // a instancing vertex buffer with the particleIds at vertex buffer slot 1 + { + const int particleIdSize = MaxNumParticles * sizeof(float); + float* particleIdData = (float*) Memory::Alloc(particleIdSize); + for (int i = 0; i < MaxNumParticles; i++) { + particleIdData[i] = (float) i; + } + this->drawParticles.VertexBuffers[1] = Gfx::Buffer() + .Size(particleIdSize) + .Content(particleIdData) + .Create(); + Memory::Free(particleIdData); + } + + // ...and the pipeline object for instanced particle rendering + this->drawParticles.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(DrawShader::Desc())) + .Layout(1, VertexLayout::New() + .EnableInstancing() + .Add("in_particleId", VertexFormat::Float)) + .CullFaceEnabled(true) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Create(); // the static projection matrix const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -150,10 +175,10 @@ GPUParticlesApp::OnInit() { // 'draw' the initial particle state (positions at origin, pseudo-random velocity) for (int i = 0; i < 2; i++) { - Gfx::BeginPass(this->particleBuffer[0].pass); + Gfx::BeginPass(this->particleBuffer[0].pass, PassAction::DontCare()); Gfx::ApplyDrawState(this->initParticles); Gfx::ApplyUniformBlock(this->initFSParams); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::EndPass(); } @@ -186,11 +211,11 @@ GPUParticlesApp::OnRunning() { const int scissorHeight = (this->curNumParticles / NumParticlesX) + 1; this->updParticles.FSTexture[UpdateShader::prevState] = this->particleBuffer[readIndex].texture; this->updFSParams.numParticles = (float) this->curNumParticles; - Gfx::BeginPass(this->particleBuffer[drawIndex].pass); + Gfx::BeginPass(this->particleBuffer[drawIndex].pass, PassAction::DontCare()); Gfx::ApplyScissorRect(0, 0, ParticleBufferWidth, scissorHeight, Gfx::QueryFeature(GfxFeature::OriginTopLeft)); Gfx::ApplyDrawState(this->updParticles); Gfx::ApplyUniformBlock(this->updFSParams); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::EndPass(); // now the actual particle shape rendering: @@ -200,7 +225,7 @@ GPUParticlesApp::OnRunning() { Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawParticles); Gfx::ApplyUniformBlock(this->drawVSParams); - Gfx::Draw(0, this->curNumParticles); + Gfx::Draw(this->shapePrimGroup, this->curNumParticles); Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/GPUParticles/shaders.glsl b/code/Samples/GPUParticles/shaders.glsl index 71ebe4c45..384b68275 100644 --- a/code/Samples/GPUParticles/shaders.glsl +++ b/code/Samples/GPUParticles/shaders.glsl @@ -128,9 +128,9 @@ float snoise(vec2 v) // A generic fullscreen-quad vertex shader. // @vs fsqVS -in vec4 position; +in vec2 in_pos; void main() { - gl_Position = position; + gl_Position = vec4(in_pos * 2.0 - 1.0, 0.5, 1.0); } @end @@ -237,17 +237,15 @@ uniform vsParams { }; uniform sampler2D particleTex; -in vec4 position; -in vec4 color0; -in float instance0; +in vec4 in_pos; +in vec4 in_color; +in float in_particleId; out vec4 color; void main() { - float particleId = instance0; - vec2 posUv = posUvFromParticleId(particleId, bufDims); + vec2 posUv = posUvFromParticleId(in_particleId, bufDims); vec4 particlePos = vec4(texture(particleTex, posUv).xyz, 0.0); - - gl_Position = mvp * (position + particlePos); - color = color0; + gl_Position = mvp * (in_pos + particlePos); + color = in_color; } @end diff --git a/code/Samples/GamepadExplorer/GamepadExplorer.cc b/code/Samples/GamepadExplorer/GamepadExplorer.cc index 1e659becc..344348b45 100644 --- a/code/Samples/GamepadExplorer/GamepadExplorer.cc +++ b/code/Samples/GamepadExplorer/GamepadExplorer.cc @@ -49,7 +49,7 @@ const char* axisNames[GamepadAxis::NumAxes] = { //------------------------------------------------------------------------------ AppState::Code GamepadExplorerApp::OnInit() { - Gfx::Setup(GfxSetup::Window(800, 600, "Test Gamepads")); + Gfx::Setup(GfxDesc::Window(800, 600, "Test Gamepads")); Dbg::Setup(); Input::Setup(); return App::OnInit(); @@ -134,4 +134,4 @@ GamepadExplorerApp::OnCleanup() { Dbg::Discard(); Gfx::Discard(); return App::OnCleanup(); -} \ No newline at end of file +} diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index be8b00cea..211ea89d2 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -21,7 +21,7 @@ class InfiniteSpheresApp : public App { glm::mat4 computeModel(float rotX, float rotY, const glm::vec3& pos); glm::mat4 computeMVP(const glm::mat4& proj, const glm::mat4& model); - ShapeBuilder::Result sphere; + PrimitiveGroup primGroup; DrawState offscreenDrawState; DrawState displayDrawState; struct { @@ -74,16 +74,16 @@ InfiniteSpheresApp::OnInit() { .Create(); } - // create a sphere shape mesh - ShapeBuilder shapeBuilder; - this->sphere = shapeBuilder - .AddPositions("in_pos", VertexFormat::Float3) - .AddNormals("in_normal", VertexFormat::Byte4N) - .AddTexCoords("in_uv", VertexFormat::Float2) + // create a sphere shape mesh + auto sphere = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .TexCoords("in_uv", VertexFormat::Float2) .Sphere(0.75f, 72, 40) .Build(); - Id vbuf = Gfx::Buffer().From(this->sphere.VertexBufferDesc).Content(this->sphere.Data).Create(); - Id ibuf = Gfx::Buffer().From(this->sphere.IndexBufferDesc).Content(this->sphere.Data).Create(); + this->primGroup = sphere.PrimitiveGroups[0]; + Id vbuf = Gfx::Buffer().From(sphere.VertexBufferDesc).Content(sphere.Data).Create(); + Id ibuf = Gfx::Buffer().From(sphere.IndexBufferDesc).Content(sphere.Data).Create(); this->offscreenDrawState.VertexBuffers[0] = vbuf; this->offscreenDrawState.IndexBuffer = ibuf; this->displayDrawState.VertexBuffers[0] = vbuf; @@ -94,17 +94,15 @@ InfiniteSpheresApp::OnInit() { // create draw state for rendering into default render target this->displayDrawState.Pipeline = Gfx::Pipeline() + .From(sphere.PipelineDesc) .Shader(shd) - .Layout(0, this->sphere.Layout) - .IndexType(this->sphere.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(gfxDesc.SampleCount) .Create(); this->offscreenDrawState.Pipeline = Gfx::Pipeline() + .From(sphere.PipelineDesc) .Shader(shd) - .Layout(0, this->sphere.Layout) - .IndexType(this->sphere.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) @@ -140,7 +138,7 @@ InfiniteSpheresApp::OnRunning() { this->offscreenDrawState.FSTexture[Shader::tex] = this->passInfo[index1].texture; Gfx::ApplyDrawState(this->offscreenDrawState); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(this->sphere.PrimitiveGroups[0]); + Gfx::Draw(this->primGroup); Gfx::EndPass(); // ...and again to display @@ -150,7 +148,7 @@ InfiniteSpheresApp::OnRunning() { this->displayDrawState.FSTexture[Shader::tex] = this->passInfo[index0].texture; Gfx::ApplyDrawState(this->displayDrawState); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(this->sphere.PrimitiveGroups[0]); + Gfx::Draw(this->primGroup); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/Instancing/Instancing.cc b/code/Samples/Instancing/Instancing.cc index 30bb7acb5..cf67e1f56 100644 --- a/code/Samples/Instancing/Instancing.cc +++ b/code/Samples/Instancing/Instancing.cc @@ -25,10 +25,7 @@ class InstancingApp : public App { void emitParticles(); void updateParticles(); - // the static geometry is at mesh slot 0, and the instance data at slot 1 - static const int geomMeshSlot = 0; - static const int instMeshSlot = 1; - + PrimitiveGroup primGroup; DrawState drawState; glm::mat4 view; glm::mat4 proj; @@ -49,7 +46,7 @@ OryolMain(InstancingApp); AppState::Code InstancingApp::OnInit() { // setup rendering system - Gfx::Setup(GfxSetup::Window(800, 500, "Oryol Instancing Sample")); + Gfx::Setup(GfxDesc::Window(800, 500, "Oryol Instancing Sample")); Dbg::Setup(); Input::Setup(); @@ -59,33 +56,41 @@ InstancingApp::OnInit() { } // create static mesh at mesh slot 0 - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - ShapeBuilder shapeBuilder; - shapeBuilder.RandomColors = true; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Color0, VertexFormat::Float4 } - }; - shapeBuilder.Transform(rot90).Sphere(0.05f, 3, 2); - auto shapeBuilderResult = shapeBuilder.Build(); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilderResult); + const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .Colors("in_color", VertexFormat::Float4) + .Transform(rot90) + .Sphere(0.05f, 3, 2) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); - // create dynamic instance data mesh at mesh slot 1 - auto instMeshSetup = MeshSetup::Empty(MaxNumParticles, Usage::Stream); - instMeshSetup.Layout - .EnableInstancing() - .Add(VertexAttr::Instance0, VertexFormat::Float4); - this->drawState.Mesh[1] = Gfx::CreateResource(instMeshSetup); + // create dynamic instance data vertex buffer on slot 1 + this->drawState.VertexBuffers[1] = Gfx::Buffer() + .Size(MaxNumParticles * VertexFormat::ByteSize(VertexFormat::Float4)) + .Usage(Usage::Stream) + .Create(); - // setup draw state for instanced rendering - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromShader(shd); - ps.Layouts[0] = shapeBuilder.Layout; - ps.Layouts[1] = instMeshSetup.Layout; - ps.RasterizerState.CullFaceEnabled = true; - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - this->drawState.Pipeline = Gfx::CreateResource(ps); + // setup pipeline state for instanced rendering + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(1, VertexLayout::New() + .EnableInstancing() + .Add("in_instpos", VertexFormat::Float4)) + .CullFaceEnabled(true) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Create(); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -111,7 +116,7 @@ InstancingApp::OnRunning() { updTime = Clock::Since(updStart); TimePoint bufStart = Clock::Now(); - Gfx::UpdateVertices(this->drawState.Mesh[instMeshSlot], this->positions, this->curNumParticles * sizeof(glm::vec4)); + Gfx::UpdateBuffer(this->drawState.VertexBuffers[1], this->positions, this->curNumParticles * sizeof(glm::vec4)); bufTime = Clock::Since(bufStart); } @@ -120,7 +125,7 @@ InstancingApp::OnRunning() { Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(0, this->curNumParticles); + Gfx::Draw(this->primGroup, this->curNumParticles); drawTime = Clock::Since(drawStart); Dbg::DrawTextBuffer(); diff --git a/code/Samples/Instancing/shaders.glsl b/code/Samples/Instancing/shaders.glsl index d3f594f81..5347b7d69 100644 --- a/code/Samples/Instancing/shaders.glsl +++ b/code/Samples/Instancing/shaders.glsl @@ -6,13 +6,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 color0; -in vec4 instance0; +in vec4 in_pos; +in vec4 in_color; +in vec4 in_instpos; out vec4 color; void main() { - gl_Position = mvp * (position + instance0); - color = color0; + gl_Position = mvp * (in_pos + in_instpos); + color = in_color; } @end diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index d7e176c0f..65b7866a4 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -26,8 +26,8 @@ class MultipleRenderTargetApp : public App { const int OffscreenWidth = 200; const int OffscreenHeight = 200; - ShapeBuilder::Result shapes; - + PrimitiveGroup cubePrimGroup; + PrimitiveGroup planePrimGroup; Id mrtPass; PassAction mrtPassAction; DrawState rt0DrawState; @@ -94,29 +94,29 @@ MultipleRenderTargetApp::OnInit() { .ClearColor(2, glm::vec4(0.0f, 0.0f, 0.25f, 1.0f)); // create a mesh with 2 shapes, a box and a plane - ShapeBuilder shapeBuilder; - this->shapes = shapeBuilder - .AddPositions("in_pos", VertexFormat::Float3) - .AddNormals("in_normal", VertexFormat::UByte4N) - .AddTexCoords("in_uv", VertexFormat::Float2) + auto shapes = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::UByte4N) + .TexCoords("in_uv", VertexFormat::Float2) .Box(1.0f, 1.0f, 1.0f, 1) .Plane(1.0f, 1.0f, 1) .Build(); + this->cubePrimGroup = shapes.PrimitiveGroups[0]; + this->planePrimGroup = shapes.PrimitiveGroups[1]; Id shapesVertexBuffer = Gfx::Buffer() - .From(this->shapes.VertexBufferDesc) - .Content(this->shapes.Data) + .From(shapes.VertexBufferDesc) + .Content(shapes.Data) .Create(); Id shapesIndexBuffer = Gfx::Buffer() - .From(this->shapes.IndexBufferDesc) - .Content(this->shapes.Data) + .From(shapes.IndexBufferDesc) + .Content(shapes.Data) .Create(); // create a draw state to render a cube into the // offscreen render targets (this is where the MRT rendering happens) this->cubeDrawState.Pipeline = Gfx::Pipeline() + .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(OffscreenShader::Desc())) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) @@ -156,9 +156,8 @@ MultipleRenderTargetApp::OnInit() { // and finally create a draw state to render a plane to the // main display which samples the 3 offscreen render targets this->displayDrawState.Pipeline = Gfx::Pipeline() + .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(DisplayShader::Desc())) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(false) @@ -196,7 +195,7 @@ MultipleRenderTargetApp::OnRunning() { Gfx::BeginPass(this->mrtPass, this->mrtPassAction); Gfx::ApplyDrawState(this->cubeDrawState); Gfx::ApplyUniformBlock(this->cubeParams); - Gfx::Draw(this->shapes.PrimitiveGroups[0]); + Gfx::Draw(this->cubePrimGroup); Gfx::EndPass(); // debug-visualize the 3 offscreen render targets at the bottom of the screen @@ -216,7 +215,7 @@ MultipleRenderTargetApp::OnRunning() { Gfx::ApplyViewPort(0, 0, rpAttrs.FramebufferWidth, rpAttrs.FramebufferHeight); Gfx::ApplyDrawState(this->displayDrawState); Gfx::ApplyUniformBlock(this->displayParams); - Gfx::Draw(this->shapes.PrimitiveGroups[1]); + Gfx::Draw(this->planePrimGroup); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 93b514de1..92b22e9b6 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -13,7 +13,7 @@ // need to access GL API directly #if ORYOL_OPENGL -#include "Gfx/private/gl/gl_impl.h" +#include "Gfx/private/flextGL.h" #endif using namespace Oryol; @@ -26,7 +26,8 @@ class NativeTextureApp : public App { AppState::Code notSupported(); // render a 'not supported' message - glm::mat4 computeMVP(const glm::vec3& pos); + glm::mat4 computeMVP(const glm::vec3& pos); + PrimitiveGroup primGroup; DrawState drawState; ResourceLabel texLabel; Shader::vsParams params; @@ -48,25 +49,30 @@ OryolMain(NativeTextureApp); AppState::Code NativeTextureApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(600, 400, "Oryol NativeTexture Sample"); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Oryol NativeTexture Sample"); + Gfx::Setup(gfxDesc); Dbg::Setup(); - // native texture handles are currently only supported on GL, on - // other APIs, just display a warning - if (!Gfx::QueryFeature(GfxFeature::NativeTexture)) { - return App::OnInit(); - } - - ShapeBuilder shapeBuilder; - shapeBuilder.RandomColors = true; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 4); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - Id shd = Gfx::CreateResource(Shader::Setup()); + // FIXME: D3D and Metal + #if !ORYOL_OPENGL + return App::OnInit(); + #endif + + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Box(1.0f, 1.0f, 1.0f, 4) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); #if ORYOL_OPENGL // the interesting part, create 2 GL textures and hand them to the @@ -87,25 +93,30 @@ NativeTextureApp::OnInit() { Gfx::ResetStateCache(); // make sure that the texture creation parameters here match the OpenGL - // creation parameters (size, texture type, pixel format etc...), - auto texSetup = TextureSetup::FromNativeTexture(TexWidth, TexHeight, 1, - TextureType::Texture2D, - PixelFormat::RGBA8, - Usage::Stream, - this->glTextures[0], - this->glTextures[1]); - // push a new resource label and keep it for later since we'll have - // to cleanup the resource ourselves - Gfx::PushResourceLabel(); - this->drawState.FSTexture[0] = Gfx::CreateResource(texSetup); + // creation parameters (size, texture type, pixel format etc...), + // push a new resource label and keep it for later since we'll have + // to cleanup the resource ourselves + Gfx::PushResourceLabel(); + this->drawState.FSTexture[0] = Gfx::Texture() + .Type(TextureType::Texture2D) + .Width(TexWidth) + .Height(TexHeight) + .Format(PixelFormat::RGBA8) + .Usage(Usage::Stream) + .NativeTexture(0, this->glTextures[0]) + .NativeTexture(1, this->glTextures[1]) + .Create(); this->texLabel = Gfx::PopResourceLabel(); #endif - - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(ps); + + // ...and finally the pipeline object + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -119,9 +130,9 @@ NativeTextureApp::OnInit() { AppState::Code NativeTextureApp::OnRunning() { - if (!Gfx::QueryFeature(GfxFeature::NativeTexture)) { - return notSupported(); - } + #if !ORYOL_OPENGL + return notSupported(); + #endif this->angleY += 0.01f; this->angleX += 0.02f; @@ -138,8 +149,6 @@ NativeTextureApp::OnRunning() { } this->counter++; ImageDataAttrs updAttrs; - updAttrs.NumFaces = 1; - updAttrs.NumMipMaps = 1; updAttrs.Offsets[0][0] = 0; updAttrs.Sizes[0][0] = sizeof(this->Buffer); Gfx::UpdateTexture(this->drawState.FSTexture[0], this->Buffer, updAttrs); @@ -148,7 +157,7 @@ NativeTextureApp::OnRunning() { Gfx::ApplyDrawState(this->drawState); this->params.mvp = this->computeMVP(glm::vec3(0.0f, 0.0f, -3.0f)); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(); + Gfx::Draw(this->primGroup); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/NativeTexture/shaders.glsl b/code/Samples/NativeTexture/shaders.glsl index 15176d4eb..51c082fb8 100644 --- a/code/Samples/NativeTexture/shaders.glsl +++ b/code/Samples/NativeTexture/shaders.glsl @@ -2,13 +2,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec2 texcoord0; +in vec4 in_pos; +in vec2 in_uv; out vec2 uv; void main() { - gl_Position = mvp * position; - uv = texcoord0; + gl_Position = mvp * in_pos; + uv = in_uv; } @end diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index cd1d36c72..d48c02607 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -18,7 +18,7 @@ class PackedNormalsApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - ShapeBuilder::Result shapes; + Array primGroups; DrawState drawState; Shader::params params; glm::mat4 view; @@ -33,27 +33,32 @@ AppState::Code PackedNormalsApp::OnInit() { Gfx::Setup(GfxDesc::WindowMSAA4(600, 400, "Oryol Packed Normals Sample")); - ShapeBuilder shapeBuilder; - this->shapes = shapeBuilder - .AddPositions("position", VertexFormat::Float3) - .AddNormals("normal", VertexFormat::Byte4N) + auto shapes = ShapeBuilder::New() + .Positions("position", VertexFormat::Float3) + .Normals("normal", VertexFormat::Byte4N) .Box(1.0f, 1.0f, 1.0f, 4) .Sphere(0.75f, 36, 20) .Cylinder(0.5f, 1.5f, 36, 10) .Torus(0.3f, 0.5f, 20, 36) .Plane(1.5f, 1.5f, 10) - .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->shapes.VertexBufferDesc, this->shapes.Data); - this->drawState.IndexBuffer = Gfx::CreateBuffer(this->shapes.IndexBufferDesc, this->shapes.Data); + .Build(); + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shapes.VertexBufferDesc) + .Content(shapes.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shapes.IndexBufferDesc) + .Content(shapes.Data) + .Create(); this->drawState.Pipeline = Gfx::Pipeline() + .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) .SampleCount(4) .Create(); + this->primGroups = std::move(shapes.PrimitiveGroups); float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -83,7 +88,7 @@ PackedNormalsApp::OnRunning() { for (const auto& pos : positions) { this->params.mvp = this->computeMVP(pos); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(this->shapes.PrimitiveGroups[primGroupIndex++]); + Gfx::Draw(this->primGroups[primGroupIndex++]); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index 80cf4968c..e36728357 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -34,8 +34,7 @@ class RenderToCubeMapApp : public App { const glm::vec4 ClearColor = glm::vec4(0.5f, 0.5f, 0.7f, 1.0f); const glm::vec3 LightDir = glm::normalize(glm::vec3(-0.75, 1.0, 0.0)); - ShapeBuilder::Result shapes; - + Array primGroups; Id cubeMap; Id passes[NumFaces]; @@ -102,36 +101,34 @@ RenderToCubeMapApp::OnInit() { } // mesh, shaders and pipelines to render color shapes - ShapeBuilder shapeBuilder; - this->shapes = shapeBuilder - .AddPositions("in_pos", VertexFormat::Float3) - .AddNormals("in_normal", VertexFormat::Float3) + auto shapes = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1, true) .Cylinder(0.5f, 1.0f, 36, 1, true) .Torus(0.25f, 0.5f, 8, 36, true) .Sphere(0.5f, 18, 12, true) .Sphere(3.5f, 72, 48, true) // this is the big center sphere .Build(); + this->primGroups = std::move(shapes.PrimitiveGroups); this->shapesVertexBuffer = Gfx::Buffer() - .From(this->shapes.VertexBufferDesc) - .Content(this->shapes.Data) + .From(shapes.VertexBufferDesc) + .Content(shapes.Data) .Create(); this->shapesIndexBuffer = Gfx::Buffer() - .From(this->shapes.IndexBufferDesc) - .Content(this->shapes.Data) + .From(shapes.IndexBufferDesc) + .Content(shapes.Data) .Create(); this->displayShapesPipeline = Gfx::Pipeline() + .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(ShapeShader::Desc())) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(gfxDesc.SampleCount) .Create(); this->offscreenShapesPipeline = Gfx::Pipeline() + .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(ShapeShaderWithGamma::Desc())) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) @@ -143,9 +140,8 @@ RenderToCubeMapApp::OnInit() { this->sphereDrawState.IndexBuffer = this->shapesIndexBuffer; this->sphereDrawState.FSTexture[SphereShader::tex] = this->cubeMap; this->sphereDrawState.Pipeline = Gfx::Pipeline() + .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(SphereShader::Desc())) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(gfxDesc.SampleCount) @@ -217,7 +213,7 @@ RenderToCubeMapApp::OnRunning() { vsParams.lightDir = LightDir; vsParams.eyePos = eyePos; Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(this->shapes.PrimitiveGroups[4]); + Gfx::Draw(this->primGroups[4]); Gfx::EndPass(); Gfx::CommitFrame(); @@ -277,7 +273,7 @@ RenderToCubeMapApp::drawEnvShapes(Id pipeline, const glm::vec3& eyePos, const gl vsParams.lightDir = LightDir; vsParams.eyePos = eyePos; Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(this->shapes.PrimitiveGroups[shape.shapeIndex]); + Gfx::Draw(this->primGroups[shape.shapeIndex]); } } diff --git a/code/Samples/Sensors/Sensors.cc b/code/Samples/Sensors/Sensors.cc index 428a37a81..386801241 100644 --- a/code/Samples/Sensors/Sensors.cc +++ b/code/Samples/Sensors/Sensors.cc @@ -22,7 +22,8 @@ class SensorsApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(); - + + PrimitiveGroup primGroup; DrawState drawState; Shader::vsParams vsParams; glm::mat4 proj; @@ -33,24 +34,32 @@ OryolMain(SensorsApp); //------------------------------------------------------------------------------ AppState::Code SensorsApp::OnInit() { - Gfx::Setup(GfxSetup::Window(800, 400, "Oryol Device Sensor Sample")); + Gfx::Setup(GfxDesc::Window(800, 400, "Oryol Device Sensor Sample")); Dbg::Setup(); Input::Setup(); - // create a 3D cube - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Byte4N } - }; - shapeBuilder.Box(2.0, 2.0, 2.0, 1); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.CullFaceEnabled = true; - this->drawState.Pipeline = Gfx::CreateResource(ps); + // create a 3D cube + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .Box(2.0, 2.0, 2.0, 1) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .Create(); // setup transform matrices const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -79,7 +88,7 @@ SensorsApp::OnRunning() { Gfx::ApplyDrawState(this->drawState); this->vsParams.mvp = this->computeMVP(); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(); + Gfx::Draw(this->primGroup); if (!Input::SensorsAttached()) { Dbg::Print("\n Please run on mobile device!\n\r"); } diff --git a/code/Samples/Sensors/shaders.glsl b/code/Samples/Sensors/shaders.glsl index 4b73a2935..73de1d02a 100644 --- a/code/Samples/Sensors/shaders.glsl +++ b/code/Samples/Sensors/shaders.glsl @@ -3,13 +3,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 normal; +in vec4 in_pos; +in vec4 in_normal; out vec4 nrm; void main() { - gl_Position = mvp * position; - nrm = normal; + gl_Position = mvp * in_pos; + nrm = in_normal; } @end diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index ce380df09..7d1d48c84 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -28,7 +28,7 @@ class SeparateBuffersApp : public App { glm::mat4 computeMVP(const glm::vec3& pos); static const int NumColorBuffer = 3; - ShapeBuilder::Result cubeShape; + PrimitiveGroup cubePrimGroup; StaticArray colorBuffers; DrawState drawState; Shader::params params; @@ -48,13 +48,19 @@ SeparateBuffersApp::OnInit() { // create a cube mesh with positions only, this will be placed // into the first vertex buffer bind slot - ShapeBuilder shapeBuilder; - this->cubeShape = shapeBuilder - .AddPositions("in_pos", VertexFormat::Float3) + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1) .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->cubeShape.VertexBufferDesc, this->cubeShape.Data); - this->drawState.IndexBuffer = Gfx::CreateBuffer(this->cubeShape.IndexBufferDesc, this->cubeShape.Data); + this->cubePrimGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); // create 3 meshes with only color data static const int NumVertices = 24; @@ -73,10 +79,9 @@ SeparateBuffersApp::OnInit() { // create shader and pipeline, the position data vertex Layout // goes into the first layout slot, and the color data vertex layout into the second slot this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(0, this->cubeShape.Layout) .Layout(1, { { "in_color", VertexFormat::Float3 } }) - .IndexType(this->cubeShape.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(gfxDesc.SampleCount) @@ -110,7 +115,7 @@ SeparateBuffersApp::OnRunning() { Gfx::ApplyDrawState(this->drawState); this->params.mvp = this->computeMVP(positions[i]); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(this->cubeShape.PrimitiveGroups[0]); + Gfx::Draw(this->cubePrimGroup); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index ba59cab7c..1e7d18cd1 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -17,9 +17,9 @@ class ShapeApp : public App { AppState::Code OnInit(); AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - - ShapeBuilder::Result shapes; - DrawState drawState; + + DrawState drawState; + Array primGroups; Shader::params params; glm::mat4 view; glm::mat4 proj; @@ -35,29 +35,32 @@ ShapeApp::OnInit() { auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Oryol Shapes Sample"); Gfx::Setup(gfxDesc); - ShapeBuilder shapeBuilder; - shapeBuilder.RandomColors = true; - this->shapes = shapeBuilder - .AddPositions("position", VertexFormat::Float3) - .AddColors("color0", VertexFormat::UByte4N) - .Box(1.0f, 1.0f, 1.0f, 4) - .Sphere(0.75f, 36, 20) - .Cylinder(0.5f, 1.5f, 36, 10) - .Torus(0.3f, 0.5f, 20, 36) + auto shapes = ShapeBuilder::New() + .RandomColors(true) + .Positions("position", VertexFormat::Float3) + .Colors("color0", VertexFormat::UByte4N) + .Box(1.0f, 1.0f, 1.0f, 4) + .Sphere(0.75f, 36, 20) + .Cylinder(0.5f, 1.5f, 36, 10) + .Torus(0.3f, 0.5f, 20, 36) .Plane(1.5f, 1.5f, 10) .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(this->shapes.VertexBufferDesc, this->shapes.Data); - this->drawState.IndexBuffer = Gfx::CreateBuffer(this->shapes.IndexBufferDesc, this->shapes.Data); - - Id shd = Gfx::CreateShader(Shader::Desc()); + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shapes.VertexBufferDesc) + .Content(shapes.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shapes.IndexBufferDesc) + .Content(shapes.Data) + .Create(); this->drawState.Pipeline = Gfx::Pipeline() - .Shader(shd) - .Layout(0, this->shapes.Layout) - .IndexType(this->shapes.IndexType) + .From(shapes.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(gfxDesc.SampleCount) .Create(); + this->primGroups = std::move(shapes.PrimitiveGroups); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -87,7 +90,7 @@ ShapeApp::OnRunning() { for (const auto& pos : positions) { this->params.mvp = this->computeMVP(pos); Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(this->shapes.PrimitiveGroups[primGroupIndex++]); + Gfx::Draw(this->primGroups[primGroupIndex++]); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index cba94e409..997f75921 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -20,8 +20,8 @@ class SimpleRenderTargetApp : public App { glm::mat4 computeMVP(const glm::mat4& proj, float rotX, float rotY, const glm::vec3& pos); - ShapeBuilder::Result donutShape; - ShapeBuilder::Result sphereShape; + PrimitiveGroup donutPrimGroup; + PrimitiveGroup spherePrimGroup; Id renderPass; DrawState offscreenDrawState; DrawState displayDrawState; @@ -67,26 +67,23 @@ SimpleRenderTargetApp::OnInit() { // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) - ShapeBuilder shapeBuilder; - this->donutShape = shapeBuilder - .AddPositions("in_pos", VertexFormat::Float3) - .AddNormals("in_normal", VertexFormat::Byte4N) + auto donut = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) .Torus(0.3f, 0.5f, 20, 36) .Build(); + this->donutPrimGroup = donut.PrimitiveGroups[0]; this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(this->donutShape.VertexBufferDesc) - .Content(this->donutShape.Data) + .From(donut.VertexBufferDesc) + .Content(donut.Data) .Create(); this->offscreenDrawState.IndexBuffer = Gfx::Buffer() - .From(this->donutShape.IndexBufferDesc) - .Content(this->donutShape.Data) + .From(donut.IndexBufferDesc) + .Content(donut.Data) .Create(); - - // create shader and pipeline-state-object for offscreen rendering this->offscreenDrawState.Pipeline = Gfx::Pipeline() + .From(donut.PipelineDesc) .Shader(Gfx::CreateShader(OffscreenShader::Desc())) - .Layout(0, this->donutShape.Layout) - .IndexType(this->donutShape.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) @@ -95,24 +92,24 @@ SimpleRenderTargetApp::OnInit() { .Create(); // create a sphere mesh, shader and pipeline object for rendering to display - this->sphereShape = shapeBuilder - .AddPositions("in_pos", VertexFormat::Float3) - .AddNormals("in_normal", VertexFormat::Byte4N) - .AddTexCoords("in_uv", VertexFormat::Float2) + auto sphere = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .TexCoords("in_uv", VertexFormat::Float2) .Sphere(0.5f, 72, 40) - .Build(); + .Build(); + this->spherePrimGroup = sphere.PrimitiveGroups[0]; this->displayDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(this->sphereShape.VertexBufferDesc) - .Content(this->sphereShape.Data) + .From(sphere.VertexBufferDesc) + .Content(sphere.Data) .Create(); this->displayDrawState.IndexBuffer = Gfx::Buffer() - .From(this->sphereShape.IndexBufferDesc) - .Content(this->sphereShape.Data) + .From(sphere.IndexBufferDesc) + .Content(sphere.Data) .Create(); this->displayDrawState.Pipeline = Gfx::Pipeline() + .From(sphere.PipelineDesc) .Shader(Gfx::CreateShader(DisplayShader::Desc())) - .Layout(0, this->sphereShape.Layout) - .IndexType(this->sphereShape.IndexType) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(gfxDesc.SampleCount) @@ -142,7 +139,7 @@ SimpleRenderTargetApp::OnRunning() { Gfx::ApplyDrawState(this->offscreenDrawState); this->offscreenParams.mvp = this->computeMVP(this->offscreenProj, this->angleX, this->angleY, glm::vec3(0.0f, 0.0f, -3.0f)); Gfx::ApplyUniformBlock(this->offscreenParams); - Gfx::Draw(this->donutShape.PrimitiveGroups[0]); + Gfx::Draw(this->donutPrimGroup); Gfx::EndPass(); // render sphere to display, with offscreen render target as texture @@ -150,7 +147,7 @@ SimpleRenderTargetApp::OnRunning() { Gfx::ApplyDrawState(this->displayDrawState); this->displayVSParams.mvp = this->computeMVP(this->displayProj, -this->angleX * 0.25f, this->angleY * 0.25f, glm::vec3(0.0f, 0.0f, -1.5f)); Gfx::ApplyUniformBlock(this->displayVSParams); - Gfx::Draw(this->sphereShape.PrimitiveGroups[0]); + Gfx::Draw(this->spherePrimGroup); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index 60d16e3a9..5fecbdc2e 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -46,7 +46,8 @@ class TestInputApp : public App { float maxLatitude; float minDist; float maxDist; - + + PrimitiveGroup primGroup; DrawState drawState; glm::vec2 startPolar; glm::vec2 polar; @@ -66,9 +67,9 @@ OryolMain(TestInputApp); //------------------------------------------------------------------------------ AppState::Code TestInputApp::OnInit() { - auto gfxSetup = GfxSetup::Window(800, 400, "Oryol Input Test Sample"); - gfxSetup.HighDPI = true; - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::Window(800, 400, "Oryol Input Test Sample"); + gfxDesc.HighDPI = true; + Gfx::Setup(gfxDesc); Dbg::Setup(); if (Gfx::DisplayAttrs().WindowWidth > 800) { Dbg::TextScale(2.0f, 2.0f); @@ -89,20 +90,28 @@ TestInputApp::OnInit() { return PointerLockMode::DontCare; }); - // create a 3D cube - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Byte4N } - }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 1); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - Id shd = Gfx::CreateResource(Shader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - ps.RasterizerState.CullFaceEnabled = true; - this->drawState.Pipeline = Gfx::CreateResource(ps); + // create a 3D cube + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .Box(1.0f, 1.0f, 1.0f, 1) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -472,7 +481,7 @@ TestInputApp::drawCube() { vsParams.mvp = this->proj * this->view; Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(); + Gfx::Draw(this->primGroup); } //------------------------------------------------------------------------------ diff --git a/code/Samples/TestInput/shaders.glsl b/code/Samples/TestInput/shaders.glsl index 3c5694043..3a2484bad 100644 --- a/code/Samples/TestInput/shaders.glsl +++ b/code/Samples/TestInput/shaders.glsl @@ -2,13 +2,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec4 normal; +in vec4 in_pos; +in vec4 in_normal; out vec4 nrm; void main() { - gl_Position = mvp * position; - nrm = normal; + gl_Position = mvp * in_pos; + nrm = in_normal; } @end diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index 4de542de5..d75867673 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -22,7 +22,8 @@ class VertexTextureApp : public App { glm::mat4 computeMVP(const glm::vec2& angles); Id plasmaRenderPass; - DrawState plasmaDrawState; + DrawState plasmaDrawState; + PrimitiveGroup planePrimGroup; DrawState planeDrawState; glm::mat4 view; @@ -37,43 +38,60 @@ OryolMain(VertexTextureApp); AppState::Code VertexTextureApp::OnInit() { // setup rendering system - Gfx::Setup(GfxSetup::WindowMSAA4(800, 600, "Oryol Vertex Texture Sample")); + Gfx::Setup(GfxDesc::WindowMSAA4(800, 600, "Oryol Vertex Texture Sample")); Dbg::Setup(); // FIXME: need a way to check number of vertex texture units - // create RGBA offscreen render pass which holds the plasma - auto rtSetup = TextureSetup::RenderTarget2D(256, 256, PixelFormat::RGBA8); - rtSetup.Sampler.MinFilter = TextureFilterMode::Nearest; - rtSetup.Sampler.MagFilter = TextureFilterMode::Nearest; - Id plasmaTex = Gfx::CreateResource(rtSetup); - auto passSetup = PassSetup::From(plasmaTex); - passSetup.DefaultAction.DontCareColor(0); - this->plasmaRenderPass = Gfx::CreateResource(passSetup); + // create RGBA offscreen render pass which holds the plasma + Id plasmaTex = Gfx::Texture() + .RenderTarget(true) + .Width(256) + .Height(256) + .Format(PixelFormat::RGBA8) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .Create(); + this->plasmaRenderPass = Gfx::Pass() + .ColorAttachment(0, plasmaTex) + .Create(); - // setup draw state for offscreen rendering to float render target - auto quadSetup = MeshSetup::FullScreenQuad(); - this->plasmaDrawState.Mesh[0] = Gfx::CreateResource(quadSetup); - Id plasmaShader = Gfx::CreateResource(PlasmaShader::Setup()); - auto ps = PipelineSetup::FromLayoutAndShader(quadSetup.Layout, plasmaShader); - ps.BlendState.ColorFormat = rtSetup.ColorFormat; - ps.BlendState.DepthFormat = rtSetup.DepthFormat; - this->plasmaDrawState.Pipeline = Gfx::CreateResource(ps); + // setup draw state for offscreen rendering to float render target + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + this->plasmaDrawState.VertexBuffers[0] = Gfx::Buffer() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Create(); + this->plasmaDrawState.Pipeline = Gfx::Pipeline() + .Shader(Gfx::CreateShader(PlasmaShader::Desc())) + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) + .ColorFormat(PixelFormat::RGBA8) + .DepthFormat(PixelFormat::None) + .Create(); - // draw state for a 256x256 plane - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Plane(3.0f, 3.0f, 255); - this->planeDrawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - Id planeShader = Gfx::CreateResource(PlaneShader::Setup()); - auto psPlane = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, planeShader); - psPlane.DepthStencilState.DepthWriteEnabled = true; - psPlane.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - psPlane.RasterizerState.SampleCount = 4; - this->planeDrawState.Pipeline = Gfx::CreateResource(psPlane); + // draw state for a 256x256 plane + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Plane(3.0f, 3.0f, 255) + .Build(); + this->planePrimGroup = shape.PrimitiveGroups[0]; + this->planeDrawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->planeDrawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->planeDrawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(PlaneShader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(4) + .Create(); this->planeDrawState.VSTexture[PlaneShader::tex] = plasmaTex; const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -93,17 +111,17 @@ VertexTextureApp::OnRunning() { this->planeVSParams.mvp = this->computeMVP(glm::vec2(0.0f, 0.0f)); // render plasma to offscreen render target - Gfx::BeginPass(this->plasmaRenderPass); + Gfx::BeginPass(this->plasmaRenderPass, PassAction::DontCare()); Gfx::ApplyDrawState(this->plasmaDrawState); Gfx::ApplyUniformBlock(this->plasmaFSParams); - Gfx::Draw(); + Gfx::Draw(0, 4); Gfx::EndPass(); // render displacement mapped plane shape Gfx::BeginPass(); Gfx::ApplyDrawState(this->planeDrawState); Gfx::ApplyUniformBlock(this->planeVSParams); - Gfx::Draw(); + Gfx::Draw(this->planePrimGroup); Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/VertexTexture/shaders.glsl b/code/Samples/VertexTexture/shaders.glsl index 5c2ce91be..a969b03df 100644 --- a/code/Samples/VertexTexture/shaders.glsl +++ b/code/Samples/VertexTexture/shaders.glsl @@ -76,12 +76,11 @@ float snoise(vec2 v) //------------------------------------------------------------------------------ @vs plasmaVS -in vec4 position; -in vec2 texcoord0; +in vec2 in_pos; out vec2 uv; void main() { - gl_Position = position; - uv = texcoord0; + gl_Position = vec4(in_pos * 2.0 - 1.0, 0.5, 1.0); + uv = in_pos; } @end @@ -130,13 +129,13 @@ uniform vsParams { mat4 mvp; }; uniform sampler2D tex; -in vec4 position; -in vec2 texcoord0; +in vec4 in_pos; +in vec2 in_uv; out vec4 color; void main() { - color = texture(tex, texcoord0); - vec4 pos = position; + color = texture(tex, in_uv); + vec4 pos = in_pos; pos.y = color.w; color.w = 1.0; gl_Position = mvp * pos; diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index e0ba250b3..355fb27c0 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -22,6 +22,7 @@ class VolumeTextureApp : public App { AppState::Code notSupported(); // render a warning if 3D textures not supported by platform void computeShaderParams(); + PrimitiveGroup primGroup; DrawState drawState; Shader::vsParams vsParams; int frameIndex = 0; @@ -32,9 +33,8 @@ OryolMain(VolumeTextureApp); //------------------------------------------------------------------------------ AppState::Code VolumeTextureApp::OnInit() { - auto gfxSetup = GfxSetup::WindowMSAA4(800, 600, "3D Texture Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f)); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "3D Texture Sample"); + Gfx::Setup(gfxDesc); Dbg::Setup(); // if 3D textures not supported show a warning later during rendering @@ -61,25 +61,39 @@ VolumeTextureApp::OnInit() { } p.z += 1.0f / dim; } - auto texSetup = TextureSetup::FromPixelData3D(dim, dim, dim, 1, PixelFormat::RGBA8); - texSetup.Sampler.MinFilter = TextureFilterMode::Linear; - texSetup.Sampler.MagFilter = TextureFilterMode::Linear; - texSetup.ImageData.Sizes[0][0] = sizeof(data); - this->drawState.FSTexture[Shader::tex] = Gfx::CreateResource(texSetup, data, sizeof(data)); + this->drawState.FSTexture[Shader::tex] = Gfx::Texture() + .Type(TextureType::Texture3D) + .Width(dim) + .Height(dim) + .Depth(dim) + .Format(PixelFormat::RGBA8) + .MinFilter(TextureFilterMode::Linear) + .MagFilter(TextureFilterMode::Linear) + .MipDataSize(0, 0, sizeof(data)) + .Content(data, sizeof(data)) + .Create(); // create a cube which will be the hull geometry for raycasting through the 3D texture - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { { VertexAttr::Position, VertexFormat::Float3 } }; - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 1); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - - // pipeline state for rendering the 3D-textures cube - Id shd = Gfx::CreateResource(Shader::Setup()); - auto pipSetup = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - pipSetup.DepthStencilState.DepthWriteEnabled = true; - pipSetup.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - pipSetup.RasterizerState.SampleCount = gfxSetup.SampleCount; - this->drawState.Pipeline = Gfx::CreateResource(pipSetup); + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Box(1.0f, 1.0f, 1.0f, 1) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); // setup a projection matrix with the right aspect ratio const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -101,10 +115,10 @@ VolumeTextureApp::OnRunning() { this->computeShaderParams(); // render the rotating cube - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f))); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(); + Gfx::Draw(this->primGroup); Gfx::EndPass(); Gfx::CommitFrame(); this->frameIndex++; diff --git a/code/Samples/VolumeTexture/shaders.glsl b/code/Samples/VolumeTexture/shaders.glsl index 9a9c7dd29..58184437c 100644 --- a/code/Samples/VolumeTexture/shaders.glsl +++ b/code/Samples/VolumeTexture/shaders.glsl @@ -6,13 +6,13 @@ uniform vsParams { mat4 mvp; vec4 modelEyePos; }; -in vec4 position; +in vec4 in_pos; out vec3 eyePos; out vec3 surfPos; void main() { - gl_Position = mvp * position; + gl_Position = mvp * in_pos; eyePos = modelEyePos.xyz + vec3(0.5, 0.5, 0.5); - surfPos = position.xyz + vec3(0.5, 0.5, 0.5); + surfPos = in_pos.xyz + vec3(0.5, 0.5, 0.5); } @end From 99c2cafd99da9423badc10fcba984486e0a8a9e9 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Thu, 18 Jan 2018 19:36:33 +0100 Subject: [PATCH 27/91] new async texture loading, TextureCube sample working --- code/Modules/Assets/CMakeLists.txt | 2 +- code/Modules/Assets/Gfx/TextureLoader.cc | 161 +++++++------------- code/Modules/Assets/Gfx/TextureLoader.h | 33 +--- code/Modules/Gfx/Gfx.cc | 66 ++++++++ code/Modules/Gfx/Gfx.h | 41 +++-- code/Modules/Gfx/GfxTypes.h | 5 +- code/Modules/Gfx/private/sokolGfxBackend.cc | 161 +++++++++++++------- code/Modules/Gfx/private/sokolGfxBackend.h | 25 +-- code/Samples/DDSCubeMap/DDSCubeMap.cc | 75 ++++----- code/Samples/DDSCubeMap/shaders.glsl | 8 +- 10 files changed, 318 insertions(+), 259 deletions(-) diff --git a/code/Modules/Assets/CMakeLists.txt b/code/Modules/Assets/CMakeLists.txt index 0fedac9fd..7e0596452 100644 --- a/code/Modules/Assets/CMakeLists.txt +++ b/code/Modules/Assets/CMakeLists.txt @@ -5,7 +5,7 @@ fips_begin_module(Assets) MeshBuilder.cc MeshBuilder.h ShapeBuilder.cc ShapeBuilder.h VertexWriter.cc VertexWriter.h -# TextureLoader.cc TextureLoader.h + TextureLoader.cc TextureLoader.h # OmshParser.cc OmshParser.h # MeshLoader.cc MeshLoader.h ) diff --git a/code/Modules/Assets/Gfx/TextureLoader.cc b/code/Modules/Assets/Gfx/TextureLoader.cc index 20eb116c7..0257d2108 100644 --- a/code/Modules/Assets/Gfx/TextureLoader.cc +++ b/code/Modules/Assets/Gfx/TextureLoader.cc @@ -5,104 +5,20 @@ #include "TextureLoader.h" #include "IO/IO.h" #include "Gfx/Gfx.h" -#include "Gfx/private/gfxResourceContainer.h" #define GLIML_ASSERT(x) o_assert(x) #include "gliml.h" namespace Oryol { //------------------------------------------------------------------------------ -TextureLoader::TextureLoader(const TextureSetup& setup_) : -TextureLoaderBase(setup_) { - // empty -} - -//------------------------------------------------------------------------------ -TextureLoader::TextureLoader(const TextureSetup& setup_, LoadedFunc loadedFunc_) : -TextureLoaderBase(setup_, loadedFunc_) { - // empty -} - -//------------------------------------------------------------------------------ -TextureLoader::~TextureLoader() { - o_assert_dbg(!this->ioRequest); -} - -//------------------------------------------------------------------------------ -void -TextureLoader::Cancel() { - if (this->ioRequest) { - this->ioRequest->Cancelled = true; - this->ioRequest = nullptr; - } -} - -//------------------------------------------------------------------------------ -Id -TextureLoader::Start() { - this->resId = Gfx::resource()->prepareAsync(this->setup); - this->ioRequest = IO::LoadFile(setup.Locator.Location()); - return this->resId; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -TextureLoader::Continue() { - o_assert_dbg(this->resId.IsValid()); - o_assert_dbg(this->ioRequest.isValid()); - - ResourceState::Code result = ResourceState::Pending; - - if (this->ioRequest->Handled) { - if (IOStatus::OK == this->ioRequest->Status) { - // yeah, IO is done, let gliml parse the texture data - // and create the texture resource - const uint8_t* data = this->ioRequest->Data.Data(); - const int numBytes = this->ioRequest->Data.Size(); - - gliml::context ctx; - ctx.enable_dxt(true); - ctx.enable_pvrtc(true); - ctx.enable_etc2(true); - if (ctx.load(data, numBytes)) { - TextureSetup texSetup = this->buildSetup(this->setup, &ctx, data); - - // call the Loaded callback if defined, this - // gives the app a chance to look at the - // setup object, and possibly modify it - if (this->onLoaded) { - this->onLoaded(texSetup); - } - - // NOTE: the prepared texture resource might have already been - // destroyed at this point, if this happens, initAsync will - // silently fail and return ResourceState::InvalidState - // (the same for failedAsync) - result = Gfx::resource()->initAsync(this->resId, texSetup, data, numBytes); - } - else { - result = Gfx::resource()->failedAsync(this->resId); - } - } - else { - // IO had failed - result = Gfx::resource()->failedAsync(this->resId); - } - this->ioRequest = nullptr; - } - return result; -} - -//------------------------------------------------------------------------------ -TextureSetup -TextureLoader::buildSetup(const TextureSetup& blueprint, const gliml::context* ctx, const uint8_t* data) { - const int w = ctx->image_width(0, 0); - const int h = ctx->image_height(0, 0); - const int d = ctx->image_depth(0, 0); - const int numFaces = ctx->num_faces(); - const int numMips = ctx->num_mipmaps(0); - PixelFormat::Code pixelFormat = PixelFormat::InvalidPixelFormat; - switch(ctx->image_internal_format()) { +static TextureDesc buildDesc(const TextureDesc& blueprint, const gliml::context& ctx, const uint8_t* data) { + const int w = ctx.image_width(0, 0); + const int h = ctx.image_height(0, 0); + const int d = ctx.image_depth(0, 0); + const int numFaces = ctx.num_faces(); + const int numMips = ctx.num_mipmaps(0); + PixelFormat::Code pixelFormat = PixelFormat::Invalid; + switch(ctx.image_internal_format()) { case GLIML_GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: pixelFormat = PixelFormat::DXT1; break; @@ -131,16 +47,16 @@ TextureLoader::buildSetup(const TextureSetup& blueprint, const gliml::context* c pixelFormat = PixelFormat::ETC2_SRGB8; break; case GLIML_GL_RGB: - if (ctx->image_type() == GLIML_GL_UNSIGNED_BYTE) { + if (ctx.image_type() == GLIML_GL_UNSIGNED_BYTE) { pixelFormat = PixelFormat::RGB8; } - else if (ctx->image_type() == GLIML_GL_UNSIGNED_SHORT_5_6_5) { + else if (ctx.image_type() == GLIML_GL_UNSIGNED_SHORT_5_6_5) { pixelFormat = PixelFormat::R5G6B5; } break; - + case GLIML_GL_RGBA: - switch (ctx->image_type()) { + switch (ctx.image_type()) { case GLIML_GL_UNSIGNED_BYTE: pixelFormat = PixelFormat::RGBA8; break; @@ -154,37 +70,64 @@ TextureLoader::buildSetup(const TextureSetup& blueprint, const gliml::context* c break; } break; - + default: break; } - o_assert(PixelFormat::InvalidPixelFormat != pixelFormat); - TextureSetup newSetup; - switch (ctx->texture_target()) { + o_assert(PixelFormat::Invalid != pixelFormat); + auto bld = TextureBuilder::New() + .From(blueprint) + .Width(w) + .Height(h) + .NumMipMaps(numMips) + .Format(pixelFormat); + switch (ctx.texture_target()) { case GLIML_GL_TEXTURE_2D: - newSetup = TextureSetup::FromPixelData2D(w, h, numMips, pixelFormat, this->setup); + bld.Type(TextureType::Texture2D); break; case GLIML_GL_TEXTURE_3D: - newSetup = TextureSetup::FromPixelData3D(w, h, d, numMips, pixelFormat, this->setup); + bld.Type(TextureType::Texture3D).Depth(d); break; case GLIML_GL_TEXTURE_CUBE_MAP: - newSetup = TextureSetup::FromPixelDataCube(w, h, numMips, pixelFormat, this->setup); + bld.Type(TextureType::TextureCube); break; default: o_error("Unknown texture type!\n"); break; } - + // setup mipmap offsets - o_assert_dbg(GfxConfig::MaxNumTextureMipMaps >= ctx->num_mipmaps(0)); + o_assert_dbg(GfxConfig::MaxNumTextureMipMaps >= ctx.num_mipmaps(0)); for (int faceIndex = 0; faceIndex < numFaces; faceIndex++) { for (int mipIndex = 0; mipIndex < numMips; mipIndex++) { - const uint8_t* cur = (const uint8_t*) ctx->image_data(faceIndex, mipIndex); - newSetup.ImageData.Offsets[faceIndex][mipIndex] = int(cur - data); - newSetup.ImageData.Sizes[faceIndex][mipIndex] = ctx->image_size(faceIndex, mipIndex); + const uint8_t* cur = (const uint8_t*) ctx.image_data(faceIndex, mipIndex); + bld.MipDataOffset(faceIndex, mipIndex, int(cur - data)); + bld.MipDataSize(faceIndex, mipIndex, ctx.image_size(faceIndex, mipIndex)); } } - return newSetup; + return bld.Desc; +} + +//------------------------------------------------------------------------------ +Id +TextureLoader::Load(const TextureDesc& desc) { + Id resId = Gfx::AllocTexture(desc.Locator); + IO::Load(URL(desc.Locator.Location()), [resId, desc](IO::LoadResult result) { + const uint8_t* data = result.Data.Data(); + const int dataSize = result.Data.Size(); + gliml::context ctx; + ctx.enable_dxt(true); + ctx.enable_pvrtc(true); + ctx.enable_etc2(true); + if (ctx.load(data, dataSize)) { + TextureDesc initDesc = buildDesc(desc, ctx, data); + Gfx::InitTexture(resId, initDesc, data, dataSize); + } + }, + [resId](const URL& url, IOStatus::Code ioStatus) { + Gfx::FailTexture(resId); + }); + return resId; } } // namespace Oryol diff --git a/code/Modules/Assets/Gfx/TextureLoader.h b/code/Modules/Assets/Gfx/TextureLoader.h index 2713d4e92..ed1b7c34c 100644 --- a/code/Modules/Assets/Gfx/TextureLoader.h +++ b/code/Modules/Assets/Gfx/TextureLoader.h @@ -5,37 +5,14 @@ @ingroup Assets @brief standard texture loader for most block-compressed texture file formats */ -#include "Gfx/TextureLoaderBase.h" -#include "IO/private/ioRequests.h" - -namespace gliml { -class context; -} +#include "Gfx/GfxTypes.h" namespace Oryol { -class TextureLoader : public TextureLoaderBase { - OryolClassDecl(TextureLoader); +class TextureLoader { public: - /// constructor without success-callback - TextureLoader(const TextureSetup& setup); - /// constructor with success callback - TextureLoader(const TextureSetup& setup, LoadedFunc onLoaded); - /// destructor - ~TextureLoader(); - /// start loading, return a resource id - virtual Id Start() override; - /// continue loading, return resource state (Pending, Valid, Failed) - virtual ResourceState::Code Continue() override; - /// cancel the load process - virtual void Cancel() override; - -private: - /// convert gliml context attrs into a TextureSetup object - TextureSetup buildSetup(const TextureSetup& blueprint, const gliml::context* ctx, const uint8_t* data); - - Id resId; - Ptr ioRequest; + /// asynchronously load a texture from an URL + static Id Load(const TextureDesc& desc); }; -} // namespace Oryol \ No newline at end of file +} // namespace Oryol diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 7f8a2bb40..a69ad0dfc 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -383,6 +383,72 @@ Gfx::CreatePass(const PassDesc& desc) { } return resId; } + +//------------------------------------------------------------------------------ +Id +Gfx::AllocBuffer(const Locator& loc) { + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(loc); + if (!resId.IsValid()) { + resId = state->backend.AllocBuffer(); + state->backend.AddResource(loc, resId); + } + return resId; +} + +//------------------------------------------------------------------------------ +Id +Gfx::AllocTexture(const Locator& loc) { + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(loc); + if (!resId.IsValid()) { + resId = state->backend.AllocTexture(); + state->backend.AddResource(loc, resId); + } + return resId; +} + +//------------------------------------------------------------------------------ +void +Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int size) { + o_assert_dbg(IsValid()); + state->backend.InitBuffer(id, desc, data, size); +} + +//------------------------------------------------------------------------------ +void +Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const MemoryBuffer& data) { + o_assert_dbg(IsValid()); + state->backend.InitBuffer(id, desc, data.Data(), data.Size()); +} + +//------------------------------------------------------------------------------ +void +Gfx::InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size) { + o_assert_dbg(IsValid()); + state->backend.InitTexture(id, desc, data, size); +} + +//------------------------------------------------------------------------------ +void +Gfx::InitTexture(const Id& id, const TextureDesc& desc, const MemoryBuffer& data) { + o_assert_dbg(IsValid()); + state->backend.InitTexture(id, desc, data.Data(), data.Size()); +} + +//------------------------------------------------------------------------------ +void +Gfx::FailBuffer(const Id& id) { + o_assert_dbg(IsValid()); + state->backend.FailBuffer(id); +} + +//------------------------------------------------------------------------------ +void +Gfx::FailTexture(const Id& id) { + o_assert_dbg(IsValid()); + state->backend.FailTexture(id); +} //------------------------------------------------------------------------------ void diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 60956560f..01cb29159 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -65,30 +65,49 @@ class Gfx { /// push explicit resource label on label stack static void PushResourceLabel(ResourceLabel label); /// pop resource label from label stack - static ResourceLabel PopResourceLabel(); + static ResourceLabel PopResourceLabel(); + /// create a buffer object without associated data static Id CreateBuffer(const BufferDesc& desc); /// create a buffer object with associated data - static Id CreateBuffer(const BufferDesc& setup, const MemoryBuffer& data); + static Id CreateBuffer(const BufferDesc& desc, const MemoryBuffer& data); /// create a buffer object with raw pointer to associated data - static Id CreateBuffer(const BufferDesc& setup, const void* data, int size); + static Id CreateBuffer(const BufferDesc& desc, const void* data, int size); /// create a texture object without associated data static Id CreateTexture(const TextureDesc& desc); /// create a texture object with associated data - static Id CreateTexture(const TextureDesc& setup, const MemoryBuffer& data); + static Id CreateTexture(const TextureDesc& desc, const MemoryBuffer& data); /// create a texture object with raw pointer to associated data - static Id CreateTexture(const TextureDesc& setup, const void* data, int size); + static Id CreateTexture(const TextureDesc& desc, const void* data, int size); /// create a shader object static Id CreateShader(const ShaderDesc& desc); /// create a pipeline object static Id CreatePipeline(const PipelineDesc& desc); /// create a render-pass object - static Id CreatePass(const PassDesc& desc); - /// lookup a resource Id by Locator - static Id LookupResource(const Locator& locator); - /// destroy one or several resources by matching label - static void DestroyResources(ResourceLabel label); - + static Id CreatePass(const PassDesc& desc); + + /// lookup a resource Id by Locator + static Id LookupResource(const Locator& locator); + /// destroy one or several resources by matching label + static void DestroyResources(ResourceLabel label); + + /// allocate a buffer resource id (async resource creation) + static Id AllocBuffer(const Locator& loc); + /// initialize a buffer (async resource creation) + static void InitBuffer(const Id& id, const BufferDesc& desc, const MemoryBuffer& data); + /// initialize a buffer (async resource creation) + static void InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int size); + /// set allocated buffer to failed resource state (async resource creation) + static void FailBuffer(const Id& id); + /// allocate a texture resource id (async resource creation) + static Id AllocTexture(const Locator& loc); + /// initialize a texture (async resource creation) + static void InitTexture(const Id& id, const TextureDesc& desc, const MemoryBuffer& data); + /// initialize a texture (async resource creation) + static void InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size); + /// set allocated texture to failed resource state (async resource creation) + static void FailTexture(const Id& id); + /// test if an optional feature is supported static bool QueryFeature(GfxFeature::Code feat); /// get the supported shader language diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 8dcfc9c27..28d0a1de7 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -1251,7 +1251,10 @@ class TextureBuilder { public: TextureDesc Desc; const void* ContentPtr = nullptr; - int ContentSize = 0; + int ContentSize = 0; + static TextureBuilder New() { + return TextureBuilder(); + } TextureBuilder& From(const TextureDesc& desc) { Desc = desc; return *this; } diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 729127b66..6a1888ee4 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -454,6 +454,66 @@ static sg_feature convertFeature(GfxFeature::Code f) { } } +//------------------------------------------------------------------------------ +static void convertBufferDesc(const BufferDesc& src, sg_buffer_desc& dst, const void* data) { + dst.size = src.Size; + dst.type = convertBufferType(src.Type); + dst.usage = convertUsage(src.Usage); + dst.content = (uint8_t*)data + src.Offset; + o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); + #if ORYOL_OPENGL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + dst.gl_buffers[i] = (uint32_t) src.NativeBuffers[i]; + } + #elif ORYOL_METAL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + dst.mtl_buffers[i] = (const void*) src.NativeBuffers[i]; + } + #elif ORYOL_D3D11 + dst.d3d11_buffer = (const void*) src.NativeBuffers[0] + #endif +} + +//------------------------------------------------------------------------------ +static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst, const void* data) { + dst.type = convertTextureType(src.Type); + dst.render_target = src.RenderTarget; + dst.width = src.Width; + dst.height = src.Height; + dst.depth = src.Depth; + dst.num_mipmaps = src.NumMipMaps; + dst.usage = convertUsage(src.Usage); + dst.pixel_format = convertPixelFormat(src.Format); + dst.sample_count = src.SampleCount; + dst.min_filter = convertFilter(src.MinFilter); + dst.mag_filter = convertFilter(src.MagFilter); + dst.wrap_u = convertWrap(src.WrapU); + dst.wrap_v = convertWrap(src.WrapV); + dst.wrap_w = convertWrap(src.WrapW); + o_assert_dbg(GfxConfig::MaxNumTextureMipMaps <= SG_MAX_MIPMAPS); + o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); + for (int f = 0; f < GfxConfig::MaxNumTextureFaces; f++) { + for (int m = 0; m < GfxConfig::MaxNumTextureMipMaps; m++) { + if (src.ImageData.Sizes[f][m] > 0) { + dst.content.subimage[f][m].ptr = (uint8_t*)data + src.ImageData.Offsets[f][m]; + dst.content.subimage[f][m].size = src.ImageData.Sizes[f][m]; + } + } + } + o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); + #if ORYOL_OPENGL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + dst.gl_textures[i] = (uint32_t) src.NativeTextures[i]; + } + #elif ORYOL_METAL + for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { + dst.mtl_buffers[i] = (const void*) src.NativeTextures[i]; + } + #elif ORYOL_D3D11 + dst.d3d11_buffer = (const void*) src.NativeTextures[0] + #endif +} + //------------------------------------------------------------------------------ sokolGfxBackend::~sokolGfxBackend() { o_assert(!this->isValid); @@ -588,69 +648,66 @@ sokolGfxBackend::CreateBuffer(const BufferDesc& desc, const void* data, int data o_assert_dbg(this->isValid); o_assert_dbg((data == nullptr) || (desc.Size+desc.Offset) <= dataSize); sg_buffer_desc sgDesc = { }; - sgDesc.size = desc.Size; - sgDesc.type = convertBufferType(desc.Type); - sgDesc.usage = convertUsage(desc.Usage); - sgDesc.content = (uint8_t*)data + desc.Offset; - o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); - #if ORYOL_OPENGL - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.gl_buffers[i] = (uint32_t) desc.NativeBuffers[i]; - } - #elif ORYOL_METAL - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.mtl_buffers[i] = (const void*) desc.NativeBuffers[i]; - } - #elif ORYOL_D3D11 - sgDesc.d3d11_buffer = (const void*) desc.NativeBuffers[0] - #endif + convertBufferDesc(desc, sgDesc, data); return makeId(GfxResourceType::Buffer, sg_make_buffer(&sgDesc).id); } +//------------------------------------------------------------------------------ +Id +sokolGfxBackend::AllocBuffer() { + o_assert_dbg(this->isValid); + return makeId(GfxResourceType::Buffer, sg_alloc_buffer().id); +} + +//------------------------------------------------------------------------------ +void +sokolGfxBackend::InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int dataSize) { + o_assert_dbg(this->isValid); + o_assert_dbg((data == nullptr) || (desc.Size+desc.Offset) <= dataSize); + sg_buffer_desc sgDesc = { }; + convertBufferDesc(desc, sgDesc, data); + sg_init_buffer(makeBufferId(id), &sgDesc); +} + +//------------------------------------------------------------------------------ +void +sokolGfxBackend::FailBuffer(const Id& id) { + o_assert_dbg(this->isValid); + sg_fail_buffer(makeBufferId(id)); +} + //------------------------------------------------------------------------------ Id sokolGfxBackend::CreateTexture(const TextureDesc& desc, const void* data, int size) { o_assert_dbg(this->isValid); sg_image_desc sgDesc = { }; - sgDesc.type = convertTextureType(desc.Type); - sgDesc.render_target = desc.RenderTarget; - sgDesc.width = desc.Width; - sgDesc.height = desc.Height; - sgDesc.depth = desc.Depth; - sgDesc.num_mipmaps = desc.NumMipMaps; - sgDesc.usage = convertUsage(desc.Usage); - sgDesc.pixel_format = convertPixelFormat(desc.Format); - sgDesc.sample_count = desc.SampleCount; - sgDesc.min_filter = convertFilter(desc.MinFilter); - sgDesc.mag_filter = convertFilter(desc.MagFilter); - sgDesc.wrap_u = convertWrap(desc.WrapU); - sgDesc.wrap_v = convertWrap(desc.WrapV); - sgDesc.wrap_w = convertWrap(desc.WrapW); - o_assert_dbg(GfxConfig::MaxNumTextureMipMaps <= SG_MAX_MIPMAPS); - o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); - for (int f = 0; f < GfxConfig::MaxNumTextureFaces; f++) { - for (int m = 0; m < GfxConfig::MaxNumTextureMipMaps; m++) { - if (desc.ImageData.Sizes[f][m] > 0) { - sgDesc.content.subimage[f][m].ptr = (uint8_t*)data + desc.ImageData.Offsets[f][m]; - sgDesc.content.subimage[f][m].size = desc.ImageData.Sizes[f][m]; - } - } - } - o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); - #if ORYOL_OPENGL - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.gl_textures[i] = (uint32_t) desc.NativeTextures[i]; - } - #elif ORYOL_METAL - for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - sgDesc.mtl_buffers[i] = (const void*) desc.NativeTextures[i]; - } - #elif ORYOL_D3D11 - sgDesc.d3d11_buffer = (const void*) desc.NativeTextures[0] - #endif + convertTextureDesc(desc, sgDesc, data); return makeId(GfxResourceType::Texture, sg_make_image(&sgDesc).id); } +//------------------------------------------------------------------------------ +Id +sokolGfxBackend::AllocTexture() { + o_assert_dbg(this->isValid); + return makeId(GfxResourceType::Texture, sg_alloc_image().id); +} + +//------------------------------------------------------------------------------ +void +sokolGfxBackend::InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size) { + o_assert_dbg(this->isValid); + sg_image_desc sgDesc = { }; + convertTextureDesc(desc, sgDesc, data); + sg_init_image(makeImageId(id), &sgDesc); +} + +//------------------------------------------------------------------------------ +void +sokolGfxBackend::FailTexture(const Id& id) { + o_assert_dbg(this->isValid); + sg_fail_image(makeImageId(id)); +} + //------------------------------------------------------------------------------ Id sokolGfxBackend::CreateShader(const ShaderDesc& desc) { diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index cefad952b..d0e7c9643 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -58,26 +58,17 @@ class sokolGfxBackend { Id CreatePass(const PassDesc& desc); /// allocate a new buffer id - Id AllocBuffer(const Locator& loc); + Id AllocBuffer(); /// allocate a new texture id - Id AllocTexture(const Locator& loc); - /// allocate a new shader id - Id AllocShader(const Locator& loc); - /// allocate a new pipeline id - Id AllocPipeline(const Locator& loc); - /// allocate a new pass id - Id AllocPass(const Locator& loc); - + Id AllocTexture(); /// initialize a buffer - void InitBuffer(const Id& id, const BufferDesc& desc); + void InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int dataSize); /// initialize a texture - void InitTexture(const Id& id, const TextureDesc& desc); - /// initialize a shader - void InitShader(const Id& id, const ShaderDesc& desc); - /// initialize a pipeline - void InitPipeline(const Id& id, const PipelineDesc& desc); - /// initialize a pass - void InitPass(const Id& id, const PassDesc& desc); + void InitTexture(const Id& id, const TextureDesc& desc, const void* data, int dataSize); + /// set allocated, non-initialized buffer to failed resource state + void FailBuffer(const Id& id); + /// set allocated, non-initialized texture to failed resource state + void FailTexture(const Id& id); /// lookup a resource Id by locator Id LookupResource(const Locator& loc); diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index e5aae5f62..56363fdaa 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -21,7 +21,8 @@ class DDSCubeMapApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - + + PrimitiveGroup primGroup; DrawState drawState; Shader::vsParams vsParams; glm::mat4 view; @@ -38,22 +39,13 @@ DDSCubeMapApp::OnInit() { // setup IO system IOSetup ioSetup; ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); + ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); IO::Setup(ioSetup); // setup rendering system - auto gfxSetup = GfxSetup::Window(600, 400, "Oryol DXT Cube Map Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f)); - Gfx::Setup(gfxSetup); - - // create resources - Id shd = Gfx::CreateResource(Shader::Setup()); + Gfx::Setup(GfxDesc::Window(600, 400, "Oryol DXT Cube Map Sample")); - TextureSetup texBluePrint; - texBluePrint.Sampler.MinFilter = TextureFilterMode::LinearMipmapLinear; - texBluePrint.Sampler.MagFilter = TextureFilterMode::Linear; - texBluePrint.Sampler.WrapU = TextureWrapMode::ClampToEdge; - texBluePrint.Sampler.WrapV = TextureWrapMode::ClampToEdge; + // create resources StringAtom texPath; if (Gfx::QueryFeature(GfxFeature::TextureCompressionPVRTC)) { texPath = "tex:romechurch_bpp2.pvr"; @@ -61,21 +53,35 @@ DDSCubeMapApp::OnInit() { else { texPath = "tex:romechurch_dxt1.dds"; } - this->drawState.FSTexture[Shader::tex] = Gfx::LoadResource( - TextureLoader::Create(TextureSetup::FromFile(texPath, texBluePrint)) - ); - glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::Normal, VertexFormat::Float3 } - }; - shapeBuilder.Transform(rot90).Sphere(1.0f, 36, 20); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - this->drawState.Pipeline = Gfx::CreateResource(ps); + this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(Gfx::Texture() + .Locator(texPath) + .MinFilter(TextureFilterMode::LinearMipmapLinear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::ClampToEdge) + .WrapV(TextureWrapMode::ClampToEdge) + .Desc); + + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Float3) + .Transform(glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) + .Sphere(1.0f, 36, 20) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Create(); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -94,14 +100,11 @@ DDSCubeMapApp::OnRunning() { this->angleY += 0.02f; this->angleX += 0.01f; - Gfx::BeginPass(); - const Id& tex = this->drawState.FSTexture[Shader::tex]; - if (Gfx::QueryResourceInfo(tex).State == ResourceState::Valid) { - this->vsParams.mvp = this->computeMVP(glm::vec3(0.0f, 0.0f, 0.0f)); - Gfx::ApplyDrawState(this->drawState); - Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(); - } + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); + this->vsParams.mvp = this->computeMVP(glm::vec3(0.0f, 0.0f, 0.0f)); + Gfx::ApplyDrawState(this->drawState); + Gfx::ApplyUniformBlock(this->vsParams); + Gfx::Draw(this->primGroup); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/DDSCubeMap/shaders.glsl b/code/Samples/DDSCubeMap/shaders.glsl index 2bdc8a93c..9c6e22ca8 100644 --- a/code/Samples/DDSCubeMap/shaders.glsl +++ b/code/Samples/DDSCubeMap/shaders.glsl @@ -5,13 +5,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec3 normal; +in vec4 in_pos; +in vec3 in_normal; out vec3 nrm; void main() { - gl_Position = mvp * position; - nrm = normal; + gl_Position = mvp * in_pos; + nrm = in_normal; } @end From 163b471fc65cbca577b5270e830d7961fb07aca6 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Fri, 19 Jan 2018 18:03:27 +0100 Subject: [PATCH 28/91] Gfx: add resource state query functions --- code/Modules/Gfx/Gfx.cc | 37 ++++----------------- code/Modules/Gfx/Gfx.h | 10 ++---- code/Modules/Gfx/private/sokolGfxBackend.cc | 33 ++++++++++++++++++ code/Modules/Gfx/private/sokolGfxBackend.h | 3 ++ code/Modules/Resource/ResourceState.h | 13 +++----- 5 files changed, 51 insertions(+), 45 deletions(-) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index a69ad0dfc..8ecd3f8cf 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -160,6 +160,13 @@ Gfx::QueryShaderLang() { o_assert_dbg(IsValid()); return state->backend.QueryShaderLang(); } + +//------------------------------------------------------------------------------ +ResourceState::Code +Gfx::QueryResourceState(const Id& id) { + o_assert_dbg(IsValid()); + return state->backend.QueryResourceState(id); +} //------------------------------------------------------------------------------ ResourceLabel @@ -189,36 +196,6 @@ Gfx::LookupResource(const Locator& locator) { return state->backend.LookupResource(locator); } -//------------------------------------------------------------------------------ -int -Gfx::QueryFreeResourceSlots(GfxResourceType::Code resourceType) { - o_assert_dbg(IsValid()); - // FIXME - o_error("Gfx::QueryFreeResourceSlots FIXME!\n"); - return 0; - //return state->backend.resourceContainer.QueryFreeSlots(resourceType); -} - -//------------------------------------------------------------------------------ -ResourceInfo -Gfx::QueryResourceInfo(const Id& id) { - o_assert_dbg(IsValid()); - // FIXME - o_error("Gfx::QueryResourceInfo FIXME!\n"); - return ResourceInfo(); - //return state->backend.resourceContainer.QueryResourceInfo(id); -} - -//------------------------------------------------------------------------------ -ResourcePoolInfo -Gfx::QueryResourcePoolInfo(GfxResourceType::Code resType) { - o_assert_dbg(IsValid()); - // FIXME - o_error("Gfx::QueryResourcePoolInfo FIXME!\n"); - return ResourcePoolInfo(); - //return state->backend.resourceContainer.QueryPoolInfo(resType); -} - //------------------------------------------------------------------------------ void Gfx::DestroyResources(ResourceLabel label) { diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index 01cb29159..b3f014666 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -111,13 +111,9 @@ class Gfx { /// test if an optional feature is supported static bool QueryFeature(GfxFeature::Code feat); /// get the supported shader language - static ShaderLang::Code QueryShaderLang(); - /// query number of free slots for resource type - static int QueryFreeResourceSlots(GfxResourceType::Code resourceType); - /// query resource info (fast) - static ResourceInfo QueryResourceInfo(const Id& id); - /// query resource pool info (slow) - static ResourcePoolInfo QueryResourcePoolInfo(GfxResourceType::Code resType); + static ShaderLang::Code QueryShaderLang(); + /// query the resource state of a resource + static ResourceState::Code QueryResourceState(const Id& id); /// begin rendering to default render pass with override clear values static void BeginPass(const PassAction& action=PassAction()); diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 6a1888ee4..e7ec304ce 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -607,6 +607,39 @@ sokolGfxBackend::QueryShaderLang() { return slang; } +//------------------------------------------------------------------------------ +ResourceState::Code +sokolGfxBackend::QueryResourceState(const Id& id) { + o_assert_dbg(this->isValid); + sg_resource_state sgState = SG_RESOURCESTATE_INVALID; + switch (id.Type) { + case GfxResourceType::Texture: + sgState = sg_query_image_state(makeImageId(id)); + break; + case GfxResourceType::Buffer: + sgState = sg_query_buffer_state(makeBufferId(id)); + break; + case GfxResourceType::Shader: + sgState = sg_query_shader_state(makeShaderId(id)); + break; + case GfxResourceType::Pipeline: + sgState = sg_query_pipeline_state(makePipelineId(id)); + break; + case GfxResourceType::Pass: + sgState = sg_query_pass_state(makePassId(id)); + break; + default: + break; + } + switch (sgState) { + case SG_RESOURCESTATE_INITIAL: return ResourceState::Initial; + case SG_RESOURCESTATE_ALLOC: return ResourceState::Alloc; + case SG_RESOURCESTATE_VALID: return ResourceState::Valid; + case SG_RESOURCESTATE_FAILED: return ResourceState::Failed; + default: return ResourceState::InvalidState; + } +} + //------------------------------------------------------------------------------ GfxEvent::HandlerId sokolGfxBackend::Subscribe(GfxEvent::Handler handler) { diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index d0e7c9643..b16e68a1f 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -11,6 +11,7 @@ #include "Resource/ResourceLabel.h" #include "Resource/ResourceRegistry.h" #include "Resource/ResourceLabelStack.h" +#include "Resource/ResourceState.h" #include "sokol_gfx.h" namespace Oryol { @@ -33,6 +34,8 @@ class sokolGfxBackend { bool QueryFeature(GfxFeature::Code feature); /// query the supported shader language ShaderLang::Code QueryShaderLang(); + /// query resource state of a resource + ResourceState::Code QueryResourceState(const Id& id); /// subscribe to display events GfxEvent::HandlerId Subscribe(GfxEvent::Handler handler); diff --git a/code/Modules/Resource/ResourceState.h b/code/Modules/Resource/ResourceState.h index 5ca26325b..bf1b036ad 100644 --- a/code/Modules/Resource/ResourceState.h +++ b/code/Modules/Resource/ResourceState.h @@ -8,11 +8,10 @@ These are the states a resource object goes through during its lifetime: * Initial: resource object has just been created - * Setup: resource object has a valid Setup object, but is not loaded - * Pending: asynchronous loading is underway + * Alloc: asynchronous loading is underway * Valid: resource is valid and can be used - * Failed: resource creation has failed - + * Failed: resource creation has failed + Resources can be unloaded, which changes the state from Valid back to Setup, and then be loaded again. */ @@ -23,8 +22,7 @@ class ResourceState { /// state codes enum Code { Initial, ///< resource has just been created - Setup, ///< the resource has a setup object, but is not loaded - Pending, ///< resource is pending (asynchronous loading) + Alloc, ///< resource id has been allocated but not initialized yet Valid, ///< resource has become valid Failed, ///< resource creation has failed @@ -36,8 +34,7 @@ class ResourceState { static const char* ToString(Code c) { switch (c) { case Initial: return "Initial"; - case Setup: return "Setup"; - case Pending: return "Pending"; + case Alloc: return "Alloc"; case Valid: return "Valid"; case Failed: return "Failed"; default: return "InvalidState"; From 277faca7ab10a41f6ddd48b7405bed28571d6966 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Fri, 19 Jan 2018 18:03:44 +0100 Subject: [PATCH 29/91] Update DDSTextureLoading sample --- .../DDSTextureLoading/DDSTextureLoading.cc | 75 ++++++++++--------- code/Samples/DDSTextureLoading/shaders.glsl | 8 +- 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index 4b802439f..f32a437f6 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -23,7 +23,8 @@ class DDSTextureLoadingApp : public App { glm::mat4 computeMVP(const glm::vec3& pos); - float distVal = 0.0f; + float distVal = 0.0f; + PrimitiveGroup primGroup; DrawState drawState; static const int NumTextures = 16; StaticArray textures; @@ -44,18 +45,10 @@ DDSTextureLoadingApp::OnInit() { IO::Setup(ioSetup); // setup rendering system - auto gfxSetup = GfxSetup::Window(600, 400, "Oryol DDS Loading Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f)); - Gfx::Setup(gfxSetup); + auto gfxDesc = GfxDesc::Window(600, 400, "Oryol DDS Loading Sample"); + Gfx::Setup(gfxDesc); // setup resources - Id shd = Gfx::CreateResource(Shader::Setup()); - - TextureSetup texBluePrint; - texBluePrint.Sampler.MinFilter = TextureFilterMode::LinearMipmapLinear; - texBluePrint.Sampler.MagFilter = TextureFilterMode::Linear; - texBluePrint.Sampler.WrapU = TextureWrapMode::ClampToEdge; - texBluePrint.Sampler.WrapV = TextureWrapMode::ClampToEdge; static const char *paths[NumTextures] = { "tex:lok_dxt1.dds", "tex:lok_dxt3.dds", @@ -74,22 +67,37 @@ DDSTextureLoadingApp::OnInit() { "tex:lok_rgb565.dds", "tex:lok_bgr565.dds", }; - for (int i = 0; i < NumTextures; i++) { - this->textures[i] = Gfx::LoadResource(TextureLoader::Create(TextureSetup::FromFile(paths[i], texBluePrint))); + for (int i = 0; i < NumTextures; i++) { + this->textures[i] = TextureLoader::Load(Gfx::Texture() + .Locator(paths[i]) + .MinFilter(TextureFilterMode::LinearMipmapLinear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::ClampToEdge) + .WrapV(TextureWrapMode::ClampToEdge) + .Desc); } - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(-90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Transform(rot90).Plane(1.0f, 1.0f, 4); - this->drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, shd); - ps.DepthStencilState.DepthWriteEnabled = true; - ps.DepthStencilState.DepthCmpFunc = CompareFunc::LessEqual; - this->drawState.Pipeline = Gfx::CreateResource(ps); + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Transform(glm::rotate(glm::mat4(), glm::radians(-90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) + .Plane(1.0f, 1.0f, 4) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -105,7 +113,7 @@ DDSTextureLoadingApp::OnRunning() { this->distVal += 0.01f; - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); // only render when texture is loaded (until texture placeholder are implemented) static const glm::vec3 pos[NumTextures] = { @@ -132,15 +140,12 @@ DDSTextureLoadingApp::OnRunning() { glm::vec3(+2.75f, -1.1f, 0.0f) }; for (int i = 0; i < NumTextures; i++) { - const auto resState = Gfx::QueryResourceInfo(this->textures[i]).State; - if (resState == ResourceState::Valid) { - glm::vec3 p = pos[i] + glm::vec3(0.0f, 0.0f, -20.0f + glm::sin(this->distVal) * 19.0f); - this->vsParams.mvp = this->computeMVP(p); - this->drawState.FSTexture[Shader::tex] = this->textures[i]; - Gfx::ApplyDrawState(this->drawState); - Gfx::ApplyUniformBlock(this->vsParams); - Gfx::Draw(); - } + glm::vec3 p = pos[i] + glm::vec3(0.0f, 0.0f, -20.0f + glm::sin(this->distVal) * 19.0f); + this->vsParams.mvp = this->computeMVP(p); + this->drawState.FSTexture[Shader::tex] = this->textures[i]; + Gfx::ApplyDrawState(this->drawState); + Gfx::ApplyUniformBlock(this->vsParams); + Gfx::Draw(this->primGroup); } Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/DDSTextureLoading/shaders.glsl b/code/Samples/DDSTextureLoading/shaders.glsl index 752704c6b..aeb0f8dfa 100644 --- a/code/Samples/DDSTextureLoading/shaders.glsl +++ b/code/Samples/DDSTextureLoading/shaders.glsl @@ -6,13 +6,13 @@ uniform vsParams { mat4 mvp; }; -in vec4 position; -in vec2 texcoord0; +in vec4 in_pos; +in vec2 in_uv; out vec2 uv; void main() { - gl_Position = mvp * position; - uv = texcoord0; + gl_Position = mvp * in_pos; + uv = in_uv; } @end From 8e6bc0a0ded46637b44ad184086676d15de42677 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Fri, 19 Jan 2018 18:36:18 +0100 Subject: [PATCH 30/91] All samples updated --- code/Modules/Gfx/private/sokolGfxBackend.cc | 24 +++- code/Modules/Gfx/private/sokolGfxBackend.h | 1 + code/Samples/DebugText/DebugText.cc | 6 +- code/Samples/ResourceStress/CMakeLists.txt | 2 +- code/Samples/ResourceStress/ResourceStress.cc | 131 +++++++----------- 5 files changed, 76 insertions(+), 88 deletions(-) diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index e7ec304ce..b77a9e455 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -548,6 +548,7 @@ sokolGfxBackend::Setup(const GfxDesc& desc, const gfxPointers& ptrs) { this->registry.Setup(desc.ResourceRegistryCapacity); this->labelStack.Setup(desc.ResourceLabelStackCapacity); + this->toDestroy.Reserve(64); this->isValid = true; } @@ -871,7 +872,28 @@ sokolGfxBackend::AddResource(const Locator& loc, const Id& id) { void sokolGfxBackend::DestroyResources(ResourceLabel label) { o_assert_dbg(this->isValid); - // FIXME + this->toDestroy = this->registry.Remove(label); + for (const Id& id : this->toDestroy) { + switch (id.Type) { + case GfxResourceType::Buffer: + sg_destroy_buffer(makeBufferId(id)); + break; + case GfxResourceType::Texture: + sg_destroy_image(makeImageId(id)); + break; + case GfxResourceType::Shader: + sg_destroy_shader(makeShaderId(id)); + break; + case GfxResourceType::Pipeline: + sg_destroy_pipeline(makePipelineId(id)); + break; + case GfxResourceType::Pass: + sg_destroy_pass(makePassId(id)); + break; + default: + break; + } + } } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index b16e68a1f..5d3b95765 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -115,6 +115,7 @@ class sokolGfxBackend { displayMgr displayManager; ResourceRegistry registry; ResourceLabelStack labelStack; + Array toDestroy; // keeping the array here prevents frequent allocs/frees }; } // namespace _priv diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index 6a6b1dd0e..f0ea1da0c 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -30,9 +30,7 @@ OryolMain(DebugTextApp); //------------------------------------------------------------------------------ AppState::Code DebugTextApp::OnInit() { - auto gfxSetup = GfxDesc::Window(800, 600, "Oryol DebugText Sample"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f)); - Gfx::Setup(gfxSetup); + Gfx::Setup(GfxDesc::Window(800, 600, "Oryol DebugText Sample")); DbgSetup dbgSetup; dbgSetup.TextScaleX = 2.0f; dbgSetup.TextScaleY = 2.0f; @@ -56,7 +54,7 @@ DebugTextApp::OnRunning() { this->moveChars(); this->drawText(); - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/ResourceStress/CMakeLists.txt b/code/Samples/ResourceStress/CMakeLists.txt index a743d74e3..787a24ef9 100644 --- a/code/Samples/ResourceStress/CMakeLists.txt +++ b/code/Samples/ResourceStress/CMakeLists.txt @@ -2,6 +2,6 @@ fips_begin_app(ResourceStress windowed) fips_vs_warning_level(3) fips_files(ResourceStress.cc) oryol_shader(shaders.glsl) - fips_deps(Gfx Assets HttpFS Dbg) + fips_deps(Gfx Assets HttpFS) oryol_add_web_sample(ResourceStress "Resource loading stresstest" "emscripten" none "ResourceStress/ResourceStress.cc") fips_end_app() diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index 533c9c4ec..d9f7255a3 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -5,7 +5,6 @@ #include "Core/Main.h" #include "IO/IO.h" #include "Gfx/Gfx.h" -#include "Dbg/Dbg.h" #include "HttpFS/HTTPFileSystem.h" #include "Assets/Gfx/ShapeBuilder.h" #include "Assets/Gfx/TextureLoader.h" @@ -24,9 +23,10 @@ class ResourceStressApp : public App { void createObjects(); void updateObjects(); - void showInfo(); struct Object { + uint32_t createdFrame = 0; + PrimitiveGroup primGroup; DrawState drawState; ResourceLabel label; glm::mat4 modelTransform; @@ -39,7 +39,6 @@ class ResourceStressApp : public App { Array objects; glm::mat4 view; glm::mat4 proj; - TextureSetup texBlueprint; }; OryolMain(ResourceStressApp); @@ -53,19 +52,15 @@ ResourceStressApp::OnInit() { IO::Setup(ioSetup); // setup Gfx system - auto gfxSetup = GfxSetup::Window(600, 400, "Oryol Resource Stress Test"); - gfxSetup.DefaultPassAction = PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f)); - gfxSetup.ResourcePoolSize[GfxResourceType::Mesh] = MaxNumObjects + 32; - gfxSetup.ResourcePoolSize[GfxResourceType::Texture] = MaxNumObjects + 32; - gfxSetup.ResourcePoolSize[GfxResourceType::Pipeline] = MaxNumObjects + 32; - gfxSetup.ResourcePoolSize[GfxResourceType::Shader] = 4; - Gfx::Setup(gfxSetup); - - // setup debug text rendering - Dbg::Setup(); + auto gfxDesc = GfxDesc::Window(600, 400, "Oryol Resource Stress Test"); + gfxDesc.ResourcePoolSize[GfxResourceType::Buffer] = 2 * (MaxNumObjects + 32); + gfxDesc.ResourcePoolSize[GfxResourceType::Texture] = MaxNumObjects + 32; + gfxDesc.ResourcePoolSize[GfxResourceType::Pipeline] = MaxNumObjects + 32; + gfxDesc.ResourcePoolSize[GfxResourceType::Shader] = 4; + Gfx::Setup(gfxDesc); // setup the shader that is used by all objects - this->shader = Gfx::CreateResource(Shader::Setup()); + this->shader = Gfx::CreateShader(Shader::Desc()); // setup matrices const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -73,11 +68,6 @@ ResourceStressApp::OnInit() { this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); - this->texBlueprint.Sampler.MinFilter = TextureFilterMode::LinearMipmapLinear; - this->texBlueprint.Sampler.MagFilter = TextureFilterMode::Linear; - this->texBlueprint.Sampler.WrapU = TextureWrapMode::ClampToEdge; - this->texBlueprint.Sampler.WrapV = TextureWrapMode::ClampToEdge; - return App::OnInit(); } @@ -89,21 +79,22 @@ ResourceStressApp::OnRunning() { this->frameCount++; this->updateObjects(); this->createObjects(); - this->showInfo(); - Gfx::BeginPass(); + Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); for (const auto& obj : this->objects) { - // only render objects that have successfully loaded + // only render objects that have successfully loaded (technically + // the check is not necessary since rendering for non-valid resources + // will be skipped anyway, but this way we have test coverage for + // Gfx::QueryResourceState() const Id& tex = obj.drawState.FSTexture[Shader::tex]; - if (Gfx::QueryResourceInfo(tex).State == ResourceState::Valid) { + if (Gfx::QueryResourceState(tex) == ResourceState::Valid) { Gfx::ApplyDrawState(obj.drawState); Shader::vsParams vsParams; vsParams.mvp = this->proj * this->view * obj.modelTransform; Gfx::ApplyUniformBlock(vsParams); - Gfx::Draw(); + Gfx::Draw(obj.primGroup); } } - Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); @@ -114,7 +105,6 @@ ResourceStressApp::OnRunning() { //------------------------------------------------------------------------------ AppState::Code ResourceStressApp::OnCleanup() { - Dbg::Discard(); Gfx::Discard(); IO::Discard(); return App::OnCleanup(); @@ -127,29 +117,41 @@ ResourceStressApp::createObjects() { if (this->objects.Size() >= MaxNumObjects) { return; } - if (Gfx::QueryFreeResourceSlots(GfxResourceType::Mesh) == 0) { - return; - } - if (Gfx::QueryFreeResourceSlots(GfxResourceType::Texture) == 0) { - return; - } // create a cube object // NOTE: we're deliberatly not sharing resources to actually // put some stress on the resource system Object obj; obj.label = Gfx::PushResourceLabel(); - ShapeBuilder shapeBuilder; - shapeBuilder.Layout = { - { VertexAttr::Position, VertexFormat::Float3 }, - { VertexAttr::TexCoord0, VertexFormat::Float2 } - }; - shapeBuilder.Box(0.1f, 0.1f, 0.1f, 1); - obj.drawState.Mesh[0] = Gfx::CreateResource(shapeBuilder.Build()); - auto ps = PipelineSetup::FromLayoutAndShader(shapeBuilder.Layout, this->shader); - obj.drawState.Pipeline = Gfx::CreateResource(ps); - obj.drawState.FSTexture[Shader::tex] = Gfx::LoadResource(TextureLoader::Create( - TextureSetup::FromFile(Locator::NonShared("tex:lok_dxt1.dds"), this->texBlueprint))); + obj.createdFrame = this->frameCount; + auto shape = ShapeBuilder::New() + .Positions("position", VertexFormat::Float3) + .TexCoords("texcoord0", VertexFormat::Float2) + .Box(0.1f, 0.1f, 0.1f, 1) + .Build(); + obj.primGroup = shape.PrimitiveGroups[0]; + obj.drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + obj.drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); + obj.drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(this->shader) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .Create(); + obj.drawState.FSTexture[Shader::tex] = TextureLoader::Load(Gfx::Texture() + .Locator(Locator::NonShared("tex:lok_dxt1.dds")) + .MinFilter(TextureFilterMode::LinearMipmapLinear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::ClampToEdge) + .WrapV(TextureWrapMode::ClampToEdge) + .Desc); glm::vec3 pos = glm::ballRand(2.0f) + glm::vec3(0.0f, 0.0f, -6.0f); obj.modelTransform = glm::translate(glm::mat4(), pos); this->objects.Add(obj); @@ -161,14 +163,15 @@ void ResourceStressApp::updateObjects() { for (int i = this->objects.Size() - 1; i >= 0; i--) { Object& obj = this->objects[i]; + int age = this->frameCount - obj.createdFrame; // check if object should be destroyed (it will be // destroyed after the texture object had been valid for // at least 3 seconds, or if it failed to load) const Id& tex = obj.drawState.FSTexture[Shader::tex]; - const auto info = Gfx::QueryResourceInfo(tex); - if ((info.State == ResourceState::Failed) || - ((info.State == ResourceState::Valid) && (info.StateAge > (20 * 60)))) { + ResourceState::Code state = Gfx::QueryResourceState(tex); + if ((state == ResourceState::Failed) || + ((state == ResourceState::Valid) && (age > (20 * 60)))) { Gfx::DestroyResources(obj.label); this->objects.Erase(i); @@ -176,39 +179,3 @@ ResourceStressApp::updateObjects() { } } -//------------------------------------------------------------------------------ -void -ResourceStressApp::showInfo() { - ResourcePoolInfo texPoolInfo = Gfx::QueryResourcePoolInfo(GfxResourceType::Texture); - ResourcePoolInfo mshPoolInfo = Gfx::QueryResourcePoolInfo(GfxResourceType::Mesh); - - Dbg::PrintF("texture pool\r\n" - " num slots: %d, free: %d, used: %d\r\n" - " by state:\r\n" - " initial: %d\r\n" - " setup: %d\r\n" - " pending: %d\r\n" - " valid: %d\r\n" - " failed: %d\r\n\n", - texPoolInfo.NumSlots, texPoolInfo.NumFreeSlots, texPoolInfo.NumUsedSlots, - texPoolInfo.NumSlotsByState[ResourceState::Initial], - texPoolInfo.NumSlotsByState[ResourceState::Setup], - texPoolInfo.NumSlotsByState[ResourceState::Pending], - texPoolInfo.NumSlotsByState[ResourceState::Valid], - texPoolInfo.NumSlotsByState[ResourceState::Failed]); - - Dbg::PrintF("mesh pool\r\n" - " num slots: %d, free: %d, used: %d\r\n" - " by state:\r\n" - " initial: %d\r\n" - " setup: %d\r\n" - " pending: %d\r\n" - " valid: %d\r\n" - " failed: %d", - mshPoolInfo.NumSlots, mshPoolInfo.NumFreeSlots, mshPoolInfo.NumUsedSlots, - mshPoolInfo.NumSlotsByState[ResourceState::Initial], - mshPoolInfo.NumSlotsByState[ResourceState::Setup], - mshPoolInfo.NumSlotsByState[ResourceState::Pending], - mshPoolInfo.NumSlotsByState[ResourceState::Valid], - mshPoolInfo.NumSlotsByState[ResourceState::Failed]); -} From c0d52d2ab61173d7c114170dafd881da5a51038b Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 20 Jan 2018 15:16:18 +0100 Subject: [PATCH 31/91] Started with sokol Metal backend migration --- code/Modules/Dbg/DbgTypes.h | 7 ++ code/Modules/Gfx/CMakeLists.txt | 5 ++ code/Modules/Gfx/private/mtlDisplayMgr.h | 11 ++- code/Modules/Gfx/private/mtlDisplayMgr.mm | 52 ++++++++++---- code/Modules/Gfx/private/sokolGfxBackend.cc | 68 ++++--------------- code/Modules/Gfx/private/sokolImpl.cc | 51 ++++++++++++++ code/Modules/Gfx/private/sokolImpl.mm | 23 +++++++ code/Samples/NativeTexture/NativeTexture.cc | 2 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 2 +- code/Samples/VertexTexture/VertexTexture.cc | 2 +- fips-generators/Shader.py | 10 +-- 11 files changed, 155 insertions(+), 78 deletions(-) create mode 100644 code/Modules/Gfx/private/sokolImpl.cc create mode 100644 code/Modules/Gfx/private/sokolImpl.mm diff --git a/code/Modules/Dbg/DbgTypes.h b/code/Modules/Dbg/DbgTypes.h index fcba53570..e3c78a2ad 100644 --- a/code/Modules/Dbg/DbgTypes.h +++ b/code/Modules/Dbg/DbgTypes.h @@ -25,6 +25,13 @@ class DbgSetup { PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; /// multi-sample count of render pass to render text to int SampleCount = 1; + + /// return a DbgSetup object with MSAA4 sample count + static DbgSetup MSAA4() { + DbgSetup setup; + setup.SampleCount = 4; + return setup; + } }; } // namespace Oryol diff --git a/code/Modules/Gfx/CMakeLists.txt b/code/Modules/Gfx/CMakeLists.txt index b9ec19758..891ab5b52 100644 --- a/code/Modules/Gfx/CMakeLists.txt +++ b/code/Modules/Gfx/CMakeLists.txt @@ -16,6 +16,11 @@ fips_begin_module(Gfx) displayMgrBase.cc displayMgrBase.h displayMgr.h ) + if (ORYOL_METAL) + fips_files(sokolImpl.mm) + else() + fips_files(sokolImpl.cc) + endif() if (ORYOL_D3D11) fips_files(winDisplayMgr.cc winDisplayMgr.h) fips_files(d3d11DisplayMgr.cc d3d11DisplayMgr.h) diff --git a/code/Modules/Gfx/private/mtlDisplayMgr.h b/code/Modules/Gfx/private/mtlDisplayMgr.h index 8918b6d8a..b3d6dd570 100644 --- a/code/Modules/Gfx/private/mtlDisplayMgr.h +++ b/code/Modules/Gfx/private/mtlDisplayMgr.h @@ -18,18 +18,25 @@ class mtlDisplayMgr : public displayMgrBase { ~mtlDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// check whether the window system requests to quit the application bool QuitRequested() const; /// configure the app window - void configureWindow(const GfxSetup& setup); + void configureWindow(const GfxDesc& desc); /// callback for window-resize #if ORYOL_MACOS static void onFramebufferSize(int w, int h); #endif + /// get Metal device as bridged pointer + static const void* mtlDevice(); + /// get a new MTLRenderPassDescriptor as bridged pointer + static const void* mtlRenderPassDescriptor(); + /// get a new MTLDrawable as bridged pointer + static const void* mtlDrawable(); + /// ptr to self for onFramebufferSize static mtlDisplayMgr* self; }; diff --git a/code/Modules/Gfx/private/mtlDisplayMgr.mm b/code/Modules/Gfx/private/mtlDisplayMgr.mm index a556d5fd0..e777e3d88 100644 --- a/code/Modules/Gfx/private/mtlDisplayMgr.mm +++ b/code/Modules/Gfx/private/mtlDisplayMgr.mm @@ -3,12 +3,22 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "mtlDisplayMgr.h" -#include "mtlTypes.h" #include "Core/String/StringBuilder.h" +#if ORYOL_MACOS +#include "Core/private/osx/osxBridge.h" +#else +#include "Core/private/ios/iosBridge.h" +#endif namespace Oryol { namespace _priv { +#if ORYOL_MACOS +typedef osxBridge osBridge; +#else +typedef iosBridge osBridge; +#endif + mtlDisplayMgr* mtlDisplayMgr::self = nullptr; //------------------------------------------------------------------------------ @@ -28,12 +38,12 @@ //------------------------------------------------------------------------------ void -mtlDisplayMgr::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs) { +mtlDisplayMgr::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(setup, ptrs); + displayMgrBase::SetupDisplay(desc, ptrs); - this->configureWindow(setup); + this->configureWindow(desc); #if ORYOL_MACOS osBridge::ptr()->showWindow(); osBridge::ptr()->callbacks.fbsize = mtlDisplayMgr::onFramebufferSize; @@ -59,24 +69,24 @@ //------------------------------------------------------------------------------ void -mtlDisplayMgr::configureWindow(const GfxSetup& setup) { +mtlDisplayMgr::configureWindow(const GfxDesc& desc) { #if ORYOL_MACOS - StringBuilder strBuilder(setup.Title); + StringBuilder strBuilder(desc.Title); strBuilder.Append(" (Metal)"); NSWindow* window = osxBridge::ptr()->appWindow; [window setTitle:[NSString stringWithUTF8String:strBuilder.AsCStr()]]; - [window setContentSize:NSMakeSize(setup.Width, setup.Height)]; + [window setContentSize:NSMakeSize(desc.Width, desc.Height)]; [window center]; osBridge* bridge = osBridge::ptr(); - if (!setup.HighDPI) { - CGSize drawableSize = { (CGFloat) setup.Width, (CGFloat) setup.Height }; + if (!desc.HighDPI) { + CGSize drawableSize = { (CGFloat) desc.Width, (CGFloat) desc.Height }; [bridge->mtkView setDrawableSize:drawableSize]; } #elif ORYOL_IOS osBridge* bridge = osBridge::ptr(); - if (gfxSetup.HighDPI) { + if (desc.HighDPI) { [bridge->mtkView setContentScaleFactor:2.0f]; bridge->mouseScale = 2.0f; } @@ -98,7 +108,7 @@ int fbWidth = (int) fbSize.width; int fbHeight = (int) fbSize.height; #if ORYOL_OSX - if (fbWidth == setup.Width * 2) { + if (fbWidth == desc.Width * 2) { // we're on a Retina display bridge->mouseScale = 2.0; } @@ -108,7 +118,7 @@ this->displayAttrs.FramebufferHeight = fbHeight; this->displayAttrs.WindowWidth = winContentRect.size.width; this->displayAttrs.WindowHeight = winContentRect.size.height; - [osBridge::ptr()->mtkView setSampleCount:setup.SampleCount]; + [osBridge::ptr()->mtkView setSampleCount:desc.SampleCount]; } //------------------------------------------------------------------------------ @@ -127,5 +137,23 @@ } #endif +//------------------------------------------------------------------------------ +const void* +mtlDisplayMgr::mtlDevice() { + return (__bridge const void*) osBridge::ptr()->mtlDevice; +} + +//------------------------------------------------------------------------------ +const void* +mtlDisplayMgr::mtlRenderPassDescriptor() { + return (__bridge const void*) [osBridge::ptr()->mtkView currentRenderPassDescriptor]; +} + +//------------------------------------------------------------------------------ +const void* +mtlDisplayMgr::mtlDrawable() { + return (__bridge const void*) [osBridge::ptr()->mtkView currentDrawable]; +} + } // namespace _priv } // namespace Oryol diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index b77a9e455..61fe0a5f7 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -5,53 +5,6 @@ #include "Core/Core.h" #include "Core/Assertion.h" #include "Core/Memory/Memory.h" -#define SOKOL_IMPL -#define SOKOL_ASSERT(c) o_assert_dbg(c) -#define SOKOL_MALLOC(s) Oryol::Memory::Alloc(s) -#define SOKOL_FREE(p) Oryol::Memory::Free(p) -#define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) -#define SOKOL_UNREACHABLE o_assert_dbg(false) -#if ORYOL_OPENGL - #if ORYOL_RASPBERRYPI - #define GL_GLEXT_PROTOTYPES - #include "GLES2/gl2.h" - #include "GLES2/gl2ext.h" - #elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS - #include "Gfx/private/flextGL.h" - #elif ORYOL_IOS - #include - #include - #elif ORYOL_EMSCRIPTEN - #if ORYOL_OPENGLES2 - #define GL_GLEXT_PROTOTYPES - #include - #include - #else - #include - #endif - #elif ORYOL_ANDROID - #define GL_GLEXT_PROTOTYPES - #include - #include - #else - #error "Missing platform for GL header include!" - #endif -#endif -#if ORYOL_OPENGLES2 -#define SOKKOL_GLES2 -#elif ORYOL_OPENGL3 -#define SOKOL_GLES3 -#elif ORYOL_OPENGL_CORE_PROFILE -#define SOKOL_GLCORE33 -#elif ORYOL_D3D11 -#define SOKOL_D3D11 -#elif ORYOL_METAL -#if ORYOL_MACOS -#define SOKOL_METAL_MACOS -#else -#define SOKOL_METAL_IOS -#endif -#endif #include "sokolGfxBackend.h" namespace Oryol { @@ -507,7 +460,7 @@ static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst, const } #elif ORYOL_METAL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - dst.mtl_buffers[i] = (const void*) src.NativeTextures[i]; + dst.mtl_textures[i] = (const void*) src.NativeTextures[i]; } #elif ORYOL_D3D11 dst.d3d11_buffer = (const void*) src.NativeTextures[0] @@ -535,9 +488,9 @@ sokolGfxBackend::Setup(const GfxDesc& desc, const gfxPointers& ptrs) { #if ORYOL_EMSCRIPTEN sgDesc.gl_force_gles2 = this->displayManager.force_gles2; #elif ORYOL_METAL - sgDesc.mtl_device = XXX; // FIXME; - sgDesc.mtl_renderpass_descriptor_cb = XXX; // FIXME - sgDesc.mtl_drawable_cb = XXX; // FIXME + sgDesc.mtl_device = mtlDisplayMgr::mtlDevice(); + sgDesc.mtl_renderpass_descriptor_cb = mtlDisplayMgr::mtlRenderPassDescriptor; + sgDesc.mtl_drawable_cb = mtlDisplayMgr::mtlDrawable; #elif ORYOL_D3D11 sgDesc.d3d11_device = XXX; // FIXME sgDesc.d3d11_device_context = XXX; // FIXME @@ -780,12 +733,15 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { else { dst = &sgDesc.fs.uniform_blocks[fsUbIndex++]; } - // size must be a multiple of 16 (sizeof(vec4)) - o_assert_dbg((src.Size & 15) == 0); dst->size = src.Size; - dst->uniforms[0].name = src.Type; - dst->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; - dst->uniforms[0].array_count = src.Size / 16; + // uniform block members are only defined on OpenGL, Metal + #if ORYOL_OPENGL + // size must be a multiple of 16 (sizeof(vec4)) + o_assert_dbg((src.Size & 15) == 0); + dst->uniforms[0].name = src.Type; + dst->uniforms[0].type = SG_UNIFORMTYPE_FLOAT4; + dst->uniforms[0].array_count = src.Size / 16; + #endif } } } diff --git a/code/Modules/Gfx/private/sokolImpl.cc b/code/Modules/Gfx/private/sokolImpl.cc new file mode 100644 index 000000000..15ba2d5d5 --- /dev/null +++ b/code/Modules/Gfx/private/sokolImpl.cc @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------ +// sokolImpl.cc +//------------------------------------------------------------------------------ +#include "Core/Assertion.h" +#include "Core/Memory/Memory.h" +#include "Core/Log.h" +#define SOKOL_IMPL +#define SOKOL_ASSERT(c) o_assert_dbg(c) +#define SOKOL_MALLOC(s) Oryol::Memory::Alloc(s) +#define SOKOL_FREE(p) Oryol::Memory::Free(p) +#define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) +#define SOKOL_UNREACHABLE o_assert_dbg(false) +#if ORYOL_OPENGL + #if ORYOL_RASPBERRYPI + #define GL_GLEXT_PROTOTYPES + #include "GLES2/gl2.h" + #include "GLES2/gl2ext.h" + #elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS + #include "Gfx/private/flextGL.h" + #elif ORYOL_IOS + #include + #include + #elif ORYOL_EMSCRIPTEN + #if ORYOL_OPENGLES2 + #define GL_GLEXT_PROTOTYPES + #include + #include + #else + #include + #endif + #elif ORYOL_ANDROID + #define GL_GLEXT_PROTOTYPES + #include + #include + #else + #error "Missing platform for GL header include!" + #endif +#endif +#if ORYOL_OPENGLES2 +#define SOKKOL_GLES2 +#elif ORYOL_OPENGL3 +#define SOKOL_GLES3 +#elif ORYOL_OPENGL_CORE_PROFILE +#define SOKOL_GLCORE33 +#elif ORYOL_D3D11 +#define SOKOL_D3D11 +#elif ORYOL_METAL +#error "please include sokolImpl.mm for Metal builds" +#endif +#include "sokol_gfx.h" + diff --git a/code/Modules/Gfx/private/sokolImpl.mm b/code/Modules/Gfx/private/sokolImpl.mm new file mode 100644 index 000000000..fd08bbd95 --- /dev/null +++ b/code/Modules/Gfx/private/sokolImpl.mm @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// sokolImpl.mm +//------------------------------------------------------------------------------ +#include "Core/Assertion.h" +#include "Core/Memory/Memory.h" +#include "Core/Log.h" +#define SOKOL_IMPL +#define SOKOL_ASSERT(c) o_assert_dbg(c) +#define SOKOL_MALLOC(s) Oryol::Memory::Alloc(s) +#define SOKOL_FREE(p) Oryol::Memory::Free(p) +#define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) +#define SOKOL_UNREACHABLE o_assert_dbg(false) +#if !ORYOL_METAL +#error "please include sokolImpl.cc for non-Metal builds" +#endif +#if ORYOL_MACOS +#define SOKOL_METAL_MACOS +#elif ORYOL_IOS +#define SOKOL_METAL_IOS +#else +#error "unknown Metal platform" +#endif +#include "sokol_gfx.h" diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 92b22e9b6..dcf110e5a 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -51,7 +51,7 @@ NativeTextureApp::OnInit() { auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Oryol NativeTexture Sample"); Gfx::Setup(gfxDesc); - Dbg::Setup(); + Dbg::Setup(DbgSetup::MSAA4()); // FIXME: D3D and Metal #if !ORYOL_OPENGL diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index 825c24452..696493a35 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -67,7 +67,7 @@ AppState::Code PrimitiveTypesApp::OnInit() { auto gfxDesc = GfxDesc::WindowMSAA4(640, 480, "Oryol PrimitiveTypes Test"); Gfx::Setup(gfxDesc); - Dbg::Setup(); + Dbg::Setup(DbgSetup::MSAA4()); Input::Setup(); // create a 2D vertex grid mesh, the same vertex data is combined diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index d75867673..217551b32 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -39,7 +39,7 @@ AppState::Code VertexTextureApp::OnInit() { // setup rendering system Gfx::Setup(GfxDesc::WindowMSAA4(800, 600, "Oryol Vertex Texture Sample")); - Dbg::Setup(); + Dbg::Setup(DbgSetup::MSAA4()); // FIXME: need a way to check number of vertex texture units diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 16c3878f2..70e5edc69 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,7 +2,7 @@ Code generator for shader libraries. ''' -Version = 56 +Version = 57 import os, platform, json import genutil as util @@ -577,13 +577,13 @@ def writeProgramSource(f, shdLib, prog, slangs) : elif isHLSL(slang): vs_c_name = '{}_vs_hlsl5'.format(vs.name) fs_c_name = '{}_fs_hlsl5'.format(fs.name) - f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}))\n'.format(vs_c_name, vs_c_name)) - f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}))\n'.format(fs_c_name, fs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}));\n'.format(vs_c_name, vs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) elif isMetal(slang): vs_c_name = '{}_vs_metallib'.format(vs.name) fs_c_name = '{}_fs_metallib'.format(fs.name) - f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}))\n'.format(vs_c_name, vs_c_name)) - f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}))\n'.format(fs_c_name, fs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}));\n'.format(vs_c_name, vs_c_name)) + f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) f.write(' bld.Entry(Oryol::ShaderStage::VS, "main0");\n') f.write(' bld.Entry(Oryol::ShaderStage::FS, "main0");\n') From f815f5565f3778ebebb9f31a2cfbd7a870b9b16f Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 21 Jan 2018 14:10:34 +0100 Subject: [PATCH 32/91] More sokol-migration for Metal backend --- code/Modules/Gfx/GfxTypes.h | 25 ++++++++++++--------- code/Modules/Gfx/private/sokolGfxBackend.cc | 23 ++++++++++++++++--- code/Modules/Gfx/private/sokolGfxBackend.h | 1 + fips-generators/Shader.py | 20 ++++++++++++++++- 4 files changed, 55 insertions(+), 14 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 28d0a1de7..1ba6e78f2 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -6,7 +6,7 @@ #include "Core/String/StringAtom.h" #include "Resource/Id.h" #include "Resource/Locator.h" -#include "Core/Containers/StaticArray.h" +#include "Core/Containers/StaticArray.h" #include "Core/Containers/MemoryBuffer.h" #include "Gfx/GfxConfig.h" #include "glm/vec4.hpp" @@ -655,8 +655,8 @@ class VertexLayout { /// default constructor VertexLayout(); /// initializer list constructor - VertexLayout(std::initializer_list l); - /// return a new vertex layout object to start building via chained methods + VertexLayout(std::initializer_list l); + /// return a new vertex layout object to start building via chained methods static VertexLayout New(); /// clear the vertex layout, chainable VertexLayout& Clear(); @@ -1129,6 +1129,8 @@ class PipelineBuilder { struct ShaderDesc { /// the resource locator class Locator Locator = Locator::NonShared(); + /// vertex shader input descriptions + VertexLayout Layout; /// shader stage descriptions struct UniformBlockDesc { @@ -1177,6 +1179,9 @@ class ShaderBuilder { ShaderBuilder& Entry(ShaderStage::Code stage, const char* entry) { Desc.Stage[stage].Entry = entry; return *this; } + ShaderBuilder& Attr(const StringAtom& name, VertexFormat::Code fmt) { + Desc.Layout.Add(name, fmt); return *this; + } ShaderBuilder& UniformBlock(ShaderStage::Code stage, int slot, const char* name, const char* type, int size) { auto& ubSlot = Desc.Stage[stage].UniformBlocks[slot]; ubSlot.Name = name; @@ -1251,9 +1256,9 @@ class TextureBuilder { public: TextureDesc Desc; const void* ContentPtr = nullptr; - int ContentSize = 0; - static TextureBuilder New() { - return TextureBuilder(); + int ContentSize = 0; + static TextureBuilder New() { + return TextureBuilder(); } TextureBuilder& From(const TextureDesc& desc) { Desc = desc; return *this; @@ -1275,10 +1280,10 @@ class TextureBuilder { } TextureBuilder& Depth(int d) { Desc.Depth = d; return *this; - } - TextureBuilder& Layers(int l) { - Desc.Depth = l; return *this; - } + } + TextureBuilder& Layers(int l) { + Desc.Depth = l; return *this; + } TextureBuilder& NumMipMaps(int n) { Desc.NumMipMaps = n; return *this; } diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 61fe0a5f7..708e5625f 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -329,7 +329,7 @@ static sg_vertex_format convertVertexFormat(VertexFormat::Code fmt) { } //------------------------------------------------------------------------------ -static void convertVertexLayouts(const PipelineDesc& src, sg_pipeline_desc& dst) { +static void convertVertexLayouts(const PipelineDesc& src, sg_pipeline_desc& dst, const VertexLayout& vsInput) { o_assert_dbg(GfxConfig::MaxNumVertexBuffers <= SG_MAX_SHADERSTAGE_BUFFERS); for (int layoutIndex = 0; layoutIndex < GfxConfig::MaxNumVertexBuffers; layoutIndex++) { const auto& srcLayout = src.Layouts[layoutIndex]; @@ -502,6 +502,10 @@ sokolGfxBackend::Setup(const GfxDesc& desc, const gfxPointers& ptrs) { this->registry.Setup(desc.ResourceRegistryCapacity); this->labelStack.Setup(desc.ResourceLabelStackCapacity); this->toDestroy.Reserve(64); + this->vsInputs.Reserve(desc.ResourcePoolSize[GfxResourceType::Shader]); + for (int i = 0; i < this->vsInputs.Capacity(); i++) { + this->vsInputs.Add(VertexLayout()); + } this->isValid = true; } @@ -766,7 +770,14 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { } } } - return makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); + Id shd = makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); + + // keep track of the shader's vertex layout + o_assert_dbg(!desc.Layout.Empty()); + o_assert_dbg(this->vsInputs[shd.SlotIndex].Empty()); + this->vsInputs[shd.SlotIndex] = desc.Layout; + + return shd; } //------------------------------------------------------------------------------ @@ -774,11 +785,16 @@ Id sokolGfxBackend::CreatePipeline(const PipelineDesc& desc) { o_assert_dbg(this->isValid); o_assert_dbg(desc.Shader.IsValid()); + + // lookup the shader vertex shader input layout + const VertexLayout& vsLayout = this->vsInputs[desc.Shader.SlotIndex]; + o_assert_dbg(!vsLayout.Empty()); + sg_pipeline_desc sgDesc = { }; sgDesc.shader = makeShaderId(desc.Shader); sgDesc.primitive_type = convertPrimitiveType(desc.PrimType); sgDesc.index_type = convertIndexType(desc.IndexType); - convertVertexLayouts(desc, sgDesc); + convertVertexLayouts(desc, sgDesc, vsLayout); convertDepthStencilState(desc, sgDesc); convertBlendState(desc, sgDesc); convertRasterizerState(desc, sgDesc); @@ -839,6 +855,7 @@ sokolGfxBackend::DestroyResources(ResourceLabel label) { break; case GfxResourceType::Shader: sg_destroy_shader(makeShaderId(id)); + this->vsInputs[id.SlotIndex].Clear(); break; case GfxResourceType::Pipeline: sg_destroy_pipeline(makePipelineId(id)); diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 5d3b95765..443f1ccd0 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -116,6 +116,7 @@ class sokolGfxBackend { ResourceRegistry registry; ResourceLabelStack labelStack; Array toDestroy; // keeping the array here prevents frequent allocs/frees + Array vsInputs; // to keep track of vertex shader inputs }; } // namespace _priv diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 70e5edc69..35e474009 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,7 +2,7 @@ Code generator for shader libraries. ''' -Version = 57 +Version = 61 import os, platform, json import genutil as util @@ -66,6 +66,13 @@ def isMetal(sl): 'mat4': 64, } +attrOryolType = { + 'float': 'VertexFormat::Float', + 'vec2': 'VertexFormat::Float2', + 'vec3': 'VertexFormat::Float3', + 'vec4': 'VertexFormat::Float4', +} + validTextureTypes = [ 'sampler2D', 'samplerCube', 'sampler3D', 'sampler2DArray' ] @@ -586,6 +593,17 @@ def writeProgramSource(f, shdLib, prog, slangs) : f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) f.write(' bld.Entry(Oryol::ShaderStage::VS, "main0");\n') f.write(' bld.Entry(Oryol::ShaderStage::FS, "main0");\n') + slang = slangs[0] + + # add vertex shader input layout + vs_inputs = shdLib.vertexShaders[prog.vs].slReflection[slang]['inputs'] + # get an order inputs array by slot + ord_vs_inputs = [None]*len(vs_inputs) + for attr in vs_inputs: + ord_vs_inputs[attr['slot']] = attr + vs_inputs = ord_vs_inputs + for attr in vs_inputs: + f.write(' bld.Attr("{}", Oryol::{});\n'.format(attr['name'], attrOryolType[attr['type']])) # add uniform block layouts to desc object for stage in ['VS', 'FS']: From 4c19268f55dce52af71b65875b8b29a186291e2c Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 22 Jan 2018 15:23:49 +0100 Subject: [PATCH 33/91] minor Visual Studio fixes --- code/Modules/Gfx/private/glfwDisplayMgr.cc | 8 ++++---- tools/win32/oryol-shdc.exe | Bin 2178048 -> 2143744 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.cc b/code/Modules/Gfx/private/glfwDisplayMgr.cc index b4da91fca..627d4bc56 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.cc +++ b/code/Modules/Gfx/private/glfwDisplayMgr.cc @@ -152,10 +152,10 @@ glfwDisplayMgr::createMainWindow(const GfxDesc& desc) { // this is necessary after the 29-Oct-2017 fips-glfw update to get the old behaviour glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE); #else - glfwWindowHint(GLFW_RED_BITS, PixelFormat::NumBits(setup.ColorFormat, PixelChannel::Red)); - glfwWindowHint(GLFW_GREEN_BITS, PixelFormat::NumBits(setup.ColorFormat, PixelChannel::Green)); - glfwWindowHint(GLFW_BLUE_BITS, PixelFormat::NumBits(setup.ColorFormat, PixelChannel::Blue)); - glfwWindowHint(GLFW_ALPHA_BITS, PixelFormat::NumBits(setup.ColorFormat, PixelChannel::Alpha)); + glfwWindowHint(GLFW_RED_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Red)); + glfwWindowHint(GLFW_GREEN_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Green)); + glfwWindowHint(GLFW_BLUE_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Blue)); + glfwWindowHint(GLFW_ALPHA_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Alpha)); #endif glfwWindowHint(GLFW_DEPTH_BITS, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth)); glfwWindowHint(GLFW_STENCIL_BITS, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil)); diff --git a/tools/win32/oryol-shdc.exe b/tools/win32/oryol-shdc.exe index 9aec5a0bb3605c43e7332c6f80aa9209b284f8d3..32fab96f96c9f62c9ca40289b6efb9108481e937 100644 GIT binary patch literal 2143744 zcmeFad05Zg_y7BjNT!e}LKH%oGKExzBy%#0h|D1wk}_n@lzEm+88XjfWXhO`%$X(g znE5=O?$77@y|44T&iU({|K6_a-tE2DTF;@o#;|U;dy=5eGyc zbt(KWpLc)%e$w^-)Uq~B42IrQavD~@@6+YKJnsx;47sx8H5h6YH5g)Z{Hng*hs_Wzuey~o7^?Eu zn!o@0=Vma(S04Hg<1|aWN?Q#D`P<_E;B%|o{~x|m`2kQ{3h>vDzyJE@CcS+F`u84g zFg(cxAtT3j^G{pD`TMVbZnCdxRsVp#219Yo!aD{7 zeQua&qr(6Ea}!?B@F0I`{`Ofu_%tvk*^vD2KexYpeFhDIad0K-=}UtHe`nZ`{O>o~6>3)qY4Cz-=NotuFHl#b&&t*uj|AJ(>M}9;4ylw>y z>CH}1yq-IYA${@6e1`PP$1M%%)ee!%w+4Xn@dXX(yY`b*xCBc54Iuy6N73UV#kf<{>*IRC4NUxkgZcTkuI#i+~UY}mW_cqo(eV97ui1@k+|IumYTot>CmPWmp`KA ziyDI$W&(5ca|nwcQs@1EB>0IiA8qMLBw1yQ1@MZ zwCONnY4;GTvWen{#Uu-Zsp~g{WMeG==IsGKT^6L;QD-@nx``dhRTD~V0kkbXN!_y~ zk_k6ykwbRc(Yz4UhU=i7I7x0reQcgDo96{k+&O|=>MYfXrPvDKvnla;gU7db!1}^R zvBmivpyO?+JG&9&4*Rj?VVbES{jMI8#n&+W!)$tM@NS@{y@ud_pSo~&sGl$4uupd> zo(%(e##Qt-nF{ir;S@XW!GaCFkaeF(V+Qqv&viVx^La>o+kiJI84253u;fjEdHrti zTI564az9peF@gHc1?#JhrMR&sERRg7i)wi}Gdk>*#8xBjW z9a!%i1mCHhnEPNA0GC6-yTyE*K7I>zU0Y$*zOOJl?xGzO)$(`dJ zl)hV!xW_FdhKcWq_=@)?8B-AWgOgBnE){B|4>q5g53M01J5DsrI%pjIqOF^?XSf;}i6-+}U&ra%quMsZMf zWH+iCKWMgi8i)m{Q-PZLjkiHco5ag?ep>DkhfSD!8kLqEw)n}OVRf8qM1JGUD5lcKk19KcAX+4m-!c|dJa{};n z8p*z&)HQ5NF0nPq5p{PFd9qe3lCn7{?gk+@w`b};(2WTloyo!4`JE7mE`>g z>S7lGuq7Ho-~fEOX&PeP&Hy#4GAv*EQYSN$!H?jhxGo zaMU;`D$r66)ODx;%j6(H9Xdmp|AxBD(IowysVjPi0b=Qk-jNfq?`i^yo~*~kcLHEO zzZlu8*&$TjLaumghS`_NFy}9dO6%XSjEZJ7)mjP5%3XlwvxZRqG)0ejP!l^MHt8^R zP94zZokFiVF2#Q}g6Ydrp=hi8jbhwha!WE`iEK~t(J=sy>N%P#hjsOX+OQ!Kdxw*F z##1-vC5E5uPwrLS zh{cA(=Xwyn^Io(qMUU>2IBd>XgY|`LkrWD~c*F+3+|>JMc1JAjd>epwW+YoyfwyfK ze4FwjyC<1e`fo#Gb3W=$FM-u0ghZ zHkh|HCTVg7(|lZjuTmZOE_z`5FQS;V45;Bppa$##Dyl4EJ2c&xWv3WZm}LDK3_p^N zrR@%rt0=cS`@t7)hgGdL7nf0QrO2JV6Y;ZcPm)D>scRNSUBO;hP%0DV0u50<>k}$X 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�{A# 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

1$B%FSAE%T|+s6z11a3g#3yxND-~))cr)D3f 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 BK+zq+2Ds%R@kcs7A2&OQPv9G70Jz+ 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%0Ag3Bydx=!Kn|lhBH1I@ZA> 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 RDUU$5xz*O0iw=ytl|(Y&-lE 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 literal 2178048 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 z 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 *-1~5WjNf2iH#z(ZdL=@tZ&o)4nxOmlXfY`yAtR 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

Z;%J5^SpuNsFT_1#~)CG~u!TT&K& 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

*DZ*^n2A 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%0DUU9~5}Dz>NZ5FYr~2X)ImB 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

r{Y$tM=;T<2&Qr+W_DRrdnV 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 a1Mwb+_dvV{;yn=Wfp`zZd*J`69{4wR!Bn{b From d87cb9abcb1348641d59bd5b6a910fd454a2cb28 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 22 Jan 2018 18:48:01 +0100 Subject: [PATCH 34/91] Fix emscripten build --- code/Modules/Gfx/private/displayMgrBase.h | 2 +- code/Modules/Gfx/private/emscDisplayMgr.cc | 53 +++++------- code/Modules/Gfx/private/emscDisplayMgr.h | 11 ++- code/Modules/Gfx/private/gl.h | 33 ++++++++ code/Modules/Gfx/private/sokolGfxBackend.cc | 10 +-- code/Modules/Gfx/private/sokolImpl.cc | 29 +------ code/Samples/BlendTest/BlendTest.cc | 35 ++++++-- code/Samples/NativeTexture/NativeTexture.cc | 90 ++++++++++----------- 8 files changed, 140 insertions(+), 123 deletions(-) create mode 100644 code/Modules/Gfx/private/gl.h diff --git a/code/Modules/Gfx/private/displayMgrBase.h b/code/Modules/Gfx/private/displayMgrBase.h index 17652edc9..e0db2928f 100644 --- a/code/Modules/Gfx/private/displayMgrBase.h +++ b/code/Modules/Gfx/private/displayMgrBase.h @@ -26,7 +26,7 @@ class displayMgrBase { ~displayMgrBase(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxDesc& setup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// return true if display is currently setup diff --git a/code/Modules/Gfx/private/emscDisplayMgr.cc b/code/Modules/Gfx/private/emscDisplayMgr.cc index 753135496..20c87369f 100644 --- a/code/Modules/Gfx/private/emscDisplayMgr.cc +++ b/code/Modules/Gfx/private/emscDisplayMgr.cc @@ -3,8 +3,6 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "emscDisplayMgr.h" -#include "Gfx/private/gl/gl_impl.h" -#include "Gfx/private/gl/glCaps.h" #include namespace Oryol { @@ -57,10 +55,7 @@ EMSCRIPTEN_KEEPALIVE bool is_soft_fullscreen_active() { } // extern "C" //------------------------------------------------------------------------------ -emscDisplayMgr::emscDisplayMgr() : -storedCanvasWidth(0), -storedCanvasHeight(0), -ctx(0) { +emscDisplayMgr::emscDisplayMgr() { self = this; } @@ -74,25 +69,26 @@ emscDisplayMgr::~emscDisplayMgr() { //------------------------------------------------------------------------------ void -emscDisplayMgr::SetupDisplay(const GfxSetup& renderSetup, const gfxPointers& ptrs) { +emscDisplayMgr::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(renderSetup, ptrs); + displayMgrBase::SetupDisplay(desc, ptrs); - if (renderSetup.HtmlTrackElementSize) { + if (desc.HtmlTrackElementSize) { // register notification callback when canvas size changes double width, height; - if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(renderSetup.HtmlElement.AsCStr(), &width, &height)) { + if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(desc.HtmlElement.AsCStr(), &width, &height)) { this->displayAttrs.FramebufferWidth = (int) width; this->displayAttrs.FramebufferHeight = (int) height; Log::Info("Tracked HTML element size '%s': %dx%d\n", - renderSetup.HtmlElement.AsCStr(), + desc.HtmlElement.AsCStr(), this->displayAttrs.FramebufferWidth, this->displayAttrs.FramebufferHeight); } - emscripten_set_canvas_element_size(renderSetup.HtmlElement.AsCStr(), this->displayAttrs.FramebufferWidth, this->displayAttrs.FramebufferHeight); + emscripten_set_canvas_element_size(desc.HtmlElement.AsCStr(), this->displayAttrs.FramebufferWidth, this->displayAttrs.FramebufferHeight); emscripten_set_resize_callback(nullptr, nullptr, false, emscWindowSizeChanged); - } else if (renderSetup.Windowed) { - emscripten_set_canvas_element_size("#canvas", renderSetup.Width, renderSetup.Height); + } + else if (desc.Windowed) { + emscripten_set_canvas_element_size("#canvas", desc.Width, desc.Height); } else { enter_soft_fullscreen(); @@ -100,19 +96,19 @@ emscDisplayMgr::SetupDisplay(const GfxSetup& renderSetup, const gfxPointers& ptr EmscriptenWebGLContextAttributes ctxAttrs; emscripten_webgl_init_context_attributes(&ctxAttrs); - ctxAttrs.alpha = 0 < PixelFormat::NumBits(renderSetup.ColorFormat, PixelChannel::Alpha); - ctxAttrs.depth = 0 < PixelFormat::NumBits(renderSetup.DepthFormat, PixelChannel::Depth); - ctxAttrs.stencil = 0 < PixelFormat::NumBits(renderSetup.DepthFormat, PixelChannel::Stencil); - ctxAttrs.antialias = renderSetup.SampleCount > 1; + ctxAttrs.alpha = 0 < PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Alpha); + ctxAttrs.depth = 0 < PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth); + ctxAttrs.stencil = 0 < PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil); + ctxAttrs.antialias = desc.SampleCount > 1; ctxAttrs.premultipliedAlpha = false; ctxAttrs.preserveDrawingBuffer = false; Log::Info("emscDisplayMgr: alpha=%d, depth=%d, stencil=%d, antialias=%d\n", ctxAttrs.alpha, ctxAttrs.depth, ctxAttrs.stencil, ctxAttrs.antialias); // first try to get an WebGL2 context - glCaps::Flavour glFlavour = glCaps::GLES3; ctxAttrs.minorVersion = 0; #if ORYOL_OPENGLES3 + this->useGLES2 = false; Log::Info("emscDisplayMgr: trying to create WebGL2 context...\n"); ctxAttrs.majorVersion = 2; this->ctx = emscripten_webgl_create_context(nullptr, &ctxAttrs); @@ -126,14 +122,14 @@ emscDisplayMgr::SetupDisplay(const GfxSetup& renderSetup, const gfxPointers& ptr Log::Info("emscDisplayMgr: using WebGL1 context...\n"); ctxAttrs.majorVersion = 1; this->ctx = emscripten_webgl_create_context(nullptr, &ctxAttrs); - glFlavour = glCaps::GLES2; + this->useGLES2 = true; } o_assert2(this->ctx > 0, "Failed to create WebGL context"); // in case we run on an iOS device, need to enabled the // WEBKIT_WEBGL_compressed_texture_pvrtc, this is not done automatically // by emscripten (only for WEBGL_compressed_texture_pvrtc) - if (glFlavour == glCaps::GLES2) { + if (this->useGLES2) { Log::Info("emscDisplayMgr: try enabling WEBKIT_WEBGL_compressed_texture_pvrtc\n"); if (emscripten_webgl_enable_extension(this->ctx, "WEBKIT_WEBGL_compressed_texture_pvrtc")) { Log::Info("emscDisplayMgr: WEBKIT_WEBGL_compressed_texture_pvrtc enabled\n"); @@ -143,8 +139,6 @@ emscDisplayMgr::SetupDisplay(const GfxSetup& renderSetup, const gfxPointers& ptr } } emscripten_webgl_make_context_current(this->ctx); - - glCaps::Setup(glFlavour); } //------------------------------------------------------------------------------ @@ -152,21 +146,12 @@ void emscDisplayMgr::DiscardDisplay() { o_assert(this->IsDisplayValid()); o_assert(0 != this->ctx); - - glCaps::Discard(); emscripten_webgl_destroy_context(this->ctx); this->ctx = 0; displayMgrBase::DiscardDisplay(); } -//------------------------------------------------------------------------------ -void -emscDisplayMgr::glBindDefaultFramebuffer() { - ::glBindFramebuffer(GL_FRAMEBUFFER, 0); - ORYOL_GL_CHECK_ERROR(); -} - //------------------------------------------------------------------------------ EM_BOOL emscDisplayMgr::emscCanvasSizeChanged(int eventType, const void* reserved, void* userData) { @@ -181,10 +166,10 @@ emscDisplayMgr::emscCanvasSizeChanged(int eventType, const void* reserved, void* EM_BOOL emscDisplayMgr::emscWindowSizeChanged(int eventType, const EmscriptenUiEvent* uiEvent, void* userData) { double width, height; - if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(self->gfxSetup.HtmlElement.AsCStr(), &width, &height)) { + if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(self->gfxDesc.HtmlElement.AsCStr(), &width, &height)) { self->displayAttrs.FramebufferWidth = (int) width; self->displayAttrs.FramebufferHeight = (int) height; - emscripten_set_canvas_element_size(self->gfxSetup.HtmlElement.AsCStr(), self->displayAttrs.FramebufferWidth, self->displayAttrs.FramebufferHeight); + emscripten_set_canvas_element_size(self->gfxDesc.HtmlElement.AsCStr(), self->displayAttrs.FramebufferWidth, self->displayAttrs.FramebufferHeight); } return true; } diff --git a/code/Modules/Gfx/private/emscDisplayMgr.h b/code/Modules/Gfx/private/emscDisplayMgr.h index b0d1de714..445744001 100644 --- a/code/Modules/Gfx/private/emscDisplayMgr.h +++ b/code/Modules/Gfx/private/emscDisplayMgr.h @@ -27,21 +27,20 @@ class emscDisplayMgr : public displayMgrBase { ~emscDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs); /// discard the display, rendering cannot happen after void DiscardDisplay(); - /// bind the default frame buffer - void glBindDefaultFramebuffer(); /// emscripten callback when canvas size has changed (for soft-fullscreen) static EM_BOOL emscCanvasSizeChanged(int eventType, const void* reserved, void* userData); /// emscripten callback when window size has changed (for HTMLUseCanvasSize) static EM_BOOL emscWindowSizeChanged(int eventType, const EmscriptenUiEvent* uiEvent, void* userData); static emscDisplayMgr* self; - int storedCanvasWidth; - int storedCanvasHeight; - EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx; + bool useGLES2 = false; + int storedCanvasWidth = 0; + int storedCanvasHeight = 0; + EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = 0; }; } // namespace _priv diff --git a/code/Modules/Gfx/private/gl.h b/code/Modules/Gfx/private/gl.h new file mode 100644 index 000000000..3e3d2cc5a --- /dev/null +++ b/code/Modules/Gfx/private/gl.h @@ -0,0 +1,33 @@ +#pragma once +//------------------------------------------------------------------------------ +/** + @file Gfx/private/gl.h + @brief include the right GL headers for the target platform +*/ +#if !ORYOL_OPENGL +#error "attempting to include GL headers on non-GL platform" +#endif +#if ORYOL_RASPBERRYPI +#define GL_GLEXT_PROTOTYPES +#include "GLES2/gl2.h" +#include "GLES2/gl2ext.h" +#elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS +#include "Gfx/private/flextGL.h" +#elif ORYOL_IOS +#include +#include +#elif ORYOL_EMSCRIPTEN + #if ORYOL_OPENGLES2 + #define GL_GLEXT_PROTOTYPES + #include + #include + #else + #include + #endif +#elif ORYOL_ANDROID +#define GL_GLEXT_PROTOTYPES +#include +#include +#else +#error "Missing platform for GL header include!" +#endif \ No newline at end of file diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 708e5625f..2a0397b4c 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -485,8 +485,8 @@ sokolGfxBackend::Setup(const GfxDesc& desc, const gfxPointers& ptrs) { sgDesc.shader_pool_size = desc.ResourcePoolSize[GfxResourceType::Shader]; sgDesc.pipeline_pool_size = desc.ResourcePoolSize[GfxResourceType::Pipeline]; sgDesc.pass_pool_size = desc.ResourcePoolSize[GfxResourceType::Pass]; - #if ORYOL_EMSCRIPTEN - sgDesc.gl_force_gles2 = this->displayManager.force_gles2; + #if ORYOL_GLES3 + sgDesc.gl_force_gles2 = this->displayManager.forceGLES2; #elif ORYOL_METAL sgDesc.mtl_device = mtlDisplayMgr::mtlDevice(); sgDesc.mtl_renderpass_descriptor_cb = mtlDisplayMgr::mtlRenderPassDescriptor; @@ -546,10 +546,10 @@ sokolGfxBackend::QueryShaderLang() { ShaderLang::Code slang = ShaderLang::Invalid; #if ORYOL_OPENGL_CORE_PROFILE slang = ShaderLang::GLSL330; - #elif ORYOL_OPENGL_GLES2 + #elif ORYOL_OPENGLES2 slang = ShaderLang::GLSL100; - #elif ORYOL_OPENGL_GLES3 - if (this->displayManager.force_gles2) { + #elif ORYOL_OPENGLES3 + if (this->displayManager.useGLES2) { slang = ShaderLang::GLSL100; } else { diff --git a/code/Modules/Gfx/private/sokolImpl.cc b/code/Modules/Gfx/private/sokolImpl.cc index 15ba2d5d5..26a2dad09 100644 --- a/code/Modules/Gfx/private/sokolImpl.cc +++ b/code/Modules/Gfx/private/sokolImpl.cc @@ -11,34 +11,11 @@ #define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) #define SOKOL_UNREACHABLE o_assert_dbg(false) #if ORYOL_OPENGL - #if ORYOL_RASPBERRYPI - #define GL_GLEXT_PROTOTYPES - #include "GLES2/gl2.h" - #include "GLES2/gl2ext.h" - #elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS - #include "Gfx/private/flextGL.h" - #elif ORYOL_IOS - #include - #include - #elif ORYOL_EMSCRIPTEN - #if ORYOL_OPENGLES2 - #define GL_GLEXT_PROTOTYPES - #include - #include - #else - #include - #endif - #elif ORYOL_ANDROID - #define GL_GLEXT_PROTOTYPES - #include - #include - #else - #error "Missing platform for GL header include!" - #endif +#include "Gfx/private/gl.h" #endif #if ORYOL_OPENGLES2 -#define SOKKOL_GLES2 -#elif ORYOL_OPENGL3 +#define SOKOL_GLES2 +#elif ORYOL_OPENGLES3 #define SOKOL_GLES3 #elif ORYOL_OPENGL_CORE_PROFILE #define SOKOL_GLCORE33 diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index 59ff4a5ba..e63ba2f45 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -91,12 +91,35 @@ BlendTestApp::OnRunning() { float d = 1.0f / BlendFactor::Num; for (uint32_t y = 0; y < BlendFactor::Num; y++) { for (uint32_t x = 0; x < BlendFactor::Num; x++) { - this->params.translate.x = ((d * x) + d*0.5f) * 2.0f - 1.0f; - this->params.translate.y = ((d * y) + d*0.5f) * 2.0f - 1.0f; - triDrawState.Pipeline = this->pipelines[y][x]; - Gfx::ApplyDrawState(triDrawState); - Gfx::ApplyUniformBlock(this->params); - Gfx::Draw(0, 3); + bool valid = true; + /* WebGL exceptions: + - "GL_SRC_ALPHA_SATURATE as a destination blend function is disallowed in WebGL 1" + - "constant color and constant alpha cannot be used together as source and + destination factors in the blend function" + */ + const BlendFactor::Code src = (BlendFactor::Code) x; + const BlendFactor::Code dst = (BlendFactor::Code) y; + if (dst == BlendFactor::SrcAlphaSaturated) { + valid = false; + } + else if (((src == BlendFactor::BlendColor) || (src == BlendFactor::OneMinusBlendColor)) && + ((dst == BlendFactor::BlendAlpha) || (dst == BlendFactor::OneMinusBlendAlpha))) + { + valid = false; + } + else if (((src == BlendFactor::BlendAlpha) || (src == BlendFactor::OneMinusBlendAlpha)) && + ((dst == BlendFactor::BlendColor) || (dst == BlendFactor::OneMinusBlendColor))) + { + valid = false; + } + if (valid) { + this->params.translate.x = ((d * x) + d*0.5f) * 2.0f - 1.0f; + this->params.translate.y = ((d * y) + d*0.5f) * 2.0f - 1.0f; + triDrawState.Pipeline = this->pipelines[y][x]; + Gfx::ApplyDrawState(triDrawState); + Gfx::ApplyUniformBlock(this->params); + Gfx::Draw(0, 3); + } } } Gfx::EndPass(); diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index dcf110e5a..03150d231 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -13,7 +13,7 @@ // need to access GL API directly #if ORYOL_OPENGL -#include "Gfx/private/flextGL.h" +#include "Gfx/private/gl.h" #endif using namespace Oryol; @@ -26,7 +26,7 @@ class NativeTextureApp : public App { AppState::Code notSupported(); // render a 'not supported' message - glm::mat4 computeMVP(const glm::vec3& pos); + glm::mat4 computeMVP(const glm::vec3& pos); PrimitiveGroup primGroup; DrawState drawState; ResourceLabel texLabel; @@ -53,26 +53,26 @@ NativeTextureApp::OnInit() { Gfx::Setup(gfxDesc); Dbg::Setup(DbgSetup::MSAA4()); - // FIXME: D3D and Metal - #if !ORYOL_OPENGL - return App::OnInit(); - #endif - - auto shape = ShapeBuilder::New() - .RandomColors(true) - .Positions("in_pos", VertexFormat::Float3) - .TexCoords("in_uv", VertexFormat::Float2) - .Box(1.0f, 1.0f, 1.0f, 4) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); + // FIXME: D3D and Metal + #if !ORYOL_OPENGL + return App::OnInit(); + #endif + + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Box(1.0f, 1.0f, 1.0f, 4) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::Buffer() + .From(shape.VertexBufferDesc) + .Content(shape.Data) + .Create(); + this->drawState.IndexBuffer = Gfx::Buffer() + .From(shape.IndexBufferDesc) + .Content(shape.Data) + .Create(); #if ORYOL_OPENGL // the interesting part, create 2 GL textures and hand them to the @@ -93,30 +93,30 @@ NativeTextureApp::OnInit() { Gfx::ResetStateCache(); // make sure that the texture creation parameters here match the OpenGL - // creation parameters (size, texture type, pixel format etc...), - // push a new resource label and keep it for later since we'll have - // to cleanup the resource ourselves - Gfx::PushResourceLabel(); - this->drawState.FSTexture[0] = Gfx::Texture() - .Type(TextureType::Texture2D) - .Width(TexWidth) - .Height(TexHeight) - .Format(PixelFormat::RGBA8) - .Usage(Usage::Stream) - .NativeTexture(0, this->glTextures[0]) - .NativeTexture(1, this->glTextures[1]) - .Create(); + // creation parameters (size, texture type, pixel format etc...), + // push a new resource label and keep it for later since we'll have + // to cleanup the resource ourselves + Gfx::PushResourceLabel(); + this->drawState.FSTexture[0] = Gfx::Texture() + .Type(TextureType::Texture2D) + .Width(TexWidth) + .Height(TexHeight) + .Format(PixelFormat::RGBA8) + .Usage(Usage::Stream) + .NativeTexture(0, this->glTextures[0]) + .NativeTexture(1, this->glTextures[1]) + .Create(); this->texLabel = Gfx::PopResourceLabel(); #endif - - // ...and finally the pipeline object - this->drawState.Pipeline = Gfx::Pipeline() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + + // ...and finally the pipeline object + this->drawState.Pipeline = Gfx::Pipeline() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; @@ -131,7 +131,7 @@ AppState::Code NativeTextureApp::OnRunning() { #if !ORYOL_OPENGL - return notSupported(); + return notSupported(); #endif this->angleY += 0.01f; this->angleX += 0.02f; From 59f0ed1b03619b29de67705cef7caeda2a4740cc Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 23 Jan 2018 17:14:10 +0100 Subject: [PATCH 35/91] Fix iOS and Android build, and some Gfx code cleanup --- code/Modules/Assets/Gfx/MeshBuilder.h | 30 +-- code/Modules/Gfx/Gfx.cc | 236 +++++++++--------- code/Modules/Gfx/GfxTypes.h | 6 +- code/Modules/Gfx/private/displayMgrBase.cc | 5 +- code/Modules/Gfx/private/displayMgrBase.h | 4 +- code/Modules/Gfx/private/eglDisplayMgr.cc | 43 +--- code/Modules/Gfx/private/eglDisplayMgr.h | 18 +- code/Modules/Gfx/private/emscDisplayMgr.cc | 4 +- code/Modules/Gfx/private/emscDisplayMgr.h | 4 +- code/Modules/Gfx/private/gfxPointers.h | 24 -- code/Modules/Gfx/private/glfwDisplayMgr.cc | 6 +- code/Modules/Gfx/private/glfwDisplayMgr.h | 2 +- code/Modules/Gfx/private/iosDisplayMgr.h | 14 +- code/Modules/Gfx/private/iosDisplayMgr.mm | 40 +-- code/Modules/Gfx/private/mtlDisplayMgr.h | 2 +- code/Modules/Gfx/private/mtlDisplayMgr.mm | 4 +- code/Modules/Gfx/private/sokolGfxBackend.cc | 11 +- code/Modules/Gfx/private/sokolGfxBackend.h | 3 +- .../Input/private/android/androidInputMgr.cc | 2 +- 19 files changed, 194 insertions(+), 264 deletions(-) delete mode 100644 code/Modules/Gfx/private/gfxPointers.h diff --git a/code/Modules/Assets/Gfx/MeshBuilder.h b/code/Modules/Assets/Gfx/MeshBuilder.h index 587da32e8..15f57c74b 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.h +++ b/code/Modules/Assets/Gfx/MeshBuilder.h @@ -43,22 +43,22 @@ namespace Oryol { class MeshBuilder { -public: +public: /// number of vertices uint32_t NumVertices = 0; /// number of indices (default 0 for non-indexed meshes) uint32_t NumIndices = 0; /// index type (default is 16-bit indices) - IndexType::Code IndexType = IndexType::UInt16; + Oryol::IndexType::Code IndexType = IndexType::UInt16; /// read/write access to vertex layout VertexLayout Layout; /// vertex data usage Usage::Code VertexUsage = Usage::Immutable; /// index data usage - Usage::Code IndexUsage = Usage::Immutable; - + Usage::Code IndexUsage = Usage::Immutable; + /// begin writing vertex and index data - MeshBuilder& Begin(); + MeshBuilder& Begin(); /// write 1D component vertex data MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x); /// write 2D vertex data @@ -74,15 +74,15 @@ class MeshBuilder { /// write 16-bit triangle indices MeshBuilder& Triangle(uint32_t triangleIndex, uint16_t vertexIndex0, uint16_t vertexIndex1, uint16_t vertexIndex2); /// write 32-bit triangle indices - MeshBuilder& Triangle32(uint32_t triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); - /// mesh builder result - struct Result { - BufferDesc VertexBufferDesc; - BufferDesc IndexBufferDesc; - VertexLayout Layout; - IndexType::Code IndexType; - MemoryBuffer Data; - }; + MeshBuilder& Triangle32(uint32_t triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); + /// mesh builder result + struct Result { + BufferDesc VertexBufferDesc; + BufferDesc IndexBufferDesc; + VertexLayout Layout; + Oryol::IndexType::Code IndexType; + MemoryBuffer Data; + }; /// end writing vertex and index data, return result, and reset MeshBuilfer Result Build(); @@ -91,7 +91,7 @@ class MeshBuilder { void clear(); /// compute byte offset into vertex buffer given vertex and component index uint32_t vertexByteOffset(uint32_t vertexIndex, int compIndex) const; - + Result result; bool inBegin = false; diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 8ecd3f8cf..19a627f35 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -5,7 +5,6 @@ #include "Gfx.h" #include "Core/Core.h" #include "Core/Trace.h" -#include "Gfx/private/gfxPointers.h" #include "Gfx/private/gfxBackend.h" namespace Oryol { @@ -30,10 +29,7 @@ Gfx::Setup(const class GfxDesc& desc) { state = Memory::New<_state>(); state->gfxDesc = desc; - gfxPointers pointers; - pointers.displayMgr = &state->backend.displayManager; - - state->backend.Setup(desc, pointers); + state->backend.Setup(desc); state->runLoopId = Core::PreRunLoop()->Add([] { state->backend.ProcessSystemEvents(); }); @@ -152,21 +148,21 @@ bool Gfx::QueryFeature(GfxFeature::Code feat) { o_assert_dbg(IsValid()); return state->backend.QueryFeature(feat); -} - -//------------------------------------------------------------------------------ -ShaderLang::Code -Gfx::QueryShaderLang() { - o_assert_dbg(IsValid()); - return state->backend.QueryShaderLang(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -Gfx::QueryResourceState(const Id& id) { - o_assert_dbg(IsValid()); - return state->backend.QueryResourceState(id); -} +} + +//------------------------------------------------------------------------------ +ShaderLang::Code +Gfx::QueryShaderLang() { + o_assert_dbg(IsValid()); + return state->backend.QueryShaderLang(); +} + +//------------------------------------------------------------------------------ +ResourceState::Code +Gfx::QueryResourceState(const Id& id) { + o_assert_dbg(IsValid()); + return state->backend.QueryResourceState(id); +} //------------------------------------------------------------------------------ ResourceLabel @@ -266,16 +262,16 @@ Gfx::Draw(int baseElement, int numElements, int numInstances) { state->gfxFrameInfo.NumDraw++; state->backend.Draw(baseElement, numElements, numInstances); } - -//------------------------------------------------------------------------------ -void -Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { - o_trace_scoped(Gfx_Draw); - o_assert_dbg(IsValid()); - o_assert_dbg(state->inPass); - state->gfxFrameInfo.NumDraw++; - state->backend.Draw(primGroup.BaseElement, primGroup.NumElements, numInstances); -} + +//------------------------------------------------------------------------------ +void +Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { + o_trace_scoped(Gfx_Draw); + o_assert_dbg(IsValid()); + o_assert_dbg(state->inPass); + state->gfxFrameInfo.NumDraw++; + state->backend.Draw(primGroup.BaseElement, primGroup.NumElements, numInstances); +} //------------------------------------------------------------------------------ Id @@ -288,18 +284,18 @@ Gfx::CreateTexture(const TextureDesc& desc, const void* data, int size) { } return resId; } - -//------------------------------------------------------------------------------ -Id -Gfx::CreateTexture(const TextureDesc& desc) { - return Gfx::CreateTexture(desc, nullptr, 0); -} - -//------------------------------------------------------------------------------ -Id -Gfx::CreateTexture(const TextureDesc& desc, const MemoryBuffer& data) { - return Gfx::CreateTexture(desc, data.Data(), data.Size()); -} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateTexture(const TextureDesc& desc) { + return Gfx::CreateTexture(desc, nullptr, 0); +} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateTexture(const TextureDesc& desc, const MemoryBuffer& data) { + return Gfx::CreateTexture(desc, data.Data(), data.Size()); +} //------------------------------------------------------------------------------ Id @@ -312,18 +308,18 @@ Gfx::CreateBuffer(const BufferDesc& desc, const void* data, int size) { } return resId; } - -//------------------------------------------------------------------------------ -Id -Gfx::CreateBuffer(const BufferDesc& desc) { - return Gfx::CreateBuffer(desc, nullptr, 0); -} - -//------------------------------------------------------------------------------ -Id -Gfx::CreateBuffer(const BufferDesc& desc, const MemoryBuffer& data) { - return Gfx::CreateBuffer(desc, data.Data(), data.Size()); -} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateBuffer(const BufferDesc& desc) { + return Gfx::CreateBuffer(desc, nullptr, 0); +} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateBuffer(const BufferDesc& desc, const MemoryBuffer& data) { + return Gfx::CreateBuffer(desc, data.Data(), data.Size()); +} //------------------------------------------------------------------------------ Id @@ -360,72 +356,72 @@ Gfx::CreatePass(const PassDesc& desc) { } return resId; } - -//------------------------------------------------------------------------------ -Id -Gfx::AllocBuffer(const Locator& loc) { - o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(loc); - if (!resId.IsValid()) { - resId = state->backend.AllocBuffer(); - state->backend.AddResource(loc, resId); - } - return resId; -} - -//------------------------------------------------------------------------------ -Id -Gfx::AllocTexture(const Locator& loc) { - o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(loc); - if (!resId.IsValid()) { - resId = state->backend.AllocTexture(); - state->backend.AddResource(loc, resId); - } - return resId; -} - -//------------------------------------------------------------------------------ -void -Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int size) { - o_assert_dbg(IsValid()); - state->backend.InitBuffer(id, desc, data, size); -} - -//------------------------------------------------------------------------------ -void -Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const MemoryBuffer& data) { - o_assert_dbg(IsValid()); - state->backend.InitBuffer(id, desc, data.Data(), data.Size()); -} - -//------------------------------------------------------------------------------ -void -Gfx::InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size) { - o_assert_dbg(IsValid()); - state->backend.InitTexture(id, desc, data, size); -} - -//------------------------------------------------------------------------------ -void -Gfx::InitTexture(const Id& id, const TextureDesc& desc, const MemoryBuffer& data) { - o_assert_dbg(IsValid()); - state->backend.InitTexture(id, desc, data.Data(), data.Size()); -} - -//------------------------------------------------------------------------------ -void -Gfx::FailBuffer(const Id& id) { - o_assert_dbg(IsValid()); - state->backend.FailBuffer(id); -} - -//------------------------------------------------------------------------------ -void -Gfx::FailTexture(const Id& id) { - o_assert_dbg(IsValid()); - state->backend.FailTexture(id); -} + +//------------------------------------------------------------------------------ +Id +Gfx::AllocBuffer(const Locator& loc) { + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(loc); + if (!resId.IsValid()) { + resId = state->backend.AllocBuffer(); + state->backend.AddResource(loc, resId); + } + return resId; +} + +//------------------------------------------------------------------------------ +Id +Gfx::AllocTexture(const Locator& loc) { + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(loc); + if (!resId.IsValid()) { + resId = state->backend.AllocTexture(); + state->backend.AddResource(loc, resId); + } + return resId; +} + +//------------------------------------------------------------------------------ +void +Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int size) { + o_assert_dbg(IsValid()); + state->backend.InitBuffer(id, desc, data, size); +} + +//------------------------------------------------------------------------------ +void +Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const MemoryBuffer& data) { + o_assert_dbg(IsValid()); + state->backend.InitBuffer(id, desc, data.Data(), data.Size()); +} + +//------------------------------------------------------------------------------ +void +Gfx::InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size) { + o_assert_dbg(IsValid()); + state->backend.InitTexture(id, desc, data, size); +} + +//------------------------------------------------------------------------------ +void +Gfx::InitTexture(const Id& id, const TextureDesc& desc, const MemoryBuffer& data) { + o_assert_dbg(IsValid()); + state->backend.InitTexture(id, desc, data.Data(), data.Size()); +} + +//------------------------------------------------------------------------------ +void +Gfx::FailBuffer(const Id& id) { + o_assert_dbg(IsValid()); + state->backend.FailBuffer(id); +} + +//------------------------------------------------------------------------------ +void +Gfx::FailTexture(const Id& id) { + o_assert_dbg(IsValid()); + state->backend.FailTexture(id); +} //------------------------------------------------------------------------------ void diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 1ba6e78f2..1afe2bf43 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -847,7 +847,7 @@ struct BufferDesc { /// the buffer type (vertex- or index-buffer) BufferType::Code Type = BufferType::VertexBuffer; /// the buffer usage - Usage::Code Usage = Usage::Immutable; + Oryol::Usage::Code Usage = Usage::Immutable; /// the buffer size in bytes int Size = 0; /// optional byte-offset to init-data @@ -922,7 +922,7 @@ struct PipelineDesc { /// primitive type PrimitiveType::Code PrimType = PrimitiveType::Triangles; /// index type (none, 16-bit or 32-bit) - IndexType::Code IndexType = IndexType::None; + Oryol::IndexType::Code IndexType = IndexType::None; /// depth-stencil-state CompareFunc::Code DepthCmpFunc = CompareFunc::Always; @@ -1220,7 +1220,7 @@ class TextureDesc { /// number of mipmaps in the texture int NumMipMaps = 1; /// the usage-hint of the texture - Usage::Code Usage = Usage::Immutable; + Oryol::Usage::Code Usage = Usage::Immutable; /// the pixel format (can be one of the depth formats if this is a depth-render-target) PixelFormat::Code Format = PixelFormat::RGBA8; /// the sample count, for MSAA render targets diff --git a/code/Modules/Gfx/private/displayMgrBase.cc b/code/Modules/Gfx/private/displayMgrBase.cc index 480f146b7..623ad63a5 100644 --- a/code/Modules/Gfx/private/displayMgrBase.cc +++ b/code/Modules/Gfx/private/displayMgrBase.cc @@ -21,13 +21,11 @@ displayMgrBase::~displayMgrBase() { This method must be overwritten in a platform-specific subclass. */ void -displayMgrBase::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { +displayMgrBase::SetupDisplay(const GfxDesc& desc) { o_assert(!this->displayValid); - this->displayValid = true; this->gfxDesc = desc; this->displayAttrs = desc.GetDisplayAttrs(); - this->pointers = ptrs; this->curFramebufferWidth = this->displayAttrs.FramebufferWidth; this->curFramebufferHeight = this->displayAttrs.FramebufferHeight; } @@ -37,7 +35,6 @@ void displayMgrBase::DiscardDisplay() { o_assert(this->displayValid); this->displayValid = false; - this->pointers = gfxPointers(); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/displayMgrBase.h b/code/Modules/Gfx/private/displayMgrBase.h index e0db2928f..c98e290c9 100644 --- a/code/Modules/Gfx/private/displayMgrBase.h +++ b/code/Modules/Gfx/private/displayMgrBase.h @@ -9,7 +9,6 @@ */ #include "Gfx/GfxTypes.h" #include "Core/Containers/Map.h" -#include "Gfx/private/gfxPointers.h" #include namespace Oryol { @@ -26,7 +25,7 @@ class displayMgrBase { ~displayMgrBase(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// return true if display is currently setup @@ -56,7 +55,6 @@ class displayMgrBase { DisplayAttrs displayAttrs; eventHandlerId uniqueIdCounter = 0; Map handlers; - gfxPointers pointers; bool displayValid = false; int curFramebufferWidth = 0; // used to detect display size changes int curFramebufferHeight = 0; // used to detect display size changes diff --git a/code/Modules/Gfx/private/eglDisplayMgr.cc b/code/Modules/Gfx/private/eglDisplayMgr.cc index 832ea93d9..f4bdabf6e 100644 --- a/code/Modules/Gfx/private/eglDisplayMgr.cc +++ b/code/Modules/Gfx/private/eglDisplayMgr.cc @@ -10,8 +10,6 @@ #if ORYOL_RASPBERRYPI #include "bcm_host.h" #endif -#include "Gfx/private/gl/gl_impl.h" -#include "Gfx/private/gl/glCaps.h" #if ORYOL_ANDROID // this is in the app's main file (see App.h -> OryolApp) @@ -21,15 +19,6 @@ extern android_app* OryolAndroidAppState; namespace Oryol { namespace _priv { -//------------------------------------------------------------------------------ -eglDisplayMgr::eglDisplayMgr() : -eglDisplay(nullptr), -eglConfig(nullptr), -eglSurface(nullptr), -eglContext(nullptr) { - // empty -} - //------------------------------------------------------------------------------ eglDisplayMgr::~eglDisplayMgr() { if (this->IsDisplayValid()) { @@ -39,13 +28,13 @@ eglDisplayMgr::~eglDisplayMgr() { //------------------------------------------------------------------------------ void -eglDisplayMgr::SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs) { +eglDisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); o_assert(nullptr == this->eglDisplay); Log::Info("eglDisplayMgr::SetupDisplay() called!\n"); - displayMgrBase::SetupDisplay(gfxSetup, ptrs); + displayMgrBase::SetupDisplay(desc); #if ORYOL_RASPBERRYPI bcm_host_init(); @@ -61,17 +50,17 @@ eglDisplayMgr::SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs) { // make sure we have a valid rendering RGBA format, e.g. RGB is // not a valid framebuffer format - int colorBits = PixelFormat::NumBits(gfxSetup.ColorFormat, PixelChannel::Red); + int colorBits = PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Red); o_assert((colorBits == 4) || (colorBits == 8)); EGLint eglConfigAttrs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_SAMPLES, gfxSetup.SampleCount, + EGL_SAMPLES, desc.SampleCount, EGL_RED_SIZE, colorBits, EGL_GREEN_SIZE, colorBits, EGL_BLUE_SIZE, colorBits, EGL_ALPHA_SIZE, colorBits, - EGL_DEPTH_SIZE, PixelFormat::NumBits(gfxSetup.DepthFormat, PixelChannel::Depth), - EGL_STENCIL_SIZE, PixelFormat::NumBits(gfxSetup.DepthFormat, PixelChannel::Stencil), + EGL_DEPTH_SIZE, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth), + EGL_STENCIL_SIZE, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil), EGL_NONE }; EGLint numConfigs = 0; @@ -97,6 +86,11 @@ eglDisplayMgr::SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs) { this->eglContext = eglCreateContext(this->eglDisplay, this->eglConfig, EGL_NO_CONTEXT, contextAttrs); o_assert(eglGetError() == EGL_SUCCESS); o_assert(nullptr != this->eglContext); + #if ORYOL_OPENGLES3 + this->useGLES2 = false; + #else + this->useGLES2 = true; + #endif #if ORYOL_ANDROID o_assert(OryolAndroidAppState); @@ -110,7 +104,7 @@ eglDisplayMgr::SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs) { eglGetConfigAttrib(this->eglDisplay, this->eglConfig, EGL_NATIVE_VISUAL_ID, &format); int32_t w = ANativeWindow_getWidth(window); int32_t h = ANativeWindow_getHeight(window); - if (!gfxSetup.HighDPI) { + if (!gfxDesc.HighDPI) { w/=2; h/=2; } ANativeWindow_setBuffersGeometry(window, w, h, format); @@ -160,11 +154,6 @@ eglDisplayMgr::SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs) { o_error("eglDisplayMgr: eglMakeCurrent failed!\n"); return; } - #if ORYOL_OPENGLES3 - glCaps::Setup(glCaps::GLES3); - #else - glCaps::Setup(glCaps::GLES2); - #endif // query actual display size and set in DisplayAttrs EGLint actualWidth = 0, actualHeight = 0; @@ -189,7 +178,6 @@ eglDisplayMgr::DiscardDisplay() { eglTerminate(this->eglDisplay); this->eglConfig = nullptr; this->eglDisplay = nullptr; - glCaps::Discard(); displayMgrBase::DiscardDisplay(); } @@ -202,13 +190,6 @@ eglDisplayMgr::Present() { displayMgrBase::Present(); } -//------------------------------------------------------------------------------ -void -eglDisplayMgr::glBindDefaultFramebuffer() { - ::glBindFramebuffer(GL_FRAMEBUFFER, 0); - ORYOL_GL_CHECK_ERROR(); -} - } // namespace _priv } // namespace Oryol diff --git a/code/Modules/Gfx/private/eglDisplayMgr.h b/code/Modules/Gfx/private/eglDisplayMgr.h index 54c3be85c..5a15f3740 100644 --- a/code/Modules/Gfx/private/eglDisplayMgr.h +++ b/code/Modules/Gfx/private/eglDisplayMgr.h @@ -6,7 +6,7 @@ @brief display manager class for EGL platforms */ #include "Gfx/private/displayMgrBase.h" -#include "Gfx/private/gl/gl_decl.h" +#include "Gfx/private/gl.h" #include namespace Oryol { @@ -14,25 +14,21 @@ namespace _priv { class eglDisplayMgr : public displayMgrBase { public: - /// constructor - eglDisplayMgr(); /// destructor ~eglDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& GfxSetup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// present the current rendered frame void Present(); - /// bind the default frame buffer - void glBindDefaultFramebuffer(); - - EGLDisplay eglDisplay; - EGLConfig eglConfig; - EGLSurface eglSurface; - EGLContext eglContext; + bool useGLES2 = false; + EGLDisplay eglDisplay = nullptr; + EGLConfig eglConfig = nullptr; + EGLSurface eglSurface = nullptr; + EGLContext eglContext = nullptr; }; } // namespace _priv diff --git a/code/Modules/Gfx/private/emscDisplayMgr.cc b/code/Modules/Gfx/private/emscDisplayMgr.cc index 20c87369f..6868a91f5 100644 --- a/code/Modules/Gfx/private/emscDisplayMgr.cc +++ b/code/Modules/Gfx/private/emscDisplayMgr.cc @@ -69,9 +69,9 @@ emscDisplayMgr::~emscDisplayMgr() { //------------------------------------------------------------------------------ void -emscDisplayMgr::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { +emscDisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(desc, ptrs); + displayMgrBase::SetupDisplay(desc); if (desc.HtmlTrackElementSize) { // register notification callback when canvas size changes diff --git a/code/Modules/Gfx/private/emscDisplayMgr.h b/code/Modules/Gfx/private/emscDisplayMgr.h index 445744001..b88af3e6c 100644 --- a/code/Modules/Gfx/private/emscDisplayMgr.h +++ b/code/Modules/Gfx/private/emscDisplayMgr.h @@ -27,7 +27,7 @@ class emscDisplayMgr : public displayMgrBase { ~emscDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc); /// discard the display, rendering cannot happen after void DiscardDisplay(); @@ -38,8 +38,6 @@ class emscDisplayMgr : public displayMgrBase { static emscDisplayMgr* self; bool useGLES2 = false; - int storedCanvasWidth = 0; - int storedCanvasHeight = 0; EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = 0; }; diff --git a/code/Modules/Gfx/private/gfxPointers.h b/code/Modules/Gfx/private/gfxPointers.h deleted file mode 100644 index cc15de49b..000000000 --- a/code/Modules/Gfx/private/gfxPointers.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::_priv::gfxPointers - @ingroup _privv - @brief pointers to the internal Gfx module objects - - This is used to internally communicate pointers to Gfx 'singletons', instead - of the typical singleton macros (which would expose the pointers to the outside world). -*/ -#include "Core/Types.h" - -namespace Oryol { - -namespace _priv { - -class displayMgr; - -struct gfxPointers { - class displayMgr* displayMgr = nullptr; -}; - -} // namespace _priv -} // namespace Oryol diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.cc b/code/Modules/Gfx/private/glfwDisplayMgr.cc index 627d4bc56..1a7520858 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.cc +++ b/code/Modules/Gfx/private/glfwDisplayMgr.cc @@ -7,7 +7,7 @@ #include "Core/Log.h" #include "Core/String/StringBuilder.h" #define GLFW_INCLUDE_NONE -#include "GLFW/glfw3.h" +#include "GLFW/glfw3.h" #include "flextGL.h" namespace Oryol { @@ -41,10 +41,10 @@ glfwDisplayMgr::getGlfwWindow() { //------------------------------------------------------------------------------ void -glfwDisplayMgr::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { +glfwDisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(desc, ptrs); + displayMgrBase::SetupDisplay(desc); // setup GLFW if (!glfwInit()) { diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.h b/code/Modules/Gfx/private/glfwDisplayMgr.h index 0f16dabcd..4f7539db2 100644 --- a/code/Modules/Gfx/private/glfwDisplayMgr.h +++ b/code/Modules/Gfx/private/glfwDisplayMgr.h @@ -24,7 +24,7 @@ class glfwDisplayMgr : public displayMgrBase { ~glfwDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxDesc& gfxDesc, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& gfxDesc); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// process window system events (call near start of frame) diff --git a/code/Modules/Gfx/private/iosDisplayMgr.h b/code/Modules/Gfx/private/iosDisplayMgr.h index 26af1b95e..87798e4b1 100644 --- a/code/Modules/Gfx/private/iosDisplayMgr.h +++ b/code/Modules/Gfx/private/iosDisplayMgr.h @@ -6,8 +6,7 @@ @brief display manager for IOS */ #include "Gfx/private/displayMgrBase.h" -#include "Gfx/private/gl/gl_decl.h" -#include "Core/private/ios/iosBridge.h" +#include "Gfx/private/gl.h" namespace Oryol { namespace _priv { @@ -20,19 +19,16 @@ class iosDisplayMgr : public displayMgrBase { ~iosDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// present the current rendered frame void Present(); - /// bind the default frame buffer - void glBindDefaultFramebuffer(); - static iosDisplayMgr* self; - GLuint glDefaultFramebuffer; - GLint glFramebufferWidth; - GLint glFramebufferHeight; + bool useGLES2 = false; + GLint glFramebufferWidth = 0; + GLint glFramebufferHeight = 0; }; } // namespace _priv diff --git a/code/Modules/Gfx/private/iosDisplayMgr.mm b/code/Modules/Gfx/private/iosDisplayMgr.mm index 914a76ae8..09926d052 100644 --- a/code/Modules/Gfx/private/iosDisplayMgr.mm +++ b/code/Modules/Gfx/private/iosDisplayMgr.mm @@ -2,9 +2,8 @@ // iosDisplayMgr.mm //------------------------------------------------------------------------------ #include "Pre.h" -#include "iosDisplayMgr.h" -#include "Gfx/private/gl/gl_impl.h" -#include "Gfx/private/gl/glCaps.h" +#include "iosDisplayMgr.h" +#include "Core/private/ios/iosBridge.h" #include namespace Oryol { @@ -13,10 +12,7 @@ iosDisplayMgr* iosDisplayMgr::self = nullptr; //------------------------------------------------------------------------------ -iosDisplayMgr::iosDisplayMgr() : -glDefaultFramebuffer(0), -glFramebufferWidth(0), -glFramebufferHeight(0) { +iosDisplayMgr::iosDisplayMgr() { o_assert(nullptr == self); self = this; } @@ -32,21 +28,21 @@ //------------------------------------------------------------------------------ void -iosDisplayMgr::SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs) { +iosDisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); Log::Info("iosDisplayMgr::SetupDisplay() called!\n"); - displayMgrBase::SetupDisplay(gfxSetup, ptrs); + displayMgrBase::SetupDisplay(gfxDesc); // modify the color/depth/stencil format and content scaling of the GLKView GLKView* glkView = _priv::iosBridge::ptr()->glkView; - if (gfxSetup.HighDPI) { + if (gfxDesc.HighDPI) { glkView.contentScaleFactor = 2.0f; } else { glkView.contentScaleFactor = 1.0f; } - switch (gfxSetup.ColorFormat) { + switch (gfxDesc.ColorFormat) { case PixelFormat::R5G6B5: glkView.drawableColorFormat = GLKViewDrawableColorFormatRGB565; break; @@ -61,7 +57,7 @@ glkView.drawableColorFormat = GLKViewDrawableColorFormatRGB565; break; } - switch (gfxSetup.DepthFormat) { + switch (gfxDesc.DepthFormat) { case PixelFormat::None: glkView.drawableDepthFormat = GLKViewDrawableDepthFormatNone; glkView.drawableStencilFormat = GLKViewDrawableStencilFormatNone; @@ -91,13 +87,12 @@ else { glkView.drawableMultisample = GLKViewDrawableMultisampleNone; } - */ + */ if ([glkView.context API] == kEAGLRenderingAPIOpenGLES2) { - glCaps::Setup(glCaps::GLES2); - } else { - glCaps::Setup(glCaps::GLES3); - } - + this->useGLES2 = true; + } else { + this->useGLES2 = false; + } // update the displayAttrs with the actual frame buffer size this->glFramebufferWidth = (int) glkView.drawableWidth; @@ -113,10 +108,8 @@ void iosDisplayMgr::DiscardDisplay() { o_assert(this->IsDisplayValid()); - this->glDefaultFramebuffer = 0; this->glFramebufferWidth = 0; this->glFramebufferHeight = 0; - glCaps::Discard(); displayMgrBase::DiscardDisplay(); } @@ -128,12 +121,5 @@ displayMgrBase::Present(); } -//------------------------------------------------------------------------------ -void -iosDisplayMgr::glBindDefaultFramebuffer() { - GLKView* glkView = _priv::iosBridge::ptr()->glkView; - [glkView bindDrawable]; -} - } // namespace _priv } // namespace Oryol diff --git a/code/Modules/Gfx/private/mtlDisplayMgr.h b/code/Modules/Gfx/private/mtlDisplayMgr.h index b3d6dd570..a14b71b9d 100644 --- a/code/Modules/Gfx/private/mtlDisplayMgr.h +++ b/code/Modules/Gfx/private/mtlDisplayMgr.h @@ -18,7 +18,7 @@ class mtlDisplayMgr : public displayMgrBase { ~mtlDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// check whether the window system requests to quit the application diff --git a/code/Modules/Gfx/private/mtlDisplayMgr.mm b/code/Modules/Gfx/private/mtlDisplayMgr.mm index e777e3d88..d0dfb2ca5 100644 --- a/code/Modules/Gfx/private/mtlDisplayMgr.mm +++ b/code/Modules/Gfx/private/mtlDisplayMgr.mm @@ -38,10 +38,10 @@ //------------------------------------------------------------------------------ void -mtlDisplayMgr::SetupDisplay(const GfxDesc& desc, const gfxPointers& ptrs) { +mtlDisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(desc, ptrs); + displayMgrBase::SetupDisplay(desc); this->configureWindow(desc); #if ORYOL_MACOS diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 2a0397b4c..b7ee1bed5 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -1,6 +1,10 @@ //------------------------------------------------------------------------------ // sokolGfxBackend.cc //------------------------------------------------------------------------------ +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif #include "Pre.h" #include "Core/Core.h" #include "Core/Assertion.h" @@ -474,9 +478,9 @@ sokolGfxBackend::~sokolGfxBackend() { //------------------------------------------------------------------------------ void -sokolGfxBackend::Setup(const GfxDesc& desc, const gfxPointers& ptrs) { +sokolGfxBackend::Setup(const GfxDesc& desc) { o_assert(!this->isValid); - this->displayManager.SetupDisplay(desc, ptrs); + this->displayManager.SetupDisplay(desc); // setup sokol-gfx sg_desc sgDesc = { }; @@ -1015,3 +1019,6 @@ sokolGfxBackend::ProcessSystemEvents() { } // namespace _priv } // namespace Oryol +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif \ No newline at end of file diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokolGfxBackend.h index 443f1ccd0..3dc25a695 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokolGfxBackend.h @@ -7,7 +7,6 @@ */ #include "Gfx/GfxTypes.h" #include "Gfx/private/displayMgr.h" -#include "Gfx/private/gfxPointers.h" #include "Resource/ResourceLabel.h" #include "Resource/ResourceRegistry.h" #include "Resource/ResourceLabelStack.h" @@ -23,7 +22,7 @@ class sokolGfxBackend { ~sokolGfxBackend(); /// setup the Gfx backend - void Setup(const GfxDesc& desc, const gfxPointers& ptrs); + void Setup(const GfxDesc& desc); /// shutdown the Gfx backend void Discard(); /// check if Gfx backend has been setup diff --git a/code/Modules/Input/private/android/androidInputMgr.cc b/code/Modules/Input/private/android/androidInputMgr.cc index 59d386876..2fe0adb66 100644 --- a/code/Modules/Input/private/android/androidInputMgr.cc +++ b/code/Modules/Input/private/android/androidInputMgr.cc @@ -41,7 +41,7 @@ androidInputMgr::setup(const InputSetup& setup) { o_error("androidInputMgr: Gfx::Setup() must be called before Input::Setup!\n"); return; } - this->highDPI = Gfx::GfxSetup().HighDPI; + this->highDPI = Gfx::Desc().HighDPI; inputMgrBase::setup(setup); this->touchpad.attached = true; From 179e88e6c8c47c11b967fbb6b5f3c6ed1b639406 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 23 Jan 2018 17:28:42 +0100 Subject: [PATCH 36/91] fix a new GCC warning in ConvertUTF --- code/Modules/Core/String/ConvertUTF.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/Modules/Core/String/ConvertUTF.c b/code/Modules/Core/String/ConvertUTF.c index 9b3deebd6..3a9a8cd34 100644 --- a/code/Modules/Core/String/ConvertUTF.c +++ b/code/Modules/Core/String/ConvertUTF.c @@ -20,6 +20,10 @@ * remains attached. */ +#ifdef __GNUC__ +#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#endif + /* --------------------------------------------------------------------- Conversions between UTF32, UTF-16, and UTF-8. Source code file. From d0b1f3189ec4157659f497fe0c8f3af0d3e31076 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 23 Jan 2018 17:56:26 +0100 Subject: [PATCH 37/91] Fix Linux build --- tools/linux/oryol-shdc | Bin 2311776 -> 2358224 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/linux/oryol-shdc b/tools/linux/oryol-shdc index 36ef42240c571c1858fa83d71b6321d3a150fcee..3a206672bf63831686efdbcd199c0f69bd9fdd0e 100755 GIT binary patch literal 2358224 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�o6p(R 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

YIw zzELFg#!>0dQ_BDU*T+8+EWFc*gd6ZKK!zm9{yi2n*U3B_x7w0gOL0J^0`9|OQtS){k@cCR_T>GzD-;r+e z_3->d(-zS86q;h5dgG%WqQ!|5z`VpOmkc|HjkHcdAfYdi4K9FPH!E{}sI)691f2)xGs{ z#XP8q_SVby{8PRBuFDVuT5;#^ZJ2+kTw1RZdgzD!LbT|v)b>`J zMTBy&w5n9gFtH?EKVlA=dB ztUJBX5DII62^C<{1KEnoy^yay9Ax94(%}3x2aoA=UAEOr`Bis;`CYR#(3BNQ)woM& z)ATdd;^ib1_fKRz);5cRkQyU;NB>C8?&z3R5~FQA>9wz&^Wpbw^XyD$p7VV8MIu1L+*6=kv2a&#}~Sn2Ccz^cm75d&gWZSI$u&cxQ(cLYVCjhjA~xz({J z6O~zc3J;ubCq_srm{eTo`9OA&hCQ6?orZ8aEu229nbXv?!8L`=!RnXH__*kUR)Te@ z+D~Lj;~+!qEldC=*r0d#-*%dfhec*HA#}e{@C`OXHf#5z+#nDac}CLB70amBPJ1!) zxYU-jP*+}MC7$AIy6*S@U1_$RN15kDlu_6-bUu|TW^ti$9i3+cX4QU_yQ2!-QaF6r z*<1aR37PB93zNch-E}`T#xn|9QCk#A2b(&E`Fc;yEy3A`qi}7l+~7RF?>|a}Q(joG zwtRzL1;5X0tyFcu=T*Yorkla*Y*mgIy#jF8-D}ED9;&4T)g*>zHy$;b&@WtGD zALx{YFyQ_ygr5V#mw(M_ZlP-WMDPy5l}aZV9h?W^a1;cqTV3tz_;QVH&oB_?^m8sN zIWF*v+Bjx$nh#dwS3}yDs6Vq~VprGXysO#5&PVKba*5|Q4$755QbAvd(nX1x{$J)c z9_L+nP^Rlk-ZecDhseBpxh3;_yg_#mJ#nMWr8drq=At`u?Ol5&#hbqVLT5v zU{^aefit$#!M56AcKfIjJ`rGIl;@DsK5DvocP<$gab^JeQMJ{rx@hz4&s?-Q08=n0 zj?G1zmvCMA)@WYziMI7$;0h}^NW)_}`X%6e&&wDMy_g;Mj_sKzC&((2C$FW7S6`QR z-!bt3{Sa z& zYpom;<<)QP783OFL9^lWjtmsS2x>>$MdXztH9c>j-34^ zbN%*%UG2pu`l%hyX6<>YBaY^qO%!pMVoB!eXZ&lpiu?09dND`TW%=qjzB|8rE%^f* z?3!(JuH*ikoqA25Rc2SdSO4-`|IEbmLEZ@l47Ci2_&ZPUePjJ@G3WuLa403!5XUv&WL1Ao*5vfQOH_(V@dT^=h4)N5{icQeH2Q^I-QKOt$ORe zy{3Z7_VhOb6dl%4y~J9%i8HCg<{oJmA&7|86Rv!3rv7AenbyQW2e&;uUsw5Nh+Xv2 z>m8VGI6b(zA$|UlRCUfwqW3>y3JD9#GKW!2ujNi(@F3pfYG!Y}qtuu}Z$(LsxM}7o zT$)x_aXOv8DafB|`(%z~3}m`WV`$s=L3&Q7^H^%o2y!~lY6Jv_)>u_fu(A!oX;{Zu z@I7ng9t6~3bC2S|t3L2fB+!|;{UkGx$|6FKJ8wFf$`@-oG>}J$@Ms2d)=^Z|2ZWA2 z?0yAQE0kAZm8dIEWA*UXo9HUN>&%-SsOD7*I>%^IYu%Nid~v6l%$o#=4cTdYzTSB!>=5YT(~$F5 zfdj-nk+u}ik5c8PDMEi#wmaunbeuiY%x|#5n_f6RZfSPloy^P=4OB*k0)MM>c5ypH zUFF{TnqAiDP4FCExi~g~z4~3MGjqJ!^ZNx5v+A73@`Riv4Nhm+QNGcI>h`7TMXg!3 zwZ{A1vaOZ%{q4Yh`#ich?~mM}8M~T3)0;AD<*1;w@_HYEPk0qKT5IJDjd>HuKbmY3 zNjX{dZfM_!A$Ht5ojrBV8?FX)we?9 zM-p<{B-u=1-Nl$19%(1Z!LP9?AFQ~Dken&pGxo(P>PAY8mx#7;F$ez zf`p!Cc0og!wPeqB@@3;x z*Ro6rbxj9~sfBA%mfETFD+t2INP<*Yyr1!wT~2gXT=^lou2|-nCXm! zOYOH-E-Z`$_BCEe?>b1aR@MgVoPiaHseLkc;cu>seK*#n239aQzfVMxDhRlDA(N>6 z#8Hr%tMI=5z;EKwjLM8WbITJwh8A6Ls9`aU*2>%Za2I2_=`J@u&>3E*^Me-zFrm+M zl-udb=xp>FYvr60ypx10yYYZdv^pC+&?R0m-GqPIM5_hgOFa3#ulp2$3YkM7?lZ>N zE?=hYrg9CNfDe5#*MA2z(iFH~6bD&(8;!uJ_GK>4CUpEl%E!0V2;q!xd-@=eIbJol zW`tH#q|4Rjh45}*Bz=2fSEOjfm;W6`&twQgnstWMTDe8%KnXCE9(*w=lP<%;_g5Tj z)4^J3drV<2_k+E2&#bSx;j%)ldKw_JZMsjCE5a`=vD&dIG0F@)2d zcHrgA%^YD6&g(v}IHd#XH5XpaqH86Dr07%AzF>~Jq16BzCiRr@RL`pZibiU!tV_n9X3`+LZZ*-s{SoPiD!RHb?HN-ye_z~2R8dValN>3={4ClNP zQI_KSKXpcx#E!I6w{eGUS9DNj$R7$NLzfE0ulN9gs}@P?j(+4N;}somuim1-cE2HY z?d?3RTg0EtF;Jm^j-xMXd4xS8I+RceF|IZ%~k7D`kT&WS~Nmw;N$(|M+A z@%^1vdJ|RK@!NFqm=3RUy}hg~jhRjAm?Yv+ppCo;*Z!8KSuHZ3{63q)>GP9KncGU& z{z)BsRY@9~Gpc;;I(>OsUz}0U;V9ITY~0$mR)qXf=zF8eX~T&BK`;26mr_m&*Uuj! zWf*z~P15C!wDPXF877rO@-M(T6k7 z;W=xDyFpU({3>qF<%G+w%)-H)T{H;^B9s>yIA^EJ12>VAjy>Lkabh``hhmfYhS(h) zM56V(h=6+bv{MS!wlYt)bNq=sSHG0`1DAohQ>l9O9$;mzto3GjsX%wuAkV+mc1FB6 zRcrBx_xUkZxbrEQ-S0%6U9RrU@J&q3`vndmW3#|gkg}Zjt6R6ddERBgIj6_h7pDe) zAC;>jHNHf5er(IsIc+D8AIRCtyHkU|KuZ6U=MicnxH1(i6+)WwMxZiP%r1c*4BqFe zdgpVi`fGPp-TmpMslqj?TVJ@nq7S^FqR-5x-4|LjhqmtN*FF=eqR$IARP+)5C^5)0 zjN!zHz_zh$L+06$0)gn2s|}n?FXS4-3}1`Y?k1>w9xi7KVU#Er}ch)2nWM zg88vjU2#^gX?n{Bg~QI49-8QIz9ErIkN6@Igq<3P(1Fl}iHc{CT`QG>o}|Vhq)Hl1 zjVsp!V;F~7O7@P_xGFu=@?a!Zn}=F`nZSdshbcTv(8F{drs!c757YHh&@6Y6GUl zCg>&K%k})c_Z>hjuGrx{1FOXq8SfczEw0$(J=f}4Iy_|o+Tsf7e>?-X#jI-P8PF{@ z>lELo>$%MP4geQdlzY#>aB;;j?-?*IuBhVKPTgY^?XZ(MRrh7tc2~oY+NZ;zAT?P{rWJTjfaTfr2{=yl~{TTvo@+PhmaTe7=7B;?+*6q1%pM zWR_oum*G}-F1ePZ$Lt`s^IWdMl3>9;o0tFU_JSj6#gyoQ&w2VTW~QdM<_C=pWw38) zx~F0mABfMc;5S%r<%2oFYJP%EQDl?*OwWns$Q4misW`3pqDkTYUxag;WqGFcZYz=o zH`Z?m?|WHd3Gx=Is#R&i1MU$vfvGYkvk?PgN*zm&g42S4MyVBpD5nSVbk(I(`w(Z| zl+l|ivDR=0Cr&xLaSRt?U2+6V079b|K`Z7o@EHUCy=l8p#t zeYn-~Q@uLx*!#FV&a#^CRK+W}E^h@9ItZ%C8kDRrAaJ@Oo+6O462A;WkcD#`d?L;q zc?y&Df#g_nkK%1SNB3n?A`iY?d_giHPf@bIFgcd=QM`@+)N1~omxs+zzA!!H2`1}{ zl4D69#hXr|>AD;036dvBo?`M8C+maBv80dUZM+|zh&;vQfiHIw0d#VoWPNdREa{_o z8&B-WfAi|$@=w0RI}uYS_f6LKNfJ6UJ&L#S2Yd}`MFZ!(_!94AV|#K*vc7L}Ea|M_ z>GAtHZVxWeRtb54UuQq^^h?&4B*&6IinsCmy!+e9LsW9U#5?1(Uvezzqj(z+ zd;OtTPk-|CClBDAJRn)$KRK54QM`@+D0(Y(5X+OdcqdEaeI zfut*T=^)YvCF=(!$C5URxA7lD&n0~j>4QkONIxuDKPWktv{BqiJO2IHF{E=Xt==YE z$@;^RV|f}y&hhUVe{Jndl!hxm2v@!rPT#i2ZhMy*;Ce-FU}@XIjq(Q$n|oCxJ?U() zNBUvlWtpZSFL)h#BDW>X9BJJYL;_zQ_<*N@hmEu<2bPSqz7XV!`L@zX&2#g(WJ5(E z!jed3TLhgr(2C*V|FHM=@ljRR;&%oD1PGj{Xwj=R+E|HH4Xv$2K{7CrGcr-EfG^cb z8!xrKv`8mNtwL~SNRFoi{BDc2FI3xJTfMDU+X@02OaPN$t%CIhr3${`9D|6ckN}e3 zcddQSOa?;L`#jI*^Zar7Xy%-=*M3`j?X}ikd+oJr2x*y=fF0KIFI&q;6X*bsxpS%- zE3D*NHdnZ%1KJ~)JE0P)8gC(OX2?q3Z&Jj25Q^&}q`P?W&+LQU*rdp&J9O4nND8Sl zu_)J>6sU{XDTyxP(cD5RF>{jNFe%W~9B8VmKPjZnBuG%$q{ub0P*T?bQb?WIpA80+ zBIgC6pROWONS%p0;1H7n)y#ovx(1R$>P*(xAK)HCf1s5)&`Q@JQb?US&`Q2!QlOAI zP)OHcQb?US$V!S67I~nJInYK|F)5_Z9Bd`;H7QWV9H^pe2q~n_EJhBR6zE|N^w2ew z6jEmnv644w%1kKX0=~`~+Gr1zQGuT0{n(3o%SwJ5h*;$tF)Q*G_qM`vgvBiQE?eWM zmi9=NQ!;{85~Tk2+krJaj71$r(hOf`!O(=h%1$2%lF~X@pFm)Uk*QM3jhw9_A)H{XLr28Fik6`*zr& zkE5Y=VzXuAkq*VI@$>`c&aP6l@pE$J;krN!hBkmQQ3=3(Ezp4`BE$bT(cDOtUaoSn4EL zZnsVtS+v7<0qhGPD{KG(Y8DO)U!4TsHEyR9`wC!Ri6aXjr)U5KNNy+-Ry+yj`+zC2 zPyjJYOzj6Cc4YtoY8GA#hn)lmmaA@Qql9Iu=?7qc0Q)H*K+VE%VY8E9!{0D~{ROZ; zfCB(TzobNfnuY7aYbU{rC3GewDuM<8SOg$e6aWEg7S;=aP6GP_4Im~_xH5nP0fe#u z1gKf~FI;yLTzRW<+=&APa3Fw#0AybsK!BQs3B!6P!I~d2fP(~Z5P*XL9Hf8%H48U} z2TvmElDL`D#=!zO7{Fox@sy)Px#>;VGR%0=hw<+MR4hQn01W}CSb+d&7Tyd;p7cQ+ z$Ek@!1ZW6ALjfA1Kmark1qil0X;Dh2I20fYprHx`-=6e7fL7FbDO$cu8TJnk zW!QU%&aRGzJ`w|`4SVJY{|6JS??;Zt32SXgn04_n6Raa*M;E}T3y*V+*IZBlw+%lj0uvwC66ubGry*m9dm>4hze;erO(mrJ7#Va4%t`FaQ&j-SHULs)R!64q-ipBb>eIBcP8Up0f&~~fgC#)1X#of_g^m0BdFKQfg zLAtoYE`NuM_GWLl6Yt^g=Y=ATLLYVOuxNWXu=rOydTJ}~HLAKIC%k|1V%Eo^%z9tL zQfJofDq-NoDr5+%3tZIsr?)f4 zS=BhFyYYhVx@}%m8XzV&ZLetiiARRgqsk2`g{+0o$QuG{xa}Z=lyQrwa%QTQKic~~ z1!!Dvfgf(CuSda`y@f>QQP$7UZ0t}*0-cPoE8B<$D$HK|WqjS5vXkqr7Fuw0%Hc?%sKAz102>LDf4;10f)1DDguaG!35RDFcBxh z|EH88063PSrDF({(&6u(3IZ$H9Dp-BCn5!=lpzKpWxgCR;Ba}3O^voBaYVIrrtCyy z!IUzD0oE5Sy}tp6*Lx}yP(lK5=J7-%0)`X;_ho_sXEZ$(4Oa3i0XTFr5xFp>48b5; zjbH}5jI9zx4kjWarj#Kh zB4xgmFyP1lPlW~45P-ucCL$@Olp!i2WxlL1;79|#g`hb8BP|)`F%fw&r3`@)Df1v#5vehy46zX@^W}yCMRa&7KI%?UP+xXTDMNTf%6#czK+!rpOBH|7 z`Fkk*vZAiQq|frXQ(1^zzK5mb(Ag5+>?h z`?Z<~{trfgdNy|0j9b8C4^DQvng>KJ`vgulKj1YXsMByVB`%@6EIWIN%0B};6Y$T# z&IJ53urmSw4D3w6KLa}x@Xx@`1pG6wGXeh$>`cHv13MG&&%n+E{8O?s0sWNhOh7*+ zI}^|xJ5!zoPlIhm)7PUGzY9@3fgQt(w!Fq8oa_R*G)DL1I7TA(JhC$wdR6Tg>?Hd3 zi~eH27$EkG{!!*ktnzu`W$R<1Cu5=Zn##Xf$#L6JcMdUGlP0u+Y*KpBjay7gFS_v`OiC}haoVKxq8tCfq#!;IHd$P5QhG62j58^R=*U*`6q9m@ zp3EU}lX8fzY$e}+M{#h7zHB95)Ra7(*;~su!_u&K>MmNR_3Jedf?;mT)~c}js%EFU z+=5Z^np4tVU>*OzN*WmZ3|vjrsL#OF1pG5_wf|Mp4zHvgmaApNI;&i5qRt0V(qL)P zP#5PuM|J;e1?~Bpx8$p5)86ilrB&(I-dGwgzQVYAVQIxCr5BdAYn$fjg{5sWDZQ|? z)h4AEmiC_}r5BcVhe_#$rOh-cy|A=tCZ!jaHpZm%!qQGQDZQ|?B9qb!OWX05;2@u+ zz05Z?k9z+U<|bz|%*vZ(H;ZpVI^hZI-6rn9sCT8}p{1)?F{nB-JJr1E{l;WP$H!g9 zge8$%boFg0(NxXaTGq?>9kHm}s!QuHQ&Pw*tvfLj`%CM;vVPCPb7?9^_^#u!%%VD`?W6w_J(|a^%ulz*0!D7R@hG6Jw0~7#be!errzh&Je0Y( za~pnT>?g8Fk^64NC56rL#Mpfk#4)FMr}gKretho8g1W&SU*K^UkMZN|^jMDvb|~wC z&MZ5QX3t+I&v<)2bB^!rDH~`t?wK{{+sS8nt{(MfN0Hh|YPfgZt)p4kaNf(Dv1c2e zO?5@#`dd#Z7#qJOnrJJMd|a*=B6How3({x3HCzin{o7P4d7j07uHvu7N@`RI{H3Y) z!t|Jr0K^dVQG6&4_~Jx!Dgj?ON)ipRD>~$4@<-d)rzj}6pe^!#kvvcrDZ{nd@5Zlp zs~@5@*CfVvjTa0I-q}55KWTM?I!^8$vWq9ve;$JVzjbW3{~)%fJH3@^q2mX+)aU#a zV(yLi(ZhJZ8t2T8g|=ILmz|Cc57}HwjGL0x&_^?eKkp;UX2ATT1Tm0fMHAb0%CY&c zzE2O`sdoW(k4@;P)`GE_QG8of-><4*bp@_U0=4C1&Klq|;MP18FCwsyptix5z2ce` zneo3w`igjrFl8KG5cFks<`?u{=1!bHy$djfEnZD48P?t2w{=e(d(&KTd>iVJA#=i(7O2Z1IWwGP^{p$ASQykMUZ`T>T;ahH{RJIIqc0v$I9^YH$UZ zfxDY;4?J}L-*>A@3LzHAK{@rBE}|y((-?kr6&1UURuy&jXZC!c^;oGL+QNc27V0Y*HY{Gi~=O9yZ6n7;MOI$vD(X z=LU?gA2V`nd>Ts&_K_5-?&ZYTr^f{Yypb}@RB7W$D_kwb`mADAj|vm(a7QxxS-zhW zMo(i$btj`gp+h;7JMqP+d(XR$QOTYs@ck!nPAXC=3CdUuzbnczuyeFc%D~1*qYMKZ z6|`zZk5+vs#~Ta-!}n|G*Jy9$*ggEz9WB0tC7HhWLS}9Kw(?2-@%YwP&0}Khv*!hU ze_nDZoA?_~+V?d)1bttft3}TP6s_f)#h*@-^B(=ZPz&cJM>Y3w2QmI4;%{~h7qNJy zTCe(_jasi?u(lTDc!}7h#ebxl122#fN0p{t!lA^(_7SP|vJc2jX7%v*#9lU$Wg{!G zx6Eqz5f4#ob^oYqb1dzn-H~tzp}IDHtf5yCQzTax1POKTCYd41C#eQaP$@Hsh+R;e|yn=9Tq>G21U0W?s&r;DE`7<4tVu)cZV)deVk zMnlR?^((Fc!;@2kGs8)pA$y#W7qCtYRV45a5>r2%$Y2umvDOKhN}7l z1G%D-YSc};i}sAZioMgFJdE1iakSvac3!oXAAjQLE5AyDL=v~t-y~f28+F@I8o{@< z{F^v;%;gi#?aSB33zM7cey4j8F=^0oG)P6fT&{sRxw1O7-b%ekIVcvxq`RX8LhtA0 zV?D-rtDzEPL8&9`J?cUkzAF69@YMmm=kWt2iV=pG6-drZq{M@?74-D8SN`1mJ9ZV; zDUqh$dUz8m#Z_!nJQ4B|yqR&Eusbp##P)s|;+f!{b$epR+4QG1OncI&^Ubbozxk-D zbK+%3%|4#zIxZQir%3Q~z>lr2=X4fFtp}f|vX<|*#ew~R_X-u5`Dxmn>nStxWb(6< zFboc@lagxY$wgh#_a1$M(hxpB6qD`%TyMwRW;K{|x!<+xZ-azV-#}tOA_QKMySBA= zLSJBk4Lo|el&^c%VA%sVzvWrzGX$9ouP-D7(U{vWvywjpSdLwCT&!DAH^5#Axcoa& z9pb_(Dk#m6qW2qs#G%=KPuXhJSr=#9ucl!1OIGSJz(zgWactn9NNa9Ax}a(_f2`Eq zBpTguL)|vWQiHcK2g1~j78}Dm3g@r6N7~lvOOY=9Zk|_IkQlT0vUpgPORnGGsNo<` ziqNo}kUV6`L6Dh4qxU9l6#4}(-nmGV`gsQ`>Q)*Z6=m6WMpM+|3RF){5%=DWbXO+p zGg6d0)|)G{=;&SY~ZpD=o8-6iz17$Q0Tn8@fWk1nX25Ol3WV%S>C zKhIRy5R?5X{JGxC%wqdU#s;6dw%(}IJA-Cg%Qx?iTpcQmw=poksG7U1W3}YzBNDWBlNSj&zzN}7|nkvtDol?sLzql7WmKEiD!Agv?xkN&ZR|c7apGwODt|}E*p2Su%N6XQppNXa~L-@U%+5HyE zW4aJhxw32oUO30A`=ynV;P`N}3PHZn*R(P!&Au!C4#H0##or>uk2LNOc+40*@vZRc ztIoM110Q{~SG-2|ykYQK3|`mU<F{TswfqRVB_ch3L&u2*f9b;dYNtJ1z9G~cS`(>kCgA%;tpZ~^?B*Ylc&8$FVw=x6M8pgb(*!`+d=goaX#JqFi`x`Agyi%X+$vHa%%O#buetGca;j_HE)r zWFcrJe#XEVgJ^BDkzXKOt`2*b9h+}`<$7{Gy_EOH)CG8H&(&W#XgkP`d9$An0h$$eoQr~Wzm z?&D_&WwLa0S~JH!9^!Gw<6q(vk;yUx28t zl2S=(TO;v35}5(^T_EE~{=;)_O_i*I8sBEv%h$>ZH*K?cx&lC9GR2LBvZ=!ec6Hb7 z@Fo~!oATrappWbKe#uJ7a@I~iTvkHOW6p?L)i{{!a$(|Y3e)qu4;(nKXX8ojr_}Q= z?l~U>*=b@?&dCX{h(CryhR;Lm|p?|EC)z+jUB$q`|aK?)`zNib~I(_rKdeiViF7= z2wvT4n$&ceINUhPO8Ie?Oy_URNloS_;-s(9q||8najPq0ZryOZEp->KI#1eC_o1Np zk2B>f|KJw3ld??~XJbVgXR=rFl%J?h*e|`I32pE}3M@)7SIeiar3_j6ao2r`ug6VF7eZTUX^is4J;IN0o_c~|dOh=doCj;vbQ)SK zrN-@8Ws{Urhi6ZdG%54O$!6YvL)I@V7QHcgq5KzfAJ7KxxmP-msKIMxiDc|pX!x34 zxm4@4CYWDmsiflKM7h$jRcf{4Y}Z#fye52QpUiL9bXqZ11w7VRjxVGXjc!T?Cff35 zVKlU#6UW2cDngTQaax_!2ohShozQaN#LQW5h|!Wsej}DV_A+b46YK#2z)OqjW6s)+ za^b_Z=U0T?X=jC^xR7;ti;pD z3z1#GUhzdE8vBIjqhfc@i;oT`)`jLb$!vhJ%(EI!D`kbZOx|Ul%`4|D`8sPsk|D^c z>62tGm{!1vXj+0aG++0s_8$7! zM%r_bY1PNu*aGln>=f3*_gH|BEr77CP-(=`>}?f~GVJN*;eLXzSv6M}1gX8`He@?B(` zHpFS#FZtS>WpDBuc4rq=ZFrCLu=9NLI~*HmDj^G3Sg}~x@NQM}dwm+0ya6DT|0RJ+ zycKekn1C#jCc1M=sv4I`m$~QAY5FIy`0YujTV5y5Qt?q@DrsEAhid1-!eD|8BSrwJ zWqqqT+1|KNQ@>bU`5N&D!d6Yo*mk~H3%4q#*>fTm zGGAB86dbukW}{e{ZUH2eQpuH2l7p@v0bj0ulS1w|L3TR+U}X1JBg^edB{1$U1T^Z- z9v*e4l}do7@?GI>;$+KfbmX+*V#rF3qlzB2%6WP|FZ#BON*LMBUH5F*6ZD6X6Aqim zl#aQ=YM3KDXSIH@mM@VB#d_jhhIgq<8G!7&Fn`{2)YS#uWl!8we02fqF~cEx5VfIK zZxZ;MvAEj3u+V!PH2Cd??@FXA^b8mn|6RtBjjGAexJ?DtayZV?3Z9b9@uD&FtknHH zGhrlACXDxU9>RNGO0<`@sdR-K>hugZo?q-;Mm6EK{uJLGeoX#)wR{O=nUxB6@u^%H zBK$wq=oczt)=n>xS37;%Lr}S3L?(rMR^LnqW-d{4Q4+1>bCdwhOM1jzI)a~YIk)kw zuXdiY?pCyM7rl?tx=ZQACDGdTt4nF5kf^No(!y{uFMN(Aj;qghWs8-%m2!=ont#AZ zuDavQX-i*bHN>Rm(7i&A5m)Ds#7t~F4zQ@(AX7xHR}a+NCBlTQ1rK857Ogj3_Yn1W zPae%N7%OFED_aSU<~i-AQ5gU3lJo{*xJW0ZcahKzN5!Y`!sHaNS>Gg`M;cA!rKWa! z&^fBf6woWJ;Q>m>@6PX!Wnyc8%ij-IK4mrBDwTw`nbN(zOfV)hysPjd!@H1W{TpN{?EvMtCVOGaLUl-8fbGEn}9rOF6qrNIl}P zRzmhw(LdWLStZ$Gp8--zkwDPNOQj{U=i=iNBuwp|wH~1@OYhb1b`kcjyKb%b3*e-@ z0M1JMh2H0|cZy;AV}&BEZubYeI~Y^Uz#A)$m^#N`N)Qg-D3t(exhDrv)y30G-NiAGQg zpC}Q6=byy)ySBTvs+;wd@^!#%4f_r5mVUwyZ z-@uIv$C`Re>Pp-tq6dZ3RR>bfMlgiB+Um%_O@p;BsLbKS2IiYK!%F^gur!`7Pv9Yk z#lk!+o}P!rFX9!F#Ugdz9Mt_irngkitd4&>SJsNW`BGuzw;7PlIHcqNzXhPR+^{cy z<}?=hRV({S{tn5HKOh!!ynrZQXwv4P0DIh zEk@nl7sDObS*iCwpiW&-n+n?PyJD4FtsnnQz8jg-Viw$9gmxObl-(__7J(NKC${;% zs+BE+V?dIS9U*sGwc&HxQlh~M*|eo(7=+wRIZW^ZtFaI=M&`}B;wZ6Vdki@~u zdxgT>C4wfR)I^-6dCJ+6BK^J%%FZmz1oPaMkFKT#N}H?sXeD7io1{f3h~s0f+5uSA zjMids3J{N^n6pGwKV+knp4o=)5&}@_rBF$Mn^3MK8X_B1XV*80{#_6s2LqB8WBl~n znqL}btIRT-O%GQfZISFa5?}|EiM*sGcJ940E3Ku?rJQ`b5mA(z&L=BrTdAkOBH>sk zlNjDTFlPJ*Bh&GXZYfPY=2Ls0xld-dsCoraVtx8(kDe*32F8PYW9PP_) zq2NGqPRX}${fr^Rd%DSlsJQ?AfR5%%D%GeqTK*(j=z;=D^y+{DJ)_C)-Zo;D zthvCkPKLkyUV;zlGsuO8)GMis*&j~4LG-cb>7S9tmsrVmUc!m}h=u{QJ6ijpB0DX3 z%WQmhn-nC^Y!w=tQJYetkYHq_QD+6Z@En)0JfGW;i1k5u2bE0wJ0=K+qDX~ zx|F=xNvuQ>vUK*!v(DZ>;QyAd1>6I(G7T|vYbUx-!z{p@ouPJr>Z-ayoRh|J03Tkp z844b9b5}GQ=I&ReM&%b-%|=>N-YJ^RI;&xTq^lq?>P@IEwcb(q_~rGwek_Pjj@9b? z3OXp}s8ffEVnYSbv5A|{kp9k;HFR%;M|l@#F&lmjT&T?y?W(;5vP}+yg)lCeYgur5 z19%aBo|*+6RHwh|GneYryJ73@bvRgjvpV@^{PJk+--DJI{ZVFp=1%-6p?~ivr3*Yc?n0qtS~W*P-arq zE?S>_(@LJrLrv{lL1P7NJBxj^EhTS0CEN*H^l3nwb|Vl31`K6del* zdOBrRpt;#6-^}bw&or}dq|}%vIbMX>o7uNlX5Z~p;O)W5F_`!<_e*`fpTjJI4=QZs zrl)|H8@}wU$+3JUrLIU6bRKgzCn6UxA#>VIzFb~NwV*PLiQjY=*?dbNn{RSeCcu@y zlPhhZj!U4)=1JzT^dYOvo&un?Tm?l?dsXA;JkeaDwfCWRUpyPaMRAd7ULAV9x_l#A zi|`Y%NhV-G^g^kRGSnbxH z9@CGaSpS-dl@2T?U z^j&YTh^fS_EzPXZc2Uoy+QNtZ!LlV%pDGQkLZu$;O`i|KJZBeL&N*Vi#gx+041-ZH zU(+zd?0rsJkJizc@)ZJ+D-^7q|NMIg)ZbCxe3>K0Apx~g`xuWyvSx1iq54B&0+1pO z&XoKSs)pFd(vwTYc!rHkO=Gb&c3;gvK52pXPZ{iGvI>wOS-%5kxmj^FGA)=6tpy{! z?=j8MHUwCwuBh-i=o|8;?nv)GluJzDQVR|^fmW7V7kKX~D{rl$t)m`=Y*lETY^dT^VxuK zq!ka$tv3{y1YevU~V)Du2XNaLn5rbhpmRu76E8A zo(VHxMJfi?Xzg>>qK9QKAwB-{ImIUHc6@`l9ly0RkeBIYMueb@swR^ecmcvxEj)xV zHCj-zgEJ8@L8;4oS<%bXJDY~$8dccWV_9ovqnz`G--@J#&w5{GlGm`pDWyj!M=^0p zR_5m`zKzCQ>ZFRuklD~rxTmH^#R@c=N^?@2WsX3x&eDlyv~8=wf;#iYKo>x#OM63Y z5T8*xyp71W9y;I&>$f3Kg{RXpHvN4y(C@Fe2ey$l6WFz#YAMJ}{wHH6?$tRf!EMa` zn6ab#R)W*~eYHdF1b^U6Mb=Irm)srRPH^Wdft_HM9K^`86Fey*I7`MAQli(2cqd@z zVVGclp(<5|*V0*@*p6DslM&p4fE+5A(cz{iyS`cAeULYK2Ikdzs@is{o$cOkq$hrn zIUOMUsPJbNcitl9jH*p%KKiX}0PC~&bB02=!94)lwNTH43spwM#>=MFXHqG9zKU>rf%-g=EY;{2M`_K6{nSs%*X2 z2lbu~hw&x^^)~9-Gh)`t+DmEVc?OuNB>kd$f(a}2f;72E`n5Q>$>{w?#FO(ASXn<2>>YGS4aKyNkRG=N&iAN zT?Sq%7#XC?Ia050HvJ2J`rsh_0|c-4#_K`(;-w+^J6`e|xJ2@=4bt}$f;6LWME|^ffaF_IqxRb9bi&c zax}%6c`Xx?`~pFKf%m$ZTDIZ*L_{QiOThgHN3z`CN`Cm72(m_#QSuWtT4~TqwNk2t za)5%3P@2EjoOl^8(;CV1spZYjCkXj#pS`bxq&nQl&kbEtYUZOP2s4lWN?sCUttBx7*Z=`#Gc>ym zwQf0h@JfO65=?qi$F^)8qotqqQdEUs)bE0#MoLjXqNvBG3(zlrC4Au~+-=Y2FiE(` z+r$*jpIuT*FuTrXUL0JRBK4?jhjKmDR_uM4R!9-jp%a2ujDt0KAH5nBmdm4swUWow zGBk@FE$jgjGS_ynMb@*)?=lthK8&RghL831Z;Cq4b3Y9(QTuRovf;G{dms5LD7U~# zjRvW1Lo>}rbxn!?eVe|q=3|ndD|fM5sd)sQ)1wq`vn>{JIul!2;#LR`PRX(<>Q)!{ za^!8~%nB0t1eR0H<`LhCR6CEExsT)2Isff~dXem{e6{%+ahk^PLp&W?(Uy{D9^fYn(mm$GD}Y{B6$r>8@NGD;64P;=}LhEA`eL zVY@$Rq~OGLg`9sWB-zzErT<^!jgxEQS~5mm5xLa?aSabY$h%}Q!re-4hU!h(a%VDy zV|_Pd@F6g3N-Izwb89F#QCiz)BqnuKh-Fny2s-bZ?0cNWL`fFgkZoOMy)yhg9{3vK(I1)h*pJ3Z%|$Tj^nxq#7bzjn>W-M*r%nk*1RHEg-zBLb8nQS#pTAgh7o97cZtfBxjB2N={u~zE z6X*i*;hUvlRto<#mK9@HnKwBN!duy3P1AVm>C{#-x1}Ct3QL#TQd|8eG>J_-%0C{P zgRiV~$$+fE`Or|LwfvUQiu&l~1>y9iTkH2;aWg)KtJ`|+(__4P;+`W>PO!miZ7clJ zSSqyX+%Q#_kSI?aNN-EE`!H>(4gOQKZLPK@y--ZlZK<7Eh$25DTN&AJZ~9NIsZO3s zQF#ia;ccl>AGkZ`e||6){$<}?f*Kf!;aAm3m`Cey1}|&QkwC~K zCIwxLX_Iz}7$X=JFapV2X2FdZf#f_%7?wjrA2QvSAIYRHBTCf#w7QaVw!a2Qc1BK8YpZBF6VdD7x37eXnW-1e_eVf(r z05i>Pl0H|5x$;QMcbuLk|g^q&VIA!=4I>`+%V)l`YgR6~;K!jDW?r&X(#= zU#WXAlH$)@McYJbv|U%^hqN{8zA*wgYrzkxJXYQrl<07i+Zw^z#iM=3V>=sT~t9{vXdm>eRXQHIsd)-Ccy!>*~Ds< z+Iw_gAgQiIfA(e)A21@2Z0b5wp(JNJd|WBWHRFWqf&i4SuhdRj4Hr_o-(z=)%p)26 zqgjBM!4*tomS3xTk@D>A1))k8rBaTo&0;mL^>OT^nr-*H@rl}8cOBekMon#7&}PGZ zqzq6d6=9O#Z)W{2!(aRx- z8uBTM=$BVSSWh1vQjoUA`!kE@PeA)4fSAz}Hq>jsP|>=#GMj`7p?aD1=EyJ8Dbntj z->BaYM4W)JNm+{2L2fNe`EH|}qZ?x&aawEsRj2FE+T?_xg`*mKR6gIq%k^ErwTJU?s z)#hFdIc3NZL+1r^$k1wtv*pY|!?*RI;k?c1v+5rgj#K_(Xm`5sn92jIdF$qQVh1L6 z)j?NEvbCJRi)*C+PHV@p>9dwQ&y=@?c87Kb87|x@>AuUk!z-C^mmDRkPZU;!5oTrhN*ozPL7#^Gr(Z1Cs zi8UzDQ_6EVkyp;p=uuXVMXTpx3}-+;Qwxe`LcE_9J3 zB~)Zf=tl`TDA#u!q_d6m=#Q=sDnkHuoj$$1kTe(q-xg4LS!^9+jA{%QVYj@{}wlA7yt)#=;YucyTKE8FVq|vxFI~SIpQ=A+(5yiT?}leSdkzDcecFV zzvZ<712+t8N4aWD-D(OF0(MgM@{*b&9LJqnIDhYhREeJ_D~+IICCu$Y4nP!e03tOV zaJF8|&yvgZZJD%>Q9~!I(5IAq&&-b*U!cp`4upUtDN8^nvuax<1QbzcyoM-~lr@rf z0t0QZ#c&mP*OTW{V2d4K>2VLF9f~bQVjj|3-tHgZEv#4*WQ7N|hX-;)YIDo$0|s^u z+>phV2+@|U96JJmx6v$rc@!YD<)%pZ@i`1Qp1HJEL{$$WSdY@2v-db^#L5gy>HcIX4e(B5rz~p^GG?NPv)340 z6Hk^pM-gj=;VJN<3Rur$U`{eXq)(FcKDqQP8k2GuFvmt7RbeDnt9+Io7q6}dDrgRV zWrnj~mlZA31J2G(16-ZRa>z=2gmRMOM>)D>o6<>5(N+7sY*#U`0+OAx-$R-O zOkXL&XZqclxxke!+PD6Oj9gwK_{ zBA_KvEMlNfdTpiT2y@ON_?AyJ`BOEBxFfC^;+6qsbf8bR_t+PxLtp0mQL zl|XZ4R%*G3SKn^!su|l~IVbPM=_)sbBV-8IP0=BgXK#Tza_#foVOII>Fq_mSoZ3x= z;Fq~N6WBxdI;_TBOo{OPec~-qQ@hVv^ftJOrYGX6CsS61p&VT=U&ozw;;JWSqE#bN z6ud}CTu>sCz_)g0E@NxW-xPs~Nw>j^0B{t9rlMpiD(<9Zy1$z}96y;`L8r>$_@?R7 zuZP81RyKeS2k;#HAX>Y2bt#Qhb}sueGUc7L;ZM3h7HKr*ZfB{oAcNG*2d|K)Qso~G zM>3&Y&5G6{V0gu9E*Pw^PFD-eihu+t3I;jMoqG-UlchTJlF+XOr5|c{AM+c+^CXxF z!i{p6wUW08Z%gdM1#Tu!IfVy*r`w99o2$SN1mF?DB zx`Yb!lhNLk!*$}uCP z!k2+E#i{Vl91#l~txZAtmGT58R%>$jVk|jp3*Y+c9v53!QloF|QJie0-!!?z^i2jQ zQ)v38pNv}M{R)0#5Tc%nayeo_c$NAq?lS_WNIGQZi$s!KPZ!?a_22xl_uxSBbY@&# z2m_jryY5KfD2RpT44T93B{c}3r39RM{5cZcl=6=zPO9;(+ABS8GU9IwlCM_3Sf1P7T9 z=P0m#^2d5FUNMv`Wf^|vyD2I^fJPJ>jmpnpHksT1VqB@@AU-9+Cs{&?pt0emobG<_-CtIDXd=G<;ky>jNG@;iU5cUvtd6%K54x;a zzjJn$lQ1t0U1*B8T8;P13E?3_B>l?cLH_V(PI<^5HXVB(;f6K&=-@P+xC|Z-BM6pm z|Ej>}9{l72SBuB!-{8@`A)uF8;C+O#3e$8iozd;afQ&9Pb!W*&6WK3Tl=_-MDvWu+ zyO7Ec)0?~!`+u4eH|CNKgQ>x?HTX()lck;V#V0#;T*|s)*j8 zrH7gOAN3t2O@DhXO`t)|XBKx>>NldK>Yn{4mik6@Pif&V0P}_XL8T|hzC`JLRZRJ9 z^Dg}K6~4aeQ+H#c=&PTu8^?e4Zp_|vNH;!&!4uNJOe*0`jfVTZ`X{A&44pD9nK_aM znqidQ>zjqq39r*}@%M}OuQbBk2u~x-t<<}q$-v5tg+`>D%=C!w)ym!AKczII)`@oE z*9652y!RB@SC&ekmpkB%#(7oUGl#l+jE0+@TqLTmx0@*#b*JK8I-U>JMc$iCa+CG? zY}O+2L;c4cxO{4v*X1XyA|bDczcB@(ZVhD;kV?w@3T-{OOl{7*gR_1Uo_}y93OQ9F zQO$#f%PLiM_25H?YWF>Q@;*MM5C!-aN#pY>=ulCaTHzCyyk!}_LRzUdIR0UCZXTZ- z1ncFVgTS0Pv@~xag&o{^^)SBO*+ZnMGjF~jPuoT8e!`}e7lrsFV>mBk?2|UTyd%ih z6J;Gg$$MMf^UZ7KG=%EoW1+9Sia2M}YYV+UlO?Z=d8|YB*JHvcpKp(lJtfA zB)7zSgp|A@p2>Urr{p>{KbQ4*iC2G6Hcw3Fc{w-fX^osetBIa!!dcGWUU5>M6Lhj{ z1Rq8<=Nz9;XLNFo&vrUlR>~KNlT#XQf-$g6{Z*NSl50zrZRM3^0i+!%<4%NZr@W1>e;qQ?vR3r+gK&{aN8P?bM84Y_ph=E*CR??%-NOob>l3y1lqT2 zpNG4KyQht=d_q>fERd_W8W-gFC34}&AR-M?-S!{<9!2cOiWt0~i+%6styZc_>Yl$& zP#6SaT{~m32?P}(f=BXc#-f8j$h1^inRTuv++o(Kc*QHH;lF$sr{aem&U!C<-=&Fi zPOVpe=rQUKofvzamUdWg=!#r<2YW+{N2F4UL{T+P$X9Yt&rkSl{17ugxj_tapxR@3 z*qwP3B|zF^?&5FaQoqZA{EcvAN{?g&m%8hf0>prifse&&n zS%x#N2Qt4bpj_FGw%tpJt~#m2PR|mLso{i&+lUKok(2qxRXyWxZ={S0fVlyALg}d8 znd8pr16Ig8@{$qcuh4w1JeLz<7OUg%_$Y#`Qtkzqqi%h%vmk!7m!fvl-*l9(W1cCf ztHS`To5Yib*Lil^gyHm~An^oNIKK@Bo(@QDrv2$FUt|q`z)rkFNVbugXSzF~eu7)C zD=YMeGC788{hbe#!rlIyz8&V_4*Uz8?O%l z|EKYdN1&Vp`-fAb&Ih*hR*vkR(@4kjw~r7e=`5>)@3f_^QC6rKbCd z&Kjq+`JFz_i-fvSWoc`gJ9LTPIGSys-yeZ@!Z80?`-X%7eL{Vu8C*Cf_Hb(8$;>~8ZpnmDCtQb>YCct({O_B-5x&v{%S(qa(KT< z2DpANm%H=_z+EC37f;|?x>%JY%CSy8E7`)kO^{LdFLIvSStirMT_S&bOpMgCs~8}m z%_UL?s}T9|o?=n&>mLvaGv{l}#mysLdTYzp%^B;Ci`cw&*3@sSu0PPvO0FSIJYC2b zOW$}8!Lnu66Z5=eH7O)b=C<_rus3!ht~QS;%iJ`w54)JH_}hms3tt{?*+xv#)Ex4J z6FbHc%R_RvRX0k*oF`lMp6F~C)n2|K(LAoDv%lQO%uQ~EPiXYTmQ0}r*9jsp%CE$w zm0vZM6OmE2X`H5++N7;J6J2Z{OkHd{)%DiG(d_h$PoFiaYIo~6ww)MuiG02AoA~Rc zr;SVPHdD@u;w`_UWp97GcFhIEtd(|g+ix2O?lNEG9vm~}qO~tXLoDi=q$7~~TyB;# zwc>*`$}cMOLc=y6KD?R@HVLM}U22UHXJ@!+&L6HKMCbtyJ5hpEg1=swZ#ZS zpBeZ8(MF{ieWx}mvyiBhs?yLF?^db&M0}x2U=n9ETX%em)EU-@_8HccA!j_?SH2Eu zeYY>oSWIVUSd*IxysSH!q8~zcljEoL|V8Hx9e>Q_MGb7Z(F zkntBfUeWKFudJg{K3g9>&%!mtTlMTv=fK%tI7oDC-14H)(edCM|vIa=>sq8$Xrcd%K0gq7$P*PZNv15K*L z_h$LUA#1?}T10RdA(!pqK33v8nr5SRPm+TQi6{CR25TiBrxulE%Xv76(avw78UNwq z8PP}dl{NGZ7c3(^*dE<>P_LEoi|x+340W$aDscAHj|-_lId=D+ z7ZTeJh%od;ixEJ9fVrLxYqLJgjn|_%i{|iC>irix1k_OE&YEsAdt+q;`9hu834%I1 z?r?}mvA3o3#For)>Eiy0*T$8%q|b+cThUhG+@1YJWQ=LcjNaY}_Z9gP4m}-)#aE|x zhhgu^+gb6wVE0`%M>>*frg(Yc+Bpcr=H5DZg(mq--6`DT9Ya!1flv(;Elor^_?KbI zTzXO$SgVKBIKw7e>G~ONBtW2*;S_l*JARLW5%2pd^6M7+q9b#5M<=U4;pT)HR0@Tj zB>A>__`sU^8dmF;-(=%M9q}4|gj41cczTQ7iQ_#Ot3s=I!rZ-q#D^^K#urUZJ)4*=I5}~JJ+jF(4?SST;8M^sb{%JfCp>gzbQ)raW1!S zAwsl5YKPxA4m!*w$m~o%R|m7R95QKZsh7H4{qd z!j|xgD)LvCcS_K-RF$}*io3SQWT>hASSLDxP0RPz)V?b_(6lx){~fFaJ{`I$Uyf;xHEsa(Td%vLYw- zlvoHwh7TJ&dpr`l52@G=9Cw$wiRHp=4`I($tX5T{kj@c1;CkG5*Mhu zT4;$HSX`~hUI8h|zj1PrS;G^;cxtsOdB1%b?+pF2BAO7Lf53Qdd`UF3L@Vw>?NkD_ z@x~>>#$Ex5~C%k!kb4zI*1VmVu=q5Cq4$BlhLhRMG4YlTwA1{2q!$%&lou zL*Tb0haq%qf!4x5Q=3o!#!vClo`yjJ{z*GBKZ4mq0Prq-kDuTdfjJLmo;J+fpB050 znSFJ!YR>OY*B(#emw!ruvNtgBa_03jp^pM-h3Qb3?^s%ISXY$AB z6@su1%;<(6$q{Jb(1zoPE{zHDXE<~Q%^C?mcWYRgV7+8XV7te{ypWgDPzgoasC9O*AtH7i8wPS)2BU!`g}48tJ)OFH*E_ zuUxdeY$kPqtpiwYhk2u@0Xf3^3!Q+9bwt)Gbvq1wzSMMuVB?V`@+0P(;u##j!&LJt zCb_jB!tzNz5S9NAe2~XtEA=NHt1EZRvpR;M^mFaedl18p_<(R?-u{aCcGQcyErS0bj; z-b5#yW3EoZrNUao0+Tw29=gkf=SI`>IKD7og&1rS2L^_niG|j}2+2CkrvK?;C$zru z{keO>E50*h#*D>IdrQ}eHq;&7lW}&o?Cn$jq_gqod%6OI&jk(&L`PpfNyC}m^ZpLC}L_oM}P%{?0Dd|cNeqs#o+Cgj4 zE24?WA)D-cqg{>DKw%{GzPf+z$h^#b6v1TfmB$c6l`0s60&iibQ06;gi@3}C`p)d~ zGvBx<>%oJJi?V<;#zk2f#>BWNYelr|C%s>@XYMbfJC^@zeeCHUqmO-;t!mcLvWmP2 zev1S*7)D+{rzDtLRhG%xCA^05u+HlNM98yre&gieVgqcnNdTE!n$`A zC;E_Y`J@96-A7v(^5Ih6v$L`4``ReJM|@I!U=0FRuFm?aCbt4nDoM4f8rar@tugCC zqXTel0x1`yr+lps*Bcqa0=$ZkVsLY%pj>F$7#E7-6ufPxFKxx+c|j|^jXKRlq7>l~ zb1+3M6@eY`rK`g!lm~2*YMhU2oVO$Hy<(v2_&oc8mCwOyAh5;~Dj|-?+CsU2lZZef|TMA!!u&?x38 zId`0%g;JvZH;6F`RZayU3=r+--#nwZi9GRs%;Lq>sY1x=g&X5!9h(fZ`Et@%3t&(@PeCG_1TCHE@m%PdDk4mb%XoY%Dd|K z&Wj(Fe0GkNgna)h$Xq?Tvg_u5rl)b`*e2;^?XwzQ6j|Nr-3X6bsl&UKCp0BYY<+Tr z4&e&z*tIWY)%1XJG_J5=333_Dy}~Aq#R^52yWWM=dYG*47qelOx%^VzvL-7LS>CT< zyh5!xibA{Lwz9@=fNeOw;8HpMIOH+@bb>-dz5Y5vmDb*9m}|rgadI8-Ah@v-zSqR; zFbkaT7y(*0FmV7?;E%G_aR!JuU7@zL2SE&P#o@MzMKb2z`|?3N^<|YV(>6U9*Pvm# zM#ScPmsoBCi*3fcL00b7i|sbDLb^KiRkGUm#^I3iucvWw1Jn2qII+6RuB5xdT4!M} z(P{M{ix=-N{BfH!4Z5C2TF2{|1!r}3AG}7@^(d>;7H=l5hpZ3LJLis|m2F(Vc1AGY zYT{DmSu~oVC z=2LA>%kh55xq*liNY&)aS*gnQl8mgel*33%dC9H(SdhqU7WF>NHRXqB_$wGZ7MnsV zLezLFDwza+7GeOeuDoiPwdgvM%@}I))clRcWmm4T(hEofGin1@d$?IwN1Y95+nLVI zVAoYOo8xn=IDpW5vA zGGf_VL- zE;bWucAS;G81w7Oaa8<44OWau`DKB5ZcXiL7o_7~>x`AZjuf5=sx!~MB;!|o zm*34;`Bp^e98vWON>YYriR%jinYKVn)+Ueqyv`VfzPLHu{6mQ=qm$_x3unS$u`-V7J zpYG?S<3-3R)ttbAwYoCutdBV8$2-frg83UxPX#BLLJT^XYfvx#?o2MM^U@P(>ly+@ z+k2jcQQZk2TtFbNBjMiR(3pAg5y|E`Wh{$_TdOf^A!nbl60d;Bu=DqhUn$*CUF9>g z-iuN3i4g?<#ZzGoSDVmaS#^=AXUe-QeS{nP}`WDeeIS`ZcaSVpE+VJ*ond{ zRuB_YGtXtL)t$%hZybOn|nPRozoF&n&%((lZYoj`=E5J68;C+dF zIcxjfG%ROrKixYAnv^*BWB4^2G17`NSoZc5)yD|)$cpMBWhKEnpcEu}AJ7dh!<8uu z+1vcoIMAjly#Y=`G*~?A$~SO0ZkV8RktjECr@E6o(T;_#vfEMW3BbylmA+~>5>h7E z<5_+|_pBGJ<=j}m1v;prw#gLYy6w_~EQxb%10O(Nu5sQ~d=dL`x*6k1 zb^10;+dGP|1&dYKx2x3DBIEaF#ykh3Tn-fL@T|gkY7c&fpzc*~6swc3HyWkUdEYw~ z1#PvA|6x}hSItFT=@d6sZp-WAwXp{0Ugyl6uDCmM&Ra%3wHmEQzLv1F0yV%jWbJOH z{>FFjk~ejH(qU%jo;{(R?Cd#a&4$u?9uOF~#Da^GU9bYQ7I^0hE!O&0N#?~nnF06m zc>@z1DU&Z>tcAZofew@uV>&WMFa%8I%uQJ(L7$lQ9v%lG={AqIs2ls;w+-V>=$D&4hKV#sG2J&E50|EWb zqq^yKW&5pzW3_Lid3f`6<51O)a5`2N%2aKT;j0U9?PJAe+2czOe2O=AdN+|T<{ao) z;Y(SsLa}f3m}1cBT|ut{lzAyx^s0XqGq{4u?)`-h=bGOoX4vfhbE&t9)GYNH(k002 zc4@40fPK2m&!3TI8auDQufy&guCDcxAjrQ|d6){k-p$zFSAjq-d7O3=J}kqux*kiB z4yDYkvIQU0$(?46E4m(bim)@g&`R9P0AbD^=E->~v)-&!yQD8Ztz-pghc6elRTav* zHK8ID9BMV*C8+U%)hTmTVKAaX2{S0s+r-hl9DiZwLKrkBA8A!hXb<8rGx~Y?z@<%{ z-WF+pty%?Dw)ukX{NFHv*`4m@7$#AADS&nmuS5`!%Jt$A{uv0!yN++($7&K2y@Zh- z0XW-}Qf=nrapIM1KKWiDQ)NEr{+;ZYrkZiTv664Wb)xPdMgdEiAa(gYoUpzL77-X8Qo`C)m%w^0$39R+gt0OKie*)k;z(?F zVr~%@SBd@{$fIe+fk4^~4gv{mI-1iXQO}&QP+6shh zoSB7n14cDt>6v>RW;ap8{06l}7N{x~PM?o2q0*l2NSc+gud>lXA|SQ0Ke-7s%I2i? zNa5rerxb){BsxRK;zU%MVCz-w;y&g2>ZkW-`jM$kAINp0_2z6Rrl3H|1o^=*@i11a zappTbd$XD6eglnAcc&GbO`=HphN0b_969Bx^6tzJp9PTU98V#?v*@@cSHmt=-QbQd@c3;WaAzmp z`}AjZ2_GJplOndm=5*${lYQNw-z`+O8WeWNe{QE63sf@&!ghvasMCv+BKn+(7@~lL zFJeEnz}d-pi%-JGrGLuerGCIeP-@5Rp9&xAP73gG9hLQtk4^ODlkkyqnV&MQsvd$bXSjI>@s+lP?&H2sjVIsMG9CPrdm#VC-0xOJ+#g;R zuD=b!PTu+jS?064_yG^H<|vWTb^D;s^l;4{R+bt5KHH;Wv#{7&C$+FFbM$^WX>TR3 zlHoQiKv{(G#8yY^fF-O_M{M}Q3f~WV4Z9@ma^Q!cI?Lm@l()P)PMj|8M^NJeI@wCT zh)F*JK$-7%Xx-gRLaDO`12xSkB~l+An|!LWl9SjYhlg3oUr12F9_Gxi<34J;GjVgC ziJNmo-qLe%nVwVH)?dw;&r=^pzn07LFf=*huDlCGcrU;ZvHzPUx_zjPrO#4yAsld< zH$PTZ4+)DG?vuj{3dAG#l}%387x$ZV0Jbq|z4OHUx5S@OT~jV`Y0G?O?oDW}4ArEB%f_TRqpbzsEycK$z8nS}#AS??T^l29dd%5mj|3*>#L9>(b!AzV z{Fxa;@rsq>kNa#4wlO(#)s<`pxsu7{HO3S76O)~@pxbFgpTyR_vC0imYvP({VsHPb zb^aPvxURw{h(#)P+>1NIZB_f#P~cL2{8~Qup-Bfw`jDhfNs51+uYLLYF<*D`^+WwS zhOaoaU(SZY#oPJ1Q@?(Zul@PDkFOcNZkMlhC49jcbn%;f$;cO)WhL*D2j@j|WNl=; zY_wh8W~VROFX)|Yw|ISQb^yc!cv|r3eQT(@0>7EA){qUZIaQQhcU#HixKBmAx}2i;UK?T zk=R^@dU-5IkJ!?_4U?79eaap$Zvkb?en2?UPE>AK!bQ5%qXqTw0}Sgo zT2~aV5QQtumACXwX2~?O%pQqX6=me`Lo9t2CXaTE9AvI0^PJ!H%=`;7J5Ac4=F>{= z?UB!{!>*Q^snM8|8jnY5I5yVsu@9Fh3*#XGB`UBOL*Ba3)~NHOa{HWnTd+~RaWuJR zuM)Z7pIi)IAxG@cZ+$;+VqYf9n*jz6--LGb9lpoRF%I7^Eh{2w<_>J}%BI+^&Llnv zDVO4ktSH{&I|DNFN^la*xs&u3XK>Pf!jsOtHgn=B+(gO zEIbHKk1edzXH76HWkfmrryk~G_)mShHp_p)_ILI)y%z<^qS18HFuh!cDLe;Wb3P|W zZN$;b*NO#Zx!`bxAQg1b7MGxWbEX3%;Wag}^mjPw_lgiK9ZIxeN6bK@;xyeJOV|3` z2MUW?ta4>6vAgib(H>Vh>W6(`$=~(43e2H2Y*mhhRcxF7i7=|s=(ezcc=gN5RxlO- zB+P4jvV0{@<{J(tt+ULbXxKTyZ%LLJ*zqd7 zrd4>&96CMq{%y1H6`G28N#9&`LKntPnYfzPTgz+k^c)O$5pGeGkySj0pV)^;=CJW- zCau6d8KdWX80YYEUskHpU{(G`g`~9c8}fmq!q!BKi1R#OpA|h-w5sHa_g^n;o3^9i zsxMN(SwW!+k`b*Qmf6MSB3F|f*bRezC4xMF>tRo}wmmMyV36BxlrKiWCc45PJFToY z`#5afu%g1HW|ga>{@cFZm#ZQtg{6a~(ytn8&VMoL`t)RkYrAx7nt&SN`j*W6 z1o<-)=@L($8`8OmS3alLg~rRLWcpoTrU6;XtIUPU*J*iDbuChLc?`TpsxDVPdW&$* zK&l!k6Gy7f^rh-#PpTTE@TKZxPpTTR)96Xn$(~fL&6BE=J*iq7NY%-nRIT-->RMl_ zK9?g)Cky3Ih>ieFRH}+dO^-@5wd}~SHP%%aNY$gR6sdaa?SWL?ic}pZl5#pybz7|R zbCs%%K>PnHRcjOxe9<}~76NV7s#G0%`^cwc=IQNdutpIMA7o`rneY#N)eORTOxU5S zWXg?D#ZZC4^p5_9Z||QE{)f*8i;i+>XL;sF!ZT| z*XO8Wva<%u*o`F1S&Zr;* z*C4h(o`eOWINVu|FB{^YT*6~3qD!CQo&)(WXZ^$Oms=d&u{pZ@qatkYKZ}Oi1b0#! zYMtT*LbWk_gB@ymSq`;{N98h>fY@b5w&7NZZk(P;DI+@&w&kLHS43cdnNrnyetCK3*XM2Klm<@$X~GoA zKqFO^Ys6cV)~r;LEf(YFXC-Iy%)raRhq>4BtO|Hu?Krif^2Hn0`%0&`FssVkb*BId z&}kzAKaVGX3aNi0mLq&DmkZ@8>3aq;O&1%e z+%{30{|P-45J=T(&t`3!2PK0{w>t-b$UUs-i!e}Vg&Vu=&X(qlr;s;mX(P-yeY2V$ zFjED4GZ#>gkP6!~LTgh|khIEUw2H(+=_1pa{1Hf(9sU*a28hB5v0P3oi`b`odp&)m zzD85uc5Chs9qM(m$SN+cx3|VB+gWPGt#dPkNNGCVor~j^kw1RrH&jbE^)NW=As?;} zKz6!=^f5M&iz(zypR6NUEa?u?5{0F=-pjm?cRKt;7k5B^82#&b1UmNDjT{n{b)%Sd zFzVop_%z!Vto^X-xW{83_U#jy-L|yG5>aY#Um%y^V|nK}<@i7Lrhj|z-@Q(&j!@&?EqfEcHWUf zw%#FAF8Oeu-Nu*#|FXnp41vo?QZ(Er_?JWCE#N`crY7-Kvn%g1^18Drsq9k&@Z?h8=hBC3b9nT79r|HV8*lAM|;`%1e&@Nq(eUbW%m)E7FYyuD|3IrHt1CB zhr0ja89&7>T+a#z#!o#A9#>kS#ntLcS$Mr6<_MsV~)^^BQ zVD}hydOUoSKHtD>;?d^5%&*VEMOcXVP%}&BM;T74iXEUE?WrV@^NpJz0QYV7SoU9j z%;h^Z<`I5*+#ZOw=&kmuGKWyJRvI_r729N+Ya3U5+9O!G`xg6GL>y*CHw-U;;&K^@ zm8xY7jBA*@x!>f)#}7Q!#Vz$jSe7E&P2I%8%gSebmcLfs0_M6!E5WKhrfhb8)3xp%E2LM|oo65F;k6dG+M<=qNk?H%lTR zP%xnj>S5S~BT7(oTwZHhM_Y66ha5bCu8Mb6<`n`Df@~sEQAyCpt>ibD*823VeaLyG z*hu*jwzov>H#tQXv!4sjI~t}?FYF|oSQX+3nU&lKq+-&jQ^%0%I6SndscSlMu(oDW z-&GdS^nzQ&?iPHu&fey&x+6p(2#nz0DvB$RA@?n|_tERWkce4SWxGIiTH#&bwL zuj+qj)ibe0&cqh^JFR*~aU}gy&~sXu4eE*(3;y8GVkQ3|vyZ!9wZ~6Qmu~p>{#-ux z31uWc=4uZNn8e25d}y|9Pza&jq(XZ!^N|_-zTvZo=oPvAOqkgA$b=9w|7*oCrNsez zGy5IxF$D1Q=_HR23fI#EF##Xc12e)0z4J1<3FIbo`~o_JLaHM62XRL!W2cZA9{F=+ z?G|syQ(|J(tK-&rqQqFqG@qmPMxm!+c1OJs(;#%6XQKA%jzj0O6%UdAROl$NlGWgr zP~*8hY3Nm`&8T-wsy;6dg z%v&S{n7VeVhF78(}1^ySD0(yhQ>XoOowkujkf!GcqJU_l}2?o1Sh zbo6)WY4;~GRk9jBdyV_Kq>cYwdiwp`?x$%lyX#3qe8=sl+%U=my{)%bx`lcEI2!rp zBB;&xE>ZBnygz41ifZDedJMi0q1EnKcxHAPledP6=z{oij*K9*MPhYd*jdR}@sIFO z6jl?gHBt)%sYUkhr^3PAD?|&(E*9OH6b&y9sNZ7~I|yWMRzRlK$)Z-UB8S{FPrjY6 zR!qzn?-+m(HG~{ZUPKNt^lwgySw&sS-i1iN?UF^6~cE3&88= z0VdN@Z$IspiSv->*5d>Il3NYnT^s=*b{|cKF-KW6DRYkjm!`_mxEtWKiOzo3+!(z~ zyc=rjPpl3rc?NGVxM2wwqsVdqP{F-|^eL7eiZXjDS8h}jEJ_mESF9C%*IK&oN?e{2 zXFm1=YwnwTpmYV6zqk$2N3h{lMJu_n8WZhI_CCIhR=(14BJx-^07JW=^HHIAXq{Bs zc;%J#&XLsjY&dbILuGTMmFm@N3ai5H#m%w|Zd$9XMC=w-&8RqZQkktFOh?(T9@N}Az^&s;`0>J;{Y+vlc%LnVsV z4AJUG$R`9YJ_gE~C(|)^3L1`|zh6%NAsFCQDZH_<%vGSFK?hRZxJM8 zx(FhtLgrsF_8;UvU@t~VUw7rKllI%!eR9m@MRJ8X7i#)3Nop=T0BXH9ftnXm=CMw3 z2)&=IOCRKE*?RtD?mT5jS7zMQeO-&;F9lkq2tA$)I7-B5-OpG%dWMp>Ho^hMr?e1~X((EnG zG@Usp+g*+4y54N2rFVj-A^@3#r%*<1}bxcvaPZv$c?A6>y zODVI?&WxixZ1Qv*V%m>5*j(Ehj|^A0HJvQ? z0PA(Z%Zrn3P47D)CLgtReXQYM(aH>4X15KfbFPMWuaYxyPJg=4^jku5DC8RlOpWya z@sN>iar-pi?O>&}v{?Q;cBy8%%!Fjj#`_H$d~}XwbemEqa%MUh+pp+;#F>QS(WS+V zO8k1?pU+}CmY$e1o=EljrnB)b>Nr^ECE^syc#eovFK;?Uw!@qfMpaBlKX49CZD=}5 zya^hfiB`U*XSS->-PXU(`Cf_r67%AX=r?t#_p>9Ksv|nZn|o>KQTektXFNIXoAW0r zSr8i;r_eEvCj#2|*DV2UEay>?Z7~l%vNhtf?z>ewea;0EDD92ka}Kqv6AOr90X;U} zz*z))@V+5@YhX|2yK8CUB5gvj`5I|K{S>G84P2Ddz}Rd9_WDafVuK$BPdfp1=D3|c zo<5hPs$^naSI2Mnhn04gr_87S8!4P@6SvPQ(b-0;QApTfwDB~n5>3vkM4(xfY+1|R zd^6dt%0HPs`pUnTFVy#k%OBKVj!h9|M z0L4afM#@VwTbiIG(W8Q3-c2RIRrHWwsdA=+bKfaW zd{RXeju|JW+GZYZuG~H`UEItmoyt!`ZPjaM4G(QYHg`O)cqetB8XgW{n`x`Ssil+S zOQ?-o$7fVKwS#ya%=_Alfb?-b9JMMAiYFBvBE4RDl6wPWQqL1DV%-8 z%cH$53OMRh+oS18d+5;U#=#xq6izlyD;&6IOD!(j9o5gw_<<8jPg^gL#-HajalE

D5H%*U<(Bg{`{PR3ck>5$R|!tm^j0 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�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

^;(_+K^ySB5uu>cpX`dN@6T-<~-(2 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 Y03P<*XW-up7>ftc4=~gL(LlYpXJ3+R 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

wR+9LZvP64D-|xk2#yE?b_01>4v0!G-bddc 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ΠgF`sDk+_eUpy|jb+1F(3%^G9!D+k*$*Rqb>Yj$- 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⪙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ΠZf9O6) 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�} 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 M{wLBA8V%C=Uq+*PssI20 From 1090f33941ffecdadbe13e300038f4f43fed8a04 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 23 Jan 2018 17:14:10 +0100 Subject: [PATCH 38/91] Updated Windows oryol-shdc.exe --- tools/win32/oryol-shdc.exe | Bin 2143744 -> 2235392 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/win32/oryol-shdc.exe b/tools/win32/oryol-shdc.exe index 32fab96f96c9f62c9ca40289b6efb9108481e937..f83f53ed2b3904083ebea0ffa02570b6d15c2703 100644 GIT binary patch literal 2235392 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�&2XrBR^L$ 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 BKAo6c|u7sIL??cFWGUTeE*C1z%YfC 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

mbE(K zoWQI293HvVNcc7~!to*=MSORgYdT3s2uAc3iOBHPwQTbZde5`yJ;xWA&=<{rM zc%oGDD)*%#9eK?9MZ4q!mB?kbHFX5vBL2rqJsb&crL;ba;MD2!8u>he#V%N61Ej0k zdb~pfE3&?(YeKlq+eTJvz)Fz^69>pZ^iB@M)#R?8zyS=YYUW;GrMDY8APJ4#gazzT zG!Y6V*}+8&cgN}={NQAL)FjA3M(zYl`uBD=sM({~5pnH4j@ zoh%JLv7SDPg2GZ zxc;u4qEFTbLN(O>6x2_%h+0yYtN? zLW0^psaocC5(uQ0Df_HN1pVB(EJk_nuTSFbxV_3A)Vb_&5jH)tQNJ6%d*5};1OtinxpToKcGx_-wtFzww5`dwD1cSq=VMyGcN z=y!cOz01_^kVVq!+rfE#*>t8}y@dXUcX}O2y)>O`c{fZLq1H^9&L{OV>{~x;eN2ab zQFL}<$CTSqwg-D@8y7lTF}EdtBA({w!~UmPa{D4G3b$tj57v6d#miVNV4y`_VMbc5 zIOmV7riZSiX@{C+f9_q2yqNc71N<$L%N1h!0MnkDB+NVCP2;uqaB?RtF$d~Y?=-}i z&ei%I(r5=>a{jgAJ2G^};bhCb zL3^64f)zVZA+j@RBgKV(2T`)B)NNG9dNz^V58JAVJ^6zB^!Z!R$w9$lNwG& zLY2ubW47K(Id7K2g&1vGGZq{`Ef?{Oo)r}_MT*oKWJjHn8k^^6sD30x$~J}ihG)7k ziD?fX#w%wc@5RB#s2+?wp2)FdXKhg1Pm^*%?y$9#u5wyn^0(^j_a52(ztOs9Hye0WY^&ALXeLY2- z`vZ{+mzk|7HXrgB{;%XvfDiQ_YK)>Eu{9|YHJ%zFyN75cTiuFf)`nCKx>&!8#kFox z^tq@W3#4Ev=pL?Cvu{oZ zB900Z8g5-J2(^3sqhF^0iC>BST*gU7C}`DW=Uc9>yHJl$lVA%|kyFFpC=TBd>^E}e zT8N`u+`xa7&ynll73NINhUkD6|958VZ=`YgVDSpm`G}!eh2P9O;PD>XZW6*$vKki% z;S|qlug089$yB_hq<8R4II!^DNX`^qg@0-f+(#rkpLRb#`gbpp2j1xzR0I^C$* zO~QC`pfxJ1bKsu%@}6QWeg%pIR-<~APMkRJ`f%%{xtGH|D#EP=!6D(;v*FeZW3i|X zX)>4u@iYN3LqJ4;5hs-Ykx3HGdtEYUKbR)lGzg$NM+dJLDMH_2E{83`vncKqeW+ehvZ|i&7y)Dw*sdH~bMFdmS-Fo&JU3a6p z#L{K|^jZ6P0&NvJZU#bm9WR#aP2Qq?vwcxcq~%tLKN%WIn+@>V5$RbRU1jUy;g z=r};VhU)MvLVsk{)1+##3~Al6X7J7GO4unK04Kgi)7OgO1e0-T*I+3=m9jAA3kT<; ztU=A-Lv_b0BBn{L9ftmjqyp=qQC)#I0<|@Y2Hm#}U0vcjPF;k!7B?e!IABamcBhs# zW#^hq{qoG@%k!Y^M4r6PCGTHX+Fd`7ybR6Y!8{YL#2ymt?R+nCvir1C6 zjA}UqXsp6REEfLIg9Q3IAH%zHjm67_eK6t7ocDNTnWgG|t;}YJXaR2!KJm`(;057b znZYx|ySfA?g?DugmV|e?f=7gRWd{!m@9M=4Z&z;U99BT@?;&Qcqslv36337jD~Uo9 zLnMLwNS;d)I0WQ%lSD3w9ls-i_BiivB(xzcxq?D7SvP2Uh5ECE_>qDKBJ*0JbLrq2hG+IiXXWDnXsfQ74n*@ob^Tuwhf{09S<0tqa$2TMMA7ilGOE@s> zE+Nv=Ls*ikN(w?p65w~CCpC#&=VKijSn?fZ1Z^ zxk*rYePsS7W0h;g0kms=8kv8ud&&Hz(oViNdUc^^>?S55gL=EisHn#ocx_m598S13 z2mg)g`(;cevBXLQXUj5Hvxe{HYRdp^RG-09%a#hZloS2t@i#r(!?AO9h73!6rZy^9 zegNF{YMc+aqm?Zj;FBpGz$g{awl(5X)f3LBxIHchJt@oZPNJ6h+ca7_f1y!bg_V~u zANd*a50bAglUKf_8F3-k4p{1WYS{vp!e_@k-nBO@uupKf+$%T~p}4=CKa63DV)vx& zr4_eFeD}t$fGb;&yzo#DM~cR7SN9@rC(bjTa=zotb@a4x5In=`{|MTwCjTD&N6L`? zOPkTkr{Z6-epz)-Nw2$JP1JjaP`#NKrg8>zhWuz-$62I=9t!uM2NC?<(YtrCbfQ_V znTbGU=1s6FIE0_4W$3*S)v6)}c~c?5BP(u?_mM@_bnfoLO=2Y_LC&i=KO-I9eTcER zH&q18`H&mca|%%n#Z@)w3-A=3c~H4D5xPuqlOt1P{$d&bQPy~qMc_JlqDC?-zMg(> zRezahVY#D>Kq6z+QI4_cmnhe3d#5W0;-882scJl` z0d4F?#`~jQeV$TNwKr|j=ur8f8m}w&JxH&f(k5wNal7ezEaF=XcABze+gB1Cs&4+d z-IpX#-8uu6n5vg9b^UKU<$F-Qr3c6NpveRmPosqJ+a=UXJ5u#zX;_V-`l|Vhvx0fr zhG=LT;s@H!*a~hbQb`eg-supFAbdPmwYh_bdn4Cr78i(=#dpDr?IlzOpwW#)Gk>x8 zqhTc-MG0%lnrnl_;il|y*`c$+UFbOt!eoe#DUlrJt!kKtJT=6L;Z_lD>jmIL$-N(d z8Jx@@qnG#O6E@?}cf@?M9G=u5iHJOfz`!fjNqX{UE$p&J;$ zMR*ovSyjpSU^(hw32lw`4^8&m%h{seB&4Yq^N0lfE3Ie@iPy~?h_;gFdE}wQrM$TJ zQOz=&v?EaBBweJUDN><`eApz>ap=cwe@7M077p=zoQ@z^*{CLKb-8Sb8?|C@TcRpC zU7FQ<+M|c9oOoO}sB$!p(pMy4*-!m%j(gZT+#u>(YeRuK{e`dSAosYgY|5EC%2?T) zBgiV=5^?^X59%*C3>hnr{55H~jBGEFVYi74D^WaI>n`ET1@eDN)jbvho*pVX6?qngR zwj97o^wOrKiWpf=ohg-7#LQ5G2qgx_@$Pf+`^{%Da3s2fFU)tCuhxBNgx|^FL{LVg za=-#kE%c1cb;YkI3vev|(s1l_Ja1I5kg*m5IjfdB!}A*vMdYrKs^cFaiz9fgY}(g4 z@0ACLq)EV3Pe3Iig%W(rbY93OhB6ijHHe|$VsbPo7qv0^al}SlDk-uyN?YP3*@9ky zFU?dRlW{)3qe`o;#KDw**ec(wA$-9q(v-j_oW55Mz^x%)juB=H61o{HcXS5^&(n@7 zhXc3muAZKs^2|4*x*ZvEr5O5ZJ~L`QvjoaVcWLwo4-}|-rAuXrbC5A_=5tNnZ}}S> zNh6`dJvE<(4#g91w+^D|FX$!Wgm zIT@ke6pVpZQd9gR$Svw=9LIq_vKy=F!fF(`bI9$V z*(jD(%nKEbaq%D(l*i>_8}8=&lRHt!vHB;Xp6ACI^G>3mzwVtbVde49Z188Tm!`RK zIO2SvRX00!Luj+7*1>DuE$7|XHK9Bo6%3aq2I#^3B_*>KiMGZX||D9l{|Gm1RqKMfk#P4#}r-k+I8Y66h`9}ti=zB0NWogjdwk8ZlWF_{J7ObJzBZkLD) z@cN2vB5nMM@u_u;D>819#bw;+1*69mFDMvyOt5s^m|)+L$Bx6~5atWr9Q^>u97rNx z5`tbs5`x~{zt!k%RBQBV;rx(50>&yI>Mb~LZW%G#`Y-z4y|oddV5 zU#b;@D2Q&d21ChUq_6DXpolv~pFYxJh&IyyZ+UiS{TrvFW~YP_p?0n*%E_Ti70@GV zSR~Zwjb4>eo<&IBoPT_7h|5E7pSjw@oV5(izQVOeb*bzH%SaTEaF>iWs(X^C^>EXU zQEhD$*9Eg9bM-DfzL0O+_>K0fF4I`mx~RSpA4TfFjru)VyF6vPubSvH*RJ)&aJyqo zleIKjA+V_V=d%lw4be7r>1gPYqh--bC12H@7YTZ81r?;;=vjV3>f^g)_M6%Uf&Pzn z{E^BAh(z>7+2vWp{&4o^ZKA-l{Jd15Kcp9G{VY|;T~ZXZ3%$eJL|^&&Gg4}hm@Zbp7*5k9cl=r^d8*y?VhZDHA~H@rO`a)@H!-vaae=RXRPG7pC@Tz3%z5HhRK4j+Fo+ksJqgd&0X%gho((FkdoR-;d|xyPpX9Cw(RBc5g3n zakI@=6N|{6ML3$zyk(yS?Lb%OdBX2y8r5a+0_}QL zXY=5DG^6dNUb#_Y+SZH`-v0u5mQeh@deip_%5cBwoJsrMlHtKhdfcLNFwA*{Z_LYQ z63wH%4|x9pZGIxMk_W$h)>J;h(JMYsv#8Oo{&0=4vvm_Laqf;()F%$pv-)uLk|krM zAStpTF{gbZz<~cZb}*@?ZDM<+`Q*zy)@s(*LZ`;zkbf()+jMT`Jw*4_s}Nn*M!;*) z=cRJ);XOdglH7tjdH%Q=mUEO2<8O7Mn{-0`Oz*yYXuf<~O`pL{37(y6u|>Q2Q;0MW$^soqzba zQy+o_s)sgf$|_nfBc~pR6{gs{*hCWf>U~Z^?5Em_(ow;aEF28qlQ2}_k5V1B$l^2_ zu+H3ARPj*Z9t~QKmIHuPbDp7SxdR-Ah4XX|M234Kvp6ADVg5rxJ4P$|t0QEa#;~aD z9ov49j#fpK0Yw zOi&w3ZA3Td@mo#lPDgo|1AkN(QdEydADt;XJ%?C8II`obFOPKfMC6#YufH~(A0npn zo;E+?JoqT#s>>i?i;MnOQ`u?L^DlTvw}-zc`-4uBwyoQ$_d=X)cy_6ewI0HdZ3Rq*vej+pFI* z_LJYdCRbksmxA%7N*hLQNnx#C0R5%DEl+;?Zhp?@XebI7-NDnhe4cD?pe#$5@V}|g7yXdIq19B7%StMUQ4~z0FhZ`Ze z$Xb5D;nIt9#d%jkyL`LfZn_MmZxp_kUT>GsIikes<2Ugi*q|QM8$r3``dW~`0{0-C zT;N!1yGn%!_W5EB3KAsYWTGXk zlW6P&79_Y% zd$PD%G&(`_JH3rns2N6CPH9K-eGOdP^GA1L7;#XxM<<9L=NM026ZiSXo+qz2D`w@* z&~w*rL#$(XT#Os;UN$5`466)!s}j&O;Q?E{3SaO)`J=GSm&2)B+l zZoYxR3b&RTOB;A&teVK31V;;1Mh7?bWl+Q~)x7nU8KFTAmBIQ(%Yjng@}TTj=W$0i z8JgAksg-s)>qwLGPZcuL`_<*9PXQuN%Qd%N0k_t^Mt2w7B4k1|@aec43H$s|t_)4l75(1XWk|Eqrjn2WQcwY&TeTjc?Msne6l8>rUoHUaPUqgE#gkTFhgF_|Y zgw1U-PZ!`ew!bp&giz1N^C=ipStoKJQua+T)jCPTF6RDV)>;SJp~1)f9W7KD0V(JO zdrI838uY!-ev{hU;X{M-$e|baie^;bKNjT-f{z5&sIboL5B~f;7E0*ZS9M+c=+OA2 zPPRmJEuA{HK)nKh2rU|wx?62$OMMkhCi_*pLi)r-oa}HJA2nOKRnO?``}|pN zQnZYs;kHwarTv6*+Pp?|iDYeqV1C6oae!nU&Wde9Q9?*<$1WHZZYwdCzQmJ7O}#8? z`gw2Z1fsW1Oh>ZqihqV^XXlD9ChaejHtXL-I$_tlDSo2Jh0rA3YzixmnhZW!s)0O{ z)x1wo0^AMRG|T8TF*@P|c^7qs+s5P4+vZ;24Yy4&Zr+U7Lbz>W=vc%#X!lp9rrjoW z-_T?Q*@@?53h8cp0YT==r2rtl!2~=!(blhai;ojXqj{~jpyGKZ+;*n1bSRT7+;)Z$ zy;NF>PbTIy=qlW3RBu8-QMNI}Mv7eWiIGb99=nDW{s6#KBqbD(3M(CyZ(( zL)1DtI5Hf=C6{Xeg?wlOYKy5~u!_ac7kx^hsB9)sD1H^>A|D|&W+9|@xh!=uItRgIfXp>L_o8Of`e495$e>m zT*JwwmpIX$Y*okbDgG7=L?{?m#NU*NS;@~$el6)b{L>{+3~Ry*r>O!QV?)OKX_O2%m3{nmQZsLqGTJFD333G(NsmXL z>Lqd$hupA+WW;agSt}7WbOfN0c#e+i(5+dAWFz0XH@%087nVa(LG*9D!DNK z_xJzT7_jy;cu{ZtMDDQNu70mgDe2||-Tzd+3twcOlP|pQd>t}$x*drdu`HeW_BUi+ z?LuMO6bUJmj*MqIPBA=8g6mS^J&Kp#8Um^GEaEyvbg~E|x7$ z>2X0zo@r9WdS>M;plbS&2$Rk12G48uYwz^RCKD-)b0I4gB1+EL8iEbtu^yX6?Te@# z4LmMb{Y49Z7LT?99_4Rb?w1h#I|UD>pbhY7-iAL!v)@}MaB5A+V)G%1Kj=g+qgrl+ zny#@{?Ph&=F)ktoFEa!Q zlzW3cM0{VLsV_D*p!Ka#%zrL*eYWQrlJn7PRwp-7 zGTkBnKBOV-x~m;XT&GCA>1QlW?p%=#+yB;v^RJq?HjQ7Oid8!q&fmUWIx9vsbC(#@ zxPAT*qBXNvEG{uZ)Z!ML5bnHm#!kXSAW+*qd4 zIIs}5FX9Z4QN4yfEpfG$Wr9B;=Fy2RhZ|9M1Z94lq`=E9*@ijATE>>AQp^0lCS=jX zKq-+=32ANuB@!>060BC%PJK=^?Igy-*Q5`;p=-Hb_UHdRyWRfAd{5rwIm=_8DRVP` zCv1}e$;}nG@Y#1jZ`P~rfSNxYdT2YT3oVO<)D*H*8KJuNehGQDyJJb{DeAT zhQ#)_=AkwJ+!Bc6pFIaV?9>yqmOg!~mvhmG zjdInLHJhTm#}l20@D4d$GM{HmD#qeEvY5_V9?ean_#Xa zjd(GA$58<`DmSt6|r|#r+;^_|G*Tl%jnPj54nuEYE=ei|iaz0+M za=O~!+5!>k5?Lhtky5$C(r-@`w+s_U_4kfeyg%yyZr_sQ;~e!@&Cf(u)yKCZ&cVD< z#S`d-Q~d~C_nxZHR0EbxE|>e{P+(ncpT&+oq-5b(^pS+}@rgWuN@ujEcBhx%>b|i% zebEIR2YH+=C3Erdzu4Yy_wnp48MB&a%y1=RR+2EPKj&?LmF-#(d^qbEQ^KLviBnI? z=2)+mqvjCLaFWlgUt1%NcpP@UO@8GjydteN^pYx3Zn`MTlO0mA zNL{3B@>Kz>-VZFHDuB!Z7UX=RW<5PB&q7D%-1Ul(q$?aRz%<2MPvIt`S`I0O;|Chm z7t&Zbjx}$He#0VR=^3~ciXP;u=f&s{t;~<##P>kP@sChjxrvehb|at-*E=$z$$4tG zs*lJ_xBRGRPmtRmk7l_Zv`BElu{_Ait;T4R6uUoMQh7`KAFb^fAWlx40!pCJ&}ZrH*P4A{QLda#rE09MjK|xm zfLspV)Nv-rQ`-{%5yb(0wl40^zMEcVXfSHTTO;n(VpeoH`PGO4?4y$OG$W0kNE1X(a5GDEcOPRZu#8sA z^#|2gpcP&9Z87ShpUc(7xib2##=Ja759r0#dJET(Tl@J9}pEhD{VXz4y1RrXJY=68!lWmg|NLW zhacEaamD}pgy!w68*&Si4)LOgniU9-<$FYCFyYyKVGrXR5xL*P3HNe@PL?pYlVn&Y z3GL>qm!~BM?)TTrz)7@~by^e0e8fEjLf6ZL9y&XS2$j9L(PAdq*6O{9$HWCvcW2jL zqOF%%Cy#_;HmJ+l9wf#}%Widvr9XpYMyFanwWH;HY58fb)qzM;EsKb;Pe1(cJ0e?*M4(!xv6Ap&oMCWeqNoxel2DQw(=X)b#U*1oXTNWk1@iwUj5XH|LdkJ z-xvsg51HL_mep9P2PY;8Zh?Xa64t4#|SiFV#sHEo(rG%;vHSM zp6h)k)^^G8EOC^#$I4M8uvaHUde&+-O?%&?B5jnHHO_TmG+rWJ!)clJJ#JTWhlD+F z!C`*$STP|DP8+-Dkxn~}U8~)D=Tb=aP{^q8bTVpRM>S>J6`yk>bWBM~r9bNR{| ze8#B__z&WAZm#E|^g!VjPi>bTOT@BSj`$z?wA>nj&LgV%E4+aNJ;EnTwEUIx{yO0j z7BhH_v^YA6%Te;(T6s4;G@l%(@gq4;@@z4T>O(A>fH04%Ny9|%l*-ta2FHj_TTa#^ zb+SvfG}sAYr`9cY&MTxE1VlCz$p|coVgB}pB(Ywv5Fbp3nnNjm!p%2pioKE9a7i=kHE;oM^XWQM-E z?Nfhbpm)ib@w8ep)n(NDN{b*ly?EZ4@w}&Yt*7=?U+oUU7VrU^?vsSh|6Jx8UVz?a zeurb6^47lVjk>K6XrqM~Iz$?H68jC8J-d%rpMm|w5rkqqE>~5 zR$YU(XRxvAv`o>LP7Z%KnxF`%7TxlvF#KUw@YvdnaZ^IX7NLc_#S*zSlJjF}M3dx5 z7RUJcROopk1GOfaq?{A^m{>0li5^wgWStdSMH(N3oTK=lg>i03I*9s8GEhrKa{BAa zIJf)v!PF(k?8mVMdJlrOh}MbLvBlY)Tn;x@(dv8UOX*-2FO2G+%L5Y=gLAvw@|T+N z=M)RW^&Q512Q&TKUlDejwPadLJ1OHma%O!D8jys74mB*QkC^u7}FoGM8SG!KWAMoG_(J z&SO9MQ;cIv2H&O|W^t-GT&@BaO!J)k&(`vE=8ON% zr+v)xv;3AXu^f0sQaD=DZI^bzaTsJf&MJcbL15Bz#I;Ld6Ka-i%A{+ za*`1pMb4Vnjp|~;ylfRHCVl??@Od-FR<;C({>uXrzs~>k{D7)6T zZi%m9t#92?TtVtPEGg3gTlmyi#AFy8xVb*H47j#35y=x{w?Q*@@pv_CfR`E?Z)M zp&)JdYG$X%cWO17z4&L+m+*y;(IH4ZeBo1qg~tf6DM!$+Q?D1{{h07qeVI9Lhz0)N zTmpWhMv;36E-IXA09%!iJ?Nek90RI@hWrW0pToRmEukq^(VwxaOcr%^6g`llR)*PW z8Q#MvZr9x=^0da?sc9M3kioNjzO*ig+vI>p9L~s|7R=-C>A}M5djP9n-GUcJ(}&a#BXh!hHp|FR{XL;oH(ZS>yPl z^f<1vSmR?BYh>sJv*0IzziW&0&N_?Vn%ja$1eoM&6gH^(9T!2^GKNH zCQtic#M?*n%x-Ap7QHJUVTiR?h{VZ_zZH*JVNZ**1v{0GY3MG68X1PugH!pN89al( z89^_YKxrpYNFbCb6_EE{HC`xJpXgaCgFjpiJ4U+TTz(V5D9L9ni0Jr7^1eFwIs^^U)j*^K?is9C1J z=UmEnjw1xjBd3zW9E9C6x()g}nw?EfrM#06E8gfF9Vbw3RzW+OGg3Zi$B3K}R5nJxuwBiwG3SY3sbSP^ z;~y}#e&lx5?`WC)->7rZbS^rS$>4Rvvx2oYiFXhT5WhCm$J)^RN#5h!cd9FKv5ZEM zYSFwXZ^C8vS|r+_ZJ2KKddK=AnxE%o42h7gPsfzn9d9!=3u*x1ARJAlx>~ zs5u2_5^sdtPBLmHlC&}x+3*(O6voDiObCA{T;l&UrNR& zS|@uvg&U0OYTl3t&I`wLjGEur2&;VsK+KhbRF|Ahcg{P}2kJZ~N|YzphwGemZ@YS~ zU$oAF3z@muSovX&=g>8Vce5w_c2|+pxZSlUf4c<7#8070GIUEE5nhj{^Um$M4})S^ ztK*kh0JCjL}rB^zx1`nU=)NE1`r);HT7Ae8%O2-URujo`hsdc2F zuy`H6#arSl^@m(OEY~R)DIuAvw$e~P;94m+#R1uAKo%D*1ih6}7!+&SmerV8AUFgU zh9?~NklkEQ-eKg`2n4q_4%-IIKf_$TQetEFYy{`wrUAkJ;Z|2LJKUNZ%v~WwkSNwj z%>t4$2h570=@=5N=~HZt@`^x&^6L7<=yyPK<-e#5_?5-n{m{--BXI*wPK626D8 z2z+m(Tp*X77F>`3=`r|MPc3$fo5lm=RtZsqcLXM%u0^bL1pKNct`iFM4NYAdn z70DHSnl;2`UkIGwdy^X1PhWc8Jn)?>%TICGsvT7Mb}#zIM2*`)e?zQeu%se6B2<(YPs$6Bkc zkH^Fj9RYr_w2oYG6%$;|8ZL#BX8|xPitth;ebxte^?~Srb##n<5O>OKGX0O!A-zzSU3=#^`JKZWCUTuyLsx%jSaMp(`#Pau*rf*OIzCjXy{wIal9XNd@oUc|_@3Evugu z^Y<0r@HJYob?3H0TUuUgU#%81<>IT!5r~dC_k5gF%ys2lxwWDX9qh3!~b?=zLTYoi%uOATOiAJHgtfj!JD)N69Q0rMzehQQ>7! ziKW7uMSfA?2^M5SO8llqbrbS@T<(Bk;w_kgg6=wASPoK$C{-?1U@-QJgEN2^_@dJ;m0C!OwPrBUpc zW^kF6Wa4I%((ZOz=gCgXpOcn$rIii#YVlb2>pJx@J6np-^;+LBvIRSR({&rkI^^zW zi&X3H;b$vxo>f!1R$* zTg~hvg>JE$?cJjeQsEZpHKud@V+O&RL({_z8THN@9$+Poi1SaRgfTk1UciiumvrwXihe-{2V^?XVtNS zI*;Vh9_0?$_LVYLUgGLWPWkO+|7P32IsEF&zMb;5J5N?V!~PB~wVldXWnGUgF1`Ky zg_yNsoh*W%>5@Xb*h!Fx>M&h#7yVBA^-B_=OwL()!t2@-x#BedH_x=W`D$NQopAFE z_wE{nvo7=6sj%1JChOTm`Uk zN$02b`sa6kPh`Aw(M84~vIho6bPZa8C)fX$co{Ue-^7crPJMxd(%z`L3>0`8{3f6I z;#nbcNp0ohH}0ztj-LC8;A}JHidTo<9`App!6sVt8o$xs>O5xS({AbtzcapYJsHZO z7;W!&;@|CsIVdGp&O^7J#U0y!Ev6h50U*0$$eChwU>M<-Q$sQd)v$pJtR z{UlPSpnZls3@;{171g%qouI3e3r-GIxmu8O%ptbDP?|!Z&X`*(5cS*Y==Hr$Az_?73d}$stzGW3w^ns6^&$9%SEce zzjC&a4;sjdT*AuHoVQ>y{cn}{>3?5twQ?PiQ+1j3GNEKk$-=6nX zOD^X=L%BpL$mRlxU^mu=OFoqiNK}v^lF4fmEy+Z%)ghU@>p5@wztCie^7+b#ZQjlh z4W7k}g*ct(@-m%3Wj?4^Ws-tTR=lbeEEs8&Zu61!wX(=#ZZEg*h>NSc?6TY)V3nnw z(L#zdycj~5Wat%93*v?Ha(mv!VZFhtSbkY8QFW$Vumfh^wHJ%QaDxYZiCG^g&U^eJ z4Qcr+1c-aJ0;eI)>oTC_C^%#&6Mqn0@eHcfY)9>Yj5?;%cS_Os5{qN|xG%LhR=h=+ ze;3Fx{6b0k+}u~bLv%jbD5n*^WG^5DzfboU!asGb6G{nodm1uuygb6%)2{5_#S!yF z{TXUnE9@ul<$nlqHt5$f3jX$Ct9i9|ci=1K7qPuEx&JoBSIUV|R_wgyLBmnFzWkMS z=K6}_1~?5;_l3Mm>ycGohi)S~N0=U4W@`u|ciB|X*%2guCJKLwqRB=(hE9;*_$+@4 z?`eC;&y3z~mu6$eh}p^*-mJaawuA<#hv2XE4he#<%8>e5NaGLkuquYS>*=aPsP$F# z05isTDo}71>&1%Zg$~C>LmMt)i*`cTXg7whRWE>hIYBT}{+t(X<#3oW{LQD)q&Yq_ zrVPI0obHa5f^*IFjNz}UQHdSxiHR2(M~&$+wTI){!J$D?&9iKu7!iXLx1SlggWIO` zV16gW!%n_loB(Mn>=;Y86p+oBvrd<}R+pK;F@kdjP^j~e zBDXRBb950m@iQ=Lw&x8$w6`PSP&ZKgmL#~QUYmN$a=@C9u|_|e8K%3Re&)AM+1m>F zuAl8Kht6;9O>Wamp5`e+9QmR+L-5K|KS!%#Q^l|n2DhO-aawp&yXlc?AIb=hRlgN| znz_MjRaF?}Wk~LX^Wgn4{a_izYn)`44aUhtI$am+p&CW&7M?kr>9j%J{RvsMaYBY{ zzk<2lVSCLB6lf|IK~$Rc7DFEc8<~#pWV(D6r11Lj*U~~2pN2q5hmAb zV!P_VY=5Cu6X{q5SAIob=J=9&uO`onyU$Iiy z`|gR3{>wfjA5khD3!LZS&hZqD^;Zk}r7$6!0ZiOT4|Esoxk+<|{3mY3rj;6Ph zQsokOB1jir?$!w%!*m9Xj^D|_oqP!%VPWG=a_$2g=YEvL#$DROBpn-AhNnPWML%qx zlEhwx+1-ctmx$us<6qL8{h{;wu4!vc_joU0k!Xmj@!N2S(4{;0O!4bU z>TVN$(_02%|67s`(IWL>Uck&}&7G|& z3_YIM_9gz0+;^_ks2tns#eM<~T;8%XP}Xo&p+Ed}d$3Qyd=dZFGcZyI%$o|deSxgM zNzXd(7v{u%4+|!OPV?mag!5?!a!t9pJ93k*yWDuJt-|~|5c#RNDR5KL-%;2a)mOmy zFmJXmOqM2i3v}n7IWbpU&3;STSP~NMSk~<2MpR?M?uxRnjK$;SmDyA8$i$W6N0w_b zRFa>OMP4Nn*m%ZBhwgwsft%12b?#Fh*?b<2%JRc$+1gRLuB zuAXnV=D)*V*c`}e4HPydhRfPF6HXd#Z4aI=ZdJ#4mUQ#CZv^kt#OgyKY<&7XRQ^gOl88TN zzjP(y7TNws|J~P|`u)y5=9I}^Th0RLd(CuQWsEh9ewo%jHR<_-$44KAn2{E^6 z39Md=71nMpD7(4qMg71@Mr*F_wcYqeylWnzbyZp@L@ie?%wbnjCwG=GhCFpSo0O#F z;{aMDpK-!G`uNLUnFCS46JAwsv(zUxSY13zb~T*Dc+p?><=kv_l#~}bNvzWMuL)j? zM3(<{Nz4MBjb1=J@wfQ2*sA>`?pPy&$sI9o**4)~OrJXYDZ4!EYWF;SKxVfpf^a zu`~U-9D*=6lovL_hCRj|bqqd#y=CiyJ@p{0@s@1} zp}^mj;5?G}k#QE!;s~ZjT$7u~JUS-S@U58o zMiSoZL)uzZR@px$0av zVe#u|yG2=B!{=~&Mu=ehe0o__O&s2W$SIj6qs<7G8?pm|3{jwtH`S*%urKsB2SIsvO`DF(;9) z?nHpM0Xf$OM7Q?!SHhzA+Z;U|t`3(%NvQj$nxJwZ?d&^b^9J^89ZX8t@j&$!TLl|M zbB0@>#Sel3sf=cUf|=!?xh;H6u48_e@cDAdw7J0>osglnzHhA~%x~s(lApwgsiNns zOwvM5hStY7>8`y3FR8y@G+k?8C*?LTIoa$|=dKNA64OCX^a1|DDK5>JvVvZB)$WYY zfs$pXH}m*ROL15vUW%un+)P|+e<`U7mIh=E@YZ6i>054|>{1yh=logQIOSzSX3d&V zu4-oQVRctuC#(y?hvewv8eH3v1=;ztd!gTYDcY)rfQ&?r1}4kDIpL3XDNCC(-?sVR zi$cEN3!-kKNG)W+Ld;tqFiva`SzwSjX0*J9-(-&vu|H#+hCC^nompPCE|loJI7#`{ z@LR9hAV(%QE31~6EVy|Wg$ckTT!1BftgLkJ1fkuP-;E%8~hc+AB^{!JIm`nU{U#~yzc9+ zCz;twhHS=!+UrY8-Bs=EU~XMo-oCbUc5VpS^~JcJu`}U_5Q;x*z=WONQWhc|J5+?; zm!Qo|RrVgVS@vRRs0{B6Z!J;vPj>mE{RS!}+%RjKjB}lGK9rF-ABC~s{3|7uQ%b=X zp@p8Y#KM)DbC$ifus}luRo2D33hUJrK0`liPTR$NEzw=)@z0!+Pv72JW;jkVyC{Gw zDd`eC(7k(;bj5A_a;(FlLXWG$Y@vVVTmHh;{<<%_`Zu?F!tcWh-tWp7cqBxqDmQQaoBN%7 zuy^LsMJo8t4m@6N(r*H0(@ACC(M7~olGRnTV<(w`(ZluS44xITm zi(U|P{#!=V8hFocc6Mx^>O584C|{xpeLYb6AT|Ks9QT*4E{CJ&jp{{V;U(}0IVvG8 zKEg{*j&{*ukNt&>!~i&9+UgkJBysil8k&fAP_}%j`-Pit@cMJ!w>u} zl_PHTd#%aZR;*R=;6dCDA|9mfI)9{h0N2kzq&zo;Ov|opM zLt^loy=%)|@zXf9smDT8a`)j>DG$2;9eXvNC&JPjvM>D|`ga5h|mv{pKfHPxKLl@H7%E$nD&Dtg*$czbpLugP1h*TraV~I-mGY$@9eHs4^89nA3{<6fJxmGO<+(vZ=J9KtT zlXdMZZgL?*Pe5$>oCo2OWpy$r8;uFu)Lg_Zvw>Zr=xKi0vO{ZNdYcVpYm5^&_zUBK zthTZ>bIY2;r-<6*>y+9=B295-0i)}yYWX&+*juP-{OvD?7vwuU&m!G$kIShSp{@Bi z-ivOQv&uehi`<%S{*`~2HvyR|5v*2`$?Tw0`zur(>BBuh9g7TZ5BECAkKxu=Y~p1w zJP@g9@N+vB{*ZX(_;Pt}v( zx-<{9B~_WR0h6{etl8=z=|PL*p*J2t@)Qw`w&WuIxcNWXyTo&5AhKu*YD#`)@T2GS zqFFk{q@S8EbBAfqogk<2Gj)JBvS>D6Q%qn#1EFCo?*wB&+}{3qFtX}K7O5NzR*OF3 zujW%z!R(z?x&xgc&$l6`qgQ{&4%mJBe+Jh-lpY`hx6s6d|8Sc4&T#%eKo{S+FBVb% zujkv-=v(}IAJiq?SE7F&6z1Hn(53&fIzutqa$5TK|H9ggbYX6=u z-&og}WL<}1JGJWi^$)Epj=-(qT8l52RoCf1w61%SbzM-MtgGt}t?RU8UDw`_tZU^5 zKM-HeWL@`FCF{EU+v?i?-tS4RRozn`yZH3%1c%Wwzn1aYJpX^}eFuD0#rFSh z>V~!v0>mCAVx(v!C<%$0n{4E+StJN3b~G4KKu~rC1R;16&E~q6r#`!4_dWHAjZhR4 zf(cEf*sy`+@9(ZF*7q=2*#Gy;Eqk{myU7v);zzQ#%$+&s%xQDx%nbZ{=JU&A06(9f z?S2ox-&K;0=PlClCo*^@MKsgV`WOXpK7vTO0_Q2Qg)@tSR&1D~R~%uk+l2GKnEF-V zybWXg7}E0@cP!zw`QY4vtbiE8xfI!Ov7_hH$T?H!IU=@j+PB4$o_`|ruE2RGG6iBt z&tB`IgEMr#1Es)BLf8enAHvvuf>4jSNP?djn7f&T9V-#h+JNz$x|$;AnZJyQ0HI~C<67wp z=uIK_cyo0%s*yJ1&YA0(FE!&ru8L+&sU{1B$CL#Q`l=?QswPXmm(_O!FYNUqKe|S) z)sZ7Dz?H?B?KuhAtyxX+tkluc6g-vFT|C{Ti`flJrv3qG0_Y$L1r$;gi*J8EMi?~_ z^qBb$EEXuQs~XP^13(^1NzOO=PO;@p&YX!I#~IoEdS)jcp=T&k#(HKmD}tVBrVI4U zSZNL>3W%ID{d=Y=vl2z9OBhAx$enW@=J%*`u9rA`#yW>KXpnMn=gf64qU#g23jO*g zbcIG#h|$&Ld3&i^wU55}j#cg$E`5S4>Z3vEqmxi@02Mo0YQ$r$la{g@)=5@GE|pF~ zypd96Fm*l&iY1%H8!w3@ViVL2Z9XWRFplNku_fJDyhCY)SiHl+FNyJ|Ym0Y)E9*IB zbqBZWYepWsE8;ct}`&FmLYA% z*EEAeiKfISh;U8L%*G5(oTHni1{)Ny-EOg?SuR#{Taa{w*E4x%^*VqUEp*8Ctx6pL+H~^hL~mj>Y-RW;~Fx zp~x^XO?g39Zg;cMemu?Mnn+K;p+tC!qICJqj;!iW=VbBuJ8m4{nL$U%UWH=z{*-8L zsTt@&_Jv%|USX-pOu}j(YE8NrY3xeNmfXpi6X_rd&_sCRdA$9Lg50j1xS~}-YoYit zwL`ri_xB>2 z@zB-8Lx+QhlF-~h4`S;I6J3q_%(GQ4>We&+2)SqhrMN}HMUOEqLNk*W?DhO}UvNp= zb*g+cfwq=-F>~=ROb<=!MHEY%cdE)qWrz~vuz8jS2(ykEoG)cPH2wc+d}Kg22Jz9D zKt8Ic5Hr(5J3tyeAMyB_QV4WddP&wwlQpgM5@{v8{+RTF z^HEX{(x2pQYC39dggVOWr=w2x*HJ?>9aRVYjP?i)OD?9oLg*;!0n$+!v@U4TTIwO_ zD3*EMx{jK*-*gmlU#t9edF*I_3I=&&K04x@bZ2)S$pY(hj_rs=S0`%j0dT2AG)kUrJR zLsVWPaSrKIJ+V{cwc$uaXv3%KgLFhaug%BT`_?9cvm*DY;@`t)PSaO0_NkKLutjJM zXTmB(WDUExPc>suoBVUd7aITkcP~aGt@~8lKo~v$6yWQ9%Rf>3R5y~X(e#lY54EC? zBKD~oP<@14G>BGqA22=@e>B!HBi;joSieN%7cEiT0Pau&PEJXv;Huj-o%VV?YXt{_Wc;#0af(mCojg*nf z{HYFt+u03+;8+C$7R~?|t!D)xFGyH!!cfZKNLoheml$a+GSDz_i{u+q>&w8dYh@aw zIIR%Aqk53=$D1w6f{l>RC=ZOs%CJ;&DA|J63`#JBzY0MU-TZI6d12>Xq=m-KGE1+0 zLRj_ye8cKJ7xVGEL9jdqu%joxXfHuJJ7I~@Q^@DPLN_-ek>_3MvNcevSkHm}#9<;X zf=k*%#?tvHT^H6FdFLBc9NQLriRXp2N~#$$nGn39%=|XbMoaZn?ql^ciGAzZxSaCxYD-d9pOl8jzd2fEH&pOSe!+vuNi9_J^2=5Re5&=Y37a} zyf_=^Tj>U03yEmKgROOX6k5fq4R@gx9vg1*&Td%G(K^4XI0pW<3+J84iBbl&v#|Ot zb~u+~%M^z50$&Suf*CV%opwanQB-w$^c9p-P)*~bJdL#>mg>ly) zUkh&`IoF@c=A|7{Bl129p?NDj&JVn=;XD`+#SZ5qG0DVmKHb;CdSvl-KF;?B>XD~0 zOQqCL;JM@TOPtOD2FsuuGZEVAu^w?tEsvgn$ItcFSMK{ZQJyB}<8Np%?WFX&_@QZH=MS~wFe z_!GI-R1?E7Oa%BI?Sp0s5(#35?_x}~Fnm{T)bKqQEyNICjc00!n`$&?Hr(?de(;TJ zE#|r~{^*|@H1O|4)&K|;BY*S(C~rofhkPvzMGO7}GS_v;thDZrhQrz9gXm!-F2oLJ z5wj}{=V#YzRLw&RosV;nUzX;B=s8$F;2bl5)Pr7SST8}wlVVMa(MD{sZq=@6{2he% zQ9hVnMhk`Bk1QKobO(#;hYJ0Vu|xpD$YZFZPa5zD5l)4=?m<=7uv7bH_s!Wb&wu8 zVTDHPWuL@Srby{C?rL1FwQxRKh$*G@@xqSLv^}(QFVirakDP?q>7!|CjPN#J3rC=Z z1DAF|GX7GXM!Uj~V=LoT;4;Q}R$m*ReH3Hr#Y)B_;JYB&UB6VLT>|imrG6At+V%9c zu^84drkoco?INI2kX{@8hDM{EnCFk3Y`Rw{+~s*)YheLeh$)5I=O10@gXsJBV~O); zm<(YO_1kM2&b4Tv^KlN6g{yoJwQP&6EEK3-q0!gIy=Wt*SVzFyK{#Lks@4k$F~(U? zaqj7BV==5zOmU7@{-Z4)MAJS>4b}{t?ZdSM&-NYribl~_kw2i`IwE09nRA*y~A+6&DR3$ z7}NPU2ie~L{aeGiW+THn@^}pOr@sdA>*-CZmvy(VjZCx=Q>-K4?I4_uK6vik5L=x4 zKwGe$e)L}&U9-_fOmWt9#6F70L_pIZt^CsS8oq_Fm$8!_E7U!sXsNG-FEIBLQ;LT0 zHzLrH%b(M5wgIBp;aq?z9)|M;z81b~-XAyz$M8G*_`r;AQ&$`0b#($e) zjCBOO9fb3iXEdBA1D;so{I!bnbYB~WSmWI3`l7$mqBVo%=fFn9xq~#uyr(s)_JVzk zMtXu4R;hM}UP%3+-kJ0q?rY&i%mVpq3?!gc#ByC#L^$8}l!o&WfGBo2cf&*v!}$bX z3(Fe!2hKs#bI+3+&I18aRMJEJ8QQ~OJ$Y0msz93_ED!;;*dP@c|9B+PV%?+l?J%jA=I6rVdPmnAzHVz9o69eaOU_~xR-=BuRM*9$s zY8c3B$l&U~i>na6E9WY|GA{d(darsjtIslWOPC6&L-1cM&UU7M<~m~|{iCy;mGhmk zM%viwKlaTkoMO}4{RsjstUlbB>r&hspvmNW!H5OK#@fObRW?H2o9mPUyj(u;UJUp? z@Say6DBu6x?{)NxU~Rm3x4iCsD~?NYEecpe&&RLP39;{>-p^r4Sr>2eJ$pCAvo}IK zdscfU?<45qCW5|NZo}Hyo;w&n&dW(1+(lVN1{~p5OP(K{vC7*cw-Q)p& zjt3`a%6bVKia;^#9qmde4Ae}8ewwL5V5+G?_&x8&zCpTagLxHWDf6lg6;6{?DB|~e zUK_3IDC?FMrl#;%i;Vl|-`Z6)eRBvey(Kx+Ux)axHOZ3S9rW@A?~D$@hIb}=YjD+~ z_tQqhPaC0XLo4>iWsaIH5=ZUL_B(1?-yFh0@s|(vLwlY6L%bB|^LKq-io~BGEI5D7 zM1~)#DGEpJ)s8!A(eT$Hyc9o8wj_u8OLf!^@nKkp?O>I!lIr>e3+P~BCyqLIPQeb9 zGjZPLoDA-K>=lZWakq1#WU2jy7k{RGJCoRf-lDjOTz!~5)-%&+#2Ccwq zF|Yas@U{kQKL%{wyV69Yq%HSS=sUk57~+PGLyY+z+V`^rJ6MX_iOeN7u@54MCTm_% zs-rhoc~iQXFpOxE@>a@&RGRUi4Vq>z&6Yw)Tqk;yExtny3qEj(LZl*o6&q1O<6rI?fp()hyFV9 z`f#c-Nb2Mu@Eiml=Ydmq;5=dc%ckRmahfm=6UJG>ynL20ekLKPF86|eU$<2kokWX+ zXd|s|Q(N_ghYhq)&N-GTfoUWkr?CT+t?A+ArmMEwD*ZZ!a+|c?mu;8iY_-u5^mGXI zSR86S7Kd7o#d$tsapccf9BMt54z(VOL#@Z+Q0uWc)cS7uQ0u#8MvMe=i}UW8;M(wg zPMo~Y;K2UQPXD8<6&_T;0!Fm!vCZkMY!gUDj8PT^GOws$n}HEIk-7we>9 zWprGC8D&zXs2ST3g90Ky9)K5)(|kqXCB~7fDK-el zE4G*yo}iQrDuYXwuAvzmmQS34F$*s`$<#~3k*3ZIPtmo3#*4Z$CW6YEqA2?rQo$pw zcS#gwtD-17F^aN7q9|*KqU`%f4v&-$&qq;qeiUWPq9~ggMcEc4fk%qlrYOoTj-sqR zin4qZWsi!Y>`zGCj+72-qbU186lJGHQMNFOvT0G2m5@djDIMO7qU>E!l${(!+1&7D zE9WA51g&lq7PIq0RRzk6hY2GMjuer@F{So6r<(4e*OjDkrO%M!4O%em8=zNN_=wpY zvNtqynW8;a?LGz|F0eN3gC@kjN^N8e1i0C7dvi<#N-v9g;1 z2##}nadj^oA&3xUH61hvoS6E@sWk6Nw^jj4aU9YNaYSrk?N3M-m4-dSo@LNkuUWj< zy(DM1P3(;ZQ83*mf+*usZ6Zd9E}{%O;L(P2cgpC`6#6sMfv}I1TImc&CvN+#Zf>+Y&%cyl16%#*}{)vQf^xV79?nYq?}PZt^++b+Zxt`jvWl~^t>V|*WtT^ER=j@% zCj1@sLBFe&KEU-I3w+mmD}2|#=&rxjU0WgZj6UjU|DoF| zsSj_7z7M7I^?kVY@d)~GCKkc?^gA(R3+1CxC%vimMK&GG zsh6dZi-P;&TVN5?7my%DmLOG%EI}6FiR)#`S)GLzoYh0{w>|PjQU%e%QK^b(L5^tU zg3Wm!$%(XklD?CMJ{CbIZG`{FI*H*9K@6;USmze8V)3pP7F~+7)EYb{Ze+bZh4(hp8nK}Fms%q(t8nP4CuK;<^E-TRe&(^D z$h*EWFWcT?$u&AK^S-_|4uyH|ni}?LnBK=a#iE@ySI_I7OEDB&G`o*^)fz#{;LFz) znU|)e2w#~!aadpEO4uB~8BY?rHAo2oHOb$f+`;b`JR978LW;1H+OJ3Z_0+m4uywiZ zS3`Uo4eU2`@cT8-vK=7tO|k!Zm{%qUivLv|QJ}V_4S@ zPqzYB+a069)GvlGZD!<6vE5;kPA!MUb|M7_$uIhVv${Yz>@Rd0g}9f|Mn3vqBwVulwtl<#_tj&w zna18%zlgV&gqb)axr9~_{A|8=4JR+S#x!`L_Y#K{%vFteginSPvuAH%adTB8o|n)UdGsY}xSW31o2yS&Y8oTg#JMgq z4w>j%rH(c0-Ea~r4td6E^_0p534^%W4UV|ljcAM(wCi4SwFKlKylkvm??|P_en;P1 z@{Vy6pN?E-uKteh#j{g6af3KMvkdF8Q#f%A;1hmN0f6}^(u^X@O;pZx;qMlg^-mN^ zTsYc(IFh^UBP@d(?FIB_82!nznewAkqR(1t%)87?K+*HI0PCHS+-^Xh1Ejc0{b+~`T?@u!dQU6Q>QYUsw{ zPon2FtGM2l-{2W;8M(%B(#Um=6D&xtDdTFf>a3U4aKR5=LaO%T+Vd0W!4fn8$Q-)IJN^uin&f!aos8ee;pU_8cL1;_tSEJlD2}DBW*`o?t8j#UCXUUk*=!c zPA4rl7+UT`S<9L0n3_8oLwQ-vnd@XdcNCsmhSo$-SsoN>j!n$F5UGa-L*q^eU0w=Qr-1f-F1m}Eyp3J zWu~7`^ODH1;f1-W2AlW`jRR7oli#Ol<=u<@aCuAnwrk)rRD&l1 zd5QDK<>&KMI&>;7_Dn3~n4hUE-SSsumuVo$=wx%tx{)p$0bQo*v25hmx#Ogf7x{He zruLU_`Q}`e5?u+Ob2X^i#AlE{K55#Qor({1&9ux^B`J-PgQp-^ioHY}y`@`5 zYa4_1y$+jprbv^Zyb=C2A!Ef|51$QA8M5U*^a^Z_X{9{(RP_|z2=94$*U;BoDF&gu z4F850+%!z)y~XLmyexzHc8U?!7IPM{c*u|pd3vW9u``4oTa&*Q-$(e zgZozXt0a6i+=D&xd_|q5!>iZNO%Y176Mox{8>sX1fp0;EJ*!}V{g{Hm_Oybb_HG5) zj$)KCdCs7co)P$KMD3;78J@xT8|OJeC?5{`W#eCgp{cmg;GCD+R6O3`=|NB~L=+#B zZWjQ)bVTY)If_f%zt`)P2|dJMPZH)0Np=kM@1p9fQA8|8lApGAm?axZcVZ?$IqC8E zX_zZ-_I#!qk1p`5jJLtB6wFS?*n(3TH)oe0>o%XG;c?Ma#=6fyovW;SCgu_Nys7E- zkHDrj*BL#;6oXfwX>5`G6!=ACDHEY6eN_v`9Ow2B{kmP&O~Q05rd3;7(&a^&pIn(-d!L&ZudJ6IOMFCuX9JNi1U7)Zq z-8@r-n_#Wqdlnu)0nXH`@-C)GGaXs%9a!nlR(sz(x#Yo+Z>|Jt3-k?6tyFT6im4CiV)q{8;^W%xtDF)}P zGUu!z?y*#wbnz_cVucx7bwtDuWmO#Hh!9_sBl0ULGjc>eR4*QoFYH%`azq9b0N}!@ zy}@p)iQRB>0~|m%X+?iWWDT+8!&FA+U1%(s?VOeCUZj2``yuP~B}4cjV?!&{God(5 zo?QG*@C?IWqh|>IW_SkTZ=5HCch1T#teI5^|HC;8`gE3}PiMh{2Qyym$Bd6D%$PT8 zh~j|^4&ck{gZPq-Y-KmZRIK&z!^jx`bAA*~k9GF*K>k#H5OP4kqyJKP^la!Cg-5qv zDf6i8bzB1;mA#IC-f{qW9oIAWDW+b>FV};yRj*?vQdon%j*Omo%Dj$q2N9RG-|LtU z9Y^2qFR$Z9;Mc0xar@=0fZ}x|7i#SD5R!f&00)ED;gcQN=Ma{Yv_Sc7hgMHJOGEiN z(1NtO>}Jq{tSY2OFf!%#a6?0glEZc#I10X#k#B@<=vx4B=>aVbW#2 zzG{97rmyDIy5b^oH!8TnO)Rl8jh^5}Nv%|de~Qn60iinl zW3i9dQ3JUg${H3*xQzbjVjnI7175~SGr)TNm76~X_0Xc=HX zL1-ClKSF33YBvil+2-n7eP+jA{*LneoCL&|V?Q*jZ3B3R!j zkVf%sriQUAd&1|kfp=>O~=nHM|Y2?k=E^m}_Mrz#DgfTQkVM}K_FYRbg zlNH?-cH_AT^0aP%(=#?t!|)qS4v@TDz~n`9dWJqRmxSZ$V1MoA(v;t1c@e2p6>Qg|W%!6=;!{nIR%C6J=RlYe$r6 zfc-d;4cta4liSh(LcPV$tffI?5g;JBVHf++a(==LCVgi9=tOt{^5H{&2;zkzXT;cGu zNiPrsYBp&p?x?2`j|pRv67pD3Mr=Y*2KFc+R~MD}7rrJLVD^Y)fY~Fuc#`-G>_3(M zToxb$w-5;E>G#2unmw8n#va`~0)-B4dvqL3LKu5=QJ|=Bs;C4Qp<~)MLjTFp*oVU` zNY^()nq27Y4@)Tu@YOzm`c! zaPa)m%FSlDpYBxL1UPD&ta#pndiAcC=BRy+7v!i>G`}rJ?G*w}bJU)~9if{4wtX1s z{w&h{N0aXF&HOZ{T-xNWR6g_E#9TFd%G7Mn4Cbj_6T(xQV6GddIBFt!Vmx-!;Pbdt zM`~d%^j9K0FwbD}#RlR^b=}y$t+E#<;wVfce91T1KQ*+wmZyq`FZvYdu66g5lxZRI zDx|7xjiLG@wV~@vN`M{F$xAqY?TJ$~6o(_e6UtxvdB%b2uRWG8dpj}o*H&gg+Ejnd z3+o%gUmKHv$IM@Q3<69cr*`{mzhQ_%73^Ps?TLZR6>HsJ`}tT_Nb%RK@KhCD{26AA z4sL%k#low=_Rl8&)JHJJn5Yuc2Rh*SQ(|&j^ljM_+Hx3jgB`t97k#@5qW6fhzMj24?P`EMOtd~bo>ohYG2vDJ9Toi!&@un;%$NVqGG<_dKFa@-$3!|lJ6GxM0+s$>>A_ZTuEUn?Y9=q2V z?fz1Glq#|_kwB&eERz`dWWjA+NL%Z}i{#y-n6w(~w(!$>{vc)O=k>NDIjkLE1;}7K z=rO5%4FgGQ5w@9-Ta>f!)u>n>CR<6Iw=m0-#R)v5>o~e0@v@3Fas=%#?A6&#y%UVV zo{NSW_PgAo*NQ8cYiqwyraHSb*h>LWQBhM7@k6a&j82vGB82CJa{x<*w@8unTjYW! zfP&BDI~JY`aH4#mu&d6*U9ZnhlG>y07oHrXTU%%KP5L%}ljR-ChpCeY?PB*1wYdu! zg;0G_ws}9IHvu*z3Opb7Fxs9S8(YzO!+QEY(2wET>Fu8XV`t;r4&AgCxmE2@iZXrM z(cbt@Ztt5j+l60e>YszPEtyA{O9lU7=~xczVpwj#ybv$a{}t6e%IuR>r-DywaI;em z{VlkDD3FeDm!JBP6N`CoJ(f4o!WwJVP3A`<^-WM*Bf4!`@?i4(u*U5$^X0Q7$HaYU07VIJ_9awdzkkZ6I`;8Z5$a) z6~f#iUB}$u-4)@7P-!wgtcHNj>GdfPn#pnm+uJ#)KLEByOa?}VRPeVyV&*yGZ^PsD z7BSsnzjvggf?=!vZxl2q`$6&YvmJ-;Hk!=UlQ5my%neCK?hNE2%Y845Yr(mW6WPmR z`6X>rDH(cc+W#Jm1c%kTPsCecZh^t^b%E7fwE~3-Z04$e(eHS36)id|m}0-7;9C2Y z1=H-O7uf9s3ufE<72LE0%YA9Cx0x$Q!jF50eBFbtx5(E7j?TJL+UFECg_smuPAWrMvDM%ZD z=$7KG>?+H-A@G;q13wEbaG2j>7x0*0z{QFw_>;fJK3{0L);@K`H2E%1Xt7h?`)qrE zp@sR+vF2dW><+rjg zO>edS&!j!8Q6gjZ5oYXEy?@ z;jO*9RJC7*42eU$aFFxDw_k_ng;$W~rMLi=qYv@IL2o0v?+VWg&mbVE@Io$Db|2CU z2f1G8i#SX;f8oIvjTeSs(bgeeIM8`P+q0kckjqf_3C%XI;*blqom)-Lwa_wo;icxP zb?lNeS8Zh%#r7Pb#bUnW9dfG(V8tbG)ReDRkJ@DX>l=>h>iESH`!PF%{yK-Kk!Cak-D{)+QPJIQ= zVlT__)>tyn6W3s!7*&5VT_v%Gn(%h0=LoLqBYQGk5BBsD*KCpKor&%9O zGw+(3MMuhK*j%qs8lp{n$11){$4Zn*9*{*WWt592pwk=Naa`4V4jg0u4(fXqhr_=s zor${SRN<-cBZZp{hWST|#aK0mqRn=-C{TS@>Vu*HmbT5ENV|VdqTN5IU=AmnI}mpN zr2V(#vn)DKE`FtD>`X33(R#t?K9rL<&Aq~$GiP@B?{in?TJnR7f6hgy@C|JQIpON$(e*dH?U*>|cf znTky1cF4>l2ynJrW?sg`WPmN{{Vv2PQCfk(+QDZ_&RiXlbUcpuahuZd%PLhme%;xI zEony4L$*X{iNeR4i@2U_OXee|qaAYb^snIK_WD>U8-i>}UjPKT_$KvWl#3)vD{9-v zO4zZhZMj&1D4c9HT9E6~s@1p?MGwhERC4hq0-Lg2jKJ!PcF4ttSm4)gxwsf+KEPi5 z7fv7KA`K%U#aw;wF9Av3OW==(V$-(Ditw4k=0$Z}|;|QeVI@Bdg$0abotx88R ziXOny5j6H-8+oypHi^wcuYA;JVmc)r5!n zZ=0(q%Ts76rv2Oy-=ZC=n2n(nQlVv>{W5IH+e&!rA6j_J`(?YtrS7*5h|8+~7bGrg z-@>CrY0oAtyfsZ5u+!O6EW8EEWaoG($TggWw=Aw185GnRriHk=xke48_t~B!S(Izp zV9>*}OO0}+U`6Y+OoWNN=DN}%ZaEzsZLVvmz{bs7bwj9-7v6GjW}_0?n+auf(XUfb z+2r{Y{;J4-*Pc?5|4xYTmw6Qh5s1k=iXKxMn3ER!l5_RY)LBrSl-vbiqFEVPOj=UT<7 z_?^XD#jhzQMq9BSK&Rqp=?9zIkiD@(I#2d)0DWasCBD`!*^9?+y6rYq@2m`xy~Teq z*_(jqs$!~WH`m}0+BJVOiToM!%MnOq9lY(fCGu%hCQIaOs7_|)!b;>El+{b*_i%0w zI*AP9EBf2S&!PUt+@I~nO4vh2N$zG+9u z(YR`ytsuwuu!>+a;H45GrW5 zP2BxOkX+t^fh+t`%fB?a{JZ(1zamH+fj?TaBoYaH7M001@!FT#lE9l#R&NtO*?ka7 zAnobEHm4Zwo&z7iw^u+}i*xMo>a93O8k_t6_6csZeL&O*Pw>7D!{t3HzI+1P1@xA8 zG0hCxqasx-9_~A!+F6W>*=PFgFVrSB>EK%q4Hy-Cx^L^@&qVcYSll*02;8p6Bsg;M zVuu?WbP4LlAQ8}>@^ICTd*jXMkPETTgVJ&5J^o*Bnok^RCdp!k)y1!|dtR>v8lTj^R0u{`8|i-Gx0y$4N5S z%V^nN<1$)z*U0usZxq}~_OGef7lJ#^zTNYVZi{+CMf;CiVq|H%?z7>M;;D9TM?^t? zzv6lS`?o*$zkd;0LtlO%q73@`)ld81CrkeKe<2+}Uw#j)g8u&D`~B~?AhM75G}bUt zifF2GPAik`?X>R?FV1P>t9RQ6Swya&b}aI$Q=~qqz6$#<&Em~<$@cDB zBxi9M9n0uB5*MD{ysPK&=%VK0GFn2(J4<=IL;~|Anc2{y$fRYv1Vu1gpq&XdGhG32 zQmTP>m0{1}?b6{GA3#E`4pQCY=t#!gK;VlD*p9&6rSt3C06y`m6dmxz40wVY;1lqL zWCtPu9`vRE+Dqe?k*(G`jaQj;V78ye?c@P-oA4bI8~8*_d`<+HhT?%w+sOmxt!jg~ ziB}}+h`Yad;Dxu^0JG>r&XU4}Wt)|vG1SOD0n9$4@X zg26r|NDqwH^nf1tVgNr5z;~CPK!$Uxz$adksH1KNnIHl^pa;`OU#Q+JvufOyFxx5B!Nl>UQzKqiq_4iSat(?k^tL-KMgAB~AxsM|gm_0%f$q2u4=q zaxn<%hds@PaG5)He|%)Uuyc=4-_yzEdU`uj>G>$E2*O@mw9?3c;=F6_#KcQ+!;A0n z<(s8)5SUwLfOmyx`Ek6k+C=V_Basv9J>7WmHUnuE6w7AaG%_iPSwOO~gdGSuUmi3Ml zo9ljR-P6-1-Y>uY&KAFg7xozJ_=2@>-6Ekz+Od>sFXXG&^J2Vt6?UODTRvi0H)3%v z<&HRQnOVHcmO06WtBld&2I-}LV?a-9h!USS+WXMHh7KG>Jq~r1^3vgt@ABdZ1xBLj zYAHv#+}1dr7g1~xJ3vb`S!#_Q6F0IR!(8v0+BgvFm)ba7f~$vlQihZ~zr*+DXI|XE zdpA^$%(k~!a&cx6ZfcDv%zGPZ*r#ZMugo3l=#CQ_3$arh5fWhWwQ)nN1t-i-)c1?DOoazoetEuF0Os+(DH| zr5QU&`q>hnKIm%I5GV(LU_-n=z>nxc#>(gqe^xG*Sy}0)esm;=O|3C9mZwc3ZWcG{7@Bxk+RS_xbJf{iI&@r>3ma9Z=Sw{&->Gu4%ILQE z^)e^(Vx25WKSa&Rw4zRIlD>Yf6;2-WNY~=zQoh!xaPkTrC$CXCc^x>pzOukboLsDN zGMx9BU5TCj#DwuSjdE1B?zry#zZD0y?mhLHRyg)iM8FQ|UOx`&*v&rR&r!<`YW}<% zvz4mV5AqHE`sX43>=;7^d>zI&m;|%d3BJMnH)84={QM3<-DP}(W;n88IXUOvuEoiR ze1k~FWgA~TsC94OM_b|8MR#{Cjy+h$W%D!BIXW6!=fQHTXe9*(UPsZw6>LDrRd55E zDt_~eB=mRmRo;%mN{Xh|!U<`ZKtE8!2}Ny(6E4H7W>`hL;f`Hcol;CxlIB=_d?9V!m*uPoN{)j#>_Sd?#8SEc61ko4yATbO<{LB_rnX69g zgb+k)+^>WnCSjH`Ecb5`{kXr`(G|E~^ED3V{o@dN?r$X+0b!U!5ecrVMA$-0ogxdJ zpx=iho_Y}L_XY5k!*cj{HGUl4)Fn7v^Gyy?{oV;YO+(Own5X{@Z#pbb_q+8FPlwj2 z`{HS|RPW4%?K<-iueU{JJbbpueSzd%w9+vyl1wZaT#-gV{9JhY<0U9B9jxpRZa5mgNPW={n^+tfPNpuCO7me zVzQck*Fas;Z$FG!>GxAuYx?~Vc^UMZfq)AAt^pIvxr!{)l9IfT|Doi24#2>SX2X$; zQ0kwJfkX_4Np^1hr>*a22^g-@GMtCZBa?J11wW*_ZrJ6mrtM*i3yq#kOmkDI(be@f zO7>uB9%5-m?bsHsCKcJEn6*b537Y^%G6J$P%$D~kn^aE4j4BILroYcVhCuR6%*f>I z#zZ}^ypgt*&8|SELAF%S3=XrKPXnOf?1I|~Oi+ix|u?dtowa2;)^*m_d8#N z!f!B!Ycb*b2WISd{Cs&c8UDh3_C2Bb{&1Gpw~zS#w(Hv9`}0_4X&2@DK2QlU;fu=Y zU5PK~_+==4Z54|y)7M-#vqhSzm;ps6BLI4eO)NDrU0GNIT?rkH9mY>3J#7_@w(>%g zw3KQ5xv5OSbyJjhh4WOOUT12mdcCU7bUHrLWdfSolJkVY=}NA6&TfX1tISm4oQY(+ z?a~pL7ov&PJ9L^{Q>iyuL|=BW0COPgV`hMWY)&mw02#6jYldq!;q8a;+f1X+?aL50 zo9pNs*>qJnL0wf@`_N@sjl6?`Zn-Tc)Wyt3Unn{W99ZXS1TNqrsjR&ev0@?c+0#Hc@R<|>mQRqO5?F34hIWC^ zW?m8e>`Cm1Oy%S?i`+{2Jc{k2wVD)N_Gm8G4L2KMswAZjta^D=-u?aJ4^KTvsMoTsQnh{4tgB$9Qh=yY`Fe&lvhs!sWl~xY8>A$qSP+ z3o+npwhnGGSG|tU*+nfb7@w5$IJ@x->HWJjKDiov4nDaIe8G#qdseMxd{So>_j+C> zF8Mdr{|s@-V$Z!fUeBZGH8S9Z=r_=st7@_*OFNJ$>X{;?Kvq3hgep)7sq>7I9)1=- zg`o-zorO08rAr{Oo?}B5n0h(hBubB8D?1-nOt)I{UYkRMMVv$N+I(D?tM3Dz*vt|_ zBH9>)1YR#DTwYWI_Z!9 z{C#!OD@gxWS!ZRr$~s+7C+$;Sxa4+?7k+&4@5>ABB|cuLg)akr*B~9TPw-h zpY~}THV9Fb%=>D>aq=PiM4oaupLrdeMa4c{{QTcnC%tyHk9D>!>bg2C_n2n<>HM7PCkE0$XAd~_6mU$|Jk)6sU4qL8rSTSFbXF_a1 z<}lnjOS3__2u8o<}ETf#Z}({BA|F@R9)*0Y!dk_YaG>{cXm6O(SzcV{j)VYYa zt1Q&_Je7sIuH9mJOTPULm3gZ@yzxTJ4{`X1q=wtEq^i2!(O;TBN9$uVrUcN(HRMT- zk!Lb!`eKOvOl&1Nf~KC>ev-ZDDhtzF_JKK{dX8VoW*?4R$!4k2X#T-W1-jAvL!t-M zU!U-T$7mnK{vL_HaR~3{f8wa-%SYj4^CVASaa0z5dYS7+WmVuJv35*WO|Pa=g+@6& zfNeh*by5UP-0A*fG-0`1IiJ#8NG?4`PqPESzTv$yL6h=o+VKq%qU>luf zcq(0j*eB@KTe8j8=(PihA)a-5Qk`Ni0IAqsn@1B74x>NGY}ZZC@t{N~YJpHjdm^ai z*edrFQ7ey8>jXxvK18kCcoD~-@#SMcGLt8h-HBteaGlPs&2?iyJQMB7gK|Vclb(X@ z$QslUPj?v!Z)IaF#CR*?MvYdlVVHDK^Hv-3b`)Zwj3zxC8ciNYBFaHclaTUORuzf7 zeUG>vlef<>%c%ItGmz+VNZx4D*I$>{!x3Y=wFDCr3ayIoImmgd4S9PJu|P(XN3Pds zatg*8e?NJ<9tNvz`!*lDN-=qxhRiU9hrCERI3#bu@>YhpA>*w=j3*RYZM*Xz=dCv6 zt>7tzCPR>zrO;$G(g^;3@-`|Wf3gR5$zt;MC#EqKdfkciltc0sEN?q8glF=$837`N zR^_)Jyu2ljMLLwcw`#I^#dpchvDtFErOEyNZE{K?^T=B%_Z^0En%CY+xpZq}<+?A3 ztlTHGE=&Edm39j-o1hlk)JnOxERmJl6(LbN?~YMv72@5*QQ^P401?A*bq-VcBSf8xF;olp-O%Fj@2Tjsj`rRo#!B4pDXP3(uxkYrf*KmG9)1`Xn=R6_Q5Lsi)nZfvp$Fh=HyT?_tAsaQwMW5{flLAi(&?|k8gT`lcVID zqDun!=DcSD`DPS=)$t9dFChH@hh;zVjewc;AilZtX&v7<$)i$a_g4Lj;dl|VKG5^c z+*|=!&e~ZKGgXCiJrqt0DV*bBS^qMm-O=VlE876G7nQ#rPHc6k zp*X<2a{pey{px`Gmjmt}54gWmxwnZN>3ys?vx(cQx2np{+NSm|$=@)48z(k|SRQq# z&aO{Sb&cf?L~zLttM@&X!IXMGF3pM}mjC^=7%}VzcC!5^1p38ZfrJWXJ7r2KgG@+$`+P0R|z9P zM?b}V7>oTXidrmAZn*ms_)pL&>1+*Oj+ZuOEws2sb(7Y>byD0dR~h_SI>pDu8{tK! zo2&1_SJhkR%&E-Hbj%WdpM3Lmq9FA&81gsM_|Z~Z%9+Qkak58z`5NApRziLnAHNxw z+ww*_`ZdQH@xW4ZPJ+c*lv-G4EUazzjI-br7o-quo#A^DhbNs!TDAvOB)T9hZCAp7+W)kD zSf%X=Sc9O1>X#v)1-9+ud-5!vbS7=(feDu(mbFm0b-3aWX*<4j^m#;jJU6@^|NWv+ zeb=da{8}h$CKS_P+?9^=BAoyocaiVOE<6d-ak=|TkGDeCCokOZblr2ULf14n9SU8a zyPnZC&iCX#Jn4FL4XbO$fLZpxuK6#Rk+JOZF&b%YFq>f6=X_5_;z{R`HbOm~>kdoX zUt!(%KW(?Ew7v9PjkZ5wSOMCW`ks7&C!I;#06m@?Mvu4u`S)1}(b6_0{iVsHHN=0z zcw|^T=613g>5n@P3x@R$D9--K;)OheBTYKl_f-S?$`c2@NMGtc(3Rh7(^|PZlJf8R z%3sl1`CMV70mFewj>9a@ICA0P!81T|8_9o{=0T@JcD|Qx_EnfFSNMqzQuz|_wpCy6 z3Z=fGzWVB?G45!+zTSY3Icxy{_Mf3t_*tn&p&4N+)Wa99zBt*R{$9G>SKqN=>XX;~ z2y=(fws7X^4-|K{)>v?YxvCj=0*h=L9GBAGE!l=4*##-HM{&!#Q9;^4Q#uJ8QeD3Q zr^sU;G#Y@Nq=>X5jdzJP82aRF<(5rKL1J-Vf=8g?AIqceCSTLYOKv63F%b(j+1L-0 za+5Q24RS-$+vq~2R$fFxvy1mS#qTk|<6T8?9g5Q($5yYOGoW&0rsEi4&*YmASG?(U z<}nTOu#YhWHqVjfoTJgW`&8Cx-v%*3J05hLj$gt=Mo7nZkjc<4I^K*nVnoMmg2B)a zeJ3?uv(M=G1+f{z0p>bmh0p?)d`DvzgX2n>C2?3zHeRO8=JjlOe;Feu4%`M?vT;^; zzPy=li=G#T=F4GdBpf|4)B|5;fG;yEga{aO2htl9g5EGCW&{o3%l6ZA6x+S7pLB6Ei%+tZ|UU$Za3P{3sf zVHL3^Jn*}nB^tQ1qWSK5-*@@Zd^gkgU3>)JVe2vt#nXJBuDgn%c&QxJi*uYOESG0Q zt$g_+ion@ii^v4nT>Lrbx_a>Vw|;bfgMAQ3Cu0|7Se=C?S`(r!qoLIy*h}saUMR{i zS%vy^&z4}HBAj|wX{v|SiKHq;s*dXFuzrq&BL&u(le;)wPxZmNw!90$s+Uc=X8KQw zImel+E6IE)EIJ!3NQW=_@z?tOBC$Uu$w!>2m|@snHmPQn0p9kAj2qmf*)x@_boIT*f0~< zPTlp*y6fw8*H`JTFVtO+)?IVD>(g}CC+V(_)?FW_UduifFB+}l$Cg@b?zqJw@@ZUy zy9c+s0jopth8O0T4EDaf*qbx2S|@qoObIPsM?y-xC(avBsgxn~fnUAmx;0^HJ(3p> z=XZ31cyq?d2+iG6`fO^q*bvPTv@-7_E zz%5IH7UEqu#z~)=$+>l$YN5eG3Cf?yyNXk7u2QT(r71v{I0Z_beJ@>!v8cB>e_om6 z1<#2>X_nV>93~mdco&D zW$m5`WOILhw7B)Qj??13UXjz{e2gcfp~XOy*U=&sMrxnY;-*_WPK(B#k<;QFj0K~i z#Stj4qeTKN(mtcbb=4iGMO}}`X|ZxhbhHprUPp@-*oA#Yiz}--PKy`1M^1~E2S-PX zg($D1#rK#;-e|yp9$-DG{BWDI6=^i9OlQzkuy(jb%qT z8ECsD_xkbX>U&`rm~4!l?C$R^lZltb4r)Q(KD}cZUOu^t0iDuduJ${fW*pY#>GXX{7ogLq)O|uHb}o&H zcTQnv)9}tY861vtU}xUL9AR{~-C8c$#NT=GXNy>d(d%~@y{<9Zd#j^Y9C~Lw$^90S z%K2nnusp>iopcJIbtc=y5hdb4P8evg#{cME#0n*Gwf%ht5ToEEc@&&xUbTT2`$@ke zN}>*eQ@rtFJl&kF)Vt+mRxd9m3%P?FIH)iwR8{>@&+@a-n)H&cGK{FL-ez0=U*_r? zu>_J6&IF_-)!*3TOPm8q^Fu*Qqr(oE5udLdc5pczcMx*S89c&`?1@i?;bXLi*xMCi zW0=T@{pL`W*jCq&84AHI&dHf&glyF#D9*h}0RWJz#9Wsgie&vkGUj*8!@O+;m%mny z6lfj5D{Ym@Z7CgaR+tXJhD=Ha4DqXuxt5oGB`&54mv9# zx&?!IbJc^4jtCJ<^cR5hVSO@e;?LG{TCN5W@EHyz5Ms>plyE|d*K-y>n5@Qc6fMbb z=FLSv*~BKPariF8NRoJCHv2mh(UGLeIS8R781p?n`2626ok3w3BWA}h!6{+DHka5A z3^*SQh_DYAg?q+up}lX3v4F|6Ovo}tLR2}niF>T&KQUDH1fz1Q=NyKLg;24H@OFVp zlMSepx{f;CCN@g{%^`G>d1E^M+KhxwvVzVCPfuI^ZlGiKdg3j{5rJYvsGtj@ie>O( zoW;Df0YNgO`#JVo2X~8uQ1TzO`8zeUFYUypP1~3wS?4{9WPS=@_QOkiM2N`vTrU zK6u|66;pVZrbh*DkV+iSTpR3CFh6r9ju>-WMJUGKZQ_^as=uH@MXs2^xkC_t@qwwPg(ErcpAF*;9yK)5unStOJnTU2D(}9vx@dolBj#? z8SGb{C&d<^=qY;v`oum0{b3(QvN1)Il1Z|ZyqvoiQ!jJlo8lSAW=J0$uj1_KE^S~p z4Ao1EL9BITBU+m~cmG-}!*bSH?3d{UIm!SQj|iemN6HXYIP<9&GNckcM7chQHWtYc zu@MEpYRmb7`vQkI@yqGHpevTT+Qc?~iR(h+tm`c`wuB68JTh=wGUoqO z8|OLJymT|)@LjxlX}z#B*}T-2mSKLOVRU?B4X(Ia1Ez*Qx0o);%#Lo9(J9zL5df?Oy2fYQPuc_4Es)NIUFu!F6u6dgb8aWHcDc$f0}P#7yI1UhA1dB0?KbfYIRzu9bS z=F8Wupwlm%iFcupv?Lp6XRqg-iM4dM0SRh+-q8zi?Knj)cE&Zh;l=l)Th)@2sN`a~ zOU$IoTzyY?lj_{aX3#Nv z?i`ZDLpRf`yO=O6dktiitV$ zJ?6k0vb}x#?&*bIZv+Z|q&sj}X3sRdmd1}JK0P5B*MU3{2oCY4oYa2jF`6rN{8_ua z%See}V`6BdWX#pV>co*!inlsVq^9Uus?})(#R4+eK)z8E57W0LxMNXgYi{yD)v2bnAvA0q-boBQ2bc=Rw^auu*GXft;HtH)+ggP9TWE0 z1xXsE1SF%_p-DcYMuuOR51C}exL9lf2HUV?8W}x zxk$=^9h)i_u>}owbkdBx$b#5QTF9bkk7QO7Y#3H_bRvY=5qFU1H0)IkTBq&MJ8(bMiyBbpZxN2WnPlvuE3Am0b9>g3ar8kz3o5r)9Js|zEcNlS^t8NB7NDA^@}O)o6L%x!1XV1qe=L1c@`oS_#S|o z+-H@@k6CVrX~Ovz$dQ6Fu+R(_M!g_3qk`91 z$bsSpxr|v6EiO_*K3LyrB4de&~c3m&oEd2;TnL^9|0=vM29}vq! z%Ex69h7p*qp+7K-?qA@w)3s{*fIZCRSO`$8)XIO!#|ouZ{0%Vy5#m3BaRX+q=oK#i z#O%zb8e67G3EdP5S7o6OO0tBjGN3_5?&g z)%^yR=(L?u%KZLoaQ76xG}baZCbNW{>Vk$=qfx+5R@){#w8x`{26y*L^&6^88IRiK zO%F2AQ=%10pFvPcADu1c51wZd%2UChvrN1*2U}giL*6L$Hb8aY$Zcqk52e#EX_DV! z@Ai{WnwCml#9?AFlJ(+%PvTEPdD>r^g^zF_JC%2~6NS2wZo1e#5&na8FBlc_z+4ra zAc;o0qme!YQKk2LKqNiGv5EdKn28LPuSR&kVsxjVI?8W{0N9|*(N41TzrVa*kB#+) zuM=SI&MhE9&+-wty7?~iHQyDT>~d>X3!(ua_|Neu;$2-P#IJBB3Jwb zUnE#>`m5RC_x`>%y2swl+jkf0;)NiOo5}I;6v(m0H2`EZZ03w#0>a z0%a_k(AQRA=bhBkU=iy%ke#8xf%sebZ5#NU&2Z^1q|*5t?EUy0Ah`~x!3oaUnzP>9 zckeM~Xo#LWmh?1udeB0Ep1AuNchXd_C;B8_fKSv14)Tyolc?nXyD-Th4LT0&;Od)q zIeT>cWq8z|9>F!D;{BQue|Vy&0ot-SwaH-gBuN57!*?;>*LWe2f7-f-exoF(P0MH{ z8*0g^U$m!u*7Tj`dzERa4 z-bW-|O8oPCuW)mQ!QP#0+a%Dm?9xWmc`7Pzi-bY%WgZi^OW#u{yaflZT*ZqCCrmrr>+RGDg9`{t9fG+LDfv z@nNm>^WjvKwz0b2>Oqy4fiL160~yLM)xLmNBy1H04-!IZ=kuQ!U3w*Cq5uqtpqye zf9Pcu%U_qSmpp%9oVpbpky!c1<&MM^kPX<6V8Us<`t|SX2SRHf2wyIgeQFvfva>?? z@;wxfs<-#D!haJ@0CVnuHHdkwhQ+|moB=Et8)p2#+ArkG!4(*DN=3P(@8E7D&)m46 zFL6xP3Nl}ijC=7;T<1Xsn!#MxW8$JO>3QXRtgf~9VB;%c@$(3T`~@c+UR8)Zbd~S{ zZN57qM4Rz)n;C&^((@R!c@f$a{z!2ox=KfQP7cDjka}yQ^dw3F<6gj+v6{IqZQ_6p z?P*^29*`E6P?-mSTgRsevv3VcwfDIBT zSpNxMX0!v7fWGS;sy&5YCR2Nx6@E#Zxacc-p0hp|s>YvT5Q0x+Ourlj3~jPcAkKHt z_%o1a75>?YcYZL?^L+qAw@@%7$aKGiV9?V&q2qLa2nhp0IQIu`;M(u;&QDJ1c{`d6 zr1QW~ZIU`in{(tgeY_Rdjs^pGYbgzR1N-#?8Anqfj`X}8O$Opv6spZs8Alq~`1NCI zI~okYaqF-UIMQ$xG|dcb&(!hut_;;4NJs6xj(2|e89UzIFQ zO)7mTobmP36xS`^Za){J1ZK`=g=$_=PjBO$pK9=#vtx!Nfx1TN9B&0_`s= zF=ohHvv9JdllxjYqcjMvPZ8n|Vr@lb4Go0LXYzvKIzfYreN7HV{%p#83{;Wv zF(aqSaQXU8F(bir8lnItd=(cJomMXnq|=yC@Q^uyN_+zE{OCl_Wfc`nrw7NYbYfpe zN2e22xHLM|AuJF?C&d({$Z+}Sq?n>$IwdGT316i~MW_2859IF?L&2k%s=0XQCvS?W z3Wmo%PL(%PRPZDR!E-;>HwDp0F=cMN^Mgk*Wx?=#bDj#1F)DawV_4}gZ^@zHA(I9^ zx=@BkHg#l0=y^Ck8moXLm-_$gy$gI)#o0feD+wgw1SA4NB${B+h^B%XSg1L0R(5rx zSW!czN~=xLT1%5%z>1J$H;~O?m0E3mt@gF8ZMC)Dst8nYHzDMLKtjB5@e;t|Sr?T{ z3j~z?eZMnjFChW7+V}JR|F3+=o|$LvGtWHp%rnnC^SNpTor%`qUhZy#6HkxZ<(8K# zqbO%URSP?~N4))TAPqieuCgL=V#**`V+sfC;TGq&@tVL@HW}#JZU1|f`Om&Od|dwX zr3@M!#sTx>Blwx`=b4EG8N7r8Oc>ZO(&s6#$&qb4+-}bg*lQb|n;{{wjeroUPW%B=Y!M{=$_6 zt1B4fbeZ1UYyl%%#BzS$1YIvE6a8Vx$oLX4{vCmKe*_W6`8}am(eG44LY;ofBd;pJ1a*Q`2 zKQL85Z-)wla)Uo~D-17?F)lK`gCkHt1efg4n-403VEE3acN#y$F|CEqKf|aInVyY~0`;;b98|IqPwwW6On#XH+&SPwzu0~BQ@14})|TJop4gUq zah%y_Tbx}~g^6#={WyS$wq*rm&QdAvf3z)^iDHE++Ln^T@b-0C8hnTMqmWjZ38{Rk<1QW)x!0XCpX*MHBXt=}^`UI3ECCt} zy3ND4KH$*IyTMkyw*-_0dzUUNMBB7j;VCErL@1I_66`w1*xntT{69W}m~&-1PmiGX z1p<*Mj@v?G33;6}JVK4NDn?=Xqh_-zQ(?Hh<6a{HANL2J?q7>Smcr1^>j}**d zJ*wBSI=wYhPQI9MuE)1y*vZ>5IM$9o4F4SM$nM#WKa1nLleS~)sIRmg)3uY1#}zw2`~41qW&ZHEo( z)R)97s1V_d6UsZdD0f}#KGQ|x4wdR%LUF&l6i@)xMJvsVc+Fx z!P~K2SL@HT`!0tu(4;!7W6Fw9X>Hhf4lXbWQT?D&y;-Ph>KhFYdOZZ4By0mVLTYad z^*0><5HkBY?yht&+hF(8>WA6Feq3w}J!h|8myU^2b!;rocGbF+0^iivpZJuDdC^EL z(Kq!a_4#*IPlMvwfat!d&kOfo;V!9j7R=G=H>qn#ajT9Mx$JnvNUhJdiw7(e-;^g1 z*O_MvL(f$4Y;m4fJji*Du?ZTXY~`)k86b6NNd0gqDJH7Vp^<4&5iXchs^b>gjDoqE z{*E0ybV)r75`4h?acMK{`NT*Y0C65v>jQ_jT1W6uzMty$_xDY0hb7l^Wo;wOXNJ!5 zP5tjl!%goEp~1eXuSC6oJL=2Rhj5Fcc(TBzs`ZN9 zcSB-T_gI^EsH!{=@TtV4{`Gjql4fkv)YU~m5Di64Y=f2q`uEwy`gGY#067oV2h{T# zO?hiO@syS@%a@g9!?xO=L^L#14MozwwQ&h`aiv@O@nTDSJ`!%Rw zT($wVuputnfZK@A7G8-B?jr*#dt~%7n(RzEyu%7r^a8WvTb+Z7)16sH>OtA*zXml# zXQThncPGTzc|gXQ&p0@?o?8kXUAx6_&Vl+txTLtqg)O3CxAk_B{;T)JsJ~+nsJ}HWc;P@y zE#)PWf9S3zsjpDD#pBC<%1hW^`vL5y>Ti~NA1O%3EL2|FV5GdVm-fEiDt8|nTk3nc zfCPTkr?@yRNPHS7e0gmE_rv0|h@>Z>U;Qqvtf{pi_LL`q*h|kscvf)^m()Ea3e)O0 zYQEd{lv}pBW;yhJs3wU%YBUf;pK0(oraN#P{&KKv{;`}3KY|i5G6>}= zFOl*m3CiD3t6L_rc7T0+2t|qVO2HYYYx>&`?*j#o0a&W|v}zq7W>@9aE?xDbBpdGb4_1Y%eC@3=yK=XMPhe&+}B zyC8d*@Gm@rUwP;5477XY9@Gc@qttYxXMiIUD+eeqH5LYf@6oR!#N8xaZ!0yg(`9)? z^kQWO;;DsA!M_V2LSGV&Sp{Qc7EQt53c$Nc&7)>WfedL5E+qiuNvWw3L63+oH?wRA z&XK|IC^fg3!5jiJczw_=fLoOst8hR!zcLGz8Oyc=&o^P`D>dhs&Pg(u0~O@rRBnNO zqf*1eG&)PnV2niYBa}nfc%{ZLotl|BgEyNnn^MziIvr+ej9c(o6EpgmV0J|%KetLaM>+Ie0_IfQ$j==T&e0B837A_kl^>^s zbJRm)30P23$j`#c0`?3?Ka|6vt3tt*P{6^^!JH+S9a^F|7d#NmiVvSR5WJCa2;Eq) zM#6{K^OGUCbNgG#8s$HqSZaCSnMMZD9$ts32Hq$}e}YdyC(5S3T)+#AYfv1>+Y4g) zYW3!H*5%B_s;~Ke4E7c{?=D!%#-93?$imZOn4Zupy*m6sY;=YwW&RqIx?tsrX zeL%UTjp*J{*dDx&;hg0n+z}10=vv8{E})mhpl!Y>^91bd7;HrZHZTVJT?BR%{a9{+ zn7QIU90{K<((W-~la!kIkdy;nB;cD&c!^STvxJWq@D(OpQ);G3xJ|%+W5OLu&4m&^ zUBH)^@EJSP`jHskq-d&6>I=HdO&)!>jpzQlGlRjBXh(vZf)g3cyopjK&2Awo29R~GOxvo|5dBw@XGAxf zB?p4X#i%0ZC`!qMO~LmVq7uK~6>%H|lgw29V2glkP-@nhK_xO(WAJI2>Q$xYNi#?@ zQ>_aM>vA&+fM%Fs^=7c6GL02&2+fBm1(?=GX2Vf1qap}DFs!ZO7W!vZY=a-z)mCvW z{kK-M!Vk=9BeMa_s#pa-u&S+M9R1FUC*cQ1wN>QPzp!#-=vNVRBC~;hk0-UgQ3|(x zh*HES#Evi<+wx@`o%@1bJNNSX2gK&)gw6XHZrDHA;t_C7Eo!8wqweQ+tYf5Ft} zfm%3F5B&{D`IGC0+AJGkZy=0oOvw_fu?>mWP%|i$*DKn+v1n%@8cYH?yyHR- zeD%Y7(lLSj&NumtU$K4N7!!RXMg?XG%cod86EYt}w<*Fo1Wu*4*&G$vwSbgNvc$>d z-k~sZ(a+Utb0=eakW49APWc3m&NDbiH%Dg*)C@2>HvM(UoKp^nq>5SA#Jp%(6N^My zWFKFu948?Uj#_v} zw7&N<4>4-z_8IlHSkxaziYxbC$l>#T^}`pxzr6aHNMp8 z4{{{83$#y6VV@H16Vu^x%@SxIKcU>+$pYqWc<$!gg^e79P1%C0a)y=MNp(kQ>!y!*wecHqZXJK@L z%X+=GP4v-^SOj*Q3Fg%8U!N9wT>wnn5tb0Z6#(P0^~mm{1_q zqH_0T=Q=CPCtT>f1Sw91RJd`S+@qT4hI3s_s35iu=Q=NpBSmI4owBqHmPY(CX$v-N zX`zmI1QW~AziY1a%OTfEQsbVd!yTYVi!OllV&KL(KY2W-ZnzbKOWP zSG~+W-L>K5+4FuX>OC-)zpS?-TJISrt#|5Y*L%f%(f)|kdrqw03r<<@0jI1t^{O0t zo4Y$zx$loa6{&PP&JWc6F(2+L<;xqGg5LPP<;tUY zmg86S?N3?n>HL|%pE06uw<6RA)BfV$;%Ku?ZQEd*2*wZo?OPmrw?~BFQ-Jp9L+a5b z8h2rh3DUG-A7Rx`qJtNr#o~Ua$h4k4`yE!v&Ywc|ti~8Dlree~3LRiOI*{B_Xnb5J zv&Ia-5k^92#5h0QqL-DJ+A&~XWnXh>1b+jXK?S{wxrB~!6mD_o+wF&UsP&2J#FW9# zl!-~Mv$-P0IC#4+t6~kodjj$GQsPDlRWmv}{+img1Y{x>C2w_&rY0lJg zOOgxMtze@ZS50~_psKfjsioc3`Ps!#*ARM#J#Bsb55Z2NP#TT9@v?*`c(|NvGxY?(v9R{`VhiUAD!Ve#v|LeUNxV7i}_6jbsKFVNzF&< zfeF3tzF_eq_u2J3^OW_|6Y<)aJ^&_%EP?rBD`^TS+(HvdXWpScAx1o+x2U>Sm7-42yeY~r`&^w&+?Dsx`M8C?Z5(U_;EO#>0yak3 zXw8s|b?0%lLr%e`O}r-G9bW;(EIfuWB?U>W-S6bhiSZ)~zWtfib5 z_|1l<&yZr4bbhR)SD>@NlGbyu%#vb-^f9m)gwM?X)lJcs-29)&|BhJx;g7y}{l#4W zd}ERnE9pVAql4cp1m@lgP)BZ~B?=UT_`k7Xo-Cd#S>oxriRo|k9 zVGULLWs2>#mV~y4Eie`WOEwNYpn4s@1ko_^td>sKn|z}0bUY_eS(&BcsROUJBt;GP z3ni=GORP})v?4oo!X?hLVM9p``&GSJ)sbA})NSVUF>>nXdWX^Db6Ob7N!D1!jjO4? z%vaQK6F5rEH_7I}c}ndBEW*~>4;9Z3!9cIv2y9jl{{wfvd^zVW*&BwGICptqKyb>lUtNyF+@SfjgkKvc3&?t zsrz`Mva|+;>$S{p+##G%rlY%pjTj*JkwnEq3olmvbSuqYKMl7Sl1&bMs|qeV3`jn4YK@!&p z&C;&aZX@KZTOZI=sDUzGki6!&9ag=q_K@OXPg(WtD!3GPcct@s&C=pJ9VUZS-<65( zTRmFBRNV1PZh^7265gvU0=5pfA~+n-hty5cHIIgNy@oe)vB)O3Bl2*}!YSSv9?cdA z@n^shGLQv{9e2OhZmye3%x7iSzXBFb3kM zH&155V?7%Vz=|=Ut!!j}bRrKiak%N1W377okwvoFYQq@rF34M?I4^X8Ioz8$+?ixd zHDhK+Y_K;Ws`0FdF9v%mu24RkNG)3*O4SN)h1E%4&hKh?goOf?S~rLjs&>9Fr7GF4 z6&lVTsZc7_JvGCAF@koKW?}+3Z;Z%9|W-fS@~kj}(yJ+Vvap{77Z7UBBCA*LOz_ zwN7dtF`oVT+Wi&x0M@`Gg1oe0(E=}OvvMAHY7>S#$0(yp5>#0G<`OrfD#h;0tilun z5@3Vvy#}jW5NlGl>n$sIIZQr~<;u#zR<8rRAs^typ(V3!w0eg@hcty3fC{M7l?Nl@ zl9jG>BqUtqkHq_2ErZp*Ew*G-s2#sx&_VPB-yBH{vajh|9Lh88;Bc3Ha%*?IuU=>qOOHVMCHjC@e zk>bQRk`GnBPsk@%?XcOWm6p{!|*_^A@bJ-@2se#Z6bJoT<`u#Wgpb^jw*bvF&u3WI9l zzvR7*>aHsC5N`is)v|BVxA4*sWa=YJJRin3-^zoq5x)B}TgEnx{GstB^-ZCn#Zo)gc?QzD`W2)5or+rD97`0+jJfL@kynAO^JCc0wI&6aR z6xKv^*htx7*|M9?MpdAV)*KqC)qje9LjO4jvXe5+E^{So^~Y3wBN*FebV;lm&@&Mv z6k-@4$EXDKi!HxJ^h=oiGH>OJC zzPQ1?lgP{)+$|ZKy#v5&;YMQ>Iu#VBD6;tdpSzMF_J#3Jf<>;;;UIZBXp%}@+yra= zevl}L!0IngKeSc#%__KT#1{9iTzA7TweU5~vSa>5?gR0se< zN#p!h&moE`{M2>C0Oes95PXZ7>KoKRDAnq_8yEAY9#`EvN4YMaqAy&PqUu{A_oz+@ z>`t`>-p@8fdF;BuNHn{)w|TddoTjnW$%37n!Hm>-laEB)n`1MqHnO}x7#{*A*Lhw zsQ%{RE%yA^ZJi&$gOXhXwAzndsklgi)?L)vs}j)Jj#NU`U$g6*wfZI=h)$0`?8SLV z6wQL6M|!VcC$1e|){hg1$T~JqE>>do>ale7wPvwga3Oks*cC{IS&wk*xGh#?jiWBb znWFlxNet{v^`#8xxzs6Z0?k?hH0eQtlf!;tFEzgYVzuMyHrNJsWt?AG)8S0Uw#Dtw zL)?fjmZw-Z<1hF4o+?=WFCi=7wGhY(wxma71+$?VsOf`nPO@j--f;aCpeXlGW!y~7 zrnO{y3blT7@lvzfKV0*^I9(9gE!dmP0AJ#}BHgOk-cWrvougSgtom`QzQ?M6q$*Py zw8C~+6M;T%x`w=_!?Y_+`7eO+VWgd_7UFdK+v$LeFST?io{9ZHp@oRz0MQ!~f}dIS z^;Uh8+$-vy2dM>lqJ+Y`On~LKakHzFx7ZdC$1icOVMQw|&(dq@(7c{nW}xW;u7;a6 zuW*Gl2Ql6N{#f`iX?0z9~UBz2F+JsW4F`>p`t289%n!l6cc$!Sx2$ng07rIQOBDg z@0JaEK$+G!j$@-y%7N8pnVVt`I9_nahDo{AU;0N3nqJE|kZ~xn#szb@SW(oG2?zR9@g&nBh8C7)Vv+!JB$a2{q@?47 zp?yQ_&meUuo1oBR}lXnI&81h>Z}ax?7n zi3q0rgN-vTZ-{M)|GtXy5B!*~MHOww=2zlZ?GD9rn99q?(DK2o2V34>RES9J;4?v{ zgvUfH$O}%=@?fHng;F3MOZ;dMB2;Xh1o=RKfQ}J8O67CxkM!}?xaobC)$*oNo6OvOKTFiSFVy}M1!AVK++YZO zrt0rdLW0J$a+<~@B;{7iX4eQIA-N)&5^|3W2uXZQPB$bZ`j8qS&#)=ayn$WV6x}1r zfRhn~kmLbbsxC?u;*w@O6$813E%X2+CRa&eho~jW%t4uvnhK#wElV@SCY`#+$0i_q z?*qbx0TP`Uk)J#-#3?e%XVD~@Z=NFxiwIHP;S@BHYdf5>Vu4_%Tr= z3%Uv>icomsgmkZ95@_%3KiwNHbYN!*uXDiP&p}0kW2FG4I3hq%Joj+`AVg7hk6TJn zT$wQh4^>j4awlolZU5f@o@`=paG zl1j!#kWeh|if5!GnX2xrO^6cBV;IZ6h~{q2*(lLm&sZ^{IVVOmuZ$;}lq^SxCdJB< zXp&^Y{5}QBJ;|n&EuVsH-X9~IwIuFe0ojxk^HSs%BbKizweNjFVtEK`N8~)=N6!N# zO7UZ&L>FWeCQ49-dv*8o+HU61rXB($t-M9Jme)|;KP^N z{|?MNPn}6M;~A9K5JfO3Vr+KRhFlNbMw_cfR9-*A&te9WisQPOQLDTl;yo6RR<6G zq4Qk54W}ded*BQh)sfrfx@)f`%tJ5I&vjSveY@2Ueeh*5SB#T7zKy zi+u|~x>ASU2J<>AmaR08Iai*V{r~uBv6AhY^Ep?tZ-J*d8T+5x=lEdUf_H(2i@8=O zs5)?FaU50eG1ml&#IwW#AdUw&y5weH5_6MyqqvX3qt~7icYP;pC|0(fflE9B4DBqz6RlQ9gUyrpYPn>O%>hV|; zY_Z^ZWv0O$ViH97_qFiFEk(0=`uI8ccbuZsVm=1A7{#qZkz>wy4qmeEx@eK>VJty* zE*j3MEa{Y7dn5SAo?N@kBzoxi5}Ec%atWf!I+vh15q_Plg9bfSpV&rlNWB6tdJu>; z7ext#Tu~09JGgWdItq$G5vMD)zsG{Ya`ni6w;9x z&rhV6JU?9~IgRrCO;S4Y)lt;$qG%yvA>)c#rcEfiCs`{@7qSxWr^c&?cS=F5tyy3M z@CC2SXx=|?9~du45hQgmfW1hnO_J1gw|pi^<$~m`bwl--9!eQypJH%_7w zdX6NONri-hXBfIz;2=?%B*%&37L$O1#NP@_1;m2Ie zK9IP0g4l&gdk7x{Kv3FO1*LWV#Vz*CVs&PrT%8%oEK3cqGkY^s*B3tZs%J^8p2Wj% z0}su$97K;9tL{%Aqv6#O{ZaZI`erGE5RJlZY(F;hNUAi^qgNx{feqCuyCe7*BKKSjgJ+;ps^t?KY3{0yU@ALcd*vZ7`;wpPIQfRS3b-gozXg4wp=bTzzLZ$8`(&P&LN zlr_u5Za^p%U_XUpia=q&vJXPcF{<*b2B?u}b$F;gUlCfwec2#A0R2nIfte6yAzUA$8Jx9NonjIrvMW2UCr)tHiL6XaX||=a|7}px&nZ5_YCI0Ij}hsQ>o081@9kdPH^a zk|Q2Uh4~JmL}bkOgg5EyV`HwjU>6-3b-9by3R^JZg;q-k27R3v^jmul`g_qqe-XuT z(Ep0BrBRu(72~dA4CbLnFwD1dm^W11OynzUj199ak;A;ck70fd(Q#s$zrOPWECp(3 z7tE{o9Oo9IQgoajVfSnGsH7O-9Vd?P29EH1zNv|db*uMLj$!8<_OI2L;jc z`IyA`9u$ML2|`}r&?RCk4>US(f;kL#jChC{(Z}J`p@L498V|ww`3%dZd1n@Gf?d$T z;+o3e5~-sRZn4(}oEXJ-?43akTz?5<9b#o$4|EjgIly-CPgn$xL$q64hCzk}86Z&Y z7Awq~lSNdl?Jy>vhY8}q44VzzDrkzj__dU84usU-%*F_`~3@-Cy^> z*FErc4}9GNU-!V*J@A=55WTxqq}5*mqgdNues^3el$`XVsy?FBcWt_=Pla0ewdt_9 z8{PmzySY@kcKe5^$y@Cf*awE`!1a|nS%SP zP+dV9FrZ*m2hrNsp!y_$ank=GRNol%fwkUEUIY4eU^VlMQP8^LQ48%!6rJK;;Her) z4Y2f;qrg`dHZ-ox!&mBp)#K74E(u38j`_k=e!vE?-{PLS)|4-2U(d%fY(iwxUp$es zAB>MH6RMuo>j=L2rbaypy!l5q*mN!dK&9pUrwWSUq|MYK@qM8nPkdi47>2Lg!0mKO zqc#0!DbOGzXXYBC&lGy}8n2{kxU0bf9q9Lo4TDjTi@s?Lrcj21@+U+hYu;}nqD&Hv ze0U_T>}xV1!%!S(21^<@kZo`*Va*FUmaUUgmw%|c~V6)J;!p|}Tv zdqRPKQPOsJKkmKhA3!4)(Oo+t)uPJ3hD^=<%vC8yHA=PV8@+d8)Ps38 zy}7p4dsRBiR>PwBX)N9nn3p!rAGE*?>52W84z1AdK!1%vzu0fts`=(%6VhR`bS}J_ zt%8L4QP$0&zw0R6>L`52=F9xKSzkR-osg2@8l;BXZ20dErXblp!4NJaHDF6ZtCY%QTz0|U&BfARL}5a$;qQ6K8w~SOC?Q&p>$C7x)-+%w7a)eS|7w9e z?c6(dYK7Zj#d<>26GrS1(d)8NFX_$C!%Pe%5;i28xWs-=5=KmCri zP>EIbk9^ah;;|&fHx2h0XDmsfh-M5_HqJ-oE)ox}TX78#y!{w^r=hoDr{Ku&W7F#n zCsz!`1~bn$?Nc516*~>oHLhy7KH9jW$dByn%Rl%$|%39vhHy-frvx z*l4JgDIPxt!Ooraht4vZ?wf-Ey%Ux#pl|zj>^(PCPekT^lnpsGa0FQ9@Qqx;7O0kn zN*d9^P8ILEF`;*Aip?ELbhViU=}k6EpznD#uU+$ zzRV>cfS=&-1adrVCh;4)86z_8Kzq!*H5?~%=Tj8kfPNr~gmGr}KDJVRNAeMKcrmKp zZ$SO>o|u;!4#L&vEUu>&*^b z&JjZ8V_(xZPR^h6PSUhaH zT)J@oKjMd#6WUIQKwf=S8pxT?`}d~drGJ@*mp*iN-wge7xeSRiQ3l=}gdGQQcUxJ} zO``$lK+9S_6@$C{`eyN1j4=}$mF811o6VsvKGPVP z-?E!{V?!nw6IY{HSB&%HCKx5mSVXQ#N6fIFW)o=sAX0bs4_E`R1tzesK8wO|a_IKg zM3Upqy;xj{$I!jLen)2HC8~WOel~r-K7gi1meM+=J|zXDdkk-}`mVx~iKP+mYnj*1 zPM1q$B8+f7n;6`O>?i{MrzY=n?-hw|!gX1wH?-OGBhmRqkrM8Z4sl~mabvDRfd8hL z=MCOLQVnAR);p~2PwM@6|7{?S8J46xn;7mF)KN&EwZO$-V?hqDz6F1XI1cX%1?l)| z`X#Ek_Pl|OS%hWnrWEf$8ls>L3VlQLgx#L}_3r)LS889uNlQhlDtZsRb?}OJMLC*6xmQBc6Xz zYDZ#C)o?e2!|WX>2AFt23^&G~#vvwIXXlXYvu|lQSM)Wl_Y1#7FFvd$CJiKP)BXm| zxq2OE)y+5E*a(z?g_sqwS^fWCmwDe+Ty}L8MkWyMg#wewOA4AHX~pZ%dg8k)MLz&61i!fZ3-U92@o zxv6zLM$?agjm;z1cRBVlE6>5Kjl3_6ZO}PZ{bR_d4XJuuKpx%Zn^a4~5>u2Fj&CI4 z*ZGZPn{T8K2@_zH0{X{%BMGFrpu{Ng?hQ}D;`j{#qIvcO=N%@`CLV^tfq;O;7FD*u9cfS4y=X?`jQBM#*W9sB3MJHzNPAy zh^6B+(p#(@G*bZ_SG@yyL4)@)Oe+=V)=@{4rYJ)&tFysgeT2FW5vv8iUk?5u7gl4% zB@QD8k&VMkqgti)PtZz*D}US}Q5UmbqCTh>$^LH#;sBC7Gxab$Hxq|V6CKyWjdc3E zvUj56dBXY%=Dk<?RD-Z)BOHh9- zLCs2A5(|(~a5Fmm9&xm8+E5$lI+Gv8g7Zb-|CK+5QQdtl$Mkd1Md$m?wMqLKMWW+Ah4MY4M~ z5lyEljVeU37Je#-g+}p^Qrj-o5I|32wlw^>V&*I1H4u-f(0m8ajZ5rg8Od#7jv+_6 z0(9c!i9|kX#zJ{Yo=la1EP>|JnnnD{)X8)5A}3Jb7szz})im7k2hs}2H$W(2`?;z5 z5FKY|I`6FtO~GEX;cYP+egM9p*KC*$VBd4oj`@%(>JS`@NMFH1@O2jdRu71M9PTN@ ziUn=UwP31VXaxd9=pnU*u-|Bz!WBc%!Va6>FvW`vh|r~KbG^-NTzYha6juxEp@eM( z4DcveNr=fT!!em9_MLc-F-=*ErxA;|^~AH8(su)Ve2r21E^WlKQYRE5-i5&f5lRgW zV~E#Y#G4rn!Fu>t%g0{Y6!(wln++u*5tk2i_@>~omzIhxtK}0f$l<#&=*z3i`yFUUO6@@7^KSOgPaGK4PWhph^kAr^<;t+vf0r+aZ>Lzl3Juaju zF2$NS_^>$mAL8H%%!!YJiJbJfkUb!cvQ8EABjs)pu*(s*;+6<(Enutp4j7@O5h(T8 zSMwDxLNAR#?-%LMAuM0Q@aD@s0IuX4aOhs8<|pu(uYrw;y!irq&hpKd6b`8AiF=>p zgfWgor~jxEk`RbKgpEY`jkl9OSK4Nt5qVeFO8fXnOX`ETHBnNLGR_~m+oAmafRH(= zzN>Ka?EZDa3`GMZ$<4T_kJAI1?I@`~Xv33*$t5eGLWFxAC7wghi;dCu2{RNUq!|iD znxQyTSnFsEonBJ^Hjf{|&P>FXraqGXmIze~Wkn;*PuP;1<&gu{GMkOY3V6w*i~<$0 z63qHH`V&@T8u`Z#r%8li!eqW{WNsUMVd zQ7cufo&qLQ+vah6x#QtBQK&bWsyChPV`1kFlAnQjy9x*DAjIiZy@8N5&8ou&5Y=v8 z#S2eqPVZBnkF8UL5@Aaqx8JWUfgScSrI+ zAl449rxibpz<4*?H(jhp*G6D%fJN7%$r0!aghtk*Z$zNK5$VNxbQ)lx)Yv-YMo@3| z;XgLrf(I80mNt0p-SWHJ^#AD|=}$BLzmk5zgNb(|gh1V{Z?lU9rWA*!TwJcV!I5Je zUx3@y+$np98O#3*0)fWRB<^ws;{>rHi!uc~+4R$D>{%c_!2K~}4-(jF4>@s)bgVMd zSj+U>xrElPWH#m;YObaqu-(#ahY2-bX_xWRV|&BZVcM{&wAg&t8ITw42C>9Wd5BH78hFcd z7{ZhlDHDR5(2A;ij^I56gmk$ddjk8PPxWSL{?T9VwdU1XVU5~qh=Yl9^~20Ba6BFM zkTw~&{8`Yp(@N@Gd8<$W-W9KKSR zZGnxK64U~g|EqBd34yNkj6kF{rCsjdiq=r{MvGS%qPgl#H-F_u2~Ry1h5y}aEcixV z+*nXT@a4ziO$u`S&OXN?4O$idp|NVz{jVyTh(8_aMRFHZ=i z8n5vd(@QA}++9gxHb>6J`nF0PJF`1U{={hG50A$3cSiGv)B!8{XXLLZ*=}jI=~X6D zL^g$Jg@l_EHv;#mdEy)q#*m!_dDofLz;??vK?k0}+FE@~&;d**(18tx1#-qSt#)66WW_hevQAB!V&y(N?(59sl*Wgrhy zyPgcIOw$@o^H1o%%QSpdiD|lerNKIWKpCVJ;9!0RexfgBK;T1VGxLp#lBv*)!M@fH z-IR)<5$L|f@Xou#rndz{wp#+os0vrfHhqG#C0}NXEj;>e`@jUVKIR(`J9R$;!lRR-K)~LXutT;;Wn^8zA41#*w$eF} z+6hy-Y=;lxfsTr)5bB)-gBke^!1^?iL;$MC>wzNbs*VV7#=#YLVfr-!D>N; z8ASJ8aqb^S+~RGMM)Q4-*f;WC#5SAW-zY(3n>(Lf8jou|;*9(pagIFPXFk}A+uUc# zaXFd0M_JGIollQA%RWb(Ieo_wIQAmchx){^r7Fh@IHs3m_JL!>&$~{R_R3h=Aty;Y z`DAI8NLpJet>gAiF60izr{6tEy*HOc>y6j6dd&^mfBEsZ86{CKkzAKUf6MN@G28C_ z(J;HWGVg}y6BN~ZALFdkQ)^a4b(*;GaOl;=sM@$4cJGx>U@jo_vzmTP(+}z)O%H)A zE1q&ODvnNS9TIiEarRSE>kcHfmx7{?}Y0>Cf|#9*uOhvGIF z_x+4dj&gdI8Gm^Q&v90vI6kJ3pl>uPL?HBVjO7Tz1{biKOxQkSVH9?S%tSYgITE%i z5xE%S%&3NO4Z#yoJ;ie#N-m{wptFPnwjG8E2Tn&7IBc}`&<_qA3F?h?iMHfT$?Jt| zcHse4&xE?n0|iy6T{y?44NPG3w_%s(epvuhm8Bct!^0B7Yxmt-ji@&LSM0-5UuhzG zs02-&uIecT_!h5(teiVWXv#tl76)RR*Qu@9JzNTg?NY2%c$qgcJc%0?2ei zN(h+_$ZYy%Lk|}2xzOFEcb}3Ck)%2oAm*na5p$T94FL1Ini(^PX+?lAzpI(C$V&KT z+r87~>god3J8gmTlDZJ@-c4Jm>Pr@&TU8}{2|E?vd%3Ma>VAafN%vJKG5g*k>A5_Q zAth!Aiq5`wx*1Z!klAL)^aBiqGy2}?S z*|n^LUdtLO+2X`q8DxdCmi15um7=Xa)&fwpww84O6zvrkDFH=`Ygs;^)4{j-SUSM7 z!B>{f^;*&HT2Zpsy0E^M<r(fh zTGPiIHSZ78Lj_bxFEa)sH(WX}28iz_BT3}G(KyQIIo|=LF!s^a7%H{t)uJ#g{mJ|A z+>c=P9$^eK`$7(*gROZW-V#4EycLc+2+u ziUU6NL-&zE^ZTvD7A~Q&IzZu{kiojU2dc{DekhGR!g4-D|-S^y)@302*)JYee|XX91WWGUwbn|Ctw5WLa%9epO!c<->jt0n7%d@eXKpWL{7 zo{r>`cd~rU{RZBP=2oKwr>WR#z?3jH4$uzFGyV$AK*5zND>_R&3zLSs&VV#On;`7Q z(joY}CVxFG%VWq>SAu3FR4pthPH;jHjpR`Q@+_VSJH?rB$;nV4(%rA3cp+dJ*Q&1M z=~3_opsE>)&AJRkBoT;BP4LoKczjx#^bL-Ph4o0wK&Cy0a~U&lcXxkRich_?Q59l1 zy<=Rf)u(;Q>)FGf~=+?L=U3b7@N&eal*<90cS2GkYBAaY{nRWC?+9HqO4${Hdo z*oMJ&bU&nM5YHryYmE*e7{SPi22`>*i0*Z#9=}+-S@+){OIg3THk);?iH0!^m?iWT z)9?w3xHJsVJIpj!MZ=f|{IQwlk|a-GooR!x~VH~;FyFzi4=u>EbuBaCJbcv zz8eegff56QO_30hPSz1AfCdADPe#I69*i=Xb-X_UmSr&@TE}^@Ffh02G;E(2JBK@> z4=@Jf1Y$Y$mR~|TT*lBdjM>+4RE6qA5h+)%dBwf?+j?Z5zK*2RYa8b9*@k&-c@)3+ zrsvswwsa!^@k$TsNu7(x+oWUSsqfNU^Vpz4eE75 zkwqN7mGF5=$bg8k5St`w_=WL7=ud1i4o~A7;roL3q1g_7lMSM59`i0HLikFH4Fz&B z_mR^T&ovkX_mQ&|j|~o+URo@+Z^nx-)QX)Q#4lL0(u_^@I9RySp>p{T zWK1^&dHQYB!JB?}pY4`(TtSAEXvT1i#TI9gWQvn;M&JTFnidUr3@h=Du}! zQG$A?mS=}auF^xPe|su30Z$CaC;L3vp4~^b`jy$Z&F39x(-qq-gKU9aslcZ*fHcC3 zONW3sypzrdma{FQBO&Ax-H+zKGm8}RL}*K&(C7PvK0@gK7ys$~gPU=1@hZM!aN-CW zl-L;KYaokzfonu>SsaK)F@%`d7xlNaIWu9i$(bgE_IMZ!Jir31eH3ucu*lh=SUmmmUCwh4?opa+3tt}~1Q8Yh@3;G7;|7$D%pRgmb+r?A*jV8fUi zgCSZ0Dm&+4YB+yNj>9Hr{VQ{r5$C+~V%E$SKih!_+wKx`E0c)}IIk4Q#9=IMqp?)X zs3Tktf4790GzY1mA|$0yppIbD1K&aOP6RF{@Jsv?_vS(R)6HYZ5~Kb+RKaJ3EZE9J z|1of*@2vY^7|vM9RSxHfT_7BJUh5dIwaYj%6Y;S`_kAiC8*g`a*ZfJ?>l(7%7 zi9W%r)*Fm(*9!M=$k^{YnhC;-S3tr!>n@T4_SYa_|JU`OU%(#aN%F{%fXb64$KquC z{9B;LWgPo7V?2rsU14({?V3LU!wvmD@WfT1xEMolnj4I@9^oG8AO*&%m-VmiOx)HF z=Ui-7i*o;);;RKr>U&}AV~nJ38ajGz9^?ci;#w)VVddPp##%q*W2>r0VZDAs8MDtA zQN;sqM*&nvj;!3b7&46f7O0xKG-b?sW3mvLEy{NvNmB0hV}#sCl3h9F%AFe!dQjQZ zYIw1S7H?kwAlQQgN?B_6FZ(3~S0H-1a>2#U2h$RM)(`K^iUG!yV#a$XV{Z>JSM83w zvUszzs<6@0vhdkC)tj3aNdV%gf3RbwDA0_ zWJg+pk@r0uh2kC+YJKMpWy~9B-wv9g7_)jffZ`l4&v@e;P9sP?IiKe!W1M18PR&L3 zF+g7e1eMXPqLPc{OMT_a;+G2^1H?Vqe;B(jrFH~*Jfe%FDbKyZ^Bp4;Y!=e3+0tdr`0v(nd<7vdcFG@4LoOHzSG2MJ%g^;&x=)hQvD$OjTxP2H*-Fn4-)qXn^YzOoCVO?Z6*ify!zPiE?ri zWqDbxqE<7v19OqZOeC500it#xS?)#=R+jakj02d62Q)3q{jCi96tK78-+;f(NH=yk z;HYE8K^8OfBh)B61vQ$*8fA|}_GND)8lulak=c{Cqni=$IN;6jAHlZ~Ujto|dM3i; z<|;pRu!vXIiF7EEtt~r-uR&~>iv+h86amzYKLlsbAZ*qyxKOw3kMXw;g}jSDwgK&% zc>u6Yh|RjALacu_tGOTUgK$soz%jN!*Am3Wsx_ma1mipTVStsTL%<2s_XvG8d%*4; zQ1-m<@a1gylmnH!E}WJC%wWIgJR~xj*-@@6+G%U{Uxwk$XG!RanOV9B%x*7i33T^E z(HNz&H;@YL%T8S@19N{VzoYMzIU$V0B!+@b48qO+NL~9^R=F&9o{R^0+2|{zoAI~d z?;luM0cNWkEm`-hO-s;}t6KShAy`VjD@dvG`HlR|WEum1E%22Arj%`@i}37#&62hG zsk8*=WF8Ha&;ZP}hzh;Aa^-r=PfQI-2;h*U0qW2s6^-Tm7rB3eK1@wVtrd3z!jLre z=o;cSvk3jYd^xVh;T1Z@+J(Y2Wh%^V<~AdWD<{6R&~j6M8&lQZ9Kdjp47`hYi^o<6 zF2V${E4CJU=T19p8nV9eiGw$Q%9!cd>kmb15S)yV9`$wTxwj$Mk%0|+@MD~diO^Vk z5Wea!k?_sE!#Ssip(PmpoNV#U{(#iuaU>#XX$O&ceSEocbnN{I1qS^q_~Nl}INDzz zTr>Y1p->mXrQB!7zyW-_1ecNx$a)kWJ6`oG%=tCr)V(e?ZmE~UW2#-u26qYCw+xWQ z7l2CYB1Nz?ACI^H39$jHih?L|O6_TrwbdCrkO_{j|w6OdmRue5iTS=2= z?L;INi1vXBniMj7@+Nc{k_cKD{21M}+%^v8ZMI@CZh3-OmHQMvrTHyb%)SkmUD5mq zo6oTP7H5_tKTC&O@%#(D9=r>j2hzjZGveekPDbt>A}SZd!Ek{+Z9v$i0w~j83Af^T z5rS+~FZIW$Q1F|`Co*57`E~wDogZ8=M2UhVkErFR}&vTZrPW*GQ_+Owm1{Z{1V!5kN8Y8Nrsq|4w^JQFbc zftB|Q&qBmOL$GbaFL)08=9D2s)3aXxBiO9tW#Aa6iwvvG{JH^`82m9@iYF+G86b;s zjz!)Vh`f1!i|llM)<;ZY$$FFVm(4`^K_`CLUQEm<0cBGKuki>x&hG%~h65m*VoiMr zPS@$|C%+_o!B;T!^1e%a-5CS);d*o(s^1T(jLTU4pCfi;e26TT)NdgSVv_@Gdw_H|TG6d0VrqGI%`bleWa+w%uG5{j043{D8*fF*;NX-4XK%nIxjtj;R6 zLSn*Ugc?kaA5k3{S^Z@pATG}UU=HJJ49jmXRjjzjOc@}E-JOkQbKASw0MY+wZ|ZWy z#cT-#R|0+leU7xukClapZTHuUppTId*_B6mz*;!^xOHLA8 zW@W#@ut;V9jNzw%%c_jhc;=n;+s6@Fn|l-=7_!ZJ7~dYFgobq*f5c`fc;ra0`io`< z-(`TvPt2#BCCEeK$3nQwT8MJ;+g-DI<&H{ZBA%hLkY9*GBIDmz-1mNuxH*jb!)S#f z@i}sq+;6dbMcd~52C(>>(z5}g2}gd;4kX5?!Pg1jM(NuIlsX&H`YP>bEbUL%p|tM9 zg5HBT#^xWY{sTr>!U$Utq3IYj67%qj$w?k7FR~$cm_>0za2Hll;5749JTKFuXIbHq zbJPMC7N=YJ;o_ut>{#tFN3Rg^Kan2BS3J*PcYwsh;E{<33h*4U$;e5BM-IZ9zeDW% zzA0kod;pIGw-CGxN4N=1J1g7AuM2c9@;B`~mU{#Vn~v@|*wnov=PkOsFT8jidPmx8 zkUM}$fP+v>#>Xx=f26*%gA6tyUX5Pw=4K$)-V8s zBaG68V^74v@f463grob(4ai~a4e+4+XWwUF>tBNFs_zC1zwWo!VxdNX8=7{{+Kzx# zsb?Z007sgRl{MmPGLgk6xdUOSd;T# zV6ouQ(fgAR{SCdpvOn+m>W*X3 zn-0#*`bYrBNah?3>A>F`D8CK0P2Gt=Fw^Y5)PKNj$+{4~!n+3!vem*9gvaEsV}3B& z!js7!IySRmUEuDS=Qr{$k`$a4nc_w0PsXKqZ)Nw%d6b7;VA8x~@YqaNAAY zWR;t`O>P^GKDg}|eMf(!K7`CAzm3GH_0O~6g5O>h;kOy90$mYJR%IVM_zU@k%g#gEV@@YCJTVYCFly&04Fg!KU7_QxXO z&-4!G?0NzbnnJU39^Hxpp)Nyp|*=R4Y;a|Zk!R|!Y6RZ@$ z-$V$&D{v|I4Ht}V&QS@L{Px)YMh6IfyAUp=?himVP^C8zC&F)IJsibYdYj<4M~D=X z-=2@ypi9|Nkl?q!$HXST-NceTA2U}=&a=WpTb)RBB|MUtsRI0K)DE4hf#1F!Y)yp6 z%F1Uv@PGJ7{&6r|a;3?-lwl_S$ov#fDta>bC!Fqy^@;rB?ng!X^F>rLTU!7y`Mtvo zGt*~?^e!-K99s5E@Mh!_8P8~bzmWO8C6Y3~npl2+lKCmM7a*H;JG;R@ju3g2pi^^x z%7{Jq$7zh8k-HopNvSV^%UnfoWEfeVi=ugLj^k(1vi>3ls}O#KZ72VRUj8<~P|rgz zi|)+BFP13$<_tp!*0Bc>+gOWpsNf=zq2OPT-zvc6h&&_m<5>{EZ4xZ_$B#rnjDLKZ zVV1045xnd+#1DG#WAcx;0m@+%{NpTm1phb{4uHr%mci*do&DsO6IpQElD~+rJ7csr z1x@~O{jX8|FwQH2uf*}wl7BpoFz0wIx}VZvLEnx?8JG)MvQ#`CiTa5WgVjhKM_(}L zEl3o+U1W;+c7s27lW>dvk^I>b#9({CU;Y|S$zMK4S4L_ZKI}fhUyemF0)@%4&1OhO z)|2?i&bS&bbC{hXmC0Z7M33t$)+Exk;5&jr7UhGSrWPS?uuZ@q+9SVv=wY)y*4zvP z_Tnesh=gmoAvpWuCmR7rzLX<;(vRCdv=9m8q*s%Xf6!M&4x+D4b z754$gZDQQoD1#n}FZs!j5F^S@?vx&rpVWmf!cX2KedH&%z}Z)6=K*fqz|w}IG|=z% z_*kfV4kKK`2#3JlehFFj*Ga$bfvmK;J2ma@J06GwJaApX-CHyWdC~{Bs!safH z4egY?E8lM^S3dp_2PgP03cxU_vU=YrW%d41lW|JBSaELzQ%C1z%Doj}S*yDx_z;+2 zm%}k!!1fr)-sK5Y&m7mEYxv~`0zT&-pXyZT8#@D(I zDBoG9T;GHv8w>@0F)UDdn1dsm$oh`Q0TUKqjUUCc6Rh!Q_BRF~;mXAmm8YRy!X0>Z z8xQnh*l@b?G=2^$V>=Ei=WU^ zS$zOkOLGPRptw~i9HE($FBEadY=9dlbY)q|@E=fa+7CaD%w`g{1#WhC8wPKuhQ50r z9-O?DjZPAgXX5aSfkObB`5Gd%p~Ws5t&g)BWh^HfjYVsH^$AicNMO zO;8*i8vc~4+W|?aQmeZdpjID&?@HzBmc>&=htL>ciCW#lF42U5O7w}Qj13%AmGj!8 zy<%;_s{tKbm8mV2{c-A5&F-zrKvnMyz*13yGaIbV^N>4ZSlW$yGWViKP8cQb7u>um zKMm;5`NEpZDd8L{zG3I6;GY>79Zxo7*$n^%D+phX_KLQ~TG_5#-Eoo@7JuOu_LD7? z&FZ58m<9D{w>giO9>=^D?#u9GxtPO?T9nmYqbi1((3(d84ZegQQ=YII&ICDH_{BgG zQ-8&9Yr9ONDpN3|clt%2vNO@I-+{>5I5(q@K8@7mHDn>k2}q5HdZIy5pXKOp=Z{1` z7!^5L{zPMtXW2=(@0;~E2s4dE{rl)7vHwB*7Mxv)KIO>PG5XbgMVIv# z!{ZM-3wssxZKllWJ7v!@#xQ0my^kuDFGu^gDA&J^nhap9raoiE(VIwrn2FwofYn&u zSE2~MV?03#1pYkE$hY(rxoQ9RTbepP{tyDr7W{D`9ZlqvD9QyCYw6C|S~@RoEgb-G z(~-Ev)Q+jp)Q!cIas?vw+(A`+xrb^7)Xt?=I)w zd+xdSoOAEF=Q>^`O?#jSRw`ffuPNKyfv$U!?cNE}Dki{9P%tYyv+TTk29!B5-Q!B5-Qy}qG+ z&t;3+cV67it}G0dzcGfI#7{5mjh~*`zVi<~7%Fja)b`!SuWsLTY?u0~Y2PV4^+KDc zw(l-H{u9~C+yzesF(cmOLq;gZQ(q=R^Pd5uBhMBWeP7nTrZCLTNWq__;F_yK#J$nJ z=F%|R-CcxbY?hLFqpN-0rK6seOyNscx38N#>h}`<#fwl+>|Glm`@lJsMUi(@1(^Ey(@z*VD-#x`01llD}4el^(}ftaP(SXJ&po z%F!}tj|#)kW~eD`^VZ>Z?3@N-LqFwD!upiJTCHrtPN|9isc2K{akREi0h7c($=@3K zg9SVRzVOq_6<&8+{L}|OwSdeV)T0hE+ANeN2n&6T-Dh)3W-m*zyA!a!KCI-tvBP`ttv3`X2`Vhk>t; zfr^&ObngM;Zz@-hv^0#)N%MUiy`QZ=!2P_1_|-8STRLptL(%&kj%CxigDqFJ&PD=# zAL%esv^7$I{}izi%F`bh@mn(B)N|y5i(ziuTZ|NSlP=d~-i;KEIgx7~Mu+}DfnUMt z^-grOcj7VObn$mo%#97X<5qAL&50B}lO}#idOQ!? z7pR8gFe>B`6z7grBbT~Hwz%?m3doU5WVG9sFPg~5VY$QY9XMZnh?*aa-W=KP*f=de zEyH`ve0+qbncH8>pn7lie0J#4RvhD07hM+c{1eZ;>ltPiyhGjgG$Y(FiS{M+mpf81 z|3MXBb>)q{Z1Vn%lVB^~`o2;?slQ;_Vev_wUM{hIg*Ibn{kJer}pb zfA0X1726kQo}n9SDZgD@J(YP;}+0)mGcVmOLcuovDlwPuT5P!N>G>@J5FN%OaBLDs??Pw+b#p3JRoe<FYgEyci$gTs(kf@-45UuIWABVDqEHWB$G8;N~cNl4^|8-)Y}HRTt-+ z#%qzHoZYOi*O@GdgCa$1cB!Rs&Z*o@-X5Ny8!Pn8PSc+qB^B=pc)TyAuzy8FtZRy0 z#tI%F5;!ds1;~U*(L)xHF$#!W(fSxW31;YIdxq8|%+M*gdt-(&GjCxLnqDI_^lIkl zm1>p-^G`DesLH!#mAP6s8cUuBFLlOpkJS*a+u>b_hR8*{D_J}x-|2$-O4jQY5-7*? zqK&)VJcLR^J#x!CQuOXl)!N~aq78&t{U2rxt=KM5Tw>Kx%LY%RL%(ioc=LagXi{Lu zX@@RFuUj9@Zgnc{2#s0f#ouD&>f}5IdsMBX*m`QXH#^ed@A#axeE#80;qw`wL*)^{ z9cJrphq1IZba>|KTe_}y!O7)uOJ{KIt?(ss>$+<4xoShFxA@ zY4IHuoDeZLO@y;{6XG%Jvc1k7-Okx9x6#VrCE4Z~WDVzI>Zf?CQ#((2h`>H}znpoe z)b9$8A7FgU^+KAF8(9$8VjcYLURT*k7@H*2}W1VnpGmS&f2V>F~onJagM zQfe#fU^n1a((ZBicV&2o^Ci!?$X6yy!R%e%k}n?HFD&9tueGTjSzM$OVE&R~c`1Ep&n^h0%pJ zI%AzDy%xIhw~%f+GgrlM9jBAT7A494aHYZNzi{!KiJCJyFQ;5aa<0(+#0B*|km z{!JO)X?*!|J~HFDR;tA5f=Q#Mz5X`|3Qc36~&h2+gld}q{nf{ySH z*uSnC<~_Vtdoib8UR^B0frH!Ml2PvpAWmfSc<(XkzKzm?1v0==m(*d^MI|`b09LWN z8XV!B`G*1+i|y}40YfMm0B%u$@Tbgo#YRV*#SWrhR^r}O=htrhw1SGa5An{mxbYu|hR$K&mGsLiJ)r_$K z4tc?z|GvV!ndj)&om+^GD2+BA?N~+I?2c=VehS5UeW!Tx=rLa5YyI~P9Wdiab3O95 z_0*kt+v&<{vGI6G0{~d2CSHBjm2K2BG+xh?cs;5+{m}%@kpFCt^m&g8$qR*UiZyIQ z?+xqpZN3)2X1zymoImLZx_O z2wYieo?mH6=>tisx~kZFBnevsS8g>&BTR`NX1xYjTk6WJ-Rfc~3G)nQZK-oXVD8+x zaO)onk6T!=v}~#HyM?Y`{vc=TE(ZteNDQvbPR9Ap&j+NjcGm`nkhGg5kriCLtbWVF z(J({t!S;PD{F_=_fx4}-qUmyl6r>E-UK}J3(ePdcV+C0R3T0}!WzN2*7ABl1z&q8- z6uh|0{0k?NM%`BR9h&Np6>~^%PQuz(0`;jyO35Gg3hR<3cAn%)kTOVxFOflo!q5fS1v5rwf5Cx| zz`qXoQop-usCOi^a1E98HL9hIssO)GrWx~{2`+W0xvW-|X!Bh*@Bub(;HCpt>X5Z0 zH@4C%qOn(cw;%W$7fb~>mGlH0I)Vcb8QKMtrGBX^R78~jzMO-#2f|iJ-bc}A;l6b4 zBTT?BZieRmhyd@I)W|$OL~A^ZRgpHR^-OClTWkECn&G3g#v4>%xYn4b0!R^mQgfcbdC`CzC#gCAE1JwI;2kf2&QNpRO$Ele zIsRR={&>R8&;9nd$L9gu+`I|r z9u{eq(g>S0Pv42gDtvrDNb@$j(=TZbpavn$4$esxe48nD?HCYe4IW(AMM!2%}!0%)%lQ^?_ zw@udis$tyxB{|w+t?@0s+_G(HNmFirx+SK)9cm>-7&P*)1u%gH{|NH3v7j~nC<)-a zJ^@Y@FqTNS=E2zdds$LxPoJevCdD{6%fG8yyZKbFOFGu$c48Gol{weZDDe0i`)M{vS`a7Lt4Rue4wES=^7 zGP$Z-?%8KBA4lhA z+b1ysSUhk4=jOioADB}75BN#^k4pOEe~S5qE@$Ex2l#i54*fErKh|Q<+gejWZPuds z2|bhgV2RrU7EA0?iV}XSIC&@xA)DhrRdQkA%AMxmBQ}dLC{C&-73+o%afgkOgFTp< zvehIG2R#Ola|G*lvVm(l5s<|R*%{)&>{S2Gi9U{X2I!eBdV01VI4qRM)L@eBv>bJn zwd&~u^k7yUqF96+q0R6S<%R5uxNEXq1^?wO*u*V?|AqgDf&XFP{}2Ny=No$9j$-Xa z*@fRyXJGr%THmx?Yx)5zI#NNMafqA>&$zkyMy#3C4svvFl|8$9MA~3}VSQ$2J)6n! zo0f8(Hpq1Q+cMmdTux=1y6zj`_E)9PY;hZd>w;tV)&&j;AH*gOzWj6WvWN?!YnP11?8it|^pF(V_AjD^IUox6oakK79kv-oEV$UY0J; z+MaU>yU{CIc|cjrQ)2gEb|Da_YY%g3k1j?5uFu3E!EFSaDJM_xNyfr@ zXC~XHwS(m&pTI#9$RRLP0$BtOA&|-M@LFERE)wy))KdQO!)e|RqYn?2@A8zCsnwfd z#Vy8G@x?1|vFq2Z(lhZ@I=)b^UM=s=H??~2N%-V7voUE|kQ#-U>bPPt*Mywwiw%%K22;2A%Wv8cra!#+Sh0lFa4H!Or2a(&m}rur$MV zeyS}=d;4vw@V6C)Gdb2&1?Q;MK%s@_ag5ibpF`y24zHpdk|Ii&Pkcf*ky%95BvKNs zgn4J+g>n@qeUYWe9pS_3sHik@9Dde;2!e;;tj; zbcS~E+k7omgv8&0bKd%9(P%^O@*$Zy6H52ygk&$CG}_q`T0)qr=Gs-gjaiHw98lGO zX4zN?{hACMC-S%9-dtzdLVw3zXq7y;HpVPu^f-n!^hc7%TVcVNAnY$hDO`P@fbL(C zQSYo?rZqP4AyQC zZx%ECF>5=BfNTfRNoVy^UnM=7Q6U5+hXiq&3Oz?r>Fxbb5s>~VRX4GZ1Hp>#AE7y< zOCPgkC>-Hqr5Cb07Ir4Y4v|<)Ud zyA*a?hD6!goEh*X;8bH6c6S*^?v+@ES#N&yVi;E5tJw+sLrocGi+X&}39*Yy?WD-# zB=Vd3w;y!yb7jrg2OZ=?2iB?C*;Bqc9o+M;e&|59{!;1S$v)_ybkNtKgH46|q=Wn< zI+%XUe})dKzUYMxN+j}|`e)GrqR>rPI804=pAb7wdp!^G8k^vp)~hmf_bml}S{u>~R&Hn!%HT{76bc5I!HDi{@AVf3WN zk_P5)o$+Dab)S36up0bWH@Vt|!t=ko$JcyFZwi{p2zBLY4FwlfBMU~jP75@3tD z=wB?DQ~QOvg*C%!Z>KsWOlfa2%zPW>%OZC43-$*wuuWeAY&k>KFW9qUV4eF0n<1_J zyBa(-{zqG*wbmVYsD_HvfT>68O!L?%621^Mz~IG2e*7yTh{f@-Lx<~51*FFSNyvO6 z255-|NTu%!$ix^B37MD0fIMaaQR%$`8Dcbv`sEDVZ~gq>3IQdg^s=zQa3sS&ozSn)*i%+z z!W6%3We3J8dmSYtK2!Et*{ZKl*{}1WJ-chaD$9@dOqTgC+q0@zWn!hY@1DgfQ}Xwh z9JA#Eqdi+pQ}cpE1pl^69Yr@57RFv4pu&pCRGkHa16kOAu<5!O1* zAADx9XnC;2j`H`6n%Xn!%AQfxV`aXH@~WAb>TIwtF7Z6JJTe!kTU9&n3$}524lH7A{Ae#8*wm#p%FAs2-J`t4 z^*k9TT-vBxMR|FkEJMe*pOR86d<|D7w8rm~TP;cR+Uxz*BYgv&$5^2)gK({P0DsS8 zON?(|^WM=abp#!(W7m^+&14s{POftZitbq>hs08kw^-FEHH!dTk7g>j69%g;mfc$( zK21I|o!Aw*0w>fqMtp;b@D-RRe<yEu* zxkPR|P30nmeTm}k#D{Nte{-qli2r9|;&cN#O68V9ahln-swdr~-eGtmIge#m&aS^) z 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 literal 2143744 zcmeFad05Zg_y7BjNT!e}LKH%oGKExzBy%#0h|D1wk}_n@lzEm+88XjfWXhO`%$X(g znE5=O?$77@y|44T&iU({|K6_a-tE2DTF;@o#;|U;dy=5eGyc zbt(KWpLc)%e$w^-)Uq~B42IrQavD~@@6+YKJnsx;47sx8H5h6YH5g)Z{Hng*hs_Wzuey~o7^?Eu zn!o@0=Vma(S04Hg<1|aWN?Q#D`P<_E;B%|o{~x|m`2kQ{3h>vDzyJE@CcS+F`u84g zFg(cxAtT3j^G{pD`TMVbZnCdxRsVp#219Yo!aD{7 zeQua&qr(6Ea}!?B@F0I`{`Ofu_%tvk*^vD2KexYpeFhDIad0K-=}UtHe`nZ`{O>o~6>3)qY4Cz-=NotuFHl#b&&t*uj|AJ(>M}9;4ylw>y z>CH}1yq-IYA${@6e1`PP$1M%%)ee!%w+4Xn@dXX(yY`b*xCBc54Iuy6N73UV#kf<{>*IRC4NUxkgZcTkuI#i+~UY}mW_cqo(eV97ui1@k+|IumYTot>CmPWmp`KA ziyDI$W&(5ca|nwcQs@1EB>0IiA8qMLBw1yQ1@MZ zwCONnY4;GTvWen{#Uu-Zsp~g{WMeG==IsGKT^6L;QD-@nx``dhRTD~V0kkbXN!_y~ zk_k6ykwbRc(Yz4UhU=i7I7x0reQcgDo96{k+&O|=>MYfXrPvDKvnla;gU7db!1}^R zvBmivpyO?+JG&9&4*Rj?VVbES{jMI8#n&+W!)$tM@NS@{y@ud_pSo~&sGl$4uupd> zo(%(e##Qt-nF{ir;S@XW!GaCFkaeF(V+Qqv&viVx^La>o+kiJI84253u;fjEdHrti zTI564az9peF@gHc1?#JhrMR&sERRg7i)wi}Gdk>*#8xBjW z9a!%i1mCHhnEPNA0GC6-yTyE*K7I>zU0Y$*zOOJl?xGzO)$(`dJ zl)hV!xW_FdhKcWq_=@)?8B-AWgOgBnE){B|4>q5g53M01J5DsrI%pjIqOF^?XSf;}i6-+}U&ra%quMsZMf zWH+iCKWMgi8i)m{Q-PZLjkiHco5ag?ep>DkhfSD!8kLqEw)n}OVRf8qM1JGUD5lcKk19KcAX+4m-!c|dJa{};n z8p*z&)HQ5NF0nPq5p{PFd9qe3lCn7{?gk+@w`b};(2WTloyo!4`JE7mE`>g z>S7lGuq7Ho-~fEOX&PeP&Hy#4GAv*EQYSN$!H?jhxGo zaMU;`D$r66)ODx;%j6(H9Xdmp|AxBD(IowysVjPi0b=Qk-jNfq?`i^yo~*~kcLHEO zzZlu8*&$TjLaumghS`_NFy}9dO6%XSjEZJ7)mjP5%3XlwvxZRqG)0ejP!l^MHt8^R zP94zZokFiVF2#Q}g6Ydrp=hi8jbhwha!WE`iEK~t(J=sy>N%P#hjsOX+OQ!Kdxw*F z##1-vC5E5uPwrLS zh{cA(=Xwyn^Io(qMUU>2IBd>XgY|`LkrWD~c*F+3+|>JMc1JAjd>epwW+YoyfwyfK ze4FwjyC<1e`fo#Gb3W=$FM-u0ghZ zHkh|HCTVg7(|lZjuTmZOE_z`5FQS;V45;Bppa$##Dyl4EJ2c&xWv3WZm}LDK3_p^N zrR@%rt0=cS`@t7)hgGdL7nf0QrO2JV6Y;ZcPm)D>scRNSUBO;hP%0DV0u50<>k}$X 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�{A# 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

1$B%FSAE%T|+s6z11a3g#3yxND-~))cr)D3f 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 BK+zq+2Ds%R@kcs7A2&OQPv9G70Jz+ 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%0Ag3Bydx=!Kn|lhBH1I@ZA> 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 RDUU$5xz*O0iw=ytl|(Y&-lE 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 From ecd88c6dc5cc7e07ed0075878da9fb81e3be9d97 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 23 Jan 2018 17:45:13 +0100 Subject: [PATCH 39/91] Start with D3D11 sokol-migration --- code/Modules/Gfx/private/d3d11DisplayMgr.cc | 38 ++++++++++--------- code/Modules/Gfx/private/d3d11DisplayMgr.h | 18 +++++++-- code/Modules/Gfx/private/sokolGfxBackend.cc | 12 +++--- code/Modules/Gfx/private/winDisplayMgr.cc | 12 +++--- code/Modules/Gfx/private/winDisplayMgr.h | 2 +- code/Modules/Input/private/win/winInputMgr.cc | 2 +- 6 files changed, 50 insertions(+), 34 deletions(-) diff --git a/code/Modules/Gfx/private/d3d11DisplayMgr.cc b/code/Modules/Gfx/private/d3d11DisplayMgr.cc index c6c08ed48..1c4104ef2 100644 --- a/code/Modules/Gfx/private/d3d11DisplayMgr.cc +++ b/code/Modules/Gfx/private/d3d11DisplayMgr.cc @@ -3,32 +3,38 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "d3d11DisplayMgr.h" -#include "d3d11Types.h" -#include "Gfx/private/renderer.h" - #ifndef UNICODE #define UNICODE #endif -#include "d3d11_impl.h" +#include namespace Oryol { namespace _priv { static DXGI_SWAP_CHAIN_DESC dxgiSwapChainDesc; +d3d11DisplayMgr* d3d11DisplayMgr::ptr = nullptr; + +//------------------------------------------------------------------------------ +d3d11DisplayMgr::d3d11DisplayMgr() { + o_assert(!ptr); + ptr = this; +} //------------------------------------------------------------------------------ d3d11DisplayMgr::~d3d11DisplayMgr() { if (this->IsDisplayValid()) { this->DiscardDisplay(); } + o_assert(ptr); + ptr = nullptr; } //------------------------------------------------------------------------------ void -d3d11DisplayMgr::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs) { +d3d11DisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); Memory::Clear(&dxgiSwapChainDesc, sizeof(dxgiSwapChainDesc)); - winDisplayMgr::SetupDisplay(setup, ptrs, " (D3D11)"); + winDisplayMgr::SetupDisplay(desc, " (D3D11)"); this->createDeviceAndSwapChain(); const DisplayAttrs& attrs = this->displayAttrs; this->createDefaultRenderTarget(attrs.FramebufferWidth, attrs.FramebufferHeight); @@ -47,7 +53,7 @@ d3d11DisplayMgr::DiscardDisplay() { void d3d11DisplayMgr::Present() { o_assert_dbg(this->dxgiSwapChain); - this->dxgiSwapChain->Present(this->gfxSetup.SwapInterval, 0); + this->dxgiSwapChain->Present(this->gfxDesc.SwapInterval, 0); } //------------------------------------------------------------------------------ @@ -66,15 +72,15 @@ d3d11DisplayMgr::createDeviceAndSwapChain() { Memory::Clear(&dxgiSwapChainDesc, sizeof(dxgiSwapChainDesc)); dxgiSwapChainDesc.BufferDesc.Width = this->displayAttrs.FramebufferWidth; dxgiSwapChainDesc.BufferDesc.Height = this->displayAttrs.FramebufferHeight; - dxgiSwapChainDesc.BufferDesc.Format = d3d11Types::asSwapChainFormat(this->gfxSetup.ColorFormat); + dxgiSwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; dxgiSwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; dxgiSwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; dxgiSwapChainDesc.OutputWindow = this->hwnd; - dxgiSwapChainDesc.Windowed = this->gfxSetup.Windowed; + dxgiSwapChainDesc.Windowed = this->gfxDesc.Windowed; dxgiSwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; dxgiSwapChainDesc.BufferCount = 1; - dxgiSwapChainDesc.SampleDesc.Count = this->gfxSetup.SampleCount; - dxgiSwapChainDesc.SampleDesc.Quality = this->gfxSetup.SampleCount > 1 ? D3D11_STANDARD_MULTISAMPLE_PATTERN : 0; + dxgiSwapChainDesc.SampleDesc.Count = this->gfxDesc.SampleCount; + dxgiSwapChainDesc.SampleDesc.Quality = this->gfxDesc.SampleCount > 1 ? D3D11_STANDARD_MULTISAMPLE_PATTERN : 0; dxgiSwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; dxgiSwapChainDesc.Flags = 0; @@ -135,14 +141,13 @@ d3d11DisplayMgr::createDefaultRenderTarget(int width, int height) { o_assert_dbg(this->d3d11RenderTargetView); // setup depth/stencil buffer (if required) - if (PixelFormat::None != this->gfxSetup.DepthFormat) { - + if (PixelFormat::None != this->gfxDesc.DepthFormat) { D3D11_TEXTURE2D_DESC depthStencilDesc = { }; depthStencilDesc.Width = width; depthStencilDesc.Height = height; depthStencilDesc.MipLevels = 1; depthStencilDesc.ArraySize = 1; - depthStencilDesc.Format = d3d11Types::asRenderTargetFormat(this->gfxSetup.DepthFormat); + depthStencilDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; depthStencilDesc.SampleDesc = dxgiSwapChainDesc.SampleDesc; depthStencilDesc.Usage = D3D11_USAGE_DEFAULT; depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; @@ -154,7 +159,7 @@ d3d11DisplayMgr::createDefaultRenderTarget(int width, int height) { D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc = { }; dsvDesc.Format = depthStencilDesc.Format; - if (this->gfxSetup.SampleCount > 1) { + if (this->gfxDesc.SampleCount > 1) { dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS; } else { @@ -198,9 +203,8 @@ d3d11DisplayMgr::onWindowDidResize() { const int newWidth = this->displayAttrs.FramebufferWidth; const int newHeight = this->displayAttrs.FramebufferHeight; - this->pointers.renderer->resetStateCache(); this->destroyDefaultRenderTarget(); - DXGI_FORMAT d3d11Fmt = d3d11Types::asSwapChainFormat(this->gfxSetup.ColorFormat); + DXGI_FORMAT d3d11Fmt = DXGI_FORMAT_R8G8B8A8_UNORM; HRESULT hr = this->dxgiSwapChain->ResizeBuffers(1, newWidth, newHeight, d3d11Fmt, 0); o_assert(SUCCEEDED(hr)); this->createDefaultRenderTarget(newWidth, newHeight); diff --git a/code/Modules/Gfx/private/d3d11DisplayMgr.h b/code/Modules/Gfx/private/d3d11DisplayMgr.h index e149f0b55..b3772727e 100644 --- a/code/Modules/Gfx/private/d3d11DisplayMgr.h +++ b/code/Modules/Gfx/private/d3d11DisplayMgr.h @@ -5,8 +5,7 @@ @ingroup _priv @brief display manager implementation for D3D11 */ -#include "Gfx/private/win/winDisplayMgr.h" -#include "Gfx/private/d3d11/d3d11_decl.h" +#include "Gfx/private/winDisplayMgr.h" // d3d11 forward declarations struct IDXGISwapChain; @@ -21,11 +20,15 @@ namespace _priv { class d3d11DisplayMgr : public winDisplayMgr { public: + /// constructor + d3d11DisplayMgr(); /// destructor ~d3d11DisplayMgr(); + /// static singleton ptr + static d3d11DisplayMgr* ptr; /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs); + void SetupDisplay(const GfxDesc& desc); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// present the current rendered frame @@ -46,6 +49,15 @@ class d3d11DisplayMgr : public winDisplayMgr { /// pointer to default default depth/stencil view ID3D11DepthStencilView* d3d11DepthStencilView = nullptr; + /// static callback function to get current render-target-view as void* + static const void* d3d11GetRenderTargetView() { + return d3d11DisplayMgr::ptr->d3d11RenderTargetView; + } + /// static callback function to get current depth-stencil view as void* + static const void* d3d11GetDepthStencilView() { + return d3d11DisplayMgr::ptr->d3d11DepthStencilView; + } + /// create swap chain and d3d device void createDeviceAndSwapChain(); /// destroy the d3d device and swap chain diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index b7ee1bed5..e60e9fe25 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -427,7 +427,7 @@ static void convertBufferDesc(const BufferDesc& src, sg_buffer_desc& dst, const dst.mtl_buffers[i] = (const void*) src.NativeBuffers[i]; } #elif ORYOL_D3D11 - dst.d3d11_buffer = (const void*) src.NativeBuffers[0] + dst.d3d11_buffer = (const void*) src.NativeBuffers[0]; #endif } @@ -467,7 +467,7 @@ static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst, const dst.mtl_textures[i] = (const void*) src.NativeTextures[i]; } #elif ORYOL_D3D11 - dst.d3d11_buffer = (const void*) src.NativeTextures[0] + dst.d3d11_texture = (const void*) src.NativeTextures[0]; #endif } @@ -496,10 +496,10 @@ sokolGfxBackend::Setup(const GfxDesc& desc) { sgDesc.mtl_renderpass_descriptor_cb = mtlDisplayMgr::mtlRenderPassDescriptor; sgDesc.mtl_drawable_cb = mtlDisplayMgr::mtlDrawable; #elif ORYOL_D3D11 - sgDesc.d3d11_device = XXX; // FIXME - sgDesc.d3d11_device_context = XXX; // FIXME - sgDesc.d3d11_render_target_view_cb = XXX; // FIXME - sgDesc.d3d11_depth_stencil_view_cb = XXX; // FIXME + sgDesc.d3d11_device = this->displayManager.d3d11Device; + sgDesc.d3d11_device_context = this->displayManager.d3d11DeviceContext; + sgDesc.d3d11_render_target_view_cb = d3d11DisplayMgr::d3d11GetRenderTargetView; + sgDesc.d3d11_depth_stencil_view_cb = d3d11DisplayMgr::d3d11GetDepthStencilView; #endif sg_setup(&sgDesc); diff --git a/code/Modules/Gfx/private/winDisplayMgr.cc b/code/Modules/Gfx/private/winDisplayMgr.cc index bd40ba67a..e986a7b52 100644 --- a/code/Modules/Gfx/private/winDisplayMgr.cc +++ b/code/Modules/Gfx/private/winDisplayMgr.cc @@ -68,12 +68,12 @@ winDisplayMgr::~winDisplayMgr() { //------------------------------------------------------------------------------ void -winDisplayMgr::SetupDisplay(const GfxSetup& setup, const gfxPointers& ptrs, const char* windowTitlePostfix) { +winDisplayMgr::SetupDisplay(const GfxDesc& desc, const char* windowTitlePostfix) { o_assert(!this->IsDisplayValid()); - displayMgrBase::SetupDisplay(setup, ptrs); + displayMgrBase::SetupDisplay(desc); - this->initDPI(setup.HighDPI); + this->initDPI(desc.HighDPI); this->registerWindowClass(); this->createWindow(windowTitlePostfix); @@ -185,7 +185,7 @@ winDisplayMgr::createWindow(const char* titlePostFix) { // setup window style flags this->dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN; this->dwExStyle = WS_EX_APPWINDOW; - if (this->gfxSetup.Windowed) { + if (this->gfxDesc.Windowed) { this->dwStyle |= WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SIZEBOX; this->dwExStyle |= WS_EX_WINDOWEDGE; } @@ -194,9 +194,9 @@ winDisplayMgr::createWindow(const char* titlePostFix) { } int width, height; - this->computeWindowSize(this->gfxSetup.Width, this->gfxSetup.Height, width, height); + this->computeWindowSize(this->gfxDesc.Width, this->gfxDesc.Height, width, height); - StringBuilder strBuilder(this->gfxSetup.Title); + StringBuilder strBuilder(this->gfxDesc.Title); strBuilder.Append(titlePostFix); WideString title = StringConverter::UTF8ToWide(strBuilder.AsCStr()); diff --git a/code/Modules/Gfx/private/winDisplayMgr.h b/code/Modules/Gfx/private/winDisplayMgr.h index 57e913836..1bdaffd1c 100644 --- a/code/Modules/Gfx/private/winDisplayMgr.h +++ b/code/Modules/Gfx/private/winDisplayMgr.h @@ -193,7 +193,7 @@ class winDisplayMgr : public displayMgrBase { ~winDisplayMgr(); /// setup the display system, must happen before rendering - void SetupDisplay(const GfxSetup& gfxSetup, const gfxPointers& ptrs, const char* windowTitlePostfix); + void SetupDisplay(const GfxDesc& desc, const char* windowTitlePostfix); /// discard the display, rendering cannot happen after void DiscardDisplay(); /// process window system events (call near start of frame) diff --git a/code/Modules/Input/private/win/winInputMgr.cc b/code/Modules/Input/private/win/winInputMgr.cc index 8fc776375..7eae1ff41 100644 --- a/code/Modules/Input/private/win/winInputMgr.cc +++ b/code/Modules/Input/private/win/winInputMgr.cc @@ -5,7 +5,7 @@ #include "winInputMgr.h" #include "Core/Core.h" #include "Core/RunLoop.h" -#include "Gfx/private/win/winDisplayMgr.h" +#include "Gfx/private/winDisplayMgr.h" namespace Oryol { namespace _priv { From 4372bc1acaffb16196bd1dfc48650f1603a83f8f Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 24 Jan 2018 18:01:59 +0100 Subject: [PATCH 40/91] D3D11: vertex layout with semantic name and index --- code/Modules/Gfx/private/sokolGfxBackend.cc | 22 +++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index e60e9fe25..9fb4abcb6 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -342,15 +342,21 @@ static void convertVertexLayouts(const PipelineDesc& src, sg_pipeline_desc& dst, dstLayout.stride = srcLayout.ByteSize(); dstLayout.step_func = convertStepFunc(srcLayout.StepFunction); dstLayout.step_rate = srcLayout.StepRate; - for (int compIndex = 0; compIndex < srcLayout.NumComponents(); compIndex++) { - const auto& srcComp = srcLayout.ComponentAt(compIndex); - auto& dstComp = dstLayout.attrs[compIndex]; - if (srcComp.Name.IsValid()) { - dstComp.name = srcComp.Name.AsCStr(); + int dstCompIndex = 0; + for (int srcCompIndex = 0; srcCompIndex < srcLayout.NumComponents(); srcCompIndex++) { + const auto& srcComp = srcLayout.ComponentAt(srcCompIndex); + int inputAttrSlot = vsInput.ComponentIndexByName(srcComp.Name); + if (InvalidIndex != inputAttrSlot) { + auto& dstComp = dstLayout.attrs[dstCompIndex++]; + if (srcComp.Name.IsValid()) { + dstComp.name = srcComp.Name.AsCStr(); + } + // FIXME: this is hardcoded for SPIRVCross, should be more flexible + dstComp.sem_name = "TEXCOORD"; + dstComp.sem_index = inputAttrSlot; + dstComp.offset = srcComp.Offset; + dstComp.format = convertVertexFormat(srcComp.Format); } - // FIXME: sem_name, sem_index (D3D11!) - dstComp.offset = srcComp.Offset; - dstComp.format = convertVertexFormat(srcComp.Format); } } } From 7fe23d586c53393bd36816c8a7ba540701e84c42 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 27 Jan 2018 16:27:31 +0100 Subject: [PATCH 41/91] Fix for new vertex layout definition in sokol_gfx, all GL and Metal samples running --- code/Modules/Gfx/private/sokolGfxBackend.cc | 43 +++++++++++---------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokolGfxBackend.cc index 9fb4abcb6..843665b99 100644 --- a/code/Modules/Gfx/private/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokolGfxBackend.cc @@ -337,26 +337,26 @@ static void convertVertexLayouts(const PipelineDesc& src, sg_pipeline_desc& dst, o_assert_dbg(GfxConfig::MaxNumVertexBuffers <= SG_MAX_SHADERSTAGE_BUFFERS); for (int layoutIndex = 0; layoutIndex < GfxConfig::MaxNumVertexBuffers; layoutIndex++) { const auto& srcLayout = src.Layouts[layoutIndex]; - auto& dstLayout = dst.vertex_layouts[layoutIndex]; - if (!srcLayout.Empty()) { - dstLayout.stride = srcLayout.ByteSize(); - dstLayout.step_func = convertStepFunc(srcLayout.StepFunction); - dstLayout.step_rate = srcLayout.StepRate; - int dstCompIndex = 0; - for (int srcCompIndex = 0; srcCompIndex < srcLayout.NumComponents(); srcCompIndex++) { - const auto& srcComp = srcLayout.ComponentAt(srcCompIndex); - int inputAttrSlot = vsInput.ComponentIndexByName(srcComp.Name); - if (InvalidIndex != inputAttrSlot) { - auto& dstComp = dstLayout.attrs[dstCompIndex++]; - if (srcComp.Name.IsValid()) { - dstComp.name = srcComp.Name.AsCStr(); - } - // FIXME: this is hardcoded for SPIRVCross, should be more flexible - dstComp.sem_name = "TEXCOORD"; - dstComp.sem_index = inputAttrSlot; - dstComp.offset = srcComp.Offset; - dstComp.format = convertVertexFormat(srcComp.Format); - } + if (srcLayout.Empty()) { + break; + } + auto& dstLayout = dst.layout.buffers[layoutIndex]; + dstLayout.stride = srcLayout.ByteSize(); + dstLayout.step_func = convertStepFunc(srcLayout.StepFunction); + dstLayout.step_rate = srcLayout.StepRate; + for (int compIndex = 0; compIndex < srcLayout.NumComponents(); compIndex++) { + const auto& srcComp = srcLayout.ComponentAt(compIndex); + o_assert_dbg(srcComp.Name.IsValid()); + int attrSlot = vsInput.ComponentIndexByName(srcComp.Name); + if (InvalidIndex != attrSlot) { + auto& attr = dst.layout.attrs[attrSlot]; + attr.name = srcComp.Name.AsCStr(); + // FIXME: this is hardcoded for SPIRVCross, should be more flexible + attr.sem_name = "TEXCOORD"; + attr.sem_index = attrSlot; + attr.offset = srcComp.Offset; + attr.format = convertVertexFormat(srcComp.Format); + attr.buffer_index = layoutIndex; } } } @@ -1027,4 +1027,5 @@ sokolGfxBackend::ProcessSystemEvents() { } // namespace Oryol #ifdef __GNUC__ #pragma GCC diagnostic pop -#endif \ No newline at end of file +#endif + From e18123aa44e4f58500abb6d3fe59ce7e016dd7d5 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 28 Jan 2018 12:24:04 +0100 Subject: [PATCH 42/91] Gfx: cleanup directory structure a bit --- code/Modules/Gfx/CMakeLists.txt | 40 ++++++++---------- code/Modules/Gfx/GfxConfig.h | 34 --------------- code/Modules/Gfx/GfxTypes.h | 41 ++++++++++++++++++- .../private/{ => d3d11}/d3d11DisplayMgr.cc | 0 .../Gfx/private/{ => d3d11}/d3d11DisplayMgr.h | 0 .../Gfx/private/{ => d3d11}/winDisplayMgr.cc | 0 .../Gfx/private/{ => d3d11}/winDisplayMgr.h | 0 code/Modules/Gfx/private/displayMgr.h | 12 +++--- code/Modules/Gfx/private/gfxBackend.h | 2 +- .../Gfx/private/{ => gl}/eglDisplayMgr.cc | 0 .../Gfx/private/{ => gl}/eglDisplayMgr.h | 0 .../Gfx/private/{ => gl}/emscDisplayMgr.cc | 0 .../Gfx/private/{ => gl}/emscDisplayMgr.h | 0 code/Modules/Gfx/private/{ => gl}/flextGL.c | 0 code/Modules/Gfx/private/{ => gl}/flextGL.h | 0 code/Modules/Gfx/private/{ => gl}/flextgl.sh | 0 .../Gfx/private/{ => gl}/flextgl_profile.txt | 0 code/Modules/Gfx/private/{ => gl}/gl.h | 4 +- .../Gfx/private/{ => gl}/glfwDisplayMgr.cc | 0 .../Gfx/private/{ => gl}/glfwDisplayMgr.h | 0 .../Gfx/private/{ => gl}/iosDisplayMgr.h | 2 +- .../Gfx/private/{ => gl}/iosDisplayMgr.mm | 0 .../Gfx/private/{ => metal}/mtlDisplayMgr.h | 0 .../Gfx/private/{ => metal}/mtlDisplayMgr.mm | 0 .../private/{ => sokol}/sokolGfxBackend.cc | 0 .../Gfx/private/{ => sokol}/sokolGfxBackend.h | 0 .../Gfx/private/{ => sokol}/sokolImpl.cc | 2 +- .../Gfx/private/{ => sokol}/sokolImpl.mm | 0 .../Input/private/glfw/glfwInputMgr.cc | 2 +- code/Modules/Input/private/win/winInputMgr.cc | 2 +- code/Samples/NativeTexture/NativeTexture.cc | 2 +- 31 files changed, 71 insertions(+), 72 deletions(-) rename code/Modules/Gfx/private/{ => d3d11}/d3d11DisplayMgr.cc (100%) rename code/Modules/Gfx/private/{ => d3d11}/d3d11DisplayMgr.h (100%) rename code/Modules/Gfx/private/{ => d3d11}/winDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{ => d3d11}/winDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ => gl}/eglDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{ => gl}/eglDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ => gl}/emscDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{ => gl}/emscDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ => gl}/flextGL.c (100%) rename code/Modules/Gfx/private/{ => gl}/flextGL.h (100%) rename code/Modules/Gfx/private/{ => gl}/flextgl.sh (100%) rename code/Modules/Gfx/private/{ => gl}/flextgl_profile.txt (100%) rename code/Modules/Gfx/private/{ => gl}/gl.h (95%) rename code/Modules/Gfx/private/{ => gl}/glfwDisplayMgr.cc (100%) rename code/Modules/Gfx/private/{ => gl}/glfwDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ => gl}/iosDisplayMgr.h (92%) rename code/Modules/Gfx/private/{ => gl}/iosDisplayMgr.mm (100%) rename code/Modules/Gfx/private/{ => metal}/mtlDisplayMgr.h (100%) rename code/Modules/Gfx/private/{ => metal}/mtlDisplayMgr.mm (100%) rename code/Modules/Gfx/private/{ => sokol}/sokolGfxBackend.cc (100%) rename code/Modules/Gfx/private/{ => sokol}/sokolGfxBackend.h (100%) rename code/Modules/Gfx/private/{ => sokol}/sokolImpl.cc (96%) rename code/Modules/Gfx/private/{ => sokol}/sokolImpl.mm (100%) diff --git a/code/Modules/Gfx/CMakeLists.txt b/code/Modules/Gfx/CMakeLists.txt index 891ab5b52..8d2e357e9 100644 --- a/code/Modules/Gfx/CMakeLists.txt +++ b/code/Modules/Gfx/CMakeLists.txt @@ -8,39 +8,39 @@ fips_begin_module(Gfx) fips_files( Gfx.cc Gfx.h GfxTypes.cc GfxTypes.h - GfxConfig.h ) fips_dir(private) fips_files( - sokolGfxBackend.cc sokolGfxBackend.h displayMgrBase.cc displayMgrBase.h displayMgr.h ) + fips_dir(private/sokol) + fips_files(sokolGfxBackend.cc sokolGfxBackend.h) if (ORYOL_METAL) fips_files(sokolImpl.mm) else() fips_files(sokolImpl.cc) endif() if (ORYOL_D3D11) + fips_dir(private/d3d11) fips_files(winDisplayMgr.cc winDisplayMgr.h) fips_files(d3d11DisplayMgr.cc d3d11DisplayMgr.h) - endif() - if (ORYOL_METAL) + fips_libs(d3d11) + elseif (ORYOL_METAL) + fips_dir(private/metal) fips_files(mtlDisplayMgr.h mtlDisplayMgr.mm) fips_frameworks_osx(Metal QuartzCore) - endif() - if (FIPS_ANDROID) - fips_files(eglDisplayMgr.cc eglDisplayMgr.h) - fips_libs(GLESv3 EGL) - endif() - if (FIPS_EMSCRIPTEN) - fips_files(emscDisplayMgr.cc emscDisplayMgr.h) - endif() - if (FIPS_IOS AND NOT ORYOL_METAL) - fips_files(iosDisplayMgr.mm iosDisplayMgr.h) - endif() - if (ORYOL_OPENGL) - if (FIPS_RASPBERRYPI) + elseif (ORYOL_OPENGL) + fips_dir(private/gl) + if (FIPS_ANDROID) + fips_files(eglDisplayMgr.cc eglDisplayMgr.h) + fips_libs(GLESv3 EGL) + elseif (FIPS_EMSCRIPTEN) + fips_files(emscDisplayMgr.cc emscDisplayMgr.h) + elseif (FIPS_IOS) + fips_files(iosDisplayMgr.mm iosDisplayMgr.h) + fips_frameworks_osx(OpenGLES GLKit) + elseif (FIPS_RASPBERRYPI) fips_files(eglDisplayMgr.cc eglDisplayMgr.h) fips_libs(GLESv2 EGL bcm_host) elseif (FIPS_MACOS OR FIPS_WINDOWS OR FIPS_LINUX) @@ -48,12 +48,6 @@ fips_begin_module(Gfx) fips_files(flextGL.c flextGL.h) fips_deps(glfw3) endif() - if (FIPS_IOS) - fips_frameworks_osx(OpenGLES GLKit) - endif() - endif() - if (ORYOL_D3D11) - fips_libs(d3d11) endif() fips_deps(Resource Core) fips_end_module() diff --git a/code/Modules/Gfx/GfxConfig.h b/code/Modules/Gfx/GfxConfig.h index fb6add73e..ca7cdb71d 100644 --- a/code/Modules/Gfx/GfxConfig.h +++ b/code/Modules/Gfx/GfxConfig.h @@ -8,38 +8,4 @@ namespace Oryol { -class GfxConfig { -public: - /// default resource pool size - static const int DefaultResourcePoolSize = 128; - /// default uniform buffer size (only relevant on some platforms) - static const int DefaultGlobalUniformBufferSize = 4 * 1024 * 1024; - /// default maximum number of draw-calls per frame (only relevant on some platforms) - static const int DefaultMaxDrawCallsPerFrame = (1<<16); - /// default maximum number of Gfx::ApplyDrawState per frame (only relevant on some platforms) - static const int DefaultMaxApplyDrawStatesPerFrame = 4096; - /// max number of input vertex buffers - static const int MaxNumVertexBuffers = 4; - /// maximum number of textures on vertex shader stage - static const int MaxNumVertexTextures = 4; - /// maximum number of textures on fragment shader stage - static const int MaxNumFragmentTextures = 12; - /// max number of uniform blocks per stage - static const int MaxNumUniformBlocksPerStage = 4; - /// max number of textures on any stage - static const int MaxNumShaderTextures = MaxNumVertexTextures>MaxNumFragmentTextures?MaxNumVertexTextures:MaxNumFragmentTextures; - /// max number of texture faces - static const int MaxNumTextureFaces = 6; - /// max number of texture array slices - static const int MaxNumTextureArraySlices = 128; - /// max number of texture mipmaps - static const int MaxNumTextureMipMaps = 12; - /// maximum number of components in vertex layout - static const int MaxNumVertexLayoutComponents = 16; - /// maximum number of in-flight frames (not used by all platforms) - static const int MaxInflightFrames = 2; - /// maximum number of render pass color attachments - static const int MaxNumColorAttachments = 4; -}; - } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 1afe2bf43..c90185457 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -8,13 +8,52 @@ #include "Resource/Locator.h" #include "Core/Containers/StaticArray.h" #include "Core/Containers/MemoryBuffer.h" -#include "Gfx/GfxConfig.h" #include "glm/vec4.hpp" #include #include namespace Oryol { +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxConfig + @ingroup Gfx + @brief central configuration constants of the Gfx module +*/ +class GfxConfig { +public: + /// default resource pool size + static const int DefaultResourcePoolSize = 128; + /// default uniform buffer size (only relevant on some platforms) + static const int DefaultGlobalUniformBufferSize = 4 * 1024 * 1024; + /// default maximum number of draw-calls per frame (only relevant on some platforms) + static const int DefaultMaxDrawCallsPerFrame = (1<<16); + /// default maximum number of Gfx::ApplyDrawState per frame (only relevant on some platforms) + static const int DefaultMaxApplyDrawStatesPerFrame = 4096; + /// max number of input vertex buffers + static const int MaxNumVertexBuffers = 4; + /// maximum number of textures on vertex shader stage + static const int MaxNumVertexTextures = 4; + /// maximum number of textures on fragment shader stage + static const int MaxNumFragmentTextures = 12; + /// max number of uniform blocks per stage + static const int MaxNumUniformBlocksPerStage = 4; + /// max number of textures on any stage + static const int MaxNumShaderTextures = MaxNumVertexTextures>MaxNumFragmentTextures?MaxNumVertexTextures:MaxNumFragmentTextures; + /// max number of texture faces + static const int MaxNumTextureFaces = 6; + /// max number of texture array slices + static const int MaxNumTextureArraySlices = 128; + /// max number of texture mipmaps + static const int MaxNumTextureMipMaps = 12; + /// maximum number of components in vertex layout + static const int MaxNumVertexLayoutComponents = 16; + /// maximum number of in-flight frames (not used by all platforms) + static const int MaxInflightFrames = 2; + /// maximum number of render pass color attachments + static const int MaxNumColorAttachments = 4; +}; + //------------------------------------------------------------------------------ /** @class Oryol::GfxFeature diff --git a/code/Modules/Gfx/private/d3d11DisplayMgr.cc b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/d3d11DisplayMgr.cc rename to code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc diff --git a/code/Modules/Gfx/private/d3d11DisplayMgr.h b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/d3d11DisplayMgr.h rename to code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h diff --git a/code/Modules/Gfx/private/winDisplayMgr.cc b/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/winDisplayMgr.cc rename to code/Modules/Gfx/private/d3d11/winDisplayMgr.cc diff --git a/code/Modules/Gfx/private/winDisplayMgr.h b/code/Modules/Gfx/private/d3d11/winDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/winDisplayMgr.h rename to code/Modules/Gfx/private/d3d11/winDisplayMgr.h diff --git a/code/Modules/Gfx/private/displayMgr.h b/code/Modules/Gfx/private/displayMgr.h index 7fe506820..6e6f0cb55 100644 --- a/code/Modules/Gfx/private/displayMgr.h +++ b/code/Modules/Gfx/private/displayMgr.h @@ -10,37 +10,37 @@ events (such as input events) and forwards them to Oryol. */ #if ORYOL_D3D11 -#include "Gfx/private/d3d11DisplayMgr.h" +#include "Gfx/private/d3d11/d3d11DisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public d3d11DisplayMgr { }; } } #elif ORYOL_METAL -#include "Gfx/private/mtlDisplayMgr.h" +#include "Gfx/private/metal/mtlDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public mtlDisplayMgr { }; } } #elif (ORYOL_ANDROID || ORYOL_RASPBERRYPI) -#include "Gfx/private/eglDisplayMgr.h" +#include "Gfx/private/gl/eglDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public eglDisplayMgr { }; } } #elif (ORYOL_WINDOWS || ORYOL_MACOS || ORYOL_LINUX) -#include "Gfx/private/glfwDisplayMgr.h" +#include "Gfx/private/gl/glfwDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public glfwDisplayMgr { }; } } #elif ORYOL_EMSCRIPTEN -#include "Gfx/private/emscDisplayMgr.h" +#include "Gfx/private/gl/emscDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public emscDisplayMgr { }; } } #elif ORYOL_IOS -#include "Gfx/private/iosDisplayMgr.h" +#include "Gfx/private/gl/iosDisplayMgr.h" namespace Oryol { namespace _priv { class displayMgr : public iosDisplayMgr { }; diff --git a/code/Modules/Gfx/private/gfxBackend.h b/code/Modules/Gfx/private/gfxBackend.h index 0291ec7ce..c71ac3410 100644 --- a/code/Modules/Gfx/private/gfxBackend.h +++ b/code/Modules/Gfx/private/gfxBackend.h @@ -5,7 +5,7 @@ @ingroup _priv @brief wrapper class for gfx backend implementations */ -#include "Gfx/private/sokolGfxBackend.h" +#include "Gfx/private/sokol/sokolGfxBackend.h" namespace Oryol { namespace _priv { diff --git a/code/Modules/Gfx/private/eglDisplayMgr.cc b/code/Modules/Gfx/private/gl/eglDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/eglDisplayMgr.cc rename to code/Modules/Gfx/private/gl/eglDisplayMgr.cc diff --git a/code/Modules/Gfx/private/eglDisplayMgr.h b/code/Modules/Gfx/private/gl/eglDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/eglDisplayMgr.h rename to code/Modules/Gfx/private/gl/eglDisplayMgr.h diff --git a/code/Modules/Gfx/private/emscDisplayMgr.cc b/code/Modules/Gfx/private/gl/emscDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/emscDisplayMgr.cc rename to code/Modules/Gfx/private/gl/emscDisplayMgr.cc diff --git a/code/Modules/Gfx/private/emscDisplayMgr.h b/code/Modules/Gfx/private/gl/emscDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/emscDisplayMgr.h rename to code/Modules/Gfx/private/gl/emscDisplayMgr.h diff --git a/code/Modules/Gfx/private/flextGL.c b/code/Modules/Gfx/private/gl/flextGL.c similarity index 100% rename from code/Modules/Gfx/private/flextGL.c rename to code/Modules/Gfx/private/gl/flextGL.c diff --git a/code/Modules/Gfx/private/flextGL.h b/code/Modules/Gfx/private/gl/flextGL.h similarity index 100% rename from code/Modules/Gfx/private/flextGL.h rename to code/Modules/Gfx/private/gl/flextGL.h diff --git a/code/Modules/Gfx/private/flextgl.sh b/code/Modules/Gfx/private/gl/flextgl.sh similarity index 100% rename from code/Modules/Gfx/private/flextgl.sh rename to code/Modules/Gfx/private/gl/flextgl.sh diff --git a/code/Modules/Gfx/private/flextgl_profile.txt b/code/Modules/Gfx/private/gl/flextgl_profile.txt similarity index 100% rename from code/Modules/Gfx/private/flextgl_profile.txt rename to code/Modules/Gfx/private/gl/flextgl_profile.txt diff --git a/code/Modules/Gfx/private/gl.h b/code/Modules/Gfx/private/gl/gl.h similarity index 95% rename from code/Modules/Gfx/private/gl.h rename to code/Modules/Gfx/private/gl/gl.h index 3e3d2cc5a..c810bcd7d 100644 --- a/code/Modules/Gfx/private/gl.h +++ b/code/Modules/Gfx/private/gl/gl.h @@ -12,7 +12,7 @@ #include "GLES2/gl2.h" #include "GLES2/gl2ext.h" #elif ORYOL_WINDOWS || ORYOL_LINUX || ORYOL_MACOS -#include "Gfx/private/flextGL.h" +#include "Gfx/private/gl/flextGL.h" #elif ORYOL_IOS #include #include @@ -30,4 +30,4 @@ #include #else #error "Missing platform for GL header include!" -#endif \ No newline at end of file +#endif diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.cc b/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc similarity index 100% rename from code/Modules/Gfx/private/glfwDisplayMgr.cc rename to code/Modules/Gfx/private/gl/glfwDisplayMgr.cc diff --git a/code/Modules/Gfx/private/glfwDisplayMgr.h b/code/Modules/Gfx/private/gl/glfwDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/glfwDisplayMgr.h rename to code/Modules/Gfx/private/gl/glfwDisplayMgr.h diff --git a/code/Modules/Gfx/private/iosDisplayMgr.h b/code/Modules/Gfx/private/gl/iosDisplayMgr.h similarity index 92% rename from code/Modules/Gfx/private/iosDisplayMgr.h rename to code/Modules/Gfx/private/gl/iosDisplayMgr.h index 87798e4b1..4f2e97192 100644 --- a/code/Modules/Gfx/private/iosDisplayMgr.h +++ b/code/Modules/Gfx/private/gl/iosDisplayMgr.h @@ -6,7 +6,7 @@ @brief display manager for IOS */ #include "Gfx/private/displayMgrBase.h" -#include "Gfx/private/gl.h" +#include "Gfx/private/gl/gl.h" namespace Oryol { namespace _priv { diff --git a/code/Modules/Gfx/private/iosDisplayMgr.mm b/code/Modules/Gfx/private/gl/iosDisplayMgr.mm similarity index 100% rename from code/Modules/Gfx/private/iosDisplayMgr.mm rename to code/Modules/Gfx/private/gl/iosDisplayMgr.mm diff --git a/code/Modules/Gfx/private/mtlDisplayMgr.h b/code/Modules/Gfx/private/metal/mtlDisplayMgr.h similarity index 100% rename from code/Modules/Gfx/private/mtlDisplayMgr.h rename to code/Modules/Gfx/private/metal/mtlDisplayMgr.h diff --git a/code/Modules/Gfx/private/mtlDisplayMgr.mm b/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm similarity index 100% rename from code/Modules/Gfx/private/mtlDisplayMgr.mm rename to code/Modules/Gfx/private/metal/mtlDisplayMgr.mm diff --git a/code/Modules/Gfx/private/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc similarity index 100% rename from code/Modules/Gfx/private/sokolGfxBackend.cc rename to code/Modules/Gfx/private/sokol/sokolGfxBackend.cc diff --git a/code/Modules/Gfx/private/sokolGfxBackend.h b/code/Modules/Gfx/private/sokol/sokolGfxBackend.h similarity index 100% rename from code/Modules/Gfx/private/sokolGfxBackend.h rename to code/Modules/Gfx/private/sokol/sokolGfxBackend.h diff --git a/code/Modules/Gfx/private/sokolImpl.cc b/code/Modules/Gfx/private/sokol/sokolImpl.cc similarity index 96% rename from code/Modules/Gfx/private/sokolImpl.cc rename to code/Modules/Gfx/private/sokol/sokolImpl.cc index 26a2dad09..d00777456 100644 --- a/code/Modules/Gfx/private/sokolImpl.cc +++ b/code/Modules/Gfx/private/sokol/sokolImpl.cc @@ -11,7 +11,7 @@ #define SOKOL_LOG(m) Oryol::Log::Info("%s\n",m) #define SOKOL_UNREACHABLE o_assert_dbg(false) #if ORYOL_OPENGL -#include "Gfx/private/gl.h" +#include "Gfx/private/gl/gl.h" #endif #if ORYOL_OPENGLES2 #define SOKOL_GLES2 diff --git a/code/Modules/Gfx/private/sokolImpl.mm b/code/Modules/Gfx/private/sokol/sokolImpl.mm similarity index 100% rename from code/Modules/Gfx/private/sokolImpl.mm rename to code/Modules/Gfx/private/sokol/sokolImpl.mm diff --git a/code/Modules/Input/private/glfw/glfwInputMgr.cc b/code/Modules/Input/private/glfw/glfwInputMgr.cc index c1a397846..d9399f47b 100644 --- a/code/Modules/Input/private/glfw/glfwInputMgr.cc +++ b/code/Modules/Input/private/glfw/glfwInputMgr.cc @@ -3,7 +3,7 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "glfwInputMgr.h" -#include "Gfx/private/glfwDisplayMgr.h" +#include "Gfx/private/gl/glfwDisplayMgr.h" #include "Core/Core.h" #include "Core/RunLoop.h" #include "GLFW/glfw3.h" diff --git a/code/Modules/Input/private/win/winInputMgr.cc b/code/Modules/Input/private/win/winInputMgr.cc index 7eae1ff41..ff9fd4e17 100644 --- a/code/Modules/Input/private/win/winInputMgr.cc +++ b/code/Modules/Input/private/win/winInputMgr.cc @@ -5,7 +5,7 @@ #include "winInputMgr.h" #include "Core/Core.h" #include "Core/RunLoop.h" -#include "Gfx/private/winDisplayMgr.h" +#include "Gfx/private/d3d11/winDisplayMgr.h" namespace Oryol { namespace _priv { diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 03150d231..45e9f6e06 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -13,7 +13,7 @@ // need to access GL API directly #if ORYOL_OPENGL -#include "Gfx/private/gl.h" +#include "Gfx/private/gl/gl.h" #endif using namespace Oryol; From 0709527af7c0f6aead5014c304ff495af326b7c9 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 28 Jan 2018 17:37:26 +0100 Subject: [PATCH 43/91] Gfx: builder methods for PassAction --- code/Modules/Gfx/GfxTypes.cc | 105 +++++++++---- code/Modules/Gfx/GfxTypes.h | 65 +++++--- code/Samples/ArrayTexture/ArrayTexture.cc | 4 +- code/Samples/DDSCubeMap/DDSCubeMap.cc | 2 +- .../DDSTextureLoading/DDSTextureLoading.cc | 2 +- code/Samples/DebugText/DebugText.cc | 2 +- code/Samples/GPUParticles/GPUParticles.cc | 4 +- .../InfiniteSpheres/InfiniteSpheres.cc | 2 +- .../MultipleRenderTarget.cc | 4 +- code/Samples/NativeTexture/NativeTexture.cc | 2 +- .../RenderToCubeMap/RenderToCubeMap.cc | 4 +- code/Samples/ResourceStress/ResourceStress.cc | 2 +- .../SimpleRenderTarget/SimpleRenderTarget.cc | 144 +++++++++--------- code/Samples/TestInput/TestInput.cc | 2 +- code/Samples/VertexTexture/VertexTexture.cc | 2 +- code/Samples/VolumeTexture/VolumeTexture.cc | 4 +- 16 files changed, 202 insertions(+), 148 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 788d1c9e7..b91ec7368 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -389,45 +389,51 @@ PassAction::PassAction() { } //------------------------------------------------------------------------------ -PassAction PassAction::Clear(const glm::vec4& c, float d, uint8_t s) { - PassAction p; - p.Color.Fill(c); - p.Depth = d; - p.Stencil = s; - return p; +PassAction PassAction::New() { + return PassAction(); } //------------------------------------------------------------------------------ -PassAction PassAction::Clear(std::initializer_list colors, float d, uint8_t s) { - PassAction p; - int i = 0; - for (const auto& c : colors) { - p.Color[i++] = c; - } - p.Depth = d; - p.Stencil = s; - return p; +PassAction& PassAction::Load() { + this->Flags = LoadC0|LoadC1|LoadC2|LoadC3|LoadDS; + return *this; } //------------------------------------------------------------------------------ -PassAction PassAction::Load() { - PassAction p; - p.Flags = LoadC0|LoadC1|LoadC2|LoadC3|LoadDS; - return p; +PassAction& PassAction::DontCare() { + this->Flags = 0; + return *this; } //------------------------------------------------------------------------------ -PassAction PassAction::DontCare() { - PassAction p; - p.Flags = 0; - return p; +PassAction& PassAction::ClearColor(int index, float r, float g, float b, float a) { + o_assert_range_dbg(index, GfxConfig::MaxNumColorAttachments); + this->Color[index] = glm::vec4(r, g, b, a); + this->Flags |= (ClearC0<Color[index] = color; - this->Flags &= ~((ClearC0|LoadC0)<Flags |= ClearC0<Flags |= (ClearC0<ClearColor(i, r, g, b, a); + } + return *this; +} + +//------------------------------------------------------------------------------ +PassAction& PassAction::ClearColor(const glm::vec4& color) { + for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { + this->ClearColor(i, color); + } return *this; } @@ -435,39 +441,72 @@ PassAction& PassAction::ClearColor(int index, const glm::vec4& color) { PassAction& PassAction::ClearDepthStencil(float d, uint8_t s) { this->Depth = d; this->Stencil = s; - this->Flags &= ~(ClearDS|LoadDS); this->Flags |= ClearDS; return *this; } //------------------------------------------------------------------------------ -PassAction& PassAction::DontCareColor(int index) { - o_assert_range_dbg(index, GfxConfig::MaxNumColorAttachments); - this->Flags &= ~((ClearC0|LoadC0)<ClearColor(r, g, b, a); + this->ClearDepthStencil(d, s); return *this; } //------------------------------------------------------------------------------ -PassAction& PassAction::DontCareDepthStencil() { - this->Flags &= ~(ClearDS|LoadDS); +PassAction& PassAction::Clear(const glm::vec4& c, float d, uint8_t s) { + this->ClearColor(c); + this->ClearDepthStencil(d, s); + return *this; +} + +//------------------------------------------------------------------------------ +PassAction& PassAction::Clear(std::initializer_list colors, float d, uint8_t s) { + int i = 0; + for (const auto& c : colors) { + this->ClearColor(i++, c); + } + this->ClearDepthStencil(d, s); return *this; } //------------------------------------------------------------------------------ PassAction& PassAction::LoadColor(int index) { o_assert_range_dbg(index, GfxConfig::MaxNumColorAttachments); - this->Flags &= ~((ClearC0|LoadC0)<Flags |= LoadC0<Flags |= LoadC0|LoadC1|LoadC2|LoadC3; + return *this; +} + //------------------------------------------------------------------------------ PassAction& PassAction::LoadDepthStencil() { - this->Flags &= ~(ClearDS|LoadDS); this->Flags |= LoadDS; return *this; } +//------------------------------------------------------------------------------ +PassAction& PassAction::DontCareColor(int index) { + o_assert_range_dbg(index, GfxConfig::MaxNumColorAttachments); + this->Flags &= ~(ClearC0|LoadC0<Flags &= ~(ClearC0|ClearC1|ClearC2|ClearC3|LoadC0|LoadC1|LoadC2|LoadC3); + return *this; +} + +//------------------------------------------------------------------------------ +PassAction& PassAction::DontCareDepthStencil() { + this->Flags &= ~(ClearDS|LoadDS); + return *this; +} + //------------------------------------------------------------------------------ VertexLayout::VertexLayout() { this->Clear(); diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index c90185457..23bbf7d0f 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -572,31 +572,6 @@ struct PrimitiveGroup { */ class PassAction { public: - /// default constructor, set all actions to 'clear with default values' - PassAction(); - /// clear all surfaces with given values - static PassAction Clear(const glm::vec4& color=glm::vec4(0.0f, 0.0f, 0.0f, 1.0f), float depth=1.0f, uint8_t stencil=0); - /// clear all surfaces with individual colors - static PassAction Clear(std::initializer_list colors, float depth=1.0f, uint8_t stencil=0); - /// load previous content - static PassAction Load(); - /// discard previous content - static PassAction DontCare(); - - /// FIXME: these methods are confusing, since some are static, some are not! - /// clear a single surface to a color - PassAction& ClearColor(int index, const glm::vec4& color); - /// clear depth-stencil surface - PassAction& ClearDepthStencil(float depth=1.0f, uint8_t stencil=0); - /// set a color surface to 'dont care' (initial content is undefined) - PassAction& DontCareColor(int index); - /// set depth-stencil initial state to 'dont care' - PassAction& DontCareDepthStencil(); - /// initialize color surface with its previus content - PassAction& LoadColor(int index); - /// initialize depth-stencil surface with its previous content - PassAction& LoadDepthStencil(); - /// override clear colors StaticArray Color; /// override clear depth value @@ -620,6 +595,46 @@ class PassAction { LoadDS = (1<<9), }; uint16_t Flags = ClearC0|ClearC1|ClearC2|ClearC3|ClearDS; + + /// return a default-initialized PassAction object + static PassAction New(); + + /// clear all attachments + PassAction& Clear(float r, float g, float b, float a, float depth=1.0f, uint8_t stencil=0); + /// clear all attachments with color as glm::vec4 + PassAction& Clear(const glm::vec4& color, float depth=1.0f, uint8_t stencil=0); + /// clear all attachments with separate colors + PassAction& Clear(std::initializer_list colors, float depth=1.0f, uint8_t stencil=0); + /// load all attachments with previous content + PassAction& Load(); + /// leave content of all attachments undefined + PassAction& DontCare(); + /// clear all color attachments with the same color + PassAction& ClearColor(float r, float g, float b, float a); + /// clear all color attachments with the same color as glm::vec4 + PassAction& ClearColor(const glm::vec4& color); + /// clear one of the color attachments + PassAction& ClearColor(int index, float r, float g, float b, float a); + /// clear of of the color attachments with color as glm::vec4 + PassAction& ClearColor(int index, const glm::vec4& c); + /// load all color attachments with previous content + PassAction& LoadColor(); + /// load one of the color attachments with previous content + PassAction& LoadColor(int index); + /// leave all color attachments at undefined state + PassAction& DontCareColor(); + /// leave one of the color attachments at undefined state + PassAction& DontCareColor(int index); + + /// clear the depth-stencil attachment + PassAction& ClearDepthStencil(float depth=1.0f, uint8_t stencil=0); + /// load the depth-stencil attachment with previous content + PassAction& LoadDepthStencil(); + /// leave content of depth-stencil attachment undefined + PassAction& DontCareDepthStencil(); + + /// default constructor + PassAction(); }; //------------------------------------------------------------------------------ diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index 168fe679e..a4898ea03 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -122,7 +122,7 @@ ArrayTextureApp::OnRunning() { auto vsParams = this->computeShaderParams(); // render texture cube - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.2f, 0.2f, 0.3f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.2f, 0.2f, 0.3f, 1.0f)); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(vsParams); Gfx::Draw(this->primGroup); @@ -172,7 +172,7 @@ ArrayTextureApp::notSupported() { #endif uint8_t x = uint8_t((Gfx::DisplayAttrs().FramebufferWidth/16 - std::strlen(msg))/2); uint8_t y = uint8_t(Gfx::DisplayAttrs().FramebufferHeight/16/2); - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.0f, 0.0f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); Dbg::Print(msg); diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index 56363fdaa..5b06868ab 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -100,7 +100,7 @@ DDSCubeMapApp::OnRunning() { this->angleY += 0.02f; this->angleX += 0.01f; - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); this->vsParams.mvp = this->computeMVP(glm::vec3(0.0f, 0.0f, 0.0f)); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->vsParams); diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index f32a437f6..1cc5c1e8c 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -113,7 +113,7 @@ DDSTextureLoadingApp::OnRunning() { this->distVal += 0.01f; - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); // only render when texture is loaded (until texture placeholder are implemented) static const glm::vec3 pos[NumTextures] = { diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index f0ea1da0c..54c23a474 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -54,7 +54,7 @@ DebugTextApp::OnRunning() { this->moveChars(); this->drawText(); - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index a5a865d29..e34761204 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -175,7 +175,7 @@ GPUParticlesApp::OnInit() { // 'draw' the initial particle state (positions at origin, pseudo-random velocity) for (int i = 0; i < 2; i++) { - Gfx::BeginPass(this->particleBuffer[0].pass, PassAction::DontCare()); + Gfx::BeginPass(this->particleBuffer[0].pass, PassAction::New().DontCare()); Gfx::ApplyDrawState(this->initParticles); Gfx::ApplyUniformBlock(this->initFSParams); Gfx::Draw(0, 4); @@ -211,7 +211,7 @@ GPUParticlesApp::OnRunning() { const int scissorHeight = (this->curNumParticles / NumParticlesX) + 1; this->updParticles.FSTexture[UpdateShader::prevState] = this->particleBuffer[readIndex].texture; this->updFSParams.numParticles = (float) this->curNumParticles; - Gfx::BeginPass(this->particleBuffer[drawIndex].pass, PassAction::DontCare()); + Gfx::BeginPass(this->particleBuffer[drawIndex].pass, PassAction::New().DontCare()); Gfx::ApplyScissorRect(0, 0, ParticleBufferWidth, scissorHeight, Gfx::QueryFeature(GfxFeature::OriginTopLeft)); Gfx::ApplyDrawState(this->updParticles); Gfx::ApplyUniformBlock(this->updFSParams); diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index 211ea89d2..5468674e4 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -29,7 +29,7 @@ class InfiniteSpheresApp : public App { Id pass; } passInfo[2]; Shader::vsParams vsParams; - PassAction passAction = PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f)); + PassAction passAction = PassAction::New().Clear(0.25f, 0.25f, 0.25f, 1.0f); glm::mat4 view; glm::mat4 offscreenProj; glm::mat4 displayProj; diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 65b7866a4..0f9bed5ba 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -199,7 +199,7 @@ MultipleRenderTargetApp::OnRunning() { Gfx::EndPass(); // debug-visualize the 3 offscreen render targets at the bottom of the screen - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); Gfx::ApplyViewPort(0, 0, 200, 200); Gfx::ApplyDrawState(this->rt0DrawState); Gfx::Draw(0, 4); @@ -249,7 +249,7 @@ MultipleRenderTargetApp::notSupported() { #endif uint8_t x = uint8_t((Gfx::DisplayAttrs().FramebufferWidth/16 - std::strlen(msg))/2); uint8_t y = uint8_t(Gfx::DisplayAttrs().FramebufferHeight/16/2); - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.0f, 0.0f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); Dbg::Print(msg); diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 45e9f6e06..9eb830135 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -193,7 +193,7 @@ NativeTextureApp::notSupported() { const char* msg = "This demo needs GL\n"; int x = (Gfx::DisplayAttrs().FramebufferWidth/16 - int(std::strlen(msg)))/2; int y = Gfx::DisplayAttrs().FramebufferHeight/16/2; - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.0f, 0.0f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(uint8_t(x), uint8_t(y)); Dbg::Print(msg); diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index e36728357..df81a676b 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -191,14 +191,14 @@ RenderToCubeMapApp::OnRunning() { { glm::vec3(0.0f, 0.0f, -1.0f), glm::vec3(0.0f, -1.0f, 0.0f) }, }; for (int i = 0; i < NumFaces; i++) { - Gfx::BeginPass(this->passes[i], PassAction::Clear(ClearColor)); + Gfx::BeginPass(this->passes[i], PassAction::New().Clear(ClearColor)); const glm::mat4 view = glm::lookAt(glm::vec3(0.0f), centerAndUp[i][0], centerAndUp[i][1]); this->drawEnvShapes(this->offscreenShapesPipeline, glm::vec3(0.0f), view, this->offscreenProj); Gfx::EndPass(); } // render the main view - Gfx::BeginPass(PassAction::Clear(ClearColor)); + Gfx::BeginPass(PassAction::New().Clear(ClearColor)); // draw the environment shapes const glm::vec3 eyePos = glm::euclidean(this->polar) * distance; diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index d9f7255a3..5de2ffb85 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -80,7 +80,7 @@ ResourceStressApp::OnRunning() { this->updateObjects(); this->createObjects(); - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.5f, 0.5f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); for (const auto& obj : this->objects) { // only render objects that have successfully loaded (technically // the check is not necessary since rendering for non-valid resources diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 997f75921..a81d4a250 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -19,9 +19,9 @@ class SimpleRenderTargetApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::mat4& proj, float rotX, float rotY, const glm::vec3& pos); - - PrimitiveGroup donutPrimGroup; - PrimitiveGroup spherePrimGroup; + + PrimitiveGroup donutPrimGroup; + PrimitiveGroup spherePrimGroup; Id renderPass; DrawState offscreenDrawState; DrawState displayDrawState; @@ -42,79 +42,79 @@ SimpleRenderTargetApp::OnInit() { auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Oryol Simple Render Target Sample"); Gfx::Setup(gfxDesc); - // create a color render target texture and compatible depth render target - // texture for offscreen rendering - const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; - const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; - const int rtSampleCount = Gfx::QueryFeature(GfxFeature::MSAARenderTargets) ? 4 : 1; - auto rtCommon = Gfx::Texture() - .Type(TextureType::Texture2D) - .RenderTarget(true) - .Width(128) - .Height(128) - .WrapU(TextureWrapMode::Repeat) - .WrapV(TextureWrapMode::Repeat) - .MagFilter(TextureFilterMode::Linear) - .MinFilter(TextureFilterMode::Linear) - .SampleCount(rtSampleCount) - .Desc; - Id rtColorTexture = Gfx::Texture().From(rtCommon).Format(rtColorFormat).Create(); - Id rtDepthTexture = Gfx::Texture().From(rtCommon).Format(rtDepthFormat).Create(); - this->renderPass = Gfx::Pass() - .ColorAttachment(0, rtColorTexture) - .DepthStencilAttachment(rtDepthTexture) + // create a color render target texture and compatible depth render target + // texture for offscreen rendering + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; + const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; + const int rtSampleCount = Gfx::QueryFeature(GfxFeature::MSAARenderTargets) ? 4 : 1; + auto rtCommon = Gfx::Texture() + .Type(TextureType::Texture2D) + .RenderTarget(true) + .Width(128) + .Height(128) + .WrapU(TextureWrapMode::Repeat) + .WrapV(TextureWrapMode::Repeat) + .MagFilter(TextureFilterMode::Linear) + .MinFilter(TextureFilterMode::Linear) + .SampleCount(rtSampleCount) + .Desc; + Id rtColorTexture = Gfx::Texture().From(rtCommon).Format(rtColorFormat).Create(); + Id rtDepthTexture = Gfx::Texture().From(rtCommon).Format(rtDepthFormat).Create(); + this->renderPass = Gfx::Pass() + .ColorAttachment(0, rtColorTexture) + .DepthStencilAttachment(rtDepthTexture) .Create(); // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) - auto donut = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Normals("in_normal", VertexFormat::Byte4N) - .Torus(0.3f, 0.5f, 20, 36) - .Build(); - this->donutPrimGroup = donut.PrimitiveGroups[0]; - this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(donut.VertexBufferDesc) - .Content(donut.Data) - .Create(); - this->offscreenDrawState.IndexBuffer = Gfx::Buffer() - .From(donut.IndexBufferDesc) - .Content(donut.Data) - .Create(); - this->offscreenDrawState.Pipeline = Gfx::Pipeline() - .From(donut.PipelineDesc) - .Shader(Gfx::CreateShader(OffscreenShader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .ColorFormat(rtColorFormat) - .DepthFormat(rtDepthFormat) - .SampleCount(rtSampleCount) - .Create(); + auto donut = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .Torus(0.3f, 0.5f, 20, 36) + .Build(); + this->donutPrimGroup = donut.PrimitiveGroups[0]; + this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() + .From(donut.VertexBufferDesc) + .Content(donut.Data) + .Create(); + this->offscreenDrawState.IndexBuffer = Gfx::Buffer() + .From(donut.IndexBufferDesc) + .Content(donut.Data) + .Create(); + this->offscreenDrawState.Pipeline = Gfx::Pipeline() + .From(donut.PipelineDesc) + .Shader(Gfx::CreateShader(OffscreenShader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .ColorFormat(rtColorFormat) + .DepthFormat(rtDepthFormat) + .SampleCount(rtSampleCount) + .Create(); - // create a sphere mesh, shader and pipeline object for rendering to display - auto sphere = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Normals("in_normal", VertexFormat::Byte4N) - .TexCoords("in_uv", VertexFormat::Float2) - .Sphere(0.5f, 72, 40) - .Build(); + // create a sphere mesh, shader and pipeline object for rendering to display + auto sphere = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .TexCoords("in_uv", VertexFormat::Float2) + .Sphere(0.5f, 72, 40) + .Build(); this->spherePrimGroup = sphere.PrimitiveGroups[0]; - this->displayDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(sphere.VertexBufferDesc) - .Content(sphere.Data) - .Create(); - this->displayDrawState.IndexBuffer = Gfx::Buffer() - .From(sphere.IndexBufferDesc) - .Content(sphere.Data) - .Create(); - this->displayDrawState.Pipeline = Gfx::Pipeline() - .From(sphere.PipelineDesc) - .Shader(Gfx::CreateShader(DisplayShader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); - this->displayDrawState.FSTexture[DisplayShader::tex] = rtColorTexture; + this->displayDrawState.VertexBuffers[0] = Gfx::Buffer() + .From(sphere.VertexBufferDesc) + .Content(sphere.Data) + .Create(); + this->displayDrawState.IndexBuffer = Gfx::Buffer() + .From(sphere.IndexBufferDesc) + .Content(sphere.Data) + .Create(); + this->displayDrawState.Pipeline = Gfx::Pipeline() + .From(sphere.PipelineDesc) + .Shader(Gfx::CreateShader(DisplayShader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(gfxDesc.SampleCount) + .Create(); + this->displayDrawState.FSTexture[DisplayShader::tex] = rtColorTexture; // setup static transform matrices float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; @@ -135,7 +135,7 @@ SimpleRenderTargetApp::OnRunning() { this->angleX += 0.02f; // render donut to offscreen render target - Gfx::BeginPass(this->renderPass, PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f))); + Gfx::BeginPass(this->renderPass, PassAction::New().Clear(0.25f, 0.25f, 0.25f, 1.0f)); Gfx::ApplyDrawState(this->offscreenDrawState); this->offscreenParams.mvp = this->computeMVP(this->offscreenProj, this->angleX, this->angleY, glm::vec3(0.0f, 0.0f, -3.0f)); Gfx::ApplyUniformBlock(this->offscreenParams); @@ -143,7 +143,7 @@ SimpleRenderTargetApp::OnRunning() { Gfx::EndPass(); // render sphere to display, with offscreen render target as texture - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.25f, 0.45f, 0.65f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.25f, 0.45f, 0.65f, 1.0f)); Gfx::ApplyDrawState(this->displayDrawState); this->displayVSParams.mvp = this->computeMVP(this->displayProj, -this->angleX * 0.25f, this->angleY * 0.25f, glm::vec3(0.0f, 0.0f, -1.5f)); Gfx::ApplyUniformBlock(this->displayVSParams); diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index 5fecbdc2e..d7a31e8e5 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -500,7 +500,7 @@ TestInputApp::OnRunning() { this->updateView(); // draw frame - Gfx::BeginPass(PassAction::Clear(this->getClearColor())); + Gfx::BeginPass(PassAction::New().Clear(this->getClearColor())); this->drawCube(); Dbg::DrawTextBuffer(); Gfx::EndPass(); diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index 217551b32..edd3d3465 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -111,7 +111,7 @@ VertexTextureApp::OnRunning() { this->planeVSParams.mvp = this->computeMVP(glm::vec2(0.0f, 0.0f)); // render plasma to offscreen render target - Gfx::BeginPass(this->plasmaRenderPass, PassAction::DontCare()); + Gfx::BeginPass(this->plasmaRenderPass, PassAction::New().DontCare()); Gfx::ApplyDrawState(this->plasmaDrawState); Gfx::ApplyUniformBlock(this->plasmaFSParams); Gfx::Draw(0, 4); diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index 355fb27c0..e6b80ec59 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -115,7 +115,7 @@ VolumeTextureApp::OnRunning() { this->computeShaderParams(); // render the rotating cube - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.25f, 0.25f, 0.25f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.25f, 0.25f, 0.25f, 1.0f)); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->vsParams); Gfx::Draw(this->primGroup); @@ -159,7 +159,7 @@ VolumeTextureApp::notSupported() { #endif uint8_t x = uint8_t((Gfx::DisplayAttrs().FramebufferWidth/16 - std::strlen(msg))/2); uint8_t y = uint8_t(Gfx::DisplayAttrs().FramebufferHeight/16/2); - Gfx::BeginPass(PassAction::Clear(glm::vec4(0.5f, 0.0f, 0.0f, 1.0f))); + Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); Dbg::Print(msg); From 246813876be6b5bd6661208474163e663fd57f02 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 28 Jan 2018 17:40:22 +0100 Subject: [PATCH 44/91] Remove obsolete GfxConfig.h --- code/Modules/Gfx/GfxConfig.h | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 code/Modules/Gfx/GfxConfig.h diff --git a/code/Modules/Gfx/GfxConfig.h b/code/Modules/Gfx/GfxConfig.h deleted file mode 100644 index ca7cdb71d..000000000 --- a/code/Modules/Gfx/GfxConfig.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxConfig - @brief central configuration constants of the Gfx module -*/ -#include "Core/Types.h" - -namespace Oryol { - -} // namespace Oryol From fd86faee32ee19925f609725ff6ea2cac0f91d9b Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 28 Jan 2018 20:46:20 +0100 Subject: [PATCH 45/91] New Gfx resource builder pattern --- code/Modules/Assets/Gfx/MeshBuilder.cc | 13 +- code/Modules/Assets/Gfx/TextureLoader.cc | 9 +- code/Modules/Dbg/private/debugTextRenderer.cc | 20 +- code/Modules/Gfx/Gfx.cc | 82 ++----- code/Modules/Gfx/Gfx.h | 70 +----- code/Modules/Gfx/GfxTypes.cc | 91 +------- code/Modules/Gfx/GfxTypes.h | 206 ++++++++++++------ code/Modules/Gfx/private/displayMgrBase.cc | 30 ++- code/Modules/Gfx/private/displayMgrBase.h | 2 - code/Modules/Gfx/private/gl/glfwDisplayMgr.cc | 20 +- .../Gfx/private/sokol/sokolGfxBackend.cc | 47 ++-- .../Gfx/private/sokol/sokolGfxBackend.h | 10 +- code/Samples/ArrayTexture/ArrayTexture.cc | 35 ++- code/Samples/BlendTest/BlendTest.cc | 24 +- code/Samples/BlendTest/CMakeLists.txt | 2 +- code/Samples/Clear/Clear.cc | 2 +- code/Samples/DDSCubeMap/DDSCubeMap.cc | 24 +- .../DDSTextureLoading/DDSTextureLoading.cc | 25 +-- code/Samples/DebugText/DebugText.cc | 6 +- code/Samples/DrawCallPerf/DrawCallPerf.cc | 25 +-- code/Samples/FullscreenQuad/FullscreenQuad.cc | 10 +- code/Samples/GPUParticles/GPUParticles.cc | 48 ++-- .../GamepadExplorer/GamepadExplorer.cc | 2 +- .../InfiniteSpheres/InfiniteSpheres.cc | 33 ++- code/Samples/Instancing/Instancing.cc | 24 +- .../MultipleRenderTarget.cc | 49 ++--- code/Samples/NativeTexture/NativeTexture.cc | 39 ++-- code/Samples/PackedNormals/PackedNormals.cc | 20 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 27 ++- code/Samples/Quad/Quad.cc | 14 +- .../RenderToCubeMap/RenderToCubeMap.cc | 45 ++-- code/Samples/ResourceStress/ResourceStress.cc | 37 ++-- code/Samples/Sensors/Sensors.cc | 20 +- .../SeparateBuffers/SeparateBuffers.cc | 27 +-- code/Samples/Shapes/Shapes.cc | 25 +-- .../SimpleRenderTarget/SimpleRenderTarget.cc | 50 ++--- code/Samples/TestInput/TestInput.cc | 27 +-- code/Samples/TextureFloat/TextureFloat.cc | 29 ++- code/Samples/Triangle/Triangle.cc | 12 +- code/Samples/VertexTexture/VertexTexture.cc | 36 ++- code/Samples/VolumeTexture/VolumeTexture.cc | 35 ++- 41 files changed, 552 insertions(+), 800 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index ac67115d6..ac907a9c3 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -30,22 +30,23 @@ MeshBuilder::Begin() { // setup Result object this->result.Layout = this->Layout; this->result.IndexType = this->IndexType; - this->result.VertexBufferDesc = Gfx::Buffer() + this->result.VertexBufferDesc = NewBufferDesc() .Size(vbSize) .Type(BufferType::VertexBuffer) .Usage(this->VertexUsage) - .Desc; + .Content(this->vertexPointer) + .Done(); if (ibSize > 0) { - this->result.IndexBufferDesc = Gfx::Buffer() + this->result.IndexBufferDesc = NewBufferDesc() .Size(ibSize) .Type(BufferType::IndexBuffer) .Usage(this->IndexUsage) - .Offset(this->result.VertexBufferDesc.Size) - .Desc; + .Content(this->indexPointer) + .Done(); } else { this->result.IndexBufferDesc = BufferDesc(); - } + } return *this; } diff --git a/code/Modules/Assets/Gfx/TextureLoader.cc b/code/Modules/Assets/Gfx/TextureLoader.cc index 0257d2108..d5b0c4556 100644 --- a/code/Modules/Assets/Gfx/TextureLoader.cc +++ b/code/Modules/Assets/Gfx/TextureLoader.cc @@ -96,13 +96,12 @@ static TextureDesc buildDesc(const TextureDesc& blueprint, const gliml::context& break; } - // setup mipmap offsets + // setup mipmap content o_assert_dbg(GfxConfig::MaxNumTextureMipMaps >= ctx.num_mipmaps(0)); for (int faceIndex = 0; faceIndex < numFaces; faceIndex++) { for (int mipIndex = 0; mipIndex < numMips; mipIndex++) { - const uint8_t* cur = (const uint8_t*) ctx.image_data(faceIndex, mipIndex); - bld.MipDataOffset(faceIndex, mipIndex, int(cur - data)); - bld.MipDataSize(faceIndex, mipIndex, ctx.image_size(faceIndex, mipIndex)); + bld.MipContent(faceIndex, mipIndex, ctx.image_data(faceIndex, mipIndex)); + bld.MipSize(faceIndex, mipIndex, ctx.image_size(faceIndex, mipIndex)); } } return bld.Desc; @@ -121,7 +120,7 @@ TextureLoader::Load(const TextureDesc& desc) { ctx.enable_etc2(true); if (ctx.load(data, dataSize)) { TextureDesc initDesc = buildDesc(desc, ctx, data); - Gfx::InitTexture(resId, initDesc, data, dataSize); + Gfx::InitTexture(resId, initDesc); } }, [resId](const URL& url, IOStatus::Code ioStatus) { diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 0078064f1..4727a4810 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -124,8 +124,8 @@ debugTextRenderer::drawTextBuffer() { Gfx::UpdateBuffer(this->drawState.VertexBuffers[0], this->vertexData, this->curNumVertices * this->vertexLayout.ByteSize()); Gfx::ApplyDrawState(this->drawState); DbgTextShader::vsParams vsParams; - const float w = 8.0f / Gfx::PassAttrs().FramebufferWidth; // glyph is 8 pixels wide - const float h = 8.0f / Gfx::PassAttrs().FramebufferHeight; // glyph is 8 pixel tall + const float w = 8.0f / Gfx::PassAttrs().Width; // glyph is 8 pixels wide + const float h = 8.0f / Gfx::PassAttrs().Height; // glyph is 8 pixel tall vsParams.glyphSize = glm::vec2(w * this->textScaleX * 2.0f, h * this->textScaleY * 2.0f); Gfx::ApplyUniformBlock(vsParams); Gfx::Draw(0, this->curNumVertices); @@ -145,15 +145,15 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { { "color0", VertexFormat::UByte4N } }; const int vbufSize = this->maxNumVertices * this->vertexLayout.ByteSize(); - this->drawState.VertexBuffers[0] = Gfx::Buffer() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Size(vbufSize) .Type(BufferType::VertexBuffer) .Usage(Usage::Stream) - .Create(); + .Done()); o_assert_dbg(this->drawState.VertexBuffers[0].IsValid()); // create pipeline object - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(DbgTextShader::Desc())) .Layout(0, this->vertexLayout) .DepthWriteEnabled(false) @@ -165,7 +165,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .ColorFormat(setup.ColorFormat) .DepthFormat(setup.DepthFormat) .SampleCount(setup.SampleCount) - .Create(); + .Done()); // convert the KC85/4 font into 8bpp image data const int numChars = 128; @@ -194,7 +194,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { } // setup texture, pixel format is 8bpp uncompressed - this->drawState.FSTexture[DbgTextShader::tex] = Gfx::Texture() + this->drawState.FSTexture[DbgTextShader::tex] = Gfx::CreateTexture(NewTextureDesc() .Type(TextureType::Texture2D) .Width(imgWidth) .Height(imgHeight) @@ -203,9 +203,9 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .MagFilter(TextureFilterMode::Nearest) .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge) - .Content(data) - .MipDataSize(0, 0, imgDataSize) - .Create(); + .MipContent(0, 0, data.Data()) + .MipSize(0, 0, data.Size()) + .Done()); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 19a627f35..006f224e2 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -13,7 +13,7 @@ using namespace _priv; namespace { struct _state { - class GfxDesc gfxDesc; + GfxDesc gfxDesc; GfxFrameInfo gfxFrameInfo; RunLoop::Id runLoopId = RunLoop::InvalidId; _priv::gfxBackend backend; @@ -21,10 +21,10 @@ namespace { }; _state* state = nullptr; } - + //------------------------------------------------------------------------------ void -Gfx::Setup(const class GfxDesc& desc) { +Gfx::Setup(const GfxDesc& desc) { o_assert_dbg(!IsValid()); state = Memory::New<_state>(); state->gfxDesc = desc; @@ -246,11 +246,11 @@ Gfx::UpdateBuffer(const Id& id, const void* data, int numBytes) { //------------------------------------------------------------------------------ void -Gfx::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs) { +Gfx::UpdateTexture(const Id& id, const ImageContent& content) { o_trace_scoped(Gfx_UpdateTexture); o_assert_dbg(IsValid()); state->gfxFrameInfo.NumUpdateTextures++; - state->backend.UpdateTexture(id, data, attrs); + state->backend.UpdateTexture(id, content); } //------------------------------------------------------------------------------ @@ -273,54 +273,30 @@ Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { state->backend.Draw(primGroup.BaseElement, primGroup.NumElements, numInstances); } -//------------------------------------------------------------------------------ -Id -Gfx::CreateTexture(const TextureDesc& desc, const void* data, int size) { - o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(desc.Locator); - if (!resId.IsValid()) { - resId = state->backend.CreateTexture(desc, data, size); - state->backend.AddResource(desc.Locator, resId); - } - return resId; -} - //------------------------------------------------------------------------------ Id Gfx::CreateTexture(const TextureDesc& desc) { - return Gfx::CreateTexture(desc, nullptr, 0); -} - -//------------------------------------------------------------------------------ -Id -Gfx::CreateTexture(const TextureDesc& desc, const MemoryBuffer& data) { - return Gfx::CreateTexture(desc, data.Data(), data.Size()); -} - -//------------------------------------------------------------------------------ -Id -Gfx::CreateBuffer(const BufferDesc& desc, const void* data, int size) { o_assert_dbg(IsValid()); Id resId = state->backend.LookupResource(desc.Locator); if (!resId.IsValid()) { - resId = state->backend.CreateBuffer(desc, data, size); + resId = state->backend.CreateTexture(desc); state->backend.AddResource(desc.Locator, resId); } return resId; } -//------------------------------------------------------------------------------ -Id -Gfx::CreateBuffer(const BufferDesc& desc) { - return Gfx::CreateBuffer(desc, nullptr, 0); -} - -//------------------------------------------------------------------------------ -Id -Gfx::CreateBuffer(const BufferDesc& desc, const MemoryBuffer& data) { - return Gfx::CreateBuffer(desc, data.Data(), data.Size()); -} - +//------------------------------------------------------------------------------ +Id +Gfx::CreateBuffer(const BufferDesc& desc) { + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(desc.Locator); + if (!resId.IsValid()) { + resId = state->backend.CreateBuffer(desc); + state->backend.AddResource(desc.Locator, resId); + } + return resId; +} + //------------------------------------------------------------------------------ Id Gfx::CreateShader(const ShaderDesc& desc) { @@ -383,30 +359,16 @@ Gfx::AllocTexture(const Locator& loc) { //------------------------------------------------------------------------------ void -Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int size) { - o_assert_dbg(IsValid()); - state->backend.InitBuffer(id, desc, data, size); -} - -//------------------------------------------------------------------------------ -void -Gfx::InitBuffer(const Id& id, const BufferDesc& desc, const MemoryBuffer& data) { - o_assert_dbg(IsValid()); - state->backend.InitBuffer(id, desc, data.Data(), data.Size()); -} - -//------------------------------------------------------------------------------ -void -Gfx::InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size) { +Gfx::InitBuffer(const Id& id, const BufferDesc& desc) { o_assert_dbg(IsValid()); - state->backend.InitTexture(id, desc, data, size); + state->backend.InitBuffer(id, desc); } //------------------------------------------------------------------------------ void -Gfx::InitTexture(const Id& id, const TextureDesc& desc, const MemoryBuffer& data) { +Gfx::InitTexture(const Id& id, const TextureDesc& desc) { o_assert_dbg(IsValid()); - state->backend.InitTexture(id, desc, data.Data(), data.Size()); + state->backend.InitTexture(id, desc); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index b3f014666..bc4734436 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -16,15 +16,8 @@ namespace Oryol { -namespace _priv { -class gfxResourceContainer; -class pipeline; -class texture; -class mesh; -} - class Gfx { -public: +public: /// setup Gfx module static void Setup(const GfxDesc& desc); /// discard Gfx module @@ -41,7 +34,7 @@ class Gfx { static void Unsubscribe(GfxEvent::HandlerId id); /// get the original render setup object - static const class GfxDesc& Desc(); + static const GfxDesc& Desc(); /// get the default frame buffer attributes static const struct DisplayAttrs& DisplayAttrs(); /// get the current render pass attributes (default or offscreen) @@ -49,17 +42,6 @@ class Gfx { /// get frame-render stats, gets reset in CommitFrame()! static const GfxFrameInfo& FrameInfo(); - /// start creating a buffer through a BufferBuilder object - static BufferBuilder Buffer(); - /// start creating a texture through a texture builder object - static TextureBuilder Texture(); - /// start creating a shader through a shader builder object - static ShaderBuilder Shader(); - /// start creating a pipeline through a pipeline builder object - static PipelineBuilder Pipeline(); - /// start creating a render pass through a pass builder object - static PassBuilder Pass(); - /// generate new resource label and push on label stack static ResourceLabel PushResourceLabel(); /// push explicit resource label on label stack @@ -69,16 +51,8 @@ class Gfx { /// create a buffer object without associated data static Id CreateBuffer(const BufferDesc& desc); - /// create a buffer object with associated data - static Id CreateBuffer(const BufferDesc& desc, const MemoryBuffer& data); - /// create a buffer object with raw pointer to associated data - static Id CreateBuffer(const BufferDesc& desc, const void* data, int size); /// create a texture object without associated data static Id CreateTexture(const TextureDesc& desc); - /// create a texture object with associated data - static Id CreateTexture(const TextureDesc& desc, const MemoryBuffer& data); - /// create a texture object with raw pointer to associated data - static Id CreateTexture(const TextureDesc& desc, const void* data, int size); /// create a shader object static Id CreateShader(const ShaderDesc& desc); /// create a pipeline object @@ -94,17 +68,13 @@ class Gfx { /// allocate a buffer resource id (async resource creation) static Id AllocBuffer(const Locator& loc); /// initialize a buffer (async resource creation) - static void InitBuffer(const Id& id, const BufferDesc& desc, const MemoryBuffer& data); - /// initialize a buffer (async resource creation) - static void InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int size); + static void InitBuffer(const Id& id, const BufferDesc& desc); /// set allocated buffer to failed resource state (async resource creation) static void FailBuffer(const Id& id); /// allocate a texture resource id (async resource creation) static Id AllocTexture(const Locator& loc); /// initialize a texture (async resource creation) - static void InitTexture(const Id& id, const TextureDesc& desc, const MemoryBuffer& data); - /// initialize a texture (async resource creation) - static void InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size); + static void InitTexture(const Id& id, const TextureDesc& desc); /// set allocated texture to failed resource state (async resource creation) static void FailTexture(const Id& id); @@ -134,7 +104,7 @@ class Gfx { /// update dynamic vertex or index data (complete replace) static void UpdateBuffer(const Id& id, const void* data, int numBytes); /// update dynamic texture image data (complete replace) - static void UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& offsetsAndSizes); + static void UpdateTexture(const Id& id, const ImageContent& content); /// submit a draw call static void Draw(int baseElement, int numElements, int numInstances=1); @@ -157,34 +127,4 @@ Gfx::ApplyUniformBlock(const T& ub) { applyUniformBlock(T::_bindShaderStage, T::_bindSlotIndex, (const uint8_t*)&ub, sizeof(ub)); } -//------------------------------------------------------------------------------ -inline BufferBuilder -Gfx::Buffer() { - return BufferBuilder(); -} - -//------------------------------------------------------------------------------ -inline TextureBuilder -Gfx::Texture() { - return TextureBuilder(); -} - -//------------------------------------------------------------------------------ -inline ShaderBuilder -Gfx::Shader() { - return ShaderBuilder(); -} - -//------------------------------------------------------------------------------ -inline PipelineBuilder -Gfx::Pipeline() { - return PipelineBuilder(); -} - -//------------------------------------------------------------------------------ -inline PassBuilder -Gfx::Pass() { - return PassBuilder(); -} - } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index b91ec7368..8dd9abe0f 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -611,69 +611,15 @@ int VertexLayout::ComponentByteOffset(int componentIndex) const { } //------------------------------------------------------------------------------ -ImageDataAttrs::ImageDataAttrs() { - for (auto& offsets : this->Offsets) { - offsets.Fill(0); +ImageContent::ImageContent() { + for (auto& ptr : this->Pointer) { + ptr.Fill(0); } - for (auto& sizes : this->Sizes) { - sizes.Fill(0); + for (auto& size : this->Size) { + size.Fill(0); } } -//------------------------------------------------------------------------------ -GfxDesc GfxDesc::Window(int width, int height, String windowTitle) { - o_assert_dbg((width > 0) && (height > 0)); - GfxDesc desc; - desc.Width = width; - desc.Height = height; - desc.Windowed = true; - desc.Title = windowTitle; - return desc; -} - -//------------------------------------------------------------------------------ -GfxDesc GfxDesc::Fullscreen(int width, int height, String windowTitle) { - o_assert_dbg((width > 0) && (height > 0)); - GfxDesc desc; - desc.Width = width; - desc.Height = height; - desc.Windowed = false; - desc.Title = windowTitle; - return desc; -} - -//------------------------------------------------------------------------------ -GfxDesc GfxDesc::WindowMSAA4(int width, int height, String windowTitle) { - GfxDesc desc = Window(width, height, windowTitle); - desc.SampleCount = 4; - return desc; -} - -//------------------------------------------------------------------------------ -GfxDesc GfxDesc::FullscreenMSAA4(int width, int height, String windowTitle) { - GfxDesc desc = Fullscreen(width, height, windowTitle); - desc.SampleCount = 4; - return desc; -} - -//------------------------------------------------------------------------------ -DisplayAttrs GfxDesc::GetDisplayAttrs() const { - DisplayAttrs attrs; - attrs.WindowWidth = this->Width; - attrs.WindowHeight = this->Height; - attrs.WindowPosX = 0; - attrs.WindowPosY = 0; - attrs.FramebufferWidth = this->Width; - attrs.FramebufferHeight = this->Height; - attrs.ColorPixelFormat = this->ColorFormat; - attrs.DepthPixelFormat = this->DepthFormat; - attrs.SampleCount = this->SampleCount; - attrs.Windowed = this->Windowed; - attrs.WindowTitle = this->Title; - attrs.SwapInterval = this->SwapInterval; - return attrs; -} - //------------------------------------------------------------------------------ GfxDesc::GfxDesc() { for (int i = 0; i < GfxResourceType::Num; i++) { @@ -682,31 +628,4 @@ GfxDesc::GfxDesc() { } } -//------------------------------------------------------------------------------ -Id BufferBuilder::Create() { - // FIXME: hmm this ContentSize vs Desc.Size thing is weird - if (this->ContentSize != 0) { - o_assert_dbg(this->ContentSize >= (this->Desc.Offset+this->Desc.Size)); - return Gfx::CreateBuffer(this->Desc, this->ContentPtr, this->ContentSize); - } - else { - return Gfx::CreateBuffer(this->Desc, this->ContentPtr, this->Desc.Size); - } -} - -//------------------------------------------------------------------------------ -Id PipelineBuilder::Create() { - return Gfx::CreatePipeline(this->Desc); -} - -//------------------------------------------------------------------------------ -Id TextureBuilder::Create() { - return Gfx::CreateTexture(this->Desc, this->ContentPtr, this->ContentSize); -} - -//------------------------------------------------------------------------------ -Id PassBuilder::Create() { - return Gfx::CreatePass(this->Desc); -} - } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 23bbf7d0f..582e7d13f 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -2,7 +2,6 @@ //------------------------------------------------------------------------------ #include "Core/Types.h" #include "Core/Assertion.h" -#include "Core/String/String.h" #include "Core/String/StringAtom.h" #include "Resource/Id.h" #include "Resource/Locator.h" @@ -754,30 +753,20 @@ class VertexLayout { different from the display setup parameters. */ struct DisplayAttrs { - /// window width (including window chrome) - int WindowWidth = 0; - /// window height (including window chrome) - int WindowHeight = 0; - /// x-position of window - int WindowPosX = 0; - /// y-position of window - int WindowPosY = 0; /// width of framebuffer associated with window - int FramebufferWidth = 0; + int Width = 0; /// height of framebuffer associated with window - int FramebufferHeight = 0; + int Height = 0; /// framebuffer pixel format - PixelFormat::Code ColorPixelFormat = PixelFormat::RGBA8; + PixelFormat::Code ColorFormat = PixelFormat::RGBA8; /// depth buffer pixel format (PixelFormat::None if no depth buffer) - PixelFormat::Code DepthPixelFormat = PixelFormat::DEPTHSTENCIL; + PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; /// number of multisample-anti-aliasing samples int SampleCount = 1; /// indicates windowed or fullscreen mode bool Windowed = true; /// vsync swap interval (0 means: no vsync) int SwapInterval = 1; - /// window title as UTF-8 - String WindowTitle; }; //------------------------------------------------------------------------------ @@ -811,19 +800,19 @@ class GfxEvent { //------------------------------------------------------------------------------ /** - @class Oryol::ImageDataAttrs - @brief describe offsets and sizes of image surfaces + @class Oryol::ImageContent + @brief describe content of image surfaces */ -class ImageDataAttrs { +class ImageContent { public: /// constructor - ImageDataAttrs(); + ImageContent(); /// pixel data mipmap image offsets - StaticArray, GfxConfig::MaxNumTextureFaces> Offsets; + StaticArray, GfxConfig::MaxNumTextureFaces> Pointer; /// pixel data mipmap image sizes - StaticArray, GfxConfig::MaxNumTextureFaces> Sizes; + StaticArray, GfxConfig::MaxNumTextureFaces> Size; }; - + //------------------------------------------------------------------------------ /** @class Oryol::GfxDesc @@ -837,16 +826,7 @@ class ImageDataAttrs { @see Gfx, DisplayAttrs */ -class GfxDesc { -public: - /// shortcut for windowed mode (with RGBA8, 24+8 stencil/depth, no MSAA) - static GfxDesc Window(int width, int height, String windowTitle); - /// shortcut for fullscreen mode (with RGBA8, 24+8 stencil/depth, no MSAA) - static GfxDesc Fullscreen(int width, int height, String windowTitle); - /// shortcut for windowed mode with 4xMSAA (with RGBA8, 24+8 stencil/depth) - static GfxDesc WindowMSAA4(int width, int height, String windowTitle); - /// shortcut for fullscreen mode with 4xMSAA (with RGBA8, 24+8 stencil/depth) - static GfxDesc FullscreenMSAA4(int width, int height, String windowTitle); +struct GfxDesc { /// canvas width int Width = 640; /// canvas height @@ -862,13 +842,13 @@ class GfxDesc { /// swap interval (0 => no vsync, default is 1) int SwapInterval = 1; /// window title - String Title = "Oryol"; + StringAtom Title = "Oryol"; /// enable to render full-res on HighDPI displays (not supported on all platforms) bool HighDPI = false; /// if true, ignore own size and instead track size of an HTML element (emscripten only) bool HtmlTrackElementSize = false; /// name of the HTML element to track (default: #canvas) - String HtmlElement = "#canvas"; + StringAtom HtmlElement = "#canvas"; /// resource pool size by resource type StaticArray ResourcePoolSize; /// resource creation throttling (max resources created async per frame) @@ -883,12 +863,98 @@ class GfxDesc { int MaxDrawCallsPerFrame = GfxConfig::DefaultMaxDrawCallsPerFrame; /// max number of ApplyDrawState per frame (only relevant on some platforms) int MaxApplyDrawStatesPerFrame = GfxConfig::DefaultMaxApplyDrawStatesPerFrame; - /// get DisplayAttrs object initialized to setup values - DisplayAttrs GetDisplayAttrs() const; /// default constructor GfxDesc(); }; - + +//------------------------------------------------------------------------------ +/** + @class Oryol::GfxDescBuilder + @ingroup Gfx + @brief builder class for GfxDesc +*/ +class GfxDescBuilder { +public: + GfxDesc Desc; + GfxDescBuilder& From(const GfxDesc& desc) { + Desc = desc; return *this; + } + GfxDescBuilder& Windowed(int width, int height, const StringAtom& title) { + Desc.Width = width; Desc.Height = height; Desc.Title = title; + return *this; + } + GfxDescBuilder& Fullscreen(int width, int height, const StringAtom& title) { + Desc.Width = width; Desc.Height = height; Desc.Windowed = false; Desc.Title = title; + return *this; + } + GfxDescBuilder& WindowedMSAA4(int width, int height, const StringAtom& title) { + Desc.Width = width; Desc.Height = height; Desc.Title = title; Desc.SampleCount = 4; + return *this; + } + GfxDescBuilder& FullscreenMSAA4(int width, int height, const StringAtom& title) { + Desc.Width = width; Desc.Height = height; Desc.Windowed = false; + Desc.SampleCount = 4; Desc.Title = title; + return *this; + } + GfxDescBuilder& Width(int width) { + Desc.Width = width; return *this; + } + GfxDescBuilder& Height(int height) { + Desc.Height = height; return *this; + } + GfxDescBuilder& ColorFormat(PixelFormat::Code fmt) { + Desc.ColorFormat = fmt; return *this; + } + GfxDescBuilder& DepthFormat(PixelFormat::Code fmt) { + Desc.DepthFormat = fmt; return *this; + } + GfxDescBuilder& SampleCount(int sampleCount) { + Desc.SampleCount = sampleCount; return *this; + } + GfxDescBuilder& Windowed() { + Desc.Windowed = true; return *this; + } + GfxDescBuilder& Fullscreen() { + Desc.Windowed = false; return *this; + } + GfxDescBuilder& SwapInterval(int interval) { + Desc.SwapInterval = interval; return *this; + } + GfxDescBuilder& Title(const StringAtom& title) { + Desc.Title = title; return *this; + } + GfxDescBuilder& HighDPI(bool highDpi) { + Desc.HighDPI = highDpi; return *this; + } + GfxDescBuilder& HtmlTrackElementSize(bool track) { + Desc.HtmlTrackElementSize = track; return *this; + } + GfxDescBuilder& HtmlElement(const StringAtom& elm) { + Desc.HtmlElement = elm; return *this; + } + GfxDescBuilder& ResourcePoolSize(GfxResourceType::Code type, int poolSize) { + Desc.ResourcePoolSize[type] = poolSize; return *this; + } + GfxDescBuilder& ResourceThrottle(GfxResourceType::Code type, int numPerFrame) { + Desc.ResourceThrottling[type] = numPerFrame; return *this; + } + GfxDescBuilder& ResourceLabelStackCapacity(int capacity) { + Desc.ResourceLabelStackCapacity = capacity; return *this; + } + GfxDescBuilder& ResourceRegistryCapacity(int capacity) { + Desc.ResourceRegistryCapacity = capacity; return *this; + } + GfxDescBuilder& GlobalUniformBufferSize(int size) { + Desc.GlobalUniformBufferSize = size; return *this; + } + const GfxDesc& Done() { + return Desc; + } +}; +inline GfxDescBuilder NewGfxDesc() { + return GfxDescBuilder(); +} + //------------------------------------------------------------------------------ /** @class Oryol::BufferDesc @@ -903,9 +969,9 @@ struct BufferDesc { /// the buffer usage Oryol::Usage::Code Usage = Usage::Immutable; /// the buffer size in bytes - int Size = 0; - /// optional byte-offset to init-data - int Offset = 0; + int Size = 0; + /// optional pointer to content + const void* Content = nullptr; /// optional native 3D-API buffers StaticArray NativeBuffers; @@ -924,8 +990,6 @@ struct BufferDesc { class BufferBuilder { public: BufferDesc Desc; - const void* ContentPtr = nullptr; - int ContentSize = 0; BufferBuilder& From(const BufferDesc& desc) { Desc = desc; return *this; } @@ -941,24 +1005,19 @@ class BufferBuilder { BufferBuilder& Size(int s) { Desc.Size = s; return *this; } - BufferBuilder& Offset(int o) { - Desc.Offset = o; return *this; + BufferBuilder& Content(const void* ptr) { + Desc.Content = ptr; return *this; } BufferBuilder& NativeBuffer(int index, intptr_t buf) { Desc.NativeBuffers[index] = buf; return *this; } - BufferBuilder& Content(const void* ptr) { - ContentPtr = ptr; - ContentSize = 0; - return *this; - } - BufferBuilder& Content(const MemoryBuffer& content) { - ContentPtr = content.Data(); - ContentSize = content.Size(); - return *this; + const BufferDesc& Done() { + return Desc; } - Id Create(); -}; +}; +inline BufferBuilder NewBufferDesc() { + return BufferBuilder(); +} //------------------------------------------------------------------------------ /** @@ -1171,8 +1230,13 @@ class PipelineBuilder { PipelineBuilder& DepthBiasClamp(float f) { Desc.DepthBiasClamp = f; return *this; } - Id Create(); -}; + const PipelineDesc& Done() { + return Desc; + } +}; +inline PipelineBuilder NewPipelineDesc() { + return PipelineBuilder(); +} //------------------------------------------------------------------------------ /** @@ -1292,7 +1356,7 @@ class TextureDesc { /// optional native textures (only on platforms which support GfxFeature::NativeTextures) StaticArray NativeTextures; /// optional image surface offsets and sizes - ImageDataAttrs ImageData; + ImageContent Content; /// default constructor TextureDesc() { @@ -1378,16 +1442,21 @@ class TextureBuilder { ContentSize = content.Size(); return *this; } - TextureBuilder& MipDataSize(int faceIndex, int mipIndex, int size) { - Desc.ImageData.Sizes[faceIndex][mipIndex] = size; + TextureBuilder& MipSize(int faceIndex, int mipIndex, int size) { + Desc.Content.Size[faceIndex][mipIndex] = size; return *this; } - TextureBuilder& MipDataOffset(int faceIndex, int mipIndex, int offset) { - Desc.ImageData.Offsets[faceIndex][mipIndex] = offset; + TextureBuilder& MipContent(int faceIndex, int mipIndex, const void* ptr) { + Desc.Content.Pointer[faceIndex][mipIndex] = ptr; return *this; } - Id Create(); -}; + const TextureDesc& Done() { + return Desc; + } +}; +inline TextureBuilder NewTextureDesc() { + return TextureBuilder(); +} //------------------------------------------------------------------------------ /** @@ -1443,8 +1512,13 @@ class PassBuilder { att.Face = faceLayerSlice; return *this; } - Id Create(); -}; + const PassDesc& Done() { + return Desc; + } +}; +inline PassBuilder NewPassDesc() { + return PassBuilder(); +} //------------------------------------------------------------------------------ /** diff --git a/code/Modules/Gfx/private/displayMgrBase.cc b/code/Modules/Gfx/private/displayMgrBase.cc index 623ad63a5..3415bfdbd 100644 --- a/code/Modules/Gfx/private/displayMgrBase.cc +++ b/code/Modules/Gfx/private/displayMgrBase.cc @@ -24,10 +24,16 @@ void displayMgrBase::SetupDisplay(const GfxDesc& desc) { o_assert(!this->displayValid); this->displayValid = true; - this->gfxDesc = desc; - this->displayAttrs = desc.GetDisplayAttrs(); - this->curFramebufferWidth = this->displayAttrs.FramebufferWidth; - this->curFramebufferHeight = this->displayAttrs.FramebufferHeight; + this->gfxDesc = desc; + this->displayAttrs.Width = desc.Width; + this->displayAttrs.Height = desc.Height; + this->displayAttrs.ColorFormat = desc.ColorFormat; + this->displayAttrs.DepthFormat = desc.DepthFormat; + this->displayAttrs.SampleCount = desc.SampleCount; + this->displayAttrs.Windowed = desc.Windowed; + this->displayAttrs.SwapInterval = desc.SwapInterval; + this->curFramebufferWidth = this->displayAttrs.Width; + this->curFramebufferHeight = this->displayAttrs.Height; } //------------------------------------------------------------------------------ @@ -43,14 +49,6 @@ displayMgrBase::IsDisplayValid() const { return this->displayValid; } -//------------------------------------------------------------------------------ -void -displayMgrBase::ModifyDisplay(const GfxDesc& desc) { - o_assert(this->displayValid); - this->displayAttrs = desc.GetDisplayAttrs(); - this->notifyEventHandlers(GfxEvent(GfxEvent::DisplayModified, this->displayAttrs)); -} - //------------------------------------------------------------------------------ /** This method is expected to process the platform specific window system @@ -61,11 +59,11 @@ displayMgrBase::ModifyDisplay(const GfxDesc& desc) { */ void displayMgrBase::ProcessSystemEvents() { - if ((this->curFramebufferWidth != this->displayAttrs.FramebufferWidth) || - (this->curFramebufferHeight != this->displayAttrs.FramebufferHeight)) { + if ((this->curFramebufferWidth != this->displayAttrs.Width) || + (this->curFramebufferHeight != this->displayAttrs.Height)) { - this->curFramebufferWidth = this->displayAttrs.FramebufferWidth; - this->curFramebufferHeight = this->displayAttrs.FramebufferHeight; + this->curFramebufferWidth = this->displayAttrs.Width; + this->curFramebufferHeight = this->displayAttrs.Height; this->notifyEventHandlers(GfxEvent(GfxEvent::DisplayModified, this->displayAttrs)); } } diff --git a/code/Modules/Gfx/private/displayMgrBase.h b/code/Modules/Gfx/private/displayMgrBase.h index c98e290c9..65df201ea 100644 --- a/code/Modules/Gfx/private/displayMgrBase.h +++ b/code/Modules/Gfx/private/displayMgrBase.h @@ -30,8 +30,6 @@ class displayMgrBase { void DiscardDisplay(); /// return true if display is currently setup bool IsDisplayValid() const; - /// modify the display settings, may not be supported on all platforms - void ModifyDisplay(const GfxDesc& setup); /// process window system events (call near start of frame) void ProcessSystemEvents(); /// present the current rendered frame diff --git a/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc b/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc index 1a7520858..1fb3a5f9c 100644 --- a/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc +++ b/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc @@ -69,13 +69,9 @@ glfwDisplayMgr::SetupDisplay(const GfxDesc& desc) { glfwGetFramebufferSize(glfwWindow, &fbWidth, &fbHeight); glfwGetWindowPos(glfwWindow, &posX, &posY); glfwGetWindowSize(glfwWindow, &width, &height); - this->displayAttrs.FramebufferWidth = fbWidth; - this->displayAttrs.FramebufferHeight = fbHeight; - this->displayAttrs.WindowPosX = posX; - this->displayAttrs.WindowPosY = posY; - this->displayAttrs.WindowWidth = width; - this->displayAttrs.WindowHeight = height; - + this->displayAttrs.Width = fbWidth; + this->displayAttrs.Height = fbHeight; + // set framebuffer size changed callback glfwSetFramebufferSizeCallback(glfwWindow, glwfFramebufferSizeChanged); } @@ -126,15 +122,9 @@ glfwDisplayMgr::glfwErrorCallback(int error, const char* desc) { //------------------------------------------------------------------------------ void glfwDisplayMgr::glwfFramebufferSizeChanged(GLFWwindow* win, int width, int height) { - - // update display attributes (ignore window-minimized) if ((width != 0) && (height != 0)) { - self->displayAttrs.FramebufferWidth = width; - self->displayAttrs.FramebufferHeight = height; - int winWidth, winHeight; - glfwGetWindowSize(glfwWindow, &winWidth, &winHeight); - self->displayAttrs.WindowWidth = winWidth; - self->displayAttrs.WindowHeight = winHeight; + self->displayAttrs.Width = width; + self->displayAttrs.Height = height; } } diff --git a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc index 843665b99..8d8392024 100644 --- a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc @@ -418,11 +418,11 @@ static sg_feature convertFeature(GfxFeature::Code f) { } //------------------------------------------------------------------------------ -static void convertBufferDesc(const BufferDesc& src, sg_buffer_desc& dst, const void* data) { +static void convertBufferDesc(const BufferDesc& src, sg_buffer_desc& dst) { dst.size = src.Size; dst.type = convertBufferType(src.Type); dst.usage = convertUsage(src.Usage); - dst.content = (uint8_t*)data + src.Offset; + dst.content = src.Content; o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); #if ORYOL_OPENGL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { @@ -438,7 +438,7 @@ static void convertBufferDesc(const BufferDesc& src, sg_buffer_desc& dst, const } //------------------------------------------------------------------------------ -static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst, const void* data) { +static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst) { dst.type = convertTextureType(src.Type); dst.render_target = src.RenderTarget; dst.width = src.Width; @@ -457,9 +457,9 @@ static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst, const o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); for (int f = 0; f < GfxConfig::MaxNumTextureFaces; f++) { for (int m = 0; m < GfxConfig::MaxNumTextureMipMaps; m++) { - if (src.ImageData.Sizes[f][m] > 0) { - dst.content.subimage[f][m].ptr = (uint8_t*)data + src.ImageData.Offsets[f][m]; - dst.content.subimage[f][m].size = src.ImageData.Sizes[f][m]; + if (src.Content.Pointer[f][m] && (src.Content.Size[f][m] > 0)) { + dst.content.subimage[f][m].ptr = src.Content.Pointer[f][m]; + dst.content.subimage[f][m].size = src.Content.Size[f][m]; } } } @@ -645,11 +645,10 @@ sokolGfxBackend::PopResourceLabel() { //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreateBuffer(const BufferDesc& desc, const void* data, int dataSize) { +sokolGfxBackend::CreateBuffer(const BufferDesc& desc) { o_assert_dbg(this->isValid); - o_assert_dbg((data == nullptr) || (desc.Size+desc.Offset) <= dataSize); sg_buffer_desc sgDesc = { }; - convertBufferDesc(desc, sgDesc, data); + convertBufferDesc(desc, sgDesc); return makeId(GfxResourceType::Buffer, sg_make_buffer(&sgDesc).id); } @@ -662,11 +661,10 @@ sokolGfxBackend::AllocBuffer() { //------------------------------------------------------------------------------ void -sokolGfxBackend::InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int dataSize) { +sokolGfxBackend::InitBuffer(const Id& id, const BufferDesc& desc) { o_assert_dbg(this->isValid); - o_assert_dbg((data == nullptr) || (desc.Size+desc.Offset) <= dataSize); sg_buffer_desc sgDesc = { }; - convertBufferDesc(desc, sgDesc, data); + convertBufferDesc(desc, sgDesc); sg_init_buffer(makeBufferId(id), &sgDesc); } @@ -679,10 +677,10 @@ sokolGfxBackend::FailBuffer(const Id& id) { //------------------------------------------------------------------------------ Id -sokolGfxBackend::CreateTexture(const TextureDesc& desc, const void* data, int size) { +sokolGfxBackend::CreateTexture(const TextureDesc& desc) { o_assert_dbg(this->isValid); sg_image_desc sgDesc = { }; - convertTextureDesc(desc, sgDesc, data); + convertTextureDesc(desc, sgDesc); return makeId(GfxResourceType::Texture, sg_make_image(&sgDesc).id); } @@ -695,10 +693,10 @@ sokolGfxBackend::AllocTexture() { //------------------------------------------------------------------------------ void -sokolGfxBackend::InitTexture(const Id& id, const TextureDesc& desc, const void* data, int size) { +sokolGfxBackend::InitTexture(const Id& id, const TextureDesc& desc) { o_assert_dbg(this->isValid); sg_image_desc sgDesc = { }; - convertTextureDesc(desc, sgDesc, data); + convertTextureDesc(desc, sgDesc); sg_init_image(makeImageId(id), &sgDesc); } @@ -888,25 +886,24 @@ sokolGfxBackend::UpdateBuffer(const Id& id, const void* data, int numBytes) { //------------------------------------------------------------------------------ void -sokolGfxBackend::UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs) { +sokolGfxBackend::UpdateTexture(const Id& id, const ImageContent& srcContent) { o_assert_dbg(this->isValid); - o_assert_dbg(data); o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); o_assert_dbg(GfxConfig::MaxNumTextureMipMaps <= SG_MAX_MIPMAPS); - sg_image_content content = { }; + sg_image_content sgContent = { }; for (int faceIndex = 0; faceIndex < GfxConfig::MaxNumTextureFaces; faceIndex++) { for (int mipIndex = 0; mipIndex < GfxConfig::MaxNumTextureMipMaps; mipIndex++) { - if (attrs.Sizes[faceIndex][mipIndex] > 0) { - auto& dst = content.subimage[faceIndex][mipIndex]; - dst.size = attrs.Sizes[faceIndex][mipIndex]; - dst.ptr = ((uint8_t*)data)+attrs.Offsets[faceIndex][mipIndex]; + if (srcContent.Pointer[faceIndex][mipIndex] && (srcContent.Size[faceIndex][mipIndex] > 0)) { + auto& dst = sgContent.subimage[faceIndex][mipIndex]; + dst.size = srcContent.Size[faceIndex][mipIndex]; + dst.ptr = srcContent.Pointer[faceIndex][mipIndex]; } else { break; } } } - sg_update_image(makeImageId(id), &content); + sg_update_image(makeImageId(id), &sgContent); } //------------------------------------------------------------------------------ @@ -923,7 +920,7 @@ sokolGfxBackend::BeginPass(const Id& passId, const PassAction* action) { else { // default framebuffer const DisplayAttrs& attrs = this->displayManager.GetDisplayAttrs(); - sg_begin_default_pass(&sgAction, attrs.FramebufferWidth, attrs.FramebufferHeight); + sg_begin_default_pass(&sgAction, attrs.Width, attrs.Height); } } diff --git a/code/Modules/Gfx/private/sokol/sokolGfxBackend.h b/code/Modules/Gfx/private/sokol/sokolGfxBackend.h index 3dc25a695..7c0f740f1 100644 --- a/code/Modules/Gfx/private/sokol/sokolGfxBackend.h +++ b/code/Modules/Gfx/private/sokol/sokolGfxBackend.h @@ -49,9 +49,9 @@ class sokolGfxBackend { ResourceLabel PopResourceLabel(); /// create (alloc+init) a buffer resource - Id CreateBuffer(const BufferDesc& desc, const void* data, int dataSize); + Id CreateBuffer(const BufferDesc& desc); /// create (alloc+init) an texture resource - Id CreateTexture(const TextureDesc& desc, const void* data, int dataSize); + Id CreateTexture(const TextureDesc& desc); /// create (alloc+init) a shader resource Id CreateShader(const ShaderDesc& desc); /// create (alloc+init) a pipeline resource @@ -64,9 +64,9 @@ class sokolGfxBackend { /// allocate a new texture id Id AllocTexture(); /// initialize a buffer - void InitBuffer(const Id& id, const BufferDesc& desc, const void* data, int dataSize); + void InitBuffer(const Id& id, const BufferDesc& desc); /// initialize a texture - void InitTexture(const Id& id, const TextureDesc& desc, const void* data, int dataSize); + void InitTexture(const Id& id, const TextureDesc& desc); /// set allocated, non-initialized buffer to failed resource state void FailBuffer(const Id& id); /// set allocated, non-initialized texture to failed resource state @@ -82,7 +82,7 @@ class sokolGfxBackend { /// update dynamic buffer data void UpdateBuffer(const Id& id, const void* data, int numBytes); /// update dynamic texture data - void UpdateTexture(const Id& id, const void* data, const ImageDataAttrs& attrs); + void UpdateTexture(const Id& id, const ImageContent& content); /// begin rendering pass void BeginPass(const Id& passId, const PassAction* action); diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index a4898ea03..bf86c04da 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -34,8 +34,7 @@ OryolMain(ArrayTextureApp); //------------------------------------------------------------------------------ AppState::Code ArrayTextureApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(800, 512, "Array Texture Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 512, "Array Texture Sample").Done()); Dbg::Setup(); // if array textures are not supported, only show a warning @@ -64,7 +63,7 @@ ArrayTextureApp::OnInit() { } } } - this->drawState.FSTexture[Shader::tex] = Gfx::Texture() + this->drawState.FSTexture[Shader::tex] = Gfx::CreateTexture(NewTextureDesc() .Type(TextureType::TextureArray) .Width(width) .Height(height) @@ -72,9 +71,9 @@ ArrayTextureApp::OnInit() { .Format(PixelFormat::RGBA8) .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) - .MipDataSize(0, 0, sizeof(data)) - .Content(data, sizeof(data)) - .Create(); + .MipSize(0, 0, sizeof(data)) + .MipContent(0, 0, data) + .Done()); // build a cube mesh auto shape = ShapeBuilder::New() @@ -83,27 +82,21 @@ ArrayTextureApp::OnInit() { .Box(1.0f, 1.0f, 1.0f, 1) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // ...and a pipeline object to complete the DrawState - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); // setup a projection matrix with the right aspect ratio - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); return App::OnInit(); @@ -170,8 +163,8 @@ ArrayTextureApp::notSupported() { #else const char* msg = "This demo needs array texture support\n"; #endif - uint8_t x = uint8_t((Gfx::DisplayAttrs().FramebufferWidth/16 - std::strlen(msg))/2); - uint8_t y = uint8_t(Gfx::DisplayAttrs().FramebufferHeight/16/2); + uint8_t x = uint8_t((Gfx::DisplayAttrs().Width/16 - std::strlen(msg))/2); + uint8_t y = uint8_t((Gfx::DisplayAttrs().Height/16)/2); Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index e63ba2f45..436488c6b 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -4,7 +4,6 @@ #include "Pre.h" #include "Core/Main.h" #include "Gfx/Gfx.h" -#include "Assets/Gfx/MeshBuilder.h" #include "shaders.h" using namespace Oryol; @@ -26,23 +25,24 @@ OryolMain(BlendTestApp); AppState::Code BlendTestApp::OnInit() { // setup rendering system - auto gfxDesc = GfxDesc::Window(1024, 768, "Oryol Blend Sample"); - gfxDesc.ResourcePoolSize[GfxResourceType::Pipeline] = 512; - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc() + .Windowed(1024, 768, "Oryol Blend Sample") + .ResourcePoolSize(GfxResourceType::Pipeline, 512) + .Done()); // create pipeline object for a patterned background const float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->bgDrawState.VertexBuffers[0] = Gfx::Buffer() + this->bgDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(bgVertices)) .Content(bgVertices) - .Create(); - this->bgDrawState.Pipeline = Gfx::Pipeline() + .Done()); + this->bgDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(BGShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) - .Create(); + .Done()); // setup a triangle mesh and shader float triVertices[] = { @@ -51,13 +51,13 @@ BlendTestApp::OnInit() { 0.05f, -0.05f, 0.5f, 0.0f, 0.75f, 0.0f, 0.75f, -0.05f, -0.05f, 0.5f, 0.0f, 0.0f, 0.75f, 0.75f }; - this->triVBuf = Gfx::Buffer() + this->triVBuf = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(triVertices)) .Content(triVertices) - .Create(); + .Done()); // setup one draw state for each blend factor combination - auto ps = Gfx::Pipeline() + auto ps = NewPipelineDesc() .Shader(Gfx::CreateShader(TriShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float3 }, @@ -70,7 +70,7 @@ BlendTestApp::OnInit() { for (uint32_t x = 0; x < BlendFactor::Num; x++) { ps.BlendSrcFactorRGB((BlendFactor::Code)x); ps.BlendDstFactorRGB((BlendFactor::Code)y); - this->pipelines[y][x] = ps.Create(); + this->pipelines[y][x] = Gfx::CreatePipeline(ps.Done()); } } return App::OnInit(); diff --git a/code/Samples/BlendTest/CMakeLists.txt b/code/Samples/BlendTest/CMakeLists.txt index 58df7bec0..b5e280d07 100644 --- a/code/Samples/BlendTest/CMakeLists.txt +++ b/code/Samples/BlendTest/CMakeLists.txt @@ -2,6 +2,6 @@ fips_begin_app(BlendTest windowed) fips_vs_warning_level(3) fips_files(BlendTest.cc) oryol_shader(shaders.glsl) - fips_deps(Gfx Assets) + fips_deps(Gfx) oryol_add_web_sample(BlendTest "Test BlendState implementation" "emscripten,android" BlendTest.jpg "BlendTest/BlendTest.cc") fips_end_app() diff --git a/code/Samples/Clear/Clear.cc b/code/Samples/Clear/Clear.cc index cb69e5ca3..db6296e6e 100644 --- a/code/Samples/Clear/Clear.cc +++ b/code/Samples/Clear/Clear.cc @@ -21,7 +21,7 @@ OryolMain(ClearApp); //------------------------------------------------------------------------------ AppState::Code ClearApp::OnInit() { - Gfx::Setup(GfxDesc::Window(400, 300, "Oryol Clear Sample")); + Gfx::Setup(NewGfxDesc().Windowed(400, 300, "Oryol Clear Sample").Done()); return App::OnInit(); } diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index 5b06868ab..f77daad43 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -43,7 +43,7 @@ DDSCubeMapApp::OnInit() { IO::Setup(ioSetup); // setup rendering system - Gfx::Setup(GfxDesc::Window(600, 400, "Oryol DXT Cube Map Sample")); + Gfx::Setup(NewGfxDesc().Windowed(600, 400, "Oryol DXT Cube Map Sample").Done()); // create resources StringAtom texPath; @@ -53,13 +53,13 @@ DDSCubeMapApp::OnInit() { else { texPath = "tex:romechurch_dxt1.dds"; } - this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(Gfx::Texture() + this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(NewTextureDesc() .Locator(texPath) .MinFilter(TextureFilterMode::LinearMipmapLinear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge) - .Desc); + .Done()); auto shape = ShapeBuilder::New() .Positions("in_pos", VertexFormat::Float3) @@ -68,24 +68,18 @@ DDSCubeMapApp::OnInit() { .Sphere(1.0f, 36, 20) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .Create(); + .Done()); // setup projection and view matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index 1cc5c1e8c..d29245e3b 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -45,8 +45,7 @@ DDSTextureLoadingApp::OnInit() { IO::Setup(ioSetup); // setup rendering system - auto gfxDesc = GfxDesc::Window(600, 400, "Oryol DDS Loading Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().Windowed(600, 400, "Oryol DDS Loading Sample").Done()); // setup resources static const char *paths[NumTextures] = { @@ -68,13 +67,13 @@ DDSTextureLoadingApp::OnInit() { "tex:lok_bgr565.dds", }; for (int i = 0; i < NumTextures; i++) { - this->textures[i] = TextureLoader::Load(Gfx::Texture() + this->textures[i] = TextureLoader::Load(NewTextureDesc() .Locator(paths[i]) .MinFilter(TextureFilterMode::LinearMipmapLinear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge) - .Desc); + .Done()); } auto shape = ShapeBuilder::New() @@ -84,23 +83,17 @@ DDSTextureLoadingApp::OnInit() { .Plane(1.0f, 1.0f, 4) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .Create(); + .Done()); - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index 54c23a474..245238658 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -30,14 +30,14 @@ OryolMain(DebugTextApp); //------------------------------------------------------------------------------ AppState::Code DebugTextApp::OnInit() { - Gfx::Setup(GfxDesc::Window(800, 600, "Oryol DebugText Sample")); + Gfx::Setup(NewGfxDesc().Windowed(800, 600, "Oryol DebugText Sample").Done()); DbgSetup dbgSetup; dbgSetup.TextScaleX = 2.0f; dbgSetup.TextScaleY = 2.0f; Dbg::Setup(dbgSetup); - this->width = Gfx::DisplayAttrs().FramebufferWidth / 16; - this->height = Gfx::DisplayAttrs().FramebufferHeight / 16; + this->width = Gfx::DisplayAttrs().Width / 16; + this->height = Gfx::DisplayAttrs().Height / 16; this->buffer = (uint8_t*) Memory::Alloc(this->width * this->height); Memory::Clear(this->buffer, this->width * this->height); diff --git a/code/Samples/DrawCallPerf/DrawCallPerf.cc b/code/Samples/DrawCallPerf/DrawCallPerf.cc index 5f7ae2f9f..2cd3b4f55 100644 --- a/code/Samples/DrawCallPerf/DrawCallPerf.cc +++ b/code/Samples/DrawCallPerf/DrawCallPerf.cc @@ -49,9 +49,10 @@ OryolMain(DrawCallPerfApp); AppState::Code DrawCallPerfApp::OnInit() { // setup rendering system - GfxDesc gfxDesc = GfxDesc::Window(800, 500, "Oryol DrawCallPerf Sample"); - gfxDesc.GlobalUniformBufferSize = 1024 * 1024 * 32; - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc() + .Windowed(800, 500, "Oryol DrawCallPerf Sample") + .GlobalUniformBufferSize(1024 * 1024 * 32) + .Done()); Dbg::Setup(); Input::Setup(); @@ -65,25 +66,19 @@ DrawCallPerfApp::OnInit() { .Sphere(0.05f, 3, 2) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .CullFaceEnabled(true) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .Create(); + .Done()); // setup projection and view matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::lookAt(glm::vec3(0.0f, 2.5f, 0.0f), glm::vec3(0.0f, 0.0f, -10.0f), glm::vec3(0.0f, 1.0f, 0.0f)); this->model = glm::mat4(); diff --git a/code/Samples/FullscreenQuad/FullscreenQuad.cc b/code/Samples/FullscreenQuad/FullscreenQuad.cc index 93332b30c..8eace426f 100644 --- a/code/Samples/FullscreenQuad/FullscreenQuad.cc +++ b/code/Samples/FullscreenQuad/FullscreenQuad.cc @@ -22,17 +22,17 @@ OryolMain(FullscreenQuadApp); //------------------------------------------------------------------------------ AppState::Code FullscreenQuadApp::OnInit() { - Gfx::Setup(GfxDesc::Window(600, 600, "Oryol Fullscreen Quad Sample")); + Gfx::Setup(NewGfxDesc().Windowed(600, 600, "Oryol Fullscreen Quad Sample").Done()); const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->drawState.VertexBuffers[0] = Gfx::Buffer() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(quadVertices)) .Content(quadVertices) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + .Done()); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) - .Create(); + .Done()); this->params.time = 0.0f; return App::OnInit(); } diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index e34761204..0d674c28a 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -55,7 +55,7 @@ OryolMain(GPUParticlesApp); AppState::Code GPUParticlesApp::OnInit() { // setup rendering system - Gfx::Setup(GfxDesc::Window(800, 500, "Oryol GPU Particles Sample")); + Gfx::Setup(NewGfxDesc().Windowed(800, 500, "Oryol GPU Particles Sample").Done()); Dbg::Setup(); // check required extensions @@ -79,43 +79,43 @@ GPUParticlesApp::OnInit() { // the 2 ping/pong particle state textures and render passes for (int i = 0; i < 2; i++) { - this->particleBuffer[i].texture = Gfx::Texture() + this->particleBuffer[i].texture = Gfx::CreateTexture(NewTextureDesc() .RenderTarget(true) .Width(ParticleBufferWidth) .Height(ParticleBufferHeight) .Format(PixelFormat::RGBA32F) .MinFilter(TextureFilterMode::Nearest) .MagFilter(TextureFilterMode::Nearest) - .Create(); - this->particleBuffer[i].pass = Gfx::Pass() + .Done()); + this->particleBuffer[i].pass = Gfx::CreatePass(NewPassDesc() .ColorAttachment(0, this->particleBuffer[i].texture) - .Create(); + .Done()); } // a fullscreen mesh for the particle init- and update-shaders const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - Id quadVbuf = Gfx::Buffer() + Id quadVbuf = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(quadVertices)) .Content(quadVertices) - .Create(); + .Done()); this->initParticles.VertexBuffers[0] = quadVbuf; this->updParticles.VertexBuffers[0] = quadVbuf; // particle initialization and update resources - auto particlePipDesc = Gfx::Pipeline() + PipelineDesc particlePipDesc = NewPipelineDesc() .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) .ColorFormat(PixelFormat::RGBA32F) .DepthFormat(PixelFormat::None) - .Desc; - this->initParticles.Pipeline = Gfx::Pipeline() + .Done(); + this->initParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(particlePipDesc) .Shader(Gfx::CreateShader(InitShader::Desc())) - .Create(); - this->updParticles.Pipeline = Gfx::Pipeline() + .Done()); + this->updParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(particlePipDesc) .Shader(Gfx::CreateShader(UpdateShader::Desc())) - .Create(); + .Done()); // the static geometry of a single particle is at mesh slot 0 const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); @@ -127,14 +127,8 @@ GPUParticlesApp::OnInit() { .Sphere(0.05f, 3, 2) .Build(); this->shapePrimGroup = shape.PrimitiveGroups[0]; - this->drawParticles.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawParticles.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); + this->drawParticles.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawParticles.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // a instancing vertex buffer with the particleIds at vertex buffer slot 1 { @@ -143,15 +137,15 @@ GPUParticlesApp::OnInit() { for (int i = 0; i < MaxNumParticles; i++) { particleIdData[i] = (float) i; } - this->drawParticles.VertexBuffers[1] = Gfx::Buffer() + this->drawParticles.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() .Size(particleIdSize) .Content(particleIdData) - .Create(); + .Done()); Memory::Free(particleIdData); } // ...and the pipeline object for instanced particle rendering - this->drawParticles.Pipeline = Gfx::Pipeline() + this->drawParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(DrawShader::Desc())) .Layout(1, VertexLayout::New() @@ -160,11 +154,11 @@ GPUParticlesApp::OnInit() { .CullFaceEnabled(true) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .Create(); + .Done()); // the static projection matrix - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 50.0f); // setup initial shader params diff --git a/code/Samples/GamepadExplorer/GamepadExplorer.cc b/code/Samples/GamepadExplorer/GamepadExplorer.cc index 344348b45..9d72c57bf 100644 --- a/code/Samples/GamepadExplorer/GamepadExplorer.cc +++ b/code/Samples/GamepadExplorer/GamepadExplorer.cc @@ -49,7 +49,7 @@ const char* axisNames[GamepadAxis::NumAxes] = { //------------------------------------------------------------------------------ AppState::Code GamepadExplorerApp::OnInit() { - Gfx::Setup(GfxDesc::Window(800, 600, "Test Gamepads")); + Gfx::Setup(NewGfxDesc().Windowed(800, 600, "Test Gamepads").Done()); Dbg::Setup(); Input::Setup(); return App::OnInit(); diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index 5468674e4..d44ee33e1 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -43,22 +43,21 @@ OryolMain(InfiniteSpheresApp); AppState::Code InfiniteSpheresApp::OnInit() { // setup rendering system - auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Oryol Infinite Spheres Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Oryol Infinite Spheres Sample").Done()); // create 2 ping-pong offscreen render targets, only need 1 depth buffer const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; const int rtWidth = 512; const int rtHeight = 512; - Id rtDepth = Gfx::Texture() + Id rtDepth = Gfx::CreateTexture(NewTextureDesc() .RenderTarget(true) .Width(rtWidth) .Height(rtHeight) .Format(rtDepthFormat) - .Create(); + .Done()); for (int i = 0; i < 2; i++) { - this->passInfo[i].texture = Gfx::Texture() + this->passInfo[i].texture = Gfx::CreateTexture(NewTextureDesc() .RenderTarget(true) .Width(rtWidth) .Height(rtHeight) @@ -67,11 +66,11 @@ InfiniteSpheresApp::OnInit() { .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::Repeat) .WrapV(TextureWrapMode::Repeat) - .Create(); - this->passInfo[i].pass = Gfx::Pass() + .Done()); + this->passInfo[i].pass = Gfx::CreatePass(NewPassDesc() .ColorAttachment(0, this->passInfo[i].texture) .DepthStencilAttachment(rtDepth) - .Create(); + .Done()); } // create a sphere shape mesh @@ -82,8 +81,8 @@ InfiniteSpheresApp::OnInit() { .Sphere(0.75f, 72, 40) .Build(); this->primGroup = sphere.PrimitiveGroups[0]; - Id vbuf = Gfx::Buffer().From(sphere.VertexBufferDesc).Content(sphere.Data).Create(); - Id ibuf = Gfx::Buffer().From(sphere.IndexBufferDesc).Content(sphere.Data).Create(); + Id vbuf = Gfx::CreateBuffer(sphere.VertexBufferDesc); + Id ibuf = Gfx::CreateBuffer(sphere.IndexBufferDesc); this->offscreenDrawState.VertexBuffers[0] = vbuf; this->offscreenDrawState.IndexBuffer = ibuf; this->displayDrawState.VertexBuffers[0] = vbuf; @@ -93,25 +92,25 @@ InfiniteSpheresApp::OnInit() { Id shd = Gfx::CreateShader(Shader::Desc()); // create draw state for rendering into default render target - this->displayDrawState.Pipeline = Gfx::Pipeline() + this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(sphere.PipelineDesc) .Shader(shd) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); - this->offscreenDrawState.Pipeline = Gfx::Pipeline() + .SampleCount(Gfx::Desc().SampleCount) + .Done()); + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(sphere.PipelineDesc) .Shader(shd) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) .DepthFormat(rtDepthFormat) - .Create(); + .Done()); // setup static transform matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->offscreenProj = glm::perspective(glm::radians(45.0f), 1.0f, 0.01f, 20.0f); this->displayProj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 20.0f); this->view = glm::mat4(); diff --git a/code/Samples/Instancing/Instancing.cc b/code/Samples/Instancing/Instancing.cc index cf67e1f56..5bca949ad 100644 --- a/code/Samples/Instancing/Instancing.cc +++ b/code/Samples/Instancing/Instancing.cc @@ -46,7 +46,7 @@ OryolMain(InstancingApp); AppState::Code InstancingApp::OnInit() { // setup rendering system - Gfx::Setup(GfxDesc::Window(800, 500, "Oryol Instancing Sample")); + Gfx::Setup(NewGfxDesc().Windowed(800, 500, "Oryol Instancing Sample").Done()); Dbg::Setup(); Input::Setup(); @@ -65,23 +65,17 @@ InstancingApp::OnInit() { .Sphere(0.05f, 3, 2) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // create dynamic instance data vertex buffer on slot 1 - this->drawState.VertexBuffers[1] = Gfx::Buffer() + this->drawState.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() .Size(MaxNumParticles * VertexFormat::ByteSize(VertexFormat::Float4)) .Usage(Usage::Stream) - .Create(); + .Done()); // setup pipeline state for instanced rendering - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(1, VertexLayout::New() @@ -90,11 +84,11 @@ InstancingApp::OnInit() { .CullFaceEnabled(true) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .Create(); + .Done()); // setup projection and view matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); return App::OnInit(); diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 0f9bed5ba..8c699ed0f 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -49,8 +49,7 @@ OryolMain(MultipleRenderTargetApp); //------------------------------------------------------------------------------ AppState::Code MultipleRenderTargetApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(DisplayWidth, DisplayHeight, "Oryol MRT Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(DisplayWidth, DisplayHeight, "Oryol MRT Sample").Done()); Dbg::Setup(); // if rendering backend doesn't support MRT, drop out now @@ -64,7 +63,7 @@ MultipleRenderTargetApp::OnInit() { const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTHSTENCIL; const int rtSampleCount = 4; - auto rtDesc = Gfx::Texture() + auto rtDesc = NewTextureDesc() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(OffscreenWidth) @@ -73,19 +72,19 @@ MultipleRenderTargetApp::OnInit() { .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) .SampleCount(rtSampleCount) - .Desc; + .Done(); Id rtColor0 = Gfx::CreateTexture(rtDesc); Id rtColor1 = Gfx::CreateTexture(rtDesc); Id rtColor2 = Gfx::CreateTexture(rtDesc); - Id rtDepth = Gfx::Texture().From(rtDesc).Format(rtDepthFormat).Create(); + Id rtDepth = Gfx::CreateTexture(NewTextureDesc().From(rtDesc).Format(rtDepthFormat).Done()); // create a render pass with the 3 color- and 1 depth-attachment - this->mrtPass = Gfx::Pass() + this->mrtPass = Gfx::CreatePass(NewPassDesc() .ColorAttachment(0, rtColor0) .ColorAttachment(1, rtColor1) .ColorAttachment(2, rtColor2) .DepthStencilAttachment(rtDepth) - .Create(); + .Done()); // a pass-action to clear the multiple-render-target this->mrtPassAction @@ -103,18 +102,12 @@ MultipleRenderTargetApp::OnInit() { .Build(); this->cubePrimGroup = shapes.PrimitiveGroups[0]; this->planePrimGroup = shapes.PrimitiveGroups[1]; - Id shapesVertexBuffer = Gfx::Buffer() - .From(shapes.VertexBufferDesc) - .Content(shapes.Data) - .Create(); - Id shapesIndexBuffer = Gfx::Buffer() - .From(shapes.IndexBufferDesc) - .Content(shapes.Data) - .Create(); + Id shapesVertexBuffer = Gfx::CreateBuffer(shapes.VertexBufferDesc); + Id shapesIndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); // create a draw state to render a cube into the // offscreen render targets (this is where the MRT rendering happens) - this->cubeDrawState.Pipeline = Gfx::Pipeline() + this->cubeDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .DepthWriteEnabled(true) @@ -124,25 +117,25 @@ MultipleRenderTargetApp::OnInit() { .DepthFormat(rtDepthFormat) .SampleCount(rtSampleCount) .MRTCount(3) - .Create(); + .Done()); this->cubeDrawState.VertexBuffers[0] = shapesVertexBuffer; this->cubeDrawState.IndexBuffer = shapesIndexBuffer; // create a quad-mesh for displaying the 3 render target textures on screen const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - Id quadVertexBuffer = Gfx::Buffer() + Id quadVertexBuffer = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(quadVertices)) .Content(quadVertices) - .Create(); - Id quadPipeline = Gfx::Pipeline() + .Done()); + Id quadPipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(QuadShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) .DepthWriteEnabled(false) .DepthCmpFunc(CompareFunc::Always) .CullFaceEnabled(false) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); this->rt0DrawState.Pipeline = quadPipeline; this->rt0DrawState.VertexBuffers[0] = quadVertexBuffer; this->rt0DrawState.FSTexture[QuadShader::tex] = rtColor0; @@ -155,14 +148,14 @@ MultipleRenderTargetApp::OnInit() { // and finally create a draw state to render a plane to the // main display which samples the 3 offscreen render targets - this->displayDrawState.Pipeline = Gfx::Pipeline() + this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(DisplayShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(false) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); this->displayDrawState.VertexBuffers[0] = shapesVertexBuffer; this->displayDrawState.IndexBuffer = shapesIndexBuffer; this->displayDrawState.FSTexture[DisplayShader::redTex] = rtColor0; @@ -212,7 +205,7 @@ MultipleRenderTargetApp::OnRunning() { // render the final plane which samples from all 3 offscreen rendertarget textures const auto& rpAttrs = Gfx::PassAttrs(); - Gfx::ApplyViewPort(0, 0, rpAttrs.FramebufferWidth, rpAttrs.FramebufferHeight); + Gfx::ApplyViewPort(0, 0, rpAttrs.Width, rpAttrs.Height); Gfx::ApplyDrawState(this->displayDrawState); Gfx::ApplyUniformBlock(this->displayParams); Gfx::Draw(this->planePrimGroup); @@ -247,8 +240,8 @@ MultipleRenderTargetApp::notSupported() { #else const char* msg = "This demo needs MultipleRenderTarget\n"; #endif - uint8_t x = uint8_t((Gfx::DisplayAttrs().FramebufferWidth/16 - std::strlen(msg))/2); - uint8_t y = uint8_t(Gfx::DisplayAttrs().FramebufferHeight/16/2); + uint8_t x = uint8_t((Gfx::DisplayAttrs().Width/16 - std::strlen(msg))/2); + uint8_t y = uint8_t((Gfx::DisplayAttrs().Height/16)/2); Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 9eb830135..433ed8c60 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -49,8 +49,7 @@ OryolMain(NativeTextureApp); AppState::Code NativeTextureApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Oryol NativeTexture Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Oryol NativeTexture Sample").Done()); Dbg::Setup(DbgSetup::MSAA4()); // FIXME: D3D and Metal @@ -65,14 +64,8 @@ NativeTextureApp::OnInit() { .Box(1.0f, 1.0f, 1.0f, 4) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); #if ORYOL_OPENGL // the interesting part, create 2 GL textures and hand them to the @@ -97,7 +90,7 @@ NativeTextureApp::OnInit() { // push a new resource label and keep it for later since we'll have // to cleanup the resource ourselves Gfx::PushResourceLabel(); - this->drawState.FSTexture[0] = Gfx::Texture() + this->drawState.FSTexture[0] = Gfx::CreateTexture(NewTextureDesc() .Type(TextureType::Texture2D) .Width(TexWidth) .Height(TexHeight) @@ -105,21 +98,21 @@ NativeTextureApp::OnInit() { .Usage(Usage::Stream) .NativeTexture(0, this->glTextures[0]) .NativeTexture(1, this->glTextures[1]) - .Create(); + .Done()); this->texLabel = Gfx::PopResourceLabel(); #endif // ...and finally the pipeline object - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); @@ -148,10 +141,10 @@ NativeTextureApp::OnRunning() { } } this->counter++; - ImageDataAttrs updAttrs; - updAttrs.Offsets[0][0] = 0; - updAttrs.Sizes[0][0] = sizeof(this->Buffer); - Gfx::UpdateTexture(this->drawState.FSTexture[0], this->Buffer, updAttrs); + ImageContent imgContent; + imgContent.Pointer[0][0] = this->Buffer; + imgContent.Size[0][0] = sizeof(this->Buffer); + Gfx::UpdateTexture(this->drawState.FSTexture[0], imgContent); Gfx::BeginPass(); Gfx::ApplyDrawState(this->drawState); @@ -191,8 +184,8 @@ NativeTextureApp::computeMVP(const glm::vec3& pos) { AppState::Code NativeTextureApp::notSupported() { const char* msg = "This demo needs GL\n"; - int x = (Gfx::DisplayAttrs().FramebufferWidth/16 - int(std::strlen(msg)))/2; - int y = Gfx::DisplayAttrs().FramebufferHeight/16/2; + int x = (Gfx::DisplayAttrs().Width/16 - int(std::strlen(msg)))/2; + int y = (Gfx::DisplayAttrs().Height/16)/2; Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(uint8_t(x), uint8_t(y)); diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index d48c02607..dbff6586d 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -31,7 +31,7 @@ OryolMain(PackedNormalsApp); //------------------------------------------------------------------------------ AppState::Code PackedNormalsApp::OnInit() { - Gfx::Setup(GfxDesc::WindowMSAA4(600, 400, "Oryol Packed Normals Sample")); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Oryol Packed Normals Sample").Done()); auto shapes = ShapeBuilder::New() .Positions("position", VertexFormat::Float3) @@ -42,26 +42,20 @@ PackedNormalsApp::OnInit() { .Torus(0.3f, 0.5f, 20, 36) .Plane(1.5f, 1.5f, 10) .Build(); - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shapes.VertexBufferDesc) - .Content(shapes.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shapes.IndexBufferDesc) - .Content(shapes.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) .SampleCount(4) - .Create(); + .Done()); this->primGroups = std::move(shapes.PrimitiveGroups); - float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + float fbWidth = (const float) Gfx::DisplayAttrs().Width; + float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index 696493a35..b5c624857 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -40,18 +40,18 @@ OryolMain(PrimitiveTypesApp); //------------------------------------------------------------------------------ Id createIndexBuffer(const uint16_t* data, int dataSize) { - return Gfx::Buffer() + return Gfx::CreateBuffer(NewBufferDesc() .Size(dataSize) .Content(data) .Type(BufferType::IndexBuffer) .Usage(Usage::Immutable) - .Create(); + .Done()); } //------------------------------------------------------------------------------ Id createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const VertexLayout& layout, Id shd, int sampleCount) { - return Gfx::Pipeline() + return Gfx::CreatePipeline(NewPipelineDesc() .Shader(shd) .Layout(0, layout) .DepthWriteEnabled(true) @@ -59,14 +59,13 @@ createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const Ve .SampleCount(sampleCount) .IndexType(indexType) .PrimitiveType(primType) - .Create(); + .Done()); } //------------------------------------------------------------------------------ AppState::Code PrimitiveTypesApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(640, 480, "Oryol PrimitiveTypes Test"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(640, 480, "Oryol PrimitiveTypes Test").Done()); Dbg::Setup(DbgSetup::MSAA4()); Input::Setup(); @@ -95,7 +94,7 @@ PrimitiveTypesApp::OnInit() { } } auto meshResult = meshBuilder.Build(); - Id vbuf = Gfx::CreateBuffer(meshResult.VertexBufferDesc, meshResult.Data); + Id vbuf = Gfx::CreateBuffer(meshResult.VertexBufferDesc); // a single shader used by all pipeline objects Id shd = Gfx::CreateShader(Shader::Desc()); @@ -106,7 +105,7 @@ PrimitiveTypesApp::OnInit() { // point list (only need a pipeline object, no index buffer) { auto& ds = this->drawStates[PrimitiveType::Points]; - ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, gfxDesc.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); ds.VertexBuffers[0] = vbuf; } @@ -126,7 +125,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Lines]; - ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -145,7 +144,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::LineStrip]; - ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -168,7 +167,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Triangles]; - ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -193,13 +192,13 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::TriangleStrip]; - ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, gfxDesc.SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); this->params.psize = 4.0f; diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index 1042b7675..a3f098f9a 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -21,7 +21,7 @@ OryolMain(QuadApp); //------------------------------------------------------------------------------ AppState::Code QuadApp::OnInit() { - Gfx::Setup(GfxDesc::Window(400, 400, "Oryol Quad Sample")); + Gfx::Setup(NewGfxDesc().Windowed(400, 400, "Oryol Quad Sample").Done()); // create vertex buffer const float vertices[4 * 7] = { @@ -31,32 +31,32 @@ QuadApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, }; - this->drawState.VertexBuffers[0] = Gfx::Buffer() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Type(BufferType::VertexBuffer) .Size(sizeof(vertices)) .Content(vertices) - .Create(); + .Done()); // create index buffer const uint16_t indices[2 * 3] = { 0, 1, 2, // first triangle 0, 2, 3, // second triangle }; - this->drawState.IndexBuffer = Gfx::Buffer() + this->drawState.IndexBuffer = Gfx::CreateBuffer(NewBufferDesc() .Type(BufferType::IndexBuffer) .Size(sizeof(indices)) .Content(indices) - .Create(); + .Done()); // create shader and pipeline-state-object - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float3 }, { "in_color", VertexFormat::Float4 } }) .IndexType(IndexType::UInt16) - .Create(); + .Done()); return App::OnInit(); } diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index df81a676b..3ac1b0644 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -66,14 +66,13 @@ OryolMain(RenderToCubeMapApp); //------------------------------------------------------------------------------ AppState::Code RenderToCubeMapApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Render To CubeMap"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Render To CubeMap").Done()); Input::Setup(); // create a cubemap which will serve as render target const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; - this->cubeMap = Gfx::Texture() + this->cubeMap = Gfx::CreateTexture(NewTextureDesc() .Type(TextureType::TextureCube) .RenderTarget(true) .Width(1024) @@ -81,23 +80,23 @@ RenderToCubeMapApp::OnInit() { .Format(rtColorFormat) .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) - .Create(); + .Done()); // ...and a matching 2D depth buffer render target - Id rtDepth = Gfx::Texture() + Id rtDepth = Gfx::CreateTexture(NewTextureDesc() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(1024) .Height(1024) .Format(rtDepthFormat) - .Create(); + .Done()); // create 6 render passes, one per cubemap face for (int faceIndex = 0; faceIndex < NumFaces; faceIndex++) { - this->passes[faceIndex] = Gfx::Pass() + this->passes[faceIndex] = Gfx::CreatePass(NewPassDesc() .ColorAttachment(0, this->cubeMap, 0, faceIndex) .DepthStencilAttachment(rtDepth) - .Create(); + .Done()); } // mesh, shaders and pipelines to render color shapes @@ -111,45 +110,39 @@ RenderToCubeMapApp::OnInit() { .Sphere(3.5f, 72, 48, true) // this is the big center sphere .Build(); this->primGroups = std::move(shapes.PrimitiveGroups); - this->shapesVertexBuffer = Gfx::Buffer() - .From(shapes.VertexBufferDesc) - .Content(shapes.Data) - .Create(); - this->shapesIndexBuffer = Gfx::Buffer() - .From(shapes.IndexBufferDesc) - .Content(shapes.Data) - .Create(); - this->displayShapesPipeline = Gfx::Pipeline() + this->shapesVertexBuffer = Gfx::CreateBuffer(shapes.VertexBufferDesc); + this->shapesIndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); + this->displayShapesPipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(ShapeShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); - this->offscreenShapesPipeline = Gfx::Pipeline() + .SampleCount(Gfx::Desc().SampleCount) + .Done()); + this->offscreenShapesPipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(ShapeShaderWithGamma::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) .DepthFormat(rtDepthFormat) - .Create(); + .Done()); // create a sphere where the env-shapes reflect and refract in this->sphereDrawState.VertexBuffers[0] = this->shapesVertexBuffer; this->sphereDrawState.IndexBuffer = this->shapesIndexBuffer; this->sphereDrawState.FSTexture[SphereShader::tex] = this->cubeMap; - this->sphereDrawState.Pipeline = Gfx::Pipeline() + this->sphereDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(SphereShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); // setup projection matrix for main view - float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + float fbWidth = (const float) Gfx::DisplayAttrs().Width; + float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->displayProj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); // setup projection matrix for cubemap rendering diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index 5de2ffb85..3876df6eb 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -52,19 +52,20 @@ ResourceStressApp::OnInit() { IO::Setup(ioSetup); // setup Gfx system - auto gfxDesc = GfxDesc::Window(600, 400, "Oryol Resource Stress Test"); - gfxDesc.ResourcePoolSize[GfxResourceType::Buffer] = 2 * (MaxNumObjects + 32); - gfxDesc.ResourcePoolSize[GfxResourceType::Texture] = MaxNumObjects + 32; - gfxDesc.ResourcePoolSize[GfxResourceType::Pipeline] = MaxNumObjects + 32; - gfxDesc.ResourcePoolSize[GfxResourceType::Shader] = 4; - Gfx::Setup(gfxDesc); - + Gfx::Setup(NewGfxDesc() + .Windowed(600, 400, "Oryol Resource Stress Test") + .ResourcePoolSize(GfxResourceType::Buffer, 2 * (MaxNumObjects + 32)) + .ResourcePoolSize(GfxResourceType::Texture, MaxNumObjects + 32) + .ResourcePoolSize(GfxResourceType::Pipeline, MaxNumObjects + 32) + .ResourcePoolSize(GfxResourceType::Shader, 4) + .Done()); + // setup the shader that is used by all objects this->shader = Gfx::CreateShader(Shader::Desc()); // setup matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); @@ -130,28 +131,22 @@ ResourceStressApp::createObjects() { .Box(0.1f, 0.1f, 0.1f, 1) .Build(); obj.primGroup = shape.PrimitiveGroups[0]; - obj.drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - obj.drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - obj.drawState.Pipeline = Gfx::Pipeline() + obj.drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + obj.drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + obj.drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(this->shader) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) - .Create(); - obj.drawState.FSTexture[Shader::tex] = TextureLoader::Load(Gfx::Texture() + .Done()); + obj.drawState.FSTexture[Shader::tex] = TextureLoader::Load(NewTextureDesc() .Locator(Locator::NonShared("tex:lok_dxt1.dds")) .MinFilter(TextureFilterMode::LinearMipmapLinear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge) - .Desc); + .Done()); glm::vec3 pos = glm::ballRand(2.0f) + glm::vec3(0.0f, 0.0f, -6.0f); obj.modelTransform = glm::translate(glm::mat4(), pos); this->objects.Add(obj); diff --git a/code/Samples/Sensors/Sensors.cc b/code/Samples/Sensors/Sensors.cc index 386801241..2cdce54fd 100644 --- a/code/Samples/Sensors/Sensors.cc +++ b/code/Samples/Sensors/Sensors.cc @@ -34,7 +34,7 @@ OryolMain(SensorsApp); //------------------------------------------------------------------------------ AppState::Code SensorsApp::OnInit() { - Gfx::Setup(GfxDesc::Window(800, 400, "Oryol Device Sensor Sample")); + Gfx::Setup(NewGfxDesc().Windowed(800, 400, "Oryol Device Sensor Sample").Done()); Dbg::Setup(); Input::Setup(); @@ -45,25 +45,19 @@ SensorsApp::OnInit() { .Box(2.0, 2.0, 2.0, 1) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) - .Create(); + .Done()); // setup transform matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.1f, 100.0f); return App::OnInit(); } diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index 7d1d48c84..d282f9fd2 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -43,8 +43,7 @@ OryolMain(SeparateBuffersApp); AppState::Code SeparateBuffersApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Separate Buffers"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Separate Buffers").Done()); // create a cube mesh with positions only, this will be placed // into the first vertex buffer bind slot @@ -53,14 +52,8 @@ SeparateBuffersApp::OnInit() { .Box(1.0f, 1.0f, 1.0f, 1) .Build(); this->cubePrimGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // create 3 meshes with only color data static const int NumVertices = 24; @@ -70,25 +63,25 @@ SeparateBuffersApp::OnInit() { for (int vi = 0; vi < NumVertices; vi++) { colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); } - this->colorBuffers[i] = Gfx::Buffer() + this->colorBuffers[i] = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(colorVertices)) .Content(colorVertices) - .Create(); + .Done()); } // create shader and pipeline, the position data vertex Layout // goes into the first layout slot, and the color data vertex layout into the second slot - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(1, { { "in_color", VertexFormat::Float3 } }) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index 1e7d18cd1..a0281bb8e 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -31,10 +31,7 @@ OryolMain(ShapeApp); //------------------------------------------------------------------------------ AppState::Code ShapeApp::OnInit() { - - auto gfxDesc = GfxDesc::WindowMSAA4(600, 400, "Oryol Shapes Sample"); - Gfx::Setup(gfxDesc); - + Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Oryol Shapes Sample").Done()); auto shapes = ShapeBuilder::New() .RandomColors(true) .Positions("position", VertexFormat::Float3) @@ -45,25 +42,19 @@ ShapeApp::OnInit() { .Torus(0.3f, 0.5f, 20, 36) .Plane(1.5f, 1.5f, 10) .Build(); - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shapes.VertexBufferDesc) - .Content(shapes.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shapes.IndexBufferDesc) - .Content(shapes.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); this->primGroups = std::move(shapes.PrimitiveGroups); - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index a81d4a250..7ce4173d1 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -38,16 +38,14 @@ OryolMain(SimpleRenderTargetApp); //------------------------------------------------------------------------------ AppState::Code SimpleRenderTargetApp::OnInit() { - - auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "Oryol Simple Render Target Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Oryol Simple Render Target Sample").Done()); // create a color render target texture and compatible depth render target // texture for offscreen rendering const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; const int rtSampleCount = Gfx::QueryFeature(GfxFeature::MSAARenderTargets) ? 4 : 1; - auto rtCommon = Gfx::Texture() + auto rtCommon = NewTextureDesc() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(128) @@ -57,13 +55,13 @@ SimpleRenderTargetApp::OnInit() { .MagFilter(TextureFilterMode::Linear) .MinFilter(TextureFilterMode::Linear) .SampleCount(rtSampleCount) - .Desc; - Id rtColorTexture = Gfx::Texture().From(rtCommon).Format(rtColorFormat).Create(); - Id rtDepthTexture = Gfx::Texture().From(rtCommon).Format(rtDepthFormat).Create(); - this->renderPass = Gfx::Pass() + .Done(); + Id rtColorTexture = Gfx::CreateTexture(NewTextureDesc().From(rtCommon).Format(rtColorFormat).Done()); + Id rtDepthTexture = Gfx::CreateTexture(NewTextureDesc().From(rtCommon).Format(rtDepthFormat).Done()); + this->renderPass = Gfx::CreatePass(NewPassDesc() .ColorAttachment(0, rtColorTexture) .DepthStencilAttachment(rtDepthTexture) - .Create(); + .Done()); // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) @@ -73,15 +71,9 @@ SimpleRenderTargetApp::OnInit() { .Torus(0.3f, 0.5f, 20, 36) .Build(); this->donutPrimGroup = donut.PrimitiveGroups[0]; - this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(donut.VertexBufferDesc) - .Content(donut.Data) - .Create(); - this->offscreenDrawState.IndexBuffer = Gfx::Buffer() - .From(donut.IndexBufferDesc) - .Content(donut.Data) - .Create(); - this->offscreenDrawState.Pipeline = Gfx::Pipeline() + this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(donut.VertexBufferDesc); + this->offscreenDrawState.IndexBuffer = Gfx::CreateBuffer(donut.IndexBufferDesc); + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(donut.PipelineDesc) .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .DepthWriteEnabled(true) @@ -89,7 +81,7 @@ SimpleRenderTargetApp::OnInit() { .ColorFormat(rtColorFormat) .DepthFormat(rtDepthFormat) .SampleCount(rtSampleCount) - .Create(); + .Done()); // create a sphere mesh, shader and pipeline object for rendering to display auto sphere = ShapeBuilder::New() @@ -99,26 +91,20 @@ SimpleRenderTargetApp::OnInit() { .Sphere(0.5f, 72, 40) .Build(); this->spherePrimGroup = sphere.PrimitiveGroups[0]; - this->displayDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(sphere.VertexBufferDesc) - .Content(sphere.Data) - .Create(); - this->displayDrawState.IndexBuffer = Gfx::Buffer() - .From(sphere.IndexBufferDesc) - .Content(sphere.Data) - .Create(); - this->displayDrawState.Pipeline = Gfx::Pipeline() + this->displayDrawState.VertexBuffers[0] = Gfx::CreateBuffer(sphere.VertexBufferDesc); + this->displayDrawState.IndexBuffer = Gfx::CreateBuffer(sphere.IndexBufferDesc); + this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(sphere.PipelineDesc) .Shader(Gfx::CreateShader(DisplayShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); this->displayDrawState.FSTexture[DisplayShader::tex] = rtColorTexture; // setup static transform matrices - float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + float fbWidth = (const float) Gfx::DisplayAttrs().Width; + float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->offscreenProj = glm::perspective(glm::radians(45.0f), 1.0f, 0.01f, 20.0f); this->displayProj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->view = glm::mat4(); diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index d7a31e8e5..5a8464fcd 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -67,11 +67,12 @@ OryolMain(TestInputApp); //------------------------------------------------------------------------------ AppState::Code TestInputApp::OnInit() { - auto gfxDesc = GfxDesc::Window(800, 400, "Oryol Input Test Sample"); - gfxDesc.HighDPI = true; - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc() + .Windowed(800, 400, "Oryol Input Test Sample") + .HighDPI(true) + .Done()); Dbg::Setup(); - if (Gfx::DisplayAttrs().WindowWidth > 800) { + if (Gfx::DisplayAttrs().Width > 800) { Dbg::TextScale(2.0f, 2.0f); } @@ -97,24 +98,18 @@ TestInputApp::OnInit() { .Box(1.0f, 1.0f, 1.0f, 1) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) - .Create(); + .Done()); - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); this->polar = glm::vec2(glm::radians(45.0f), glm::radians(45.0f)); this->distance = 6.0f; diff --git a/code/Samples/TextureFloat/TextureFloat.cc b/code/Samples/TextureFloat/TextureFloat.cc index 5db559322..0fc441b43 100644 --- a/code/Samples/TextureFloat/TextureFloat.cc +++ b/code/Samples/TextureFloat/TextureFloat.cc @@ -33,8 +33,7 @@ OryolMain(TextureFloatApp); AppState::Code TextureFloatApp::OnInit() { // setup rendering system - auto gfxDesc = GfxDesc::Window(512, 512, "Oryol Float Texture Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().Windowed(512, 512, "Oryol Float Texture Sample").Done()); Dbg::Setup(); // check required extensions @@ -45,46 +44,46 @@ TextureFloatApp::OnInit() { // create an offscreen float render target, same size as display, // configure texture sampler with point-filtering const PixelFormat::Code rtColorFormat = PixelFormat::RGBA32F; - Id rt = Gfx::Texture() + Id rt = Gfx::CreateTexture(NewTextureDesc() .RenderTarget(true) - .Width(gfxDesc.Width) - .Height(gfxDesc.Height) + .Width(Gfx::Desc().Width) + .Height(Gfx::Desc().Height) .Format(rtColorFormat) .MinFilter(TextureFilterMode::Nearest) .MagFilter(TextureFilterMode::Nearest) - .Create(); - this->renderPass = Gfx::Pass().ColorAttachment(0, rt).Create(); + .Done()); + this->renderPass = Gfx::CreatePass(NewPassDesc().ColorAttachment(0, rt).Done()); this->renderPassAction.DontCareColor(0); // fullscreen mesh, we'll reuse this several times const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->offscreenDrawState.VertexBuffers[0] = Gfx::Buffer() + this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(quadVertices)) .Content(quadVertices) - .Create(); + .Done()); this->copyDrawState.VertexBuffers[0] = this->offscreenDrawState.VertexBuffers[0]; // setup draw state for offscreen rendering to float render target - this->offscreenDrawState.Pipeline = Gfx::Pipeline() + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .Layout(0, {{"in_pos", VertexFormat::Float2}}) .PrimitiveType(PrimitiveType::TriangleStrip) .ColorFormat(rtColorFormat) .DepthFormat(PixelFormat::None) - .Create(); + .Done()); this->offscreenFSParams.time = 0.0f; // fullscreen-copy resources - this->copyDrawState.Pipeline = Gfx::Pipeline() + this->copyDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(CopyShader::Desc())) .Layout(0, {{"in_pos", VertexFormat::Float2}}) .PrimitiveType(PrimitiveType::TriangleStrip) - .Create(); + .Done()); this->copyDrawState.FSTexture[CopyShader::tex] = rt; // setup static transform matrices - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 5.0f); this->view = glm::mat4(); diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index 3f68b69fe..3707b2ff3 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -22,7 +22,7 @@ OryolMain(TriangleApp); AppState::Code TriangleApp::OnInit() { // setup rendering system - Gfx::Setup(GfxDesc::Window(400, 400, "Oryol Triangle Sample")); + Gfx::Setup(NewGfxDesc().Windowed(400, 400, "Oryol Triangle Sample").Done()); // create a mesh with vertex data from memory const float vertices[] = { @@ -31,19 +31,19 @@ TriangleApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f , 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, }; - this->drawState.VertexBuffers[0] = Gfx::Buffer() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(vertices)) .Content(vertices) - .Create(); - + .Done()); + // create shader and pipeline-state-object - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, { { "position", VertexFormat::Float3 }, { "color0", VertexFormat::Float4 } }) - .Create(); + .Done()); return App::OnInit(); } diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index edd3d3465..6f7e4208b 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -38,37 +38,37 @@ OryolMain(VertexTextureApp); AppState::Code VertexTextureApp::OnInit() { // setup rendering system - Gfx::Setup(GfxDesc::WindowMSAA4(800, 600, "Oryol Vertex Texture Sample")); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Oryol Vertex Texture Sample").Done()); Dbg::Setup(DbgSetup::MSAA4()); // FIXME: need a way to check number of vertex texture units // create RGBA offscreen render pass which holds the plasma - Id plasmaTex = Gfx::Texture() + Id plasmaTex = Gfx::CreateTexture(NewTextureDesc() .RenderTarget(true) .Width(256) .Height(256) .Format(PixelFormat::RGBA8) .MinFilter(TextureFilterMode::Nearest) .MagFilter(TextureFilterMode::Nearest) - .Create(); - this->plasmaRenderPass = Gfx::Pass() + .Done()); + this->plasmaRenderPass = Gfx::CreatePass(NewPassDesc() .ColorAttachment(0, plasmaTex) - .Create(); + .Done()); // setup draw state for offscreen rendering to float render target const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->plasmaDrawState.VertexBuffers[0] = Gfx::Buffer() + this->plasmaDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() .Size(sizeof(quadVertices)) .Content(quadVertices) - .Create(); - this->plasmaDrawState.Pipeline = Gfx::Pipeline() + .Done()); + this->plasmaDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .Shader(Gfx::CreateShader(PlasmaShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) .ColorFormat(PixelFormat::RGBA8) .DepthFormat(PixelFormat::None) - .Create(); + .Done()); // draw state for a 256x256 plane auto shape = ShapeBuilder::New() @@ -77,25 +77,19 @@ VertexTextureApp::OnInit() { .Plane(3.0f, 3.0f, 255) .Build(); this->planePrimGroup = shape.PrimitiveGroups[0]; - this->planeDrawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->planeDrawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->planeDrawState.Pipeline = Gfx::Pipeline() + this->planeDrawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->planeDrawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->planeDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(PlaneShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(4) - .Create(); + .Done()); this->planeDrawState.VSTexture[PlaneShader::tex] = plasmaTex; - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 10.0f); this->view = glm::lookAt(glm::vec3(0.0f, 1.5f, 0.0f), glm::vec3(0.0f, 0.0f, -3.0f), glm::vec3(0.0f, 1.0f, 0.0f)); this->plasmaFSParams.time = 0.0f; diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index e6b80ec59..916b64e26 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -33,8 +33,7 @@ OryolMain(VolumeTextureApp); //------------------------------------------------------------------------------ AppState::Code VolumeTextureApp::OnInit() { - auto gfxDesc = GfxDesc::WindowMSAA4(800, 600, "3D Texture Sample"); - Gfx::Setup(gfxDesc); + Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "3D Texture Sample").Done()); Dbg::Setup(); // if 3D textures not supported show a warning later during rendering @@ -61,7 +60,7 @@ VolumeTextureApp::OnInit() { } p.z += 1.0f / dim; } - this->drawState.FSTexture[Shader::tex] = Gfx::Texture() + this->drawState.FSTexture[Shader::tex] = Gfx::CreateTexture(NewTextureDesc() .Type(TextureType::Texture3D) .Width(dim) .Height(dim) @@ -69,9 +68,9 @@ VolumeTextureApp::OnInit() { .Format(PixelFormat::RGBA8) .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) - .MipDataSize(0, 0, sizeof(data)) - .Content(data, sizeof(data)) - .Create(); + .MipSize(0, 0, sizeof(data)) + .MipContent(0, 0, data) + .Done()); // create a cube which will be the hull geometry for raycasting through the 3D texture auto shape = ShapeBuilder::New() @@ -79,25 +78,19 @@ VolumeTextureApp::OnInit() { .Box(1.0f, 1.0f, 1.0f, 1) .Build(); this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::Buffer() - .From(shape.VertexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.IndexBuffer = Gfx::Buffer() - .From(shape.IndexBufferDesc) - .Content(shape.Data) - .Create(); - this->drawState.Pipeline = Gfx::Pipeline() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(gfxDesc.SampleCount) - .Create(); + .SampleCount(Gfx::Desc().SampleCount) + .Done()); // setup a projection matrix with the right aspect ratio - const float fbWidth = (const float) Gfx::DisplayAttrs().FramebufferWidth; - const float fbHeight = (const float) Gfx::DisplayAttrs().FramebufferHeight; + const float fbWidth = (const float) Gfx::DisplayAttrs().Width; + const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); return App::OnInit(); @@ -157,8 +150,8 @@ VolumeTextureApp::notSupported() { #else const char* msg = "This demo needs 3D texture support\n"; #endif - uint8_t x = uint8_t((Gfx::DisplayAttrs().FramebufferWidth/16 - std::strlen(msg))/2); - uint8_t y = uint8_t(Gfx::DisplayAttrs().FramebufferHeight/16/2); + uint8_t x = uint8_t((Gfx::DisplayAttrs().Width/16 - std::strlen(msg))/2); + uint8_t y = uint8_t((Gfx::DisplayAttrs().Height/16)/2); Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); From b677c1ba71ef1e1622452f2d7515f94ec8ebe951 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 31 Jan 2018 16:15:44 +0100 Subject: [PATCH 46/91] fix win/d3d11DisplayMgr for recent Gfx module changes --- .../Gfx/private/d3d11/d3d11DisplayMgr.cc | 10 +++---- .../Gfx/private/d3d11/d3d11DisplayMgr.h | 2 +- .../Gfx/private/d3d11/winDisplayMgr.cc | 28 +++++++++++-------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc index 1c4104ef2..f187c00a0 100644 --- a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc +++ b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc @@ -37,7 +37,7 @@ d3d11DisplayMgr::SetupDisplay(const GfxDesc& desc) { winDisplayMgr::SetupDisplay(desc, " (D3D11)"); this->createDeviceAndSwapChain(); const DisplayAttrs& attrs = this->displayAttrs; - this->createDefaultRenderTarget(attrs.FramebufferWidth, attrs.FramebufferHeight); + this->createDefaultRenderTarget(attrs.Width, attrs.Height); } //------------------------------------------------------------------------------ @@ -70,8 +70,8 @@ d3d11DisplayMgr::createDeviceAndSwapChain() { #endif Memory::Clear(&dxgiSwapChainDesc, sizeof(dxgiSwapChainDesc)); - dxgiSwapChainDesc.BufferDesc.Width = this->displayAttrs.FramebufferWidth; - dxgiSwapChainDesc.BufferDesc.Height = this->displayAttrs.FramebufferHeight; + dxgiSwapChainDesc.BufferDesc.Width = this->displayAttrs.Width; + dxgiSwapChainDesc.BufferDesc.Height = this->displayAttrs.Height; dxgiSwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; dxgiSwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; dxgiSwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; @@ -200,8 +200,8 @@ d3d11DisplayMgr::onWindowDidResize() { // resize the DXGI framebuffer (this requires that all state is unbound) if (this->dxgiSwapChain) { - const int newWidth = this->displayAttrs.FramebufferWidth; - const int newHeight = this->displayAttrs.FramebufferHeight; + const int newWidth = this->displayAttrs.Width; + const int newHeight = this->displayAttrs.Height; this->destroyDefaultRenderTarget(); DXGI_FORMAT d3d11Fmt = DXGI_FORMAT_R8G8B8A8_UNORM; diff --git a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h index b3772727e..a75d8720b 100644 --- a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h +++ b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.h @@ -5,7 +5,7 @@ @ingroup _priv @brief display manager implementation for D3D11 */ -#include "Gfx/private/winDisplayMgr.h" +#include "Gfx/private/d3d11/winDisplayMgr.h" // d3d11 forward declarations struct IDXGISwapChain; diff --git a/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc b/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc index e986a7b52..d94b7240e 100644 --- a/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc +++ b/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc @@ -80,12 +80,10 @@ winDisplayMgr::SetupDisplay(const GfxDesc& desc, const char* windowTitlePostfix) // get actual size and update display attrs int actWidth, actHeight; this->winGetWindowSize(&actWidth, &actHeight); - this->displayAttrs.WindowWidth = int(actWidth / this->windowScale); - this->displayAttrs.WindowHeight = int(actHeight / this->windowScale); - this->displayAttrs.FramebufferWidth = int(this->displayAttrs.WindowWidth * this->contentScale); - this->displayAttrs.FramebufferHeight = int(this->displayAttrs.WindowHeight * this->contentScale); - this->curFramebufferWidth = this->displayAttrs.FramebufferWidth; - this->curFramebufferHeight = this->displayAttrs.FramebufferHeight; + this->displayAttrs.Width = int(this->displayAttrs.Width * this->contentScale); + this->displayAttrs.Height = int(this->displayAttrs.Height * this->contentScale); + this->curFramebufferWidth = this->displayAttrs.Width; + this->curFramebufferHeight = this->displayAttrs.Height; } //------------------------------------------------------------------------------ @@ -314,15 +312,21 @@ winDisplayMgr::checkWindowResize() { const int crHeight = (curClientRect.bottom - curClientRect.top); const int windowWidth = crWidth / this->windowScale; const int windowHeight = crHeight / this->windowScale; + int fbWidth = (crWidth * this->contentScale) / this->windowScale; + int fbHeight = (crHeight * this->contentScale) / this->windowScale; + // width and height will be 0 if the windows is minimized, set the size to one in this case + if (fbWidth == 0) { + fbWidth = 1; + } + if (fbHeight == 0) { + fbHeight = 1; + } // NOTE: this method is not called when minimized, or restored from minimized - if ((windowWidth != this->displayAttrs.WindowWidth) || (windowHeight != this->displayAttrs.WindowHeight)) { - - this->displayAttrs.WindowWidth = windowWidth; - this->displayAttrs.WindowHeight = windowHeight; - this->displayAttrs.FramebufferWidth = int(windowWidth * this->contentScale); - this->displayAttrs.FramebufferHeight = int(windowHeight * this->contentScale); + if ((fbWidth != this->displayAttrs.Width) || (fbHeight != this->displayAttrs.Height)) { + this->displayAttrs.Width = fbWidth; + this->displayAttrs.Height = fbHeight; this->inputFramebufferSize(crWidth, crHeight); this->inputWindowSize(crWidth, crHeight); this->onWindowDidResize(); From 7f1fb7adc652901275dd6a789d8ac5fb6fcae57d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 16 Apr 2018 19:45:00 +0200 Subject: [PATCH 47/91] New approach to Gfx Desc structure setup (only GfxDesc for now) --- code/Modules/Gfx/GfxTypes.cc | 8 - code/Modules/Gfx/GfxTypes.h | 289 +++++++++--------- code/Modules/Gfx/private/displayMgrBase.cc | 16 +- code/Modules/Gfx/private/gl/glfwDisplayMgr.cc | 22 +- .../Gfx/private/sokol/sokolGfxBackend.cc | 17 +- .../Input/private/android/androidInputMgr.cc | 2 +- code/Samples/ArrayTexture/ArrayTexture.cc | 4 +- code/Samples/BlendTest/BlendTest.cc | 9 +- code/Samples/Clear/Clear.cc | 2 +- code/Samples/DDSCubeMap/DDSCubeMap.cc | 54 ++-- .../DDSTextureLoading/DDSTextureLoading.cc | 50 +-- code/Samples/DebugText/DebugText.cc | 2 +- code/Samples/DrawCallPerf/DrawCallPerf.cc | 47 +-- code/Samples/FullscreenQuad/FullscreenQuad.cc | 20 +- code/Samples/GPUParticles/GPUParticles.cc | 130 ++++---- .../GamepadExplorer/GamepadExplorer.cc | 2 +- .../InfiniteSpheres/InfiniteSpheres.cc | 114 +++---- code/Samples/Instancing/Instancing.cc | 54 ++-- .../MultipleRenderTarget.cc | 6 +- code/Samples/NativeTexture/NativeTexture.cc | 4 +- code/Samples/PackedNormals/PackedNormals.cc | 36 +-- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 12 +- code/Samples/Quad/Quad.cc | 46 +-- .../RenderToCubeMap/RenderToCubeMap.cc | 6 +- code/Samples/ResourceStress/ResourceStress.cc | 7 +- code/Samples/Sensors/Sensors.cc | 36 +-- .../SeparateBuffers/SeparateBuffers.cc | 62 ++-- code/Samples/Shapes/Shapes.cc | 48 +-- .../SimpleRenderTarget/SimpleRenderTarget.cc | 4 +- code/Samples/TestInput/TestInput.cc | 37 ++- code/Samples/TextureFloat/TextureFloat.cc | 66 ++-- code/Samples/Triangle/Triangle.cc | 30 +- code/Samples/VertexTexture/VertexTexture.cc | 84 ++--- code/Samples/VolumeTexture/VolumeTexture.cc | 4 +- 34 files changed, 655 insertions(+), 675 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 8dd9abe0f..0c60b39e5 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -620,12 +620,4 @@ ImageContent::ImageContent() { } } -//------------------------------------------------------------------------------ -GfxDesc::GfxDesc() { - for (int i = 0; i < GfxResourceType::Num; i++) { - ResourcePoolSize[i] = GfxConfig::DefaultResourcePoolSize; - ResourceThrottling[i] = 0; // unthrottled - } -} - } // namespace Oryol diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 582e7d13f..052b5025e 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -812,7 +812,7 @@ class ImageContent { /// pixel data mipmap image sizes StaticArray, GfxConfig::MaxNumTextureFaces> Size; }; - + //------------------------------------------------------------------------------ /** @class Oryol::GfxDesc @@ -827,134 +827,123 @@ class ImageContent { @see Gfx, DisplayAttrs */ struct GfxDesc { - /// canvas width - int Width = 640; - /// canvas height - int Height = 400; - /// color pixel format - PixelFormat::Code ColorFormat = PixelFormat::RGBA8; - /// depth pixel format - PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; - /// MSAA samples (2, 4, 8... no MSAA: 1) - int SampleCount = 1; - /// windowed vs Fullscreen - bool Windowed = true; - /// swap interval (0 => no vsync, default is 1) - int SwapInterval = 1; - /// window title - StringAtom Title = "Oryol"; - /// enable to render full-res on HighDPI displays (not supported on all platforms) - bool HighDPI = false; - /// if true, ignore own size and instead track size of an HTML element (emscripten only) - bool HtmlTrackElementSize = false; - /// name of the HTML element to track (default: #canvas) - StringAtom HtmlElement = "#canvas"; - /// resource pool size by resource type - StaticArray ResourcePoolSize; - /// resource creation throttling (max resources created async per frame) - StaticArray ResourceThrottling; - /// initial resource label stack capacity - int ResourceLabelStackCapacity = 256; - /// initial resource registry capacity - int ResourceRegistryCapacity = 256; - /// size of the global uniform buffer (only relevant on some platforms) - int GlobalUniformBufferSize = GfxConfig::DefaultGlobalUniformBufferSize; - /// max number of drawcalls per frame (only relevant on some platforms) - int MaxDrawCallsPerFrame = GfxConfig::DefaultMaxDrawCallsPerFrame; - /// max number of ApplyDrawState per frame (only relevant on some platforms) - int MaxApplyDrawStatesPerFrame = GfxConfig::DefaultMaxApplyDrawStatesPerFrame; - /// default constructor - GfxDesc(); + /// init with content of anther GfxDesc object + GfxDesc& From(const GfxDesc& rhs) { + *this = rhs; return *this; + } + GfxDesc& Width(int w) { + width = w; return *this; + } + int Width() const { + return width; + } + GfxDesc& Height(int h) { + height = h; return *this; + } + int Height() const { + return height; + } + GfxDesc& ColorFormat(PixelFormat::Code fmt) { + colorFormat = fmt; return *this; + } + PixelFormat::Code ColorFormat() const { + return colorFormat; + } + GfxDesc& DepthFormat(PixelFormat::Code fmt) { + depthFormat = fmt; return *this; + } + PixelFormat::Code DepthFormat() const { + return depthFormat; + } + GfxDesc& SampleCount(int c) { + sampleCount = c; return *this; + } + int SampleCount() const { + return sampleCount; + } + GfxDesc& Windowed(bool b) { + windowed = b; return *this; + } + bool Windowed() const { + return windowed; + } + GfxDesc& SwapInterval(int i) { + swapInterval = i; return *this; + } + int SwapInterval() const { + return swapInterval; + } + GfxDesc& Title(const StringAtom& t) { + title = t; return *this; + } + const StringAtom& Title() const { + return title; + } + GfxDesc& HighDPI(bool b) { + highDPI = b; return *this; + } + bool HighDPI() const { + return highDPI; + } + GfxDesc& HtmlTrackElementSize(bool b) { + htmlTrackElementSize = b; return *this; + } + bool HtmlTrackElementSize() const { + return htmlTrackElementSize; + } + GfxDesc& HtmlElement(const StringAtom& e) { + htmlElement = e; return *this; + } + const StringAtom& HtmlElement() const { + return htmlElement; + } + GfxDesc& ResourcePoolSize(GfxResourceType::Code type, int size) { + resourcePoolSize[type] = size; return *this; + } + int ResourcePoolSize(GfxResourceType::Code type) const { + return resourcePoolSize[type]; + } + GfxDesc& ResourceLabelStackCapacity(int c) { + resourceLabelStackCapacity = c; return *this; + } + int ResourceLabelStackCapacity() const { + return resourceLabelStackCapacity; + } + GfxDesc& ResourceRegistryCapacity(int c) { + resourceRegistryCapacity = c; return *this; + } + int ResourceRegistryCapacity() const { + return resourceRegistryCapacity; + } + GfxDesc& GlobalUniformBufferSize(int s) { + globalUniformBufferSize = s; return *this; + } + int GlobalUniformBufferSize() const { + return globalUniformBufferSize; + } + + int width = 640; + int height = 400; + PixelFormat::Code colorFormat = PixelFormat::RGBA8; + PixelFormat::Code depthFormat = PixelFormat::DEPTHSTENCIL; + int sampleCount = 1; + bool windowed = true; + int swapInterval = 1; + StringAtom title = "Oryol"; + bool highDPI = false; + bool htmlTrackElementSize = false; + StringAtom htmlElement = "#canvas"; + StaticArray resourcePoolSize; + int resourceLabelStackCapacity = 256; + int resourceRegistryCapacity = 256; + int globalUniformBufferSize = GfxConfig::DefaultGlobalUniformBufferSize; + GfxDesc() { + for (int i = 0; i < GfxResourceType::Num; i++) { + resourcePoolSize[i] = GfxConfig::DefaultResourcePoolSize; + } + } }; - -//------------------------------------------------------------------------------ -/** - @class Oryol::GfxDescBuilder - @ingroup Gfx - @brief builder class for GfxDesc -*/ -class GfxDescBuilder { -public: - GfxDesc Desc; - GfxDescBuilder& From(const GfxDesc& desc) { - Desc = desc; return *this; - } - GfxDescBuilder& Windowed(int width, int height, const StringAtom& title) { - Desc.Width = width; Desc.Height = height; Desc.Title = title; - return *this; - } - GfxDescBuilder& Fullscreen(int width, int height, const StringAtom& title) { - Desc.Width = width; Desc.Height = height; Desc.Windowed = false; Desc.Title = title; - return *this; - } - GfxDescBuilder& WindowedMSAA4(int width, int height, const StringAtom& title) { - Desc.Width = width; Desc.Height = height; Desc.Title = title; Desc.SampleCount = 4; - return *this; - } - GfxDescBuilder& FullscreenMSAA4(int width, int height, const StringAtom& title) { - Desc.Width = width; Desc.Height = height; Desc.Windowed = false; - Desc.SampleCount = 4; Desc.Title = title; - return *this; - } - GfxDescBuilder& Width(int width) { - Desc.Width = width; return *this; - } - GfxDescBuilder& Height(int height) { - Desc.Height = height; return *this; - } - GfxDescBuilder& ColorFormat(PixelFormat::Code fmt) { - Desc.ColorFormat = fmt; return *this; - } - GfxDescBuilder& DepthFormat(PixelFormat::Code fmt) { - Desc.DepthFormat = fmt; return *this; - } - GfxDescBuilder& SampleCount(int sampleCount) { - Desc.SampleCount = sampleCount; return *this; - } - GfxDescBuilder& Windowed() { - Desc.Windowed = true; return *this; - } - GfxDescBuilder& Fullscreen() { - Desc.Windowed = false; return *this; - } - GfxDescBuilder& SwapInterval(int interval) { - Desc.SwapInterval = interval; return *this; - } - GfxDescBuilder& Title(const StringAtom& title) { - Desc.Title = title; return *this; - } - GfxDescBuilder& HighDPI(bool highDpi) { - Desc.HighDPI = highDpi; return *this; - } - GfxDescBuilder& HtmlTrackElementSize(bool track) { - Desc.HtmlTrackElementSize = track; return *this; - } - GfxDescBuilder& HtmlElement(const StringAtom& elm) { - Desc.HtmlElement = elm; return *this; - } - GfxDescBuilder& ResourcePoolSize(GfxResourceType::Code type, int poolSize) { - Desc.ResourcePoolSize[type] = poolSize; return *this; - } - GfxDescBuilder& ResourceThrottle(GfxResourceType::Code type, int numPerFrame) { - Desc.ResourceThrottling[type] = numPerFrame; return *this; - } - GfxDescBuilder& ResourceLabelStackCapacity(int capacity) { - Desc.ResourceLabelStackCapacity = capacity; return *this; - } - GfxDescBuilder& ResourceRegistryCapacity(int capacity) { - Desc.ResourceRegistryCapacity = capacity; return *this; - } - GfxDescBuilder& GlobalUniformBufferSize(int size) { - Desc.GlobalUniformBufferSize = size; return *this; - } - const GfxDesc& Done() { - return Desc; - } -}; -inline GfxDescBuilder NewGfxDesc() { - return GfxDescBuilder(); -} - + //------------------------------------------------------------------------------ /** @class Oryol::BufferDesc @@ -969,8 +958,8 @@ struct BufferDesc { /// the buffer usage Oryol::Usage::Code Usage = Usage::Immutable; /// the buffer size in bytes - int Size = 0; - /// optional pointer to content + int Size = 0; + /// optional pointer to content const void* Content = nullptr; /// optional native 3D-API buffers StaticArray NativeBuffers; @@ -1011,12 +1000,12 @@ class BufferBuilder { BufferBuilder& NativeBuffer(int index, intptr_t buf) { Desc.NativeBuffers[index] = buf; return *this; } - const BufferDesc& Done() { - return Desc; + const BufferDesc& Done() { + return Desc; } -}; -inline BufferBuilder NewBufferDesc() { - return BufferBuilder(); +}; +inline BufferBuilder NewBufferDesc() { + return BufferBuilder(); } //------------------------------------------------------------------------------ @@ -1230,12 +1219,12 @@ class PipelineBuilder { PipelineBuilder& DepthBiasClamp(float f) { Desc.DepthBiasClamp = f; return *this; } - const PipelineDesc& Done() { - return Desc; + const PipelineDesc& Done() { + return Desc; } -}; -inline PipelineBuilder NewPipelineDesc() { - return PipelineBuilder(); +}; +inline PipelineBuilder NewPipelineDesc() { + return PipelineBuilder(); } //------------------------------------------------------------------------------ @@ -1450,12 +1439,12 @@ class TextureBuilder { Desc.Content.Pointer[faceIndex][mipIndex] = ptr; return *this; } - const TextureDesc& Done() { - return Desc; + const TextureDesc& Done() { + return Desc; } -}; -inline TextureBuilder NewTextureDesc() { - return TextureBuilder(); +}; +inline TextureBuilder NewTextureDesc() { + return TextureBuilder(); } //------------------------------------------------------------------------------ @@ -1512,12 +1501,12 @@ class PassBuilder { att.Face = faceLayerSlice; return *this; } - const PassDesc& Done() { - return Desc; + const PassDesc& Done() { + return Desc; } -}; -inline PassBuilder NewPassDesc() { - return PassBuilder(); +}; +inline PassBuilder NewPassDesc() { + return PassBuilder(); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/displayMgrBase.cc b/code/Modules/Gfx/private/displayMgrBase.cc index 3415bfdbd..cf9a87188 100644 --- a/code/Modules/Gfx/private/displayMgrBase.cc +++ b/code/Modules/Gfx/private/displayMgrBase.cc @@ -24,14 +24,14 @@ void displayMgrBase::SetupDisplay(const GfxDesc& desc) { o_assert(!this->displayValid); this->displayValid = true; - this->gfxDesc = desc; - this->displayAttrs.Width = desc.Width; - this->displayAttrs.Height = desc.Height; - this->displayAttrs.ColorFormat = desc.ColorFormat; - this->displayAttrs.DepthFormat = desc.DepthFormat; - this->displayAttrs.SampleCount = desc.SampleCount; - this->displayAttrs.Windowed = desc.Windowed; - this->displayAttrs.SwapInterval = desc.SwapInterval; + this->gfxDesc = desc; + this->displayAttrs.Width = desc.width; + this->displayAttrs.Height = desc.height; + this->displayAttrs.ColorFormat = desc.colorFormat; + this->displayAttrs.DepthFormat = desc.depthFormat; + this->displayAttrs.SampleCount = desc.sampleCount; + this->displayAttrs.Windowed = desc.windowed; + this->displayAttrs.SwapInterval = desc.swapInterval; this->curFramebufferWidth = this->displayAttrs.Width; this->curFramebufferHeight = this->displayAttrs.Height; } diff --git a/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc b/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc index 1fb3a5f9c..cce04d310 100644 --- a/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc +++ b/code/Modules/Gfx/private/gl/glfwDisplayMgr.cc @@ -57,7 +57,7 @@ glfwDisplayMgr::SetupDisplay(const GfxDesc& desc) { // and make the window's GL context current glfwMakeContextCurrent(glfwWindow); - glfwSwapInterval(desc.SwapInterval); + glfwSwapInterval(desc.swapInterval); // setup extensions and platform-dependent constants flextInit(glfwWindow); @@ -142,14 +142,14 @@ glfwDisplayMgr::createMainWindow(const GfxDesc& desc) { // this is necessary after the 29-Oct-2017 fips-glfw update to get the old behaviour glfwWindowHint(GLFW_COCOA_RETINA_FRAMEBUFFER, GLFW_FALSE); #else - glfwWindowHint(GLFW_RED_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Red)); - glfwWindowHint(GLFW_GREEN_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Green)); - glfwWindowHint(GLFW_BLUE_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Blue)); - glfwWindowHint(GLFW_ALPHA_BITS, PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Alpha)); + glfwWindowHint(GLFW_RED_BITS, PixelFormat::NumBits(desc.colorFormat, PixelChannel::Red)); + glfwWindowHint(GLFW_GREEN_BITS, PixelFormat::NumBits(desc.colorFormat, PixelChannel::Green)); + glfwWindowHint(GLFW_BLUE_BITS, PixelFormat::NumBits(desc.colorFormat, PixelChannel::Blue)); + glfwWindowHint(GLFW_ALPHA_BITS, PixelFormat::NumBits(desc.colorFormat, PixelChannel::Alpha)); #endif - glfwWindowHint(GLFW_DEPTH_BITS, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth)); - glfwWindowHint(GLFW_STENCIL_BITS, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil)); - glfwWindowHint(GLFW_SAMPLES, desc.SampleCount > 1 ? desc.SampleCount : 0); + glfwWindowHint(GLFW_DEPTH_BITS, PixelFormat::NumBits(desc.depthFormat, PixelChannel::Depth)); + glfwWindowHint(GLFW_STENCIL_BITS, PixelFormat::NumBits(desc.depthFormat, PixelChannel::Stencil)); + glfwWindowHint(GLFW_SAMPLES, desc.sampleCount > 1 ? desc.sampleCount : 0); #if ORYOL_DEBUG glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); #endif @@ -160,14 +160,14 @@ glfwDisplayMgr::createMainWindow(const GfxDesc& desc) { // windowed or fullscreen mode? GLFWmonitor* glfwMonitor = nullptr; - if (!desc.Windowed) { + if (!desc.windowed) { glfwMonitor = glfwGetPrimaryMonitor(); } // now actually create the window - StringBuilder strBuilder(desc.Title); + StringBuilder strBuilder(desc.title); strBuilder.Append(" (GL)"); - glfwDisplayMgr::glfwWindow = glfwCreateWindow(desc.Width, desc.Height, strBuilder.AsCStr(), glfwMonitor, 0); + glfwDisplayMgr::glfwWindow = glfwCreateWindow(desc.width, desc.height, strBuilder.AsCStr(), glfwMonitor, 0); o_assert(nullptr != glfwDisplayMgr::glfwWindow); } diff --git a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc index 8d8392024..cc6c1a14f 100644 --- a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc @@ -490,17 +490,18 @@ sokolGfxBackend::Setup(const GfxDesc& desc) { // setup sokol-gfx sg_desc sgDesc = { }; - sgDesc.buffer_pool_size = desc.ResourcePoolSize[GfxResourceType::Buffer]; - sgDesc.image_pool_size = desc.ResourcePoolSize[GfxResourceType::Texture]; - sgDesc.shader_pool_size = desc.ResourcePoolSize[GfxResourceType::Shader]; - sgDesc.pipeline_pool_size = desc.ResourcePoolSize[GfxResourceType::Pipeline]; - sgDesc.pass_pool_size = desc.ResourcePoolSize[GfxResourceType::Pass]; + sgDesc.buffer_pool_size = desc.resourcePoolSize[GfxResourceType::Buffer]; + sgDesc.image_pool_size = desc.resourcePoolSize[GfxResourceType::Texture]; + sgDesc.shader_pool_size = desc.resourcePoolSize[GfxResourceType::Shader]; + sgDesc.pipeline_pool_size = desc.resourcePoolSize[GfxResourceType::Pipeline]; + sgDesc.pass_pool_size = desc.resourcePoolSize[GfxResourceType::Pass]; #if ORYOL_GLES3 sgDesc.gl_force_gles2 = this->displayManager.forceGLES2; #elif ORYOL_METAL sgDesc.mtl_device = mtlDisplayMgr::mtlDevice(); sgDesc.mtl_renderpass_descriptor_cb = mtlDisplayMgr::mtlRenderPassDescriptor; sgDesc.mtl_drawable_cb = mtlDisplayMgr::mtlDrawable; + sgDesc.mtl_global_uniform_buffer_size = desc.globalUniformBufferSize; #elif ORYOL_D3D11 sgDesc.d3d11_device = this->displayManager.d3d11Device; sgDesc.d3d11_device_context = this->displayManager.d3d11DeviceContext; @@ -509,10 +510,10 @@ sokolGfxBackend::Setup(const GfxDesc& desc) { #endif sg_setup(&sgDesc); - this->registry.Setup(desc.ResourceRegistryCapacity); - this->labelStack.Setup(desc.ResourceLabelStackCapacity); + this->registry.Setup(desc.resourceRegistryCapacity); + this->labelStack.Setup(desc.resourceLabelStackCapacity); this->toDestroy.Reserve(64); - this->vsInputs.Reserve(desc.ResourcePoolSize[GfxResourceType::Shader]); + this->vsInputs.Reserve(desc.resourcePoolSize[GfxResourceType::Shader]); for (int i = 0; i < this->vsInputs.Capacity(); i++) { this->vsInputs.Add(VertexLayout()); } diff --git a/code/Modules/Input/private/android/androidInputMgr.cc b/code/Modules/Input/private/android/androidInputMgr.cc index 2fe0adb66..94d29cb55 100644 --- a/code/Modules/Input/private/android/androidInputMgr.cc +++ b/code/Modules/Input/private/android/androidInputMgr.cc @@ -41,7 +41,7 @@ androidInputMgr::setup(const InputSetup& setup) { o_error("androidInputMgr: Gfx::Setup() must be called before Input::Setup!\n"); return; } - this->highDPI = Gfx::Desc().HighDPI; + this->highDPI = Gfx::Desc().HighDPI(); inputMgrBase::setup(setup); this->touchpad.attached = true; diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index bf86c04da..9cb08d2d0 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -34,7 +34,7 @@ OryolMain(ArrayTextureApp); //------------------------------------------------------------------------------ AppState::Code ArrayTextureApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 512, "Array Texture Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(512).SampleCount(4).Title("Array Texture Sample")); Dbg::Setup(); // if array textures are not supported, only show a warning @@ -91,7 +91,7 @@ ArrayTextureApp::OnInit() { .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); // setup a projection matrix with the right aspect ratio diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index 436488c6b..e32d0eb10 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -25,10 +25,11 @@ OryolMain(BlendTestApp); AppState::Code BlendTestApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc() - .Windowed(1024, 768, "Oryol Blend Sample") - .ResourcePoolSize(GfxResourceType::Pipeline, 512) - .Done()); + Gfx::Setup(GfxDesc() + .Width(1024) + .Height(768) + .Title("Oryol Blend Sample") + .ResourcePoolSize(GfxResourceType::Pipeline, 512)); // create pipeline object for a patterned background const float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; diff --git a/code/Samples/Clear/Clear.cc b/code/Samples/Clear/Clear.cc index db6296e6e..7cba04ec3 100644 --- a/code/Samples/Clear/Clear.cc +++ b/code/Samples/Clear/Clear.cc @@ -21,7 +21,7 @@ OryolMain(ClearApp); //------------------------------------------------------------------------------ AppState::Code ClearApp::OnInit() { - Gfx::Setup(NewGfxDesc().Windowed(400, 300, "Oryol Clear Sample").Done()); + Gfx::Setup(GfxDesc().Width(400).Height(300).Title("Oryol Clear Sample")); return App::OnInit(); } diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index f77daad43..c5caa8777 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -21,7 +21,7 @@ class DDSCubeMapApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - + PrimitiveGroup primGroup; DrawState drawState; Shader::vsParams vsParams; @@ -39,13 +39,13 @@ DDSCubeMapApp::OnInit() { // setup IO system IOSetup ioSetup; ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); + ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); IO::Setup(ioSetup); // setup rendering system - Gfx::Setup(NewGfxDesc().Windowed(600, 400, "Oryol DXT Cube Map Sample").Done()); + Gfx::Setup(GfxDesc().Width(600).Height(400).Title("Oryol DXT Cube Map Sample")); - // create resources + // create resources StringAtom texPath; if (Gfx::QueryFeature(GfxFeature::TextureCompressionPVRTC)) { texPath = "tex:romechurch_bpp2.pvr"; @@ -53,29 +53,29 @@ DDSCubeMapApp::OnInit() { else { texPath = "tex:romechurch_dxt1.dds"; } - this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(NewTextureDesc() - .Locator(texPath) - .MinFilter(TextureFilterMode::LinearMipmapLinear) - .MagFilter(TextureFilterMode::Linear) - .WrapU(TextureWrapMode::ClampToEdge) - .WrapV(TextureWrapMode::ClampToEdge) - .Done()); - - auto shape = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Normals("in_normal", VertexFormat::Float3) - .Transform(glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) - .Sphere(1.0f, 36, 20) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(NewTextureDesc() + .Locator(texPath) + .MinFilter(TextureFilterMode::LinearMipmapLinear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::ClampToEdge) + .WrapV(TextureWrapMode::ClampToEdge) + .Done()); + + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Float3) + .Transform(glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) + .Sphere(1.0f, 36, 20) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Done()); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index d29245e3b..4640ff5fa 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -23,7 +23,7 @@ class DDSTextureLoadingApp : public App { glm::mat4 computeMVP(const glm::vec3& pos); - float distVal = 0.0f; + float distVal = 0.0f; PrimitiveGroup primGroup; DrawState drawState; static const int NumTextures = 16; @@ -45,7 +45,7 @@ DDSTextureLoadingApp::OnInit() { IO::Setup(ioSetup); // setup rendering system - Gfx::Setup(NewGfxDesc().Windowed(600, 400, "Oryol DDS Loading Sample").Done()); + Gfx::Setup(GfxDesc().Width(600).Height(400).Title("Oryol DDS Loading Sample")); // setup resources static const char *paths[NumTextures] = { @@ -66,31 +66,31 @@ DDSTextureLoadingApp::OnInit() { "tex:lok_rgb565.dds", "tex:lok_bgr565.dds", }; - for (int i = 0; i < NumTextures; i++) { - this->textures[i] = TextureLoader::Load(NewTextureDesc() - .Locator(paths[i]) - .MinFilter(TextureFilterMode::LinearMipmapLinear) - .MagFilter(TextureFilterMode::Linear) - .WrapU(TextureWrapMode::ClampToEdge) - .WrapV(TextureWrapMode::ClampToEdge) - .Done()); + for (int i = 0; i < NumTextures; i++) { + this->textures[i] = TextureLoader::Load(NewTextureDesc() + .Locator(paths[i]) + .MinFilter(TextureFilterMode::LinearMipmapLinear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::ClampToEdge) + .WrapV(TextureWrapMode::ClampToEdge) + .Done()); } - auto shape = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .TexCoords("in_uv", VertexFormat::Float2) - .Transform(glm::rotate(glm::mat4(), glm::radians(-90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) - .Plane(1.0f, 1.0f, 4) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Transform(glm::rotate(glm::mat4(), glm::radians(-90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) + .Plane(1.0f, 1.0f, 4) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Done()); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index 245238658..6e2f611e5 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -30,7 +30,7 @@ OryolMain(DebugTextApp); //------------------------------------------------------------------------------ AppState::Code DebugTextApp::OnInit() { - Gfx::Setup(NewGfxDesc().Windowed(800, 600, "Oryol DebugText Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).Title("Oryol DebugText Sample")); DbgSetup dbgSetup; dbgSetup.TextScaleX = 2.0f; dbgSetup.TextScaleY = 2.0f; diff --git a/code/Samples/DrawCallPerf/DrawCallPerf.cc b/code/Samples/DrawCallPerf/DrawCallPerf.cc index 2cd3b4f55..68a17b73b 100644 --- a/code/Samples/DrawCallPerf/DrawCallPerf.cc +++ b/code/Samples/DrawCallPerf/DrawCallPerf.cc @@ -24,7 +24,7 @@ class DrawCallPerfApp : public App { void updateCamera(); void emitParticles(); void updateParticles(); - + PrimitiveGroup primGroup; DrawState drawState; glm::mat4 view; @@ -49,32 +49,33 @@ OryolMain(DrawCallPerfApp); AppState::Code DrawCallPerfApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc() - .Windowed(800, 500, "Oryol DrawCallPerf Sample") - .GlobalUniformBufferSize(1024 * 1024 * 32) - .Done()); + Gfx::Setup(GfxDesc() + .Width(800) + .Height(500) + .Title("Oryol DrawCallPerf Sample") + .GlobalUniformBufferSize(1024 * 1024 * 32)); Dbg::Setup(); Input::Setup(); // create resources - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - auto shape = ShapeBuilder::New() - .RandomColors(true) - .Positions("in_pos", VertexFormat::Float3) - .Colors("in_color", VertexFormat::Float4) - .Transform(rot90) - .Sphere(0.05f, 3, 2) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .CullFaceEnabled(true) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .Colors("in_color", VertexFormat::Float4) + .Transform(rot90) + .Sphere(0.05f, 3, 2) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .CullFaceEnabled(true) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Done()); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/FullscreenQuad/FullscreenQuad.cc b/code/Samples/FullscreenQuad/FullscreenQuad.cc index 8eace426f..8e6eed4b6 100644 --- a/code/Samples/FullscreenQuad/FullscreenQuad.cc +++ b/code/Samples/FullscreenQuad/FullscreenQuad.cc @@ -22,16 +22,16 @@ OryolMain(FullscreenQuadApp); //------------------------------------------------------------------------------ AppState::Code FullscreenQuadApp::OnInit() { - Gfx::Setup(NewGfxDesc().Windowed(600, 600, "Oryol Fullscreen Quad Sample").Done()); - const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() - .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip) + Gfx::Setup(GfxDesc().Width(600).Height(600).Title("Oryol Fullscreen Quad Sample")); + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Done()); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) .Done()); this->params.time = 0.0f; return App::OnInit(); diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index 0d674c28a..8ce7e3ca0 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -36,7 +36,7 @@ class GPUParticlesApp : public App { DrawState initParticles; DrawState updParticles; DrawState drawParticles; - + PrimitiveGroup shapePrimGroup; glm::mat4 view; glm::mat4 proj; @@ -55,7 +55,7 @@ OryolMain(GPUParticlesApp); AppState::Code GPUParticlesApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc().Windowed(800, 500, "Oryol GPU Particles Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(500).Title("Oryol GPU Particles Sample")); Dbg::Setup(); // check required extensions @@ -77,84 +77,84 @@ GPUParticlesApp::OnInit() { // - 2 fullscreen-quad draw-states for emitting and updating particles // - 1 particle-rendering draw state - // the 2 ping/pong particle state textures and render passes - for (int i = 0; i < 2; i++) { - this->particleBuffer[i].texture = Gfx::CreateTexture(NewTextureDesc() - .RenderTarget(true) - .Width(ParticleBufferWidth) - .Height(ParticleBufferHeight) - .Format(PixelFormat::RGBA32F) - .MinFilter(TextureFilterMode::Nearest) - .MagFilter(TextureFilterMode::Nearest) - .Done()); - this->particleBuffer[i].pass = Gfx::CreatePass(NewPassDesc() - .ColorAttachment(0, this->particleBuffer[i].texture) - .Done()); + // the 2 ping/pong particle state textures and render passes + for (int i = 0; i < 2; i++) { + this->particleBuffer[i].texture = Gfx::CreateTexture(NewTextureDesc() + .RenderTarget(true) + .Width(ParticleBufferWidth) + .Height(ParticleBufferHeight) + .Format(PixelFormat::RGBA32F) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .Done()); + this->particleBuffer[i].pass = Gfx::CreatePass(NewPassDesc() + .ColorAttachment(0, this->particleBuffer[i].texture) + .Done()); } - // a fullscreen mesh for the particle init- and update-shaders - const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - Id quadVbuf = Gfx::CreateBuffer(NewBufferDesc() - .Size(sizeof(quadVertices)) - .Content(quadVertices) + // a fullscreen mesh for the particle init- and update-shaders + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + Id quadVbuf = Gfx::CreateBuffer(NewBufferDesc() + .Size(sizeof(quadVertices)) + .Content(quadVertices) .Done()); this->initParticles.VertexBuffers[0] = quadVbuf; this->updParticles.VertexBuffers[0] = quadVbuf; - // particle initialization and update resources - PipelineDesc particlePipDesc = NewPipelineDesc() - .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip) - .ColorFormat(PixelFormat::RGBA32F) - .DepthFormat(PixelFormat::None) - .Done(); - this->initParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(particlePipDesc) - .Shader(Gfx::CreateShader(InitShader::Desc())) - .Done()); - this->updParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(particlePipDesc) - .Shader(Gfx::CreateShader(UpdateShader::Desc())) + // particle initialization and update resources + PipelineDesc particlePipDesc = NewPipelineDesc() + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) + .ColorFormat(PixelFormat::RGBA32F) + .DepthFormat(PixelFormat::None) + .Done(); + this->initParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(particlePipDesc) + .Shader(Gfx::CreateShader(InitShader::Desc())) + .Done()); + this->updParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(particlePipDesc) + .Shader(Gfx::CreateShader(UpdateShader::Desc())) .Done()); // the static geometry of a single particle is at mesh slot 0 - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - auto shape = ShapeBuilder::New() - .RandomColors(true) - .Positions("in_pos", VertexFormat::Float3) - .Colors("in_color", VertexFormat::Float4) - .Transform(rot90) - .Sphere(0.05f, 3, 2) - .Build(); + const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .Colors("in_color", VertexFormat::Float4) + .Transform(rot90) + .Sphere(0.05f, 3, 2) + .Build(); this->shapePrimGroup = shape.PrimitiveGroups[0]; - this->drawParticles.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawParticles.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawParticles.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawParticles.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - // a instancing vertex buffer with the particleIds at vertex buffer slot 1 - { + // a instancing vertex buffer with the particleIds at vertex buffer slot 1 + { const int particleIdSize = MaxNumParticles * sizeof(float); float* particleIdData = (float*) Memory::Alloc(particleIdSize); for (int i = 0; i < MaxNumParticles; i++) { particleIdData[i] = (float) i; - } - this->drawParticles.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() - .Size(particleIdSize) - .Content(particleIdData) - .Done()); - Memory::Free(particleIdData); - } - - // ...and the pipeline object for instanced particle rendering - this->drawParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(DrawShader::Desc())) - .Layout(1, VertexLayout::New() - .EnableInstancing() - .Add("in_particleId", VertexFormat::Float)) - .CullFaceEnabled(true) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + } + this->drawParticles.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() + .Size(particleIdSize) + .Content(particleIdData) + .Done()); + Memory::Free(particleIdData); + } + + // ...and the pipeline object for instanced particle rendering + this->drawParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(DrawShader::Desc())) + .Layout(1, VertexLayout::New() + .EnableInstancing() + .Add("in_particleId", VertexFormat::Float)) + .CullFaceEnabled(true) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .Done()); // the static projection matrix const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/GamepadExplorer/GamepadExplorer.cc b/code/Samples/GamepadExplorer/GamepadExplorer.cc index 9d72c57bf..7bca857e8 100644 --- a/code/Samples/GamepadExplorer/GamepadExplorer.cc +++ b/code/Samples/GamepadExplorer/GamepadExplorer.cc @@ -49,7 +49,7 @@ const char* axisNames[GamepadAxis::NumAxes] = { //------------------------------------------------------------------------------ AppState::Code GamepadExplorerApp::OnInit() { - Gfx::Setup(NewGfxDesc().Windowed(800, 600, "Test Gamepads").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).Title("Test Gamepads")); Dbg::Setup(); Input::Setup(); return App::OnInit(); diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index d44ee33e1..8d7807534 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -20,7 +20,7 @@ class InfiniteSpheresApp : public App { glm::mat4 computeModel(float rotX, float rotY, const glm::vec3& pos); glm::mat4 computeMVP(const glm::mat4& proj, const glm::mat4& model); - + PrimitiveGroup primGroup; DrawState offscreenDrawState; DrawState displayDrawState; @@ -43,70 +43,70 @@ OryolMain(InfiniteSpheresApp); AppState::Code InfiniteSpheresApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Oryol Infinite Spheres Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).SampleCount(4).Title("Oryol Infinite Spheres Sample")); - // create 2 ping-pong offscreen render targets, only need 1 depth buffer - const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; - const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; - const int rtWidth = 512; - const int rtHeight = 512; - Id rtDepth = Gfx::CreateTexture(NewTextureDesc() - .RenderTarget(true) - .Width(rtWidth) - .Height(rtHeight) - .Format(rtDepthFormat) - .Done()); - for (int i = 0; i < 2; i++) { - this->passInfo[i].texture = Gfx::CreateTexture(NewTextureDesc() - .RenderTarget(true) - .Width(rtWidth) - .Height(rtHeight) - .Format(rtColorFormat) - .MinFilter(TextureFilterMode::Linear) - .MagFilter(TextureFilterMode::Linear) - .WrapU(TextureWrapMode::Repeat) - .WrapV(TextureWrapMode::Repeat) - .Done()); - this->passInfo[i].pass = Gfx::CreatePass(NewPassDesc() - .ColorAttachment(0, this->passInfo[i].texture) - .DepthStencilAttachment(rtDepth) - .Done()); - } + // create 2 ping-pong offscreen render targets, only need 1 depth buffer + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; + const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; + const int rtWidth = 512; + const int rtHeight = 512; + Id rtDepth = Gfx::CreateTexture(NewTextureDesc() + .RenderTarget(true) + .Width(rtWidth) + .Height(rtHeight) + .Format(rtDepthFormat) + .Done()); + for (int i = 0; i < 2; i++) { + this->passInfo[i].texture = Gfx::CreateTexture(NewTextureDesc() + .RenderTarget(true) + .Width(rtWidth) + .Height(rtHeight) + .Format(rtColorFormat) + .MinFilter(TextureFilterMode::Linear) + .MagFilter(TextureFilterMode::Linear) + .WrapU(TextureWrapMode::Repeat) + .WrapV(TextureWrapMode::Repeat) + .Done()); + this->passInfo[i].pass = Gfx::CreatePass(NewPassDesc() + .ColorAttachment(0, this->passInfo[i].texture) + .DepthStencilAttachment(rtDepth) + .Done()); + } - // create a sphere shape mesh + // create a sphere shape mesh auto sphere = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Normals("in_normal", VertexFormat::Byte4N) - .TexCoords("in_uv", VertexFormat::Float2) - .Sphere(0.75f, 72, 40) - .Build(); - this->primGroup = sphere.PrimitiveGroups[0]; - Id vbuf = Gfx::CreateBuffer(sphere.VertexBufferDesc); - Id ibuf = Gfx::CreateBuffer(sphere.IndexBufferDesc); - this->offscreenDrawState.VertexBuffers[0] = vbuf; - this->offscreenDrawState.IndexBuffer = ibuf; - this->displayDrawState.VertexBuffers[0] = vbuf; + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .TexCoords("in_uv", VertexFormat::Float2) + .Sphere(0.75f, 72, 40) + .Build(); + this->primGroup = sphere.PrimitiveGroups[0]; + Id vbuf = Gfx::CreateBuffer(sphere.VertexBufferDesc); + Id ibuf = Gfx::CreateBuffer(sphere.IndexBufferDesc); + this->offscreenDrawState.VertexBuffers[0] = vbuf; + this->offscreenDrawState.IndexBuffer = ibuf; + this->displayDrawState.VertexBuffers[0] = vbuf; this->displayDrawState.IndexBuffer = ibuf; // create shader which is used for both offscreen- and display-rendering Id shd = Gfx::CreateShader(Shader::Desc()); - // create draw state for rendering into default render target - this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(sphere.PipelineDesc) - .Shader(shd) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) - .Done()); - this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(sphere.PipelineDesc) - .Shader(shd) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .ColorFormat(rtColorFormat) - .DepthFormat(rtDepthFormat) - .Done()); + // create draw state for rendering into default render target + this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(sphere.PipelineDesc) + .Shader(shd) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(Gfx::Desc().SampleCount()) + .Done()); + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(sphere.PipelineDesc) + .Shader(shd) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .ColorFormat(rtColorFormat) + .DepthFormat(rtDepthFormat) + .Done()); // setup static transform matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/Instancing/Instancing.cc b/code/Samples/Instancing/Instancing.cc index 5bca949ad..3c40e507f 100644 --- a/code/Samples/Instancing/Instancing.cc +++ b/code/Samples/Instancing/Instancing.cc @@ -46,7 +46,7 @@ OryolMain(InstancingApp); AppState::Code InstancingApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc().Windowed(800, 500, "Oryol Instancing Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(500).Title("Oryol Instancing Sample")); Dbg::Setup(); Input::Setup(); @@ -56,34 +56,34 @@ InstancingApp::OnInit() { } // create static mesh at mesh slot 0 - const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - auto shape = ShapeBuilder::New() - .RandomColors(true) - .Positions("in_pos", VertexFormat::Float3) - .Colors("in_color", VertexFormat::Float4) - .Transform(rot90) - .Sphere(0.05f, 3, 2) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); + auto shape = ShapeBuilder::New() + .RandomColors(true) + .Positions("in_pos", VertexFormat::Float3) + .Colors("in_color", VertexFormat::Float4) + .Transform(rot90) + .Sphere(0.05f, 3, 2) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - // create dynamic instance data vertex buffer on slot 1 - this->drawState.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() - .Size(MaxNumParticles * VertexFormat::ByteSize(VertexFormat::Float4)) - .Usage(Usage::Stream) - .Done()); + // create dynamic instance data vertex buffer on slot 1 + this->drawState.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() + .Size(MaxNumParticles * VertexFormat::ByteSize(VertexFormat::Float4)) + .Usage(Usage::Stream) + .Done()); - // setup pipeline state for instanced rendering - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(1, VertexLayout::New() - .EnableInstancing() - .Add("in_instpos", VertexFormat::Float4)) - .CullFaceEnabled(true) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) + // setup pipeline state for instanced rendering + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(1, VertexLayout::New() + .EnableInstancing() + .Add("in_instpos", VertexFormat::Float4)) + .CullFaceEnabled(true) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) .Done()); // setup projection and view matrices diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 8c699ed0f..b5c9526c3 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -49,7 +49,7 @@ OryolMain(MultipleRenderTargetApp); //------------------------------------------------------------------------------ AppState::Code MultipleRenderTargetApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(DisplayWidth, DisplayHeight, "Oryol MRT Sample").Done()); + Gfx::Setup(GfxDesc().Width(DisplayWidth).Height(DisplayHeight).SampleCount(4).Title("Oryol MRT Sample")); Dbg::Setup(); // if rendering backend doesn't support MRT, drop out now @@ -134,7 +134,7 @@ MultipleRenderTargetApp::OnInit() { .DepthWriteEnabled(false) .DepthCmpFunc(CompareFunc::Always) .CullFaceEnabled(false) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); this->rt0DrawState.Pipeline = quadPipeline; this->rt0DrawState.VertexBuffers[0] = quadVertexBuffer; @@ -154,7 +154,7 @@ MultipleRenderTargetApp::OnInit() { .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(false) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); this->displayDrawState.VertexBuffers[0] = shapesVertexBuffer; this->displayDrawState.IndexBuffer = shapesIndexBuffer; diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 433ed8c60..61d84556a 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -49,7 +49,7 @@ OryolMain(NativeTextureApp); AppState::Code NativeTextureApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Oryol NativeTexture Sample").Done()); + Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Oryol NativeTexture Sample")); Dbg::Setup(DbgSetup::MSAA4()); // FIXME: D3D and Metal @@ -108,7 +108,7 @@ NativeTextureApp::OnInit() { .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index dbff6586d..9ea0dfdb2 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -18,7 +18,7 @@ class PackedNormalsApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - Array primGroups; + Array primGroups; DrawState drawState; Shader::params params; glm::mat4 view; @@ -31,28 +31,28 @@ OryolMain(PackedNormalsApp); //------------------------------------------------------------------------------ AppState::Code PackedNormalsApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Oryol Packed Normals Sample").Done()); + Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Oryol Packed Normals Sample")); - auto shapes = ShapeBuilder::New() - .Positions("position", VertexFormat::Float3) - .Normals("normal", VertexFormat::Byte4N) + auto shapes = ShapeBuilder::New() + .Positions("position", VertexFormat::Float3) + .Normals("normal", VertexFormat::Byte4N) .Box(1.0f, 1.0f, 1.0f, 4) .Sphere(0.75f, 36, 20) .Cylinder(0.5f, 1.5f, 36, 10) .Torus(0.3f, 0.5f, 20, 36) - .Plane(1.5f, 1.5f, 10) - .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .CullFaceEnabled(true) - .SampleCount(4) - .Done()); - this->primGroups = std::move(shapes.PrimitiveGroups); + .Plane(1.5f, 1.5f, 10) + .Build(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shapes.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .SampleCount(4) + .Done()); + this->primGroups = std::move(shapes.PrimitiveGroups); float fbWidth = (const float) Gfx::DisplayAttrs().Width; float fbHeight = (const float) Gfx::DisplayAttrs().Height; diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index b5c624857..01ae3a692 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -65,7 +65,7 @@ createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const Ve //------------------------------------------------------------------------------ AppState::Code PrimitiveTypesApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(640, 480, "Oryol PrimitiveTypes Test").Done()); + Gfx::Setup(GfxDesc().Width(640).Height(480).SampleCount(4).Title("Oryol PrimitiveTypes Test")); Dbg::Setup(DbgSetup::MSAA4()); Input::Setup(); @@ -105,7 +105,7 @@ PrimitiveTypesApp::OnInit() { // point list (only need a pipeline object, no index buffer) { auto& ds = this->drawStates[PrimitiveType::Points]; - ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; } @@ -125,7 +125,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Lines]; - ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -144,7 +144,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::LineStrip]; - ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -167,7 +167,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Triangles]; - ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -192,7 +192,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::TriangleStrip]; - ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount); + ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index a3f098f9a..25dbb5c07 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -21,7 +21,7 @@ OryolMain(QuadApp); //------------------------------------------------------------------------------ AppState::Code QuadApp::OnInit() { - Gfx::Setup(NewGfxDesc().Windowed(400, 400, "Oryol Quad Sample").Done()); + Gfx::Setup(GfxDesc().Width(400).Height(400).Title("Oryol Quad Sample")); // create vertex buffer const float vertices[4 * 7] = { @@ -30,34 +30,34 @@ QuadApp::OnInit() { 0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, - }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() - .Type(BufferType::VertexBuffer) - .Size(sizeof(vertices)) - .Content(vertices) - .Done()); - + }; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + .Type(BufferType::VertexBuffer) + .Size(sizeof(vertices)) + .Content(vertices) + .Done()); + // create index buffer const uint16_t indices[2 * 3] = { 0, 1, 2, // first triangle 0, 2, 3, // second triangle - }; - this->drawState.IndexBuffer = Gfx::CreateBuffer(NewBufferDesc() - .Type(BufferType::IndexBuffer) - .Size(sizeof(indices)) - .Content(indices) - .Done()); + }; + this->drawState.IndexBuffer = Gfx::CreateBuffer(NewBufferDesc() + .Type(BufferType::IndexBuffer) + .Size(sizeof(indices)) + .Content(indices) + .Done()); // create shader and pipeline-state-object - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(0, { - { "in_pos", VertexFormat::Float3 }, - { "in_color", VertexFormat::Float4 } - }) - .IndexType(IndexType::UInt16) - .Done()); - + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, { + { "in_pos", VertexFormat::Float3 }, + { "in_color", VertexFormat::Float4 } + }) + .IndexType(IndexType::UInt16) + .Done()); + return App::OnInit(); } diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index 3ac1b0644..514430355 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -66,7 +66,7 @@ OryolMain(RenderToCubeMapApp); //------------------------------------------------------------------------------ AppState::Code RenderToCubeMapApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Render To CubeMap").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).SampleCount(4).Title("Render To CubeMap")); Input::Setup(); // create a cubemap which will serve as render target @@ -117,7 +117,7 @@ RenderToCubeMapApp::OnInit() { .Shader(Gfx::CreateShader(ShapeShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); this->offscreenShapesPipeline = Gfx::CreatePipeline(NewPipelineDesc() .From(shapes.PipelineDesc) @@ -137,7 +137,7 @@ RenderToCubeMapApp::OnInit() { .Shader(Gfx::CreateShader(SphereShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); // setup projection matrix for main view diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index 3876df6eb..35065ab82 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -52,13 +52,12 @@ ResourceStressApp::OnInit() { IO::Setup(ioSetup); // setup Gfx system - Gfx::Setup(NewGfxDesc() - .Windowed(600, 400, "Oryol Resource Stress Test") + Gfx::Setup(GfxDesc() + .Width(600).Height(400).Title("Oryol Resource Stress Test") .ResourcePoolSize(GfxResourceType::Buffer, 2 * (MaxNumObjects + 32)) .ResourcePoolSize(GfxResourceType::Texture, MaxNumObjects + 32) .ResourcePoolSize(GfxResourceType::Pipeline, MaxNumObjects + 32) - .ResourcePoolSize(GfxResourceType::Shader, 4) - .Done()); + .ResourcePoolSize(GfxResourceType::Shader, 4)); // setup the shader that is used by all objects this->shader = Gfx::CreateShader(Shader::Desc()); diff --git a/code/Samples/Sensors/Sensors.cc b/code/Samples/Sensors/Sensors.cc index 2cdce54fd..d25b0cdad 100644 --- a/code/Samples/Sensors/Sensors.cc +++ b/code/Samples/Sensors/Sensors.cc @@ -22,7 +22,7 @@ class SensorsApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(); - + PrimitiveGroup primGroup; DrawState drawState; Shader::vsParams vsParams; @@ -34,26 +34,26 @@ OryolMain(SensorsApp); //------------------------------------------------------------------------------ AppState::Code SensorsApp::OnInit() { - Gfx::Setup(NewGfxDesc().Windowed(800, 400, "Oryol Device Sensor Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(400).Title("Oryol Device Sensor Sample")); Dbg::Setup(); Input::Setup(); - // create a 3D cube - auto shape = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Normals("in_normal", VertexFormat::Byte4N) - .Box(2.0, 2.0, 2.0, 1) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .CullFaceEnabled(true) - .Done()); + // create a 3D cube + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .Box(2.0, 2.0, 2.0, 1) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) + .Done()); // setup transform matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index d282f9fd2..bfc5dcc4e 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -27,8 +27,8 @@ class SeparateBuffersApp : public App { AppState::Code OnCleanup(); glm::mat4 computeMVP(const glm::vec3& pos); - static const int NumColorBuffer = 3; - PrimitiveGroup cubePrimGroup; + static const int NumColorBuffer = 3; + PrimitiveGroup cubePrimGroup; StaticArray colorBuffers; DrawState drawState; Shader::params params; @@ -43,42 +43,42 @@ OryolMain(SeparateBuffersApp); AppState::Code SeparateBuffersApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Separate Buffers").Done()); + Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Separate Buffers")); // create a cube mesh with positions only, this will be placed // into the first vertex buffer bind slot - auto shape = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Box(1.0f, 1.0f, 1.0f, 1) - .Build(); - this->cubePrimGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Box(1.0f, 1.0f, 1.0f, 1) + .Build(); + this->cubePrimGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // create 3 meshes with only color data - static const int NumVertices = 24; - static const int NumColorChannels = 3; - float colorVertices[NumVertices][NumColorChannels]= { }; - for (int i = 0; i < NumColorChannels; i++) { - for (int vi = 0; vi < NumVertices; vi++) { - colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); - } - this->colorBuffers[i] = Gfx::CreateBuffer(NewBufferDesc() - .Size(sizeof(colorVertices)) - .Content(colorVertices) - .Done()); - } + static const int NumVertices = 24; + static const int NumColorChannels = 3; + float colorVertices[NumVertices][NumColorChannels]= { }; + for (int i = 0; i < NumColorChannels; i++) { + for (int vi = 0; vi < NumVertices; vi++) { + colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); + } + this->colorBuffers[i] = Gfx::CreateBuffer(NewBufferDesc() + .Size(sizeof(colorVertices)) + .Content(colorVertices) + .Done()); + } // create shader and pipeline, the position data vertex Layout - // goes into the first layout slot, and the color data vertex layout into the second slot - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(1, { { "in_color", VertexFormat::Float3 } }) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) - .Done()); + // goes into the first layout slot, and the color data vertex layout into the second slot + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(1, { { "in_color", VertexFormat::Float3 } }) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(Gfx::Desc().SampleCount()) + .Done()); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index a0281bb8e..5c7c7c0ef 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -16,9 +16,9 @@ class ShapeApp : public App { AppState::Code OnRunning(); AppState::Code OnInit(); AppState::Code OnCleanup(); - glm::mat4 computeMVP(const glm::vec3& pos); + glm::mat4 computeMVP(const glm::vec3& pos); - DrawState drawState; + DrawState drawState; Array primGroups; Shader::params params; glm::mat4 view; @@ -31,27 +31,27 @@ OryolMain(ShapeApp); //------------------------------------------------------------------------------ AppState::Code ShapeApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(600, 400, "Oryol Shapes Sample").Done()); - auto shapes = ShapeBuilder::New() - .RandomColors(true) - .Positions("position", VertexFormat::Float3) - .Colors("color0", VertexFormat::UByte4N) - .Box(1.0f, 1.0f, 1.0f, 4) - .Sphere(0.75f, 36, 20) - .Cylinder(0.5f, 1.5f, 36, 10) - .Torus(0.3f, 0.5f, 20, 36) - .Plane(1.5f, 1.5f, 10) - .Build(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) - .Done()); - this->primGroups = std::move(shapes.PrimitiveGroups); + Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Oryol Shapes Sample")); + auto shapes = ShapeBuilder::New() + .RandomColors(true) + .Positions("position", VertexFormat::Float3) + .Colors("color0", VertexFormat::UByte4N) + .Box(1.0f, 1.0f, 1.0f, 4) + .Sphere(0.75f, 36, 20) + .Cylinder(0.5f, 1.5f, 36, 10) + .Torus(0.3f, 0.5f, 20, 36) + .Plane(1.5f, 1.5f, 10) + .Build(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shapes.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(Gfx::Desc().SampleCount()) + .Done()); + this->primGroups = std::move(shapes.PrimitiveGroups); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; @@ -80,7 +80,7 @@ ShapeApp::OnRunning() { int primGroupIndex = 0; for (const auto& pos : positions) { this->params.mvp = this->computeMVP(pos); - Gfx::ApplyUniformBlock(this->params); + Gfx::ApplyUniformBlock(this->params); Gfx::Draw(this->primGroups[primGroupIndex++]); } Gfx::EndPass(); diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 7ce4173d1..7ef199a57 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -38,7 +38,7 @@ OryolMain(SimpleRenderTargetApp); //------------------------------------------------------------------------------ AppState::Code SimpleRenderTargetApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Oryol Simple Render Target Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).SampleCount(4).Title("Oryol Simple Render Target Sample")); // create a color render target texture and compatible depth render target // texture for offscreen rendering @@ -98,7 +98,7 @@ SimpleRenderTargetApp::OnInit() { .Shader(Gfx::CreateShader(DisplayShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); this->displayDrawState.FSTexture[DisplayShader::tex] = rtColorTexture; diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index 5a8464fcd..0495fd556 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -46,7 +46,7 @@ class TestInputApp : public App { float maxLatitude; float minDist; float maxDist; - + PrimitiveGroup primGroup; DrawState drawState; glm::vec2 startPolar; @@ -67,10 +67,7 @@ OryolMain(TestInputApp); //------------------------------------------------------------------------------ AppState::Code TestInputApp::OnInit() { - Gfx::Setup(NewGfxDesc() - .Windowed(800, 400, "Oryol Input Test Sample") - .HighDPI(true) - .Done()); + Gfx::Setup(GfxDesc().Width(800).Height(400).HighDPI(true).Title("Oryol Input Test Sample")); Dbg::Setup(); if (Gfx::DisplayAttrs().Width > 800) { Dbg::TextScale(2.0f, 2.0f); @@ -91,21 +88,21 @@ TestInputApp::OnInit() { return PointerLockMode::DontCare; }); - // create a 3D cube - auto shape = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .Normals("in_normal", VertexFormat::Byte4N) - .Box(1.0f, 1.0f, 1.0f, 1) - .Build(); - this->primGroup = shape.PrimitiveGroups[0]; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(Shader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .CullFaceEnabled(true) + // create a 3D cube + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .Normals("in_normal", VertexFormat::Byte4N) + .Box(1.0f, 1.0f, 1.0f, 1) + .Build(); + this->primGroup = shape.PrimitiveGroups[0]; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .CullFaceEnabled(true) .Done()); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/TextureFloat/TextureFloat.cc b/code/Samples/TextureFloat/TextureFloat.cc index 0fc441b43..8c32469ff 100644 --- a/code/Samples/TextureFloat/TextureFloat.cc +++ b/code/Samples/TextureFloat/TextureFloat.cc @@ -18,7 +18,7 @@ class TextureFloatApp : public App { AppState::Code OnInit(); AppState::Code OnCleanup(); - Id renderPass; + Id renderPass; PassAction renderPassAction; DrawState offscreenDrawState; DrawState copyDrawState; @@ -33,7 +33,7 @@ OryolMain(TextureFloatApp); AppState::Code TextureFloatApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc().Windowed(512, 512, "Oryol Float Texture Sample").Done()); + Gfx::Setup(GfxDesc().Width(512).Height(512).Title("Oryol Float Texture Sample")); Dbg::Setup(); // check required extensions @@ -42,42 +42,42 @@ TextureFloatApp::OnInit() { } // create an offscreen float render target, same size as display, - // configure texture sampler with point-filtering - const PixelFormat::Code rtColorFormat = PixelFormat::RGBA32F; - Id rt = Gfx::CreateTexture(NewTextureDesc() - .RenderTarget(true) - .Width(Gfx::Desc().Width) - .Height(Gfx::Desc().Height) - .Format(rtColorFormat) - .MinFilter(TextureFilterMode::Nearest) - .MagFilter(TextureFilterMode::Nearest) - .Done()); - this->renderPass = Gfx::CreatePass(NewPassDesc().ColorAttachment(0, rt).Done()); - this->renderPassAction.DontCareColor(0); + // configure texture sampler with point-filtering + const PixelFormat::Code rtColorFormat = PixelFormat::RGBA32F; + Id rt = Gfx::CreateTexture(NewTextureDesc() + .RenderTarget(true) + .Width(Gfx::Desc().Width()) + .Height(Gfx::Desc().Height()) + .Format(rtColorFormat) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .Done()); + this->renderPass = Gfx::CreatePass(NewPassDesc().ColorAttachment(0, rt).Done()); + this->renderPassAction.DontCareColor(0); - // fullscreen mesh, we'll reuse this several times - const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() - .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); - this->copyDrawState.VertexBuffers[0] = this->offscreenDrawState.VertexBuffers[0]; + // fullscreen mesh, we'll reuse this several times + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Done()); + this->copyDrawState.VertexBuffers[0] = this->offscreenDrawState.VertexBuffers[0]; - // setup draw state for offscreen rendering to float render target - this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .Shader(Gfx::CreateShader(OffscreenShader::Desc())) - .Layout(0, {{"in_pos", VertexFormat::Float2}}) - .PrimitiveType(PrimitiveType::TriangleStrip) - .ColorFormat(rtColorFormat) - .DepthFormat(PixelFormat::None) + // setup draw state for offscreen rendering to float render target + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Shader(Gfx::CreateShader(OffscreenShader::Desc())) + .Layout(0, {{"in_pos", VertexFormat::Float2}}) + .PrimitiveType(PrimitiveType::TriangleStrip) + .ColorFormat(rtColorFormat) + .DepthFormat(PixelFormat::None) .Done()); this->offscreenFSParams.time = 0.0f; - // fullscreen-copy resources - this->copyDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .Shader(Gfx::CreateShader(CopyShader::Desc())) - .Layout(0, {{"in_pos", VertexFormat::Float2}}) - .PrimitiveType(PrimitiveType::TriangleStrip) + // fullscreen-copy resources + this->copyDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Shader(Gfx::CreateShader(CopyShader::Desc())) + .Layout(0, {{"in_pos", VertexFormat::Float2}}) + .PrimitiveType(PrimitiveType::TriangleStrip) .Done()); this->copyDrawState.FSTexture[CopyShader::tex] = rt; diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index 3707b2ff3..4fdaa9523 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -22,7 +22,7 @@ OryolMain(TriangleApp); AppState::Code TriangleApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc().Windowed(400, 400, "Oryol Triangle Sample").Done()); + Gfx::Setup(GfxDesc().Width(400).Height(400).Title("Oryol Triangle Sample")); // create a mesh with vertex data from memory const float vertices[] = { @@ -30,20 +30,20 @@ TriangleApp::OnInit() { 0.0f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f, 0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f , 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, - }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() - .Size(sizeof(vertices)) - .Content(vertices) - .Done()); - - // create shader and pipeline-state-object - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(0, { - { "position", VertexFormat::Float3 }, - { "color0", VertexFormat::Float4 } - }) - .Done()); + }; + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + .Size(sizeof(vertices)) + .Content(vertices) + .Done()); + + // create shader and pipeline-state-object + this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Shader(Gfx::CreateShader(Shader::Desc())) + .Layout(0, { + { "position", VertexFormat::Float3 }, + { "color0", VertexFormat::Float4 } + }) + .Done()); return App::OnInit(); } diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index 6f7e4208b..d1aed5b29 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -22,7 +22,7 @@ class VertexTextureApp : public App { glm::mat4 computeMVP(const glm::vec2& angles); Id plasmaRenderPass; - DrawState plasmaDrawState; + DrawState plasmaDrawState; PrimitiveGroup planePrimGroup; DrawState planeDrawState; @@ -38,54 +38,54 @@ OryolMain(VertexTextureApp); AppState::Code VertexTextureApp::OnInit() { // setup rendering system - Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "Oryol Vertex Texture Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).Title("Oryol Vertex Texture Sample")); Dbg::Setup(DbgSetup::MSAA4()); // FIXME: need a way to check number of vertex texture units - // create RGBA offscreen render pass which holds the plasma - Id plasmaTex = Gfx::CreateTexture(NewTextureDesc() - .RenderTarget(true) - .Width(256) - .Height(256) - .Format(PixelFormat::RGBA8) - .MinFilter(TextureFilterMode::Nearest) - .MagFilter(TextureFilterMode::Nearest) - .Done()); - this->plasmaRenderPass = Gfx::CreatePass(NewPassDesc() - .ColorAttachment(0, plasmaTex) - .Done()); + // create RGBA offscreen render pass which holds the plasma + Id plasmaTex = Gfx::CreateTexture(NewTextureDesc() + .RenderTarget(true) + .Width(256) + .Height(256) + .Format(PixelFormat::RGBA8) + .MinFilter(TextureFilterMode::Nearest) + .MagFilter(TextureFilterMode::Nearest) + .Done()); + this->plasmaRenderPass = Gfx::CreatePass(NewPassDesc() + .ColorAttachment(0, plasmaTex) + .Done()); - // setup draw state for offscreen rendering to float render target - const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->plasmaDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() - .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); - this->plasmaDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .Shader(Gfx::CreateShader(PlasmaShader::Desc())) - .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip) - .ColorFormat(PixelFormat::RGBA8) - .DepthFormat(PixelFormat::None) + // setup draw state for offscreen rendering to float render target + const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; + this->plasmaDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + .Size(sizeof(quadVertices)) + .Content(quadVertices) + .Done()); + this->plasmaDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Shader(Gfx::CreateShader(PlasmaShader::Desc())) + .Layout(0, { { "in_pos", VertexFormat::Float2 } }) + .PrimitiveType(PrimitiveType::TriangleStrip) + .ColorFormat(PixelFormat::RGBA8) + .DepthFormat(PixelFormat::None) .Done()); - // draw state for a 256x256 plane - auto shape = ShapeBuilder::New() - .Positions("in_pos", VertexFormat::Float3) - .TexCoords("in_uv", VertexFormat::Float2) - .Plane(3.0f, 3.0f, 255) - .Build(); - this->planePrimGroup = shape.PrimitiveGroups[0]; - this->planeDrawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); - this->planeDrawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->planeDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) - .Shader(Gfx::CreateShader(PlaneShader::Desc())) - .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(4) - .Done()); + // draw state for a 256x256 plane + auto shape = ShapeBuilder::New() + .Positions("in_pos", VertexFormat::Float3) + .TexCoords("in_uv", VertexFormat::Float2) + .Plane(3.0f, 3.0f, 255) + .Build(); + this->planePrimGroup = shape.PrimitiveGroups[0]; + this->planeDrawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); + this->planeDrawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); + this->planeDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .From(shape.PipelineDesc) + .Shader(Gfx::CreateShader(PlaneShader::Desc())) + .DepthWriteEnabled(true) + .DepthCmpFunc(CompareFunc::LessEqual) + .SampleCount(4) + .Done()); this->planeDrawState.VSTexture[PlaneShader::tex] = plasmaTex; const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index 916b64e26..da70e96ee 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -33,7 +33,7 @@ OryolMain(VolumeTextureApp); //------------------------------------------------------------------------------ AppState::Code VolumeTextureApp::OnInit() { - Gfx::Setup(NewGfxDesc().WindowedMSAA4(800, 600, "3D Texture Sample").Done()); + Gfx::Setup(GfxDesc().Width(800).Height(600).Title("3D Texture Sample")); Dbg::Setup(); // if 3D textures not supported show a warning later during rendering @@ -85,7 +85,7 @@ VolumeTextureApp::OnInit() { .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount) + .SampleCount(Gfx::Desc().SampleCount()) .Done()); // setup a projection matrix with the right aspect ratio From 1cdb97da0273fc1169b6e3716a1296e1f566000d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 17 Apr 2018 17:45:43 +0200 Subject: [PATCH 48/91] Move all Gfx Desc functions to new 'integrated builder methods' --- code/Modules/Assets/Gfx/MeshBuilder.cc | 72 +- code/Modules/Assets/Gfx/ShapeBuilder.cc | 148 +-- code/Modules/Assets/Gfx/TextureLoader.cc | 19 +- code/Modules/Dbg/private/debugTextRenderer.cc | 15 +- code/Modules/Gfx/Gfx.cc | 42 +- code/Modules/Gfx/GfxTypes.h | 875 ++++++++++-------- .../Gfx/private/sokol/sokolGfxBackend.cc | 168 ++-- code/Samples/ArrayTexture/ArrayTexture.cc | 11 +- code/Samples/BlendTest/BlendTest.cc | 19 +- code/Samples/DDSCubeMap/DDSCubeMap.cc | 11 +- .../DDSTextureLoading/DDSTextureLoading.cc | 11 +- code/Samples/DrawCallPerf/DrawCallPerf.cc | 6 +- code/Samples/FullscreenQuad/FullscreenQuad.cc | 10 +- code/Samples/GPUParticles/GPUParticles.cc | 43 +- .../InfiniteSpheres/InfiniteSpheres.cc | 27 +- code/Samples/Instancing/Instancing.cc | 11 +- .../MultipleRenderTarget.cc | 34 +- code/Samples/NativeTexture/NativeTexture.cc | 12 +- code/Samples/PackedNormals/PackedNormals.cc | 6 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 10 +- code/Samples/Quad/Quad.cc | 15 +- .../RenderToCubeMap/RenderToCubeMap.cc | 33 +- code/Samples/ResourceStress/ResourceStress.cc | 11 +- code/Samples/Sensors/Sensors.cc | 6 +- .../SeparateBuffers/SeparateBuffers.cc | 11 +- code/Samples/Shapes/Shapes.cc | 6 +- .../SimpleRenderTarget/SimpleRenderTarget.cc | 26 +- code/Samples/TestInput/TestInput.cc | 6 +- code/Samples/TextureFloat/TextureFloat.cc | 22 +- code/Samples/Triangle/Triangle.cc | 10 +- code/Samples/VertexTexture/VertexTexture.cc | 25 +- code/Samples/VolumeTexture/VolumeTexture.cc | 11 +- fips-generators/Shader.py | 30 +- 33 files changed, 872 insertions(+), 890 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index ac907a9c3..1243bd3b8 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -3,7 +3,7 @@ //------------------------------------------------------------------------------ #include "Pre.h" #include "MeshBuilder.h" -#include "Core/Assertion.h" +#include "Core/Assertion.h" #include "Gfx/Gfx.h" #include @@ -14,39 +14,37 @@ MeshBuilder& MeshBuilder::Begin() { o_assert_dbg(!this->inBegin); o_assert_dbg(this->NumVertices > 0); - o_assert_dbg(!this->Layout.Empty()); + o_assert_dbg(!this->Layout.Empty()); this->inBegin = true; - - // compute the data buffer size - const int vbSize = this->NumVertices * this->Layout.ByteSize(); - const int ibSize = this->NumIndices * IndexType::ByteSize(this->IndexType); - int allSize = vbSize + ibSize; - - // setup the data buffer object - this->vertexPointer = this->result.Data.Add(allSize); - this->indexPointer = this->vertexPointer + vbSize; - this->endPointer = this->indexPointer + ibSize; - - // setup Result object - this->result.Layout = this->Layout; - this->result.IndexType = this->IndexType; - this->result.VertexBufferDesc = NewBufferDesc() - .Size(vbSize) - .Type(BufferType::VertexBuffer) - .Usage(this->VertexUsage) - .Content(this->vertexPointer) - .Done(); - if (ibSize > 0) { - this->result.IndexBufferDesc = NewBufferDesc() - .Size(ibSize) - .Type(BufferType::IndexBuffer) - .Usage(this->IndexUsage) - .Content(this->indexPointer) - .Done(); - } - else { - this->result.IndexBufferDesc = BufferDesc(); - } + + // compute the data buffer size + const int vbSize = this->NumVertices * this->Layout.ByteSize(); + const int ibSize = this->NumIndices * IndexType::ByteSize(this->IndexType); + int allSize = vbSize + ibSize; + + // setup the data buffer object + this->vertexPointer = this->result.Data.Add(allSize); + this->indexPointer = this->vertexPointer + vbSize; + this->endPointer = this->indexPointer + ibSize; + + // setup Result object + this->result.Layout = this->Layout; + this->result.IndexType = this->IndexType; + this->result.VertexBufferDesc = BufferDesc() + .Size(vbSize) + .Type(BufferType::VertexBuffer) + .Usage(this->VertexUsage) + .Content(this->vertexPointer); + if (ibSize > 0) { + this->result.IndexBufferDesc = BufferDesc() + .Size(ibSize) + .Type(BufferType::IndexBuffer) + .Usage(this->IndexUsage) + .Content(this->indexPointer); + } + else { + this->result.IndexBufferDesc = BufferDesc(); + } return *this; } @@ -64,10 +62,10 @@ MeshBuilder::Build() { this->vertexPointer = nullptr; this->indexPointer = nullptr; this->endPointer = nullptr; - this->result.VertexBufferDesc = BufferDesc(); - this->result.IndexBufferDesc = BufferDesc(); - this->result.Layout = VertexLayout(); - this->result.IndexType = IndexType::Invalid; + this->result.VertexBufferDesc = BufferDesc(); + this->result.IndexBufferDesc = BufferDesc(); + this->result.Layout = VertexLayout(); + this->result.IndexType = IndexType::Invalid; this->result.Data.Clear(); return res; diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.cc b/code/Modules/Assets/Gfx/ShapeBuilder.cc index 19e2ba381..849177331 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.cc +++ b/code/Modules/Assets/Gfx/ShapeBuilder.cc @@ -9,63 +9,63 @@ #include "glm/trigonometric.hpp" namespace Oryol { - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::RandomColors(bool b) { - this->randomColors = b; - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::Positions(const StringAtom& name, VertexFormat::Code fmt) { - o_assert_dbg(this->posIndex == InvalidIndex); - this->posIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::Transform(const glm::mat4& m) { - this->transform = m; - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::VertexColor(const glm::vec4& c) { - this->color = c; - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::Normals(const StringAtom& name, VertexFormat::Code fmt) { - o_assert_dbg(this->normalIndex == InvalidIndex); - this->normalIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::TexCoords(const StringAtom& name, VertexFormat::Code fmt) { - o_assert_dbg(this->texCoordIndex == InvalidIndex); - this->texCoordIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); - return *this; -} - -//------------------------------------------------------------------------------ -ShapeBuilder& -ShapeBuilder::Colors(const Oryol::StringAtom &name, VertexFormat::Code fmt) { - o_assert_dbg(this->colorIndex == InvalidIndex); - this->colorIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); - return *this; -} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::RandomColors(bool b) { + this->randomColors = b; + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::Positions(const StringAtom& name, VertexFormat::Code fmt) { + o_assert_dbg(this->posIndex == InvalidIndex); + this->posIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::Transform(const glm::mat4& m) { + this->transform = m; + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::VertexColor(const glm::vec4& c) { + this->color = c; + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::Normals(const StringAtom& name, VertexFormat::Code fmt) { + o_assert_dbg(this->normalIndex == InvalidIndex); + this->normalIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::TexCoords(const StringAtom& name, VertexFormat::Code fmt) { + o_assert_dbg(this->texCoordIndex == InvalidIndex); + this->texCoordIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} + +//------------------------------------------------------------------------------ +ShapeBuilder& +ShapeBuilder::Colors(const Oryol::StringAtom &name, VertexFormat::Code fmt) { + o_assert_dbg(this->colorIndex == InvalidIndex); + this->colorIndex = this->meshBuilder.Layout.NumComponents(); + this->meshBuilder.Layout.Add(name, fmt); + return *this; +} //------------------------------------------------------------------------------ void @@ -285,27 +285,27 @@ ShapeBuilder::Build() { } curVertexIndex += shape.numVertices; curTriIndex += shape.numTris; - } - MeshBuilder::Result meshResult = this->meshBuilder.Build(); - ShapeBuilder::Result shapeResult; - shapeResult.VertexBufferDesc = std::move(meshResult.VertexBufferDesc); - shapeResult.IndexBufferDesc = std::move(meshResult.IndexBufferDesc); - shapeResult.PipelineDesc.Layouts[0] = std::move(meshResult.Layout); - shapeResult.PipelineDesc.IndexType = meshResult.IndexType; - shapeResult.Data = std::move(meshResult.Data); - shapeResult.PrimitiveGroups = std::move(this->primGroups); + } + MeshBuilder::Result meshResult = this->meshBuilder.Build(); + ShapeBuilder::Result shapeResult; + shapeResult.VertexBufferDesc = std::move(meshResult.VertexBufferDesc); + shapeResult.IndexBufferDesc = std::move(meshResult.IndexBufferDesc); + shapeResult.PipelineDesc.layouts[0] = std::move(meshResult.Layout); + shapeResult.PipelineDesc.indexType = meshResult.IndexType; + shapeResult.Data = std::move(meshResult.Data); + shapeResult.PrimitiveGroups = std::move(this->primGroups); // clear private data (but not config params) this->curPrimGroupBaseElement = 0; - this->curPrimGroupNumElements = 0; - this->posIndex = InvalidIndex; - this->normalIndex = InvalidIndex; - this->texCoordIndex = InvalidIndex; + this->curPrimGroupNumElements = 0; + this->posIndex = InvalidIndex; + this->normalIndex = InvalidIndex; + this->texCoordIndex = InvalidIndex; this->colorIndex = InvalidIndex; this->transform = glm::mat4(); this->color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - this->shapes.Clear(); - this->primGroups.Clear(); + this->shapes.Clear(); + this->primGroups.Clear(); this->meshBuilder.Layout.Clear(); return shapeResult; @@ -505,8 +505,8 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri const float du = 1.0f / numSlices; const float dv = 1.0f / numStacks; - const bool hasNormals = InvalidIndex != this->normalIndex; - const bool hasTexCoords = InvalidIndex != this->texCoordIndex; + const bool hasNormals = InvalidIndex != this->normalIndex; + const bool hasTexCoords = InvalidIndex != this->texCoordIndex; for (int stack = 0; stack <= numStacks; stack++) { const float stackAngle = (pi * stack) / numStacks; diff --git a/code/Modules/Assets/Gfx/TextureLoader.cc b/code/Modules/Assets/Gfx/TextureLoader.cc index d5b0c4556..58c1b1a18 100644 --- a/code/Modules/Assets/Gfx/TextureLoader.cc +++ b/code/Modules/Assets/Gfx/TextureLoader.cc @@ -75,21 +75,20 @@ static TextureDesc buildDesc(const TextureDesc& blueprint, const gliml::context& break; } o_assert(PixelFormat::Invalid != pixelFormat); - auto bld = TextureBuilder::New() - .From(blueprint) + auto desc = TextureDesc(blueprint) .Width(w) .Height(h) .NumMipMaps(numMips) .Format(pixelFormat); switch (ctx.texture_target()) { case GLIML_GL_TEXTURE_2D: - bld.Type(TextureType::Texture2D); + desc.Type(TextureType::Texture2D); break; case GLIML_GL_TEXTURE_3D: - bld.Type(TextureType::Texture3D).Depth(d); + desc.Type(TextureType::Texture3D).Depth(d); break; case GLIML_GL_TEXTURE_CUBE_MAP: - bld.Type(TextureType::TextureCube); + desc.Type(TextureType::TextureCube); break; default: o_error("Unknown texture type!\n"); @@ -100,18 +99,18 @@ static TextureDesc buildDesc(const TextureDesc& blueprint, const gliml::context& o_assert_dbg(GfxConfig::MaxNumTextureMipMaps >= ctx.num_mipmaps(0)); for (int faceIndex = 0; faceIndex < numFaces; faceIndex++) { for (int mipIndex = 0; mipIndex < numMips; mipIndex++) { - bld.MipContent(faceIndex, mipIndex, ctx.image_data(faceIndex, mipIndex)); - bld.MipSize(faceIndex, mipIndex, ctx.image_size(faceIndex, mipIndex)); + desc.MipContent(faceIndex, mipIndex, ctx.image_data(faceIndex, mipIndex)); + desc.MipSize(faceIndex, mipIndex, ctx.image_size(faceIndex, mipIndex)); } } - return bld.Desc; + return desc; } //------------------------------------------------------------------------------ Id TextureLoader::Load(const TextureDesc& desc) { - Id resId = Gfx::AllocTexture(desc.Locator); - IO::Load(URL(desc.Locator.Location()), [resId, desc](IO::LoadResult result) { + Id resId = Gfx::AllocTexture(desc.locator); + IO::Load(URL(desc.locator.Location()), [resId, desc](IO::LoadResult result) { const uint8_t* data = result.Data.Data(); const int dataSize = result.Data.Size(); gliml::context ctx; diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 4727a4810..5a0915ffa 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -145,15 +145,14 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { { "color0", VertexFormat::UByte4N } }; const int vbufSize = this->maxNumVertices * this->vertexLayout.ByteSize(); - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Size(vbufSize) .Type(BufferType::VertexBuffer) - .Usage(Usage::Stream) - .Done()); + .Usage(Usage::Stream)); o_assert_dbg(this->drawState.VertexBuffers[0].IsValid()); // create pipeline object - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(DbgTextShader::Desc())) .Layout(0, this->vertexLayout) .DepthWriteEnabled(false) @@ -164,8 +163,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .ColorWriteMask(PixelChannel::RGB) .ColorFormat(setup.ColorFormat) .DepthFormat(setup.DepthFormat) - .SampleCount(setup.SampleCount) - .Done()); + .SampleCount(setup.SampleCount)); // convert the KC85/4 font into 8bpp image data const int numChars = 128; @@ -194,7 +192,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { } // setup texture, pixel format is 8bpp uncompressed - this->drawState.FSTexture[DbgTextShader::tex] = Gfx::CreateTexture(NewTextureDesc() + this->drawState.FSTexture[DbgTextShader::tex] = Gfx::CreateTexture(TextureDesc() .Type(TextureType::Texture2D) .Width(imgWidth) .Height(imgHeight) @@ -204,8 +202,7 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge) .MipContent(0, 0, data.Data()) - .MipSize(0, 0, data.Size()) - .Done()); + .MipSize(0, 0, data.Size())); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 006f224e2..7db82fd74 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -21,7 +21,7 @@ namespace { }; _state* state = nullptr; } - + //------------------------------------------------------------------------------ void Gfx::Setup(const GfxDesc& desc) { @@ -277,34 +277,34 @@ Gfx::Draw(const PrimitiveGroup& primGroup, int numInstances) { Id Gfx::CreateTexture(const TextureDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(desc.Locator); + Id resId = state->backend.LookupResource(desc.locator); if (!resId.IsValid()) { resId = state->backend.CreateTexture(desc); - state->backend.AddResource(desc.Locator, resId); + state->backend.AddResource(desc.locator, resId); + } + return resId; +} + +//------------------------------------------------------------------------------ +Id +Gfx::CreateBuffer(const BufferDesc& desc) { + o_assert_dbg(IsValid()); + Id resId = state->backend.LookupResource(desc.locator); + if (!resId.IsValid()) { + resId = state->backend.CreateBuffer(desc); + state->backend.AddResource(desc.locator, resId); } return resId; } -//------------------------------------------------------------------------------ -Id -Gfx::CreateBuffer(const BufferDesc& desc) { - o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(desc.Locator); - if (!resId.IsValid()) { - resId = state->backend.CreateBuffer(desc); - state->backend.AddResource(desc.Locator, resId); - } - return resId; -} - //------------------------------------------------------------------------------ Id Gfx::CreateShader(const ShaderDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(desc.Locator); + Id resId = state->backend.LookupResource(desc.locator); if (!resId.IsValid()) { resId = state->backend.CreateShader(desc); - state->backend.AddResource(desc.Locator, resId); + state->backend.AddResource(desc.locator, resId); } return resId; } @@ -313,10 +313,10 @@ Gfx::CreateShader(const ShaderDesc& desc) { Id Gfx::CreatePipeline(const PipelineDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(desc.Locator); + Id resId = state->backend.LookupResource(desc.locator); if (!resId.IsValid()) { resId = state->backend.CreatePipeline(desc); - state->backend.AddResource(desc.Locator, resId); + state->backend.AddResource(desc.locator, resId); } return resId; } @@ -325,10 +325,10 @@ Gfx::CreatePipeline(const PipelineDesc& desc) { Id Gfx::CreatePass(const PassDesc& desc) { o_assert_dbg(IsValid()); - Id resId = state->backend.LookupResource(desc.Locator); + Id resId = state->backend.LookupResource(desc.locator); if (!resId.IsValid()) { resId = state->backend.CreatePass(desc); - state->backend.AddResource(desc.Locator, resId); + state->backend.AddResource(desc.locator, resId); } return resId; } diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 052b5025e..41e526600 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -827,9 +827,13 @@ class ImageContent { @see Gfx, DisplayAttrs */ struct GfxDesc { - /// init with content of anther GfxDesc object - GfxDesc& From(const GfxDesc& rhs) { - *this = rhs; return *this; + GfxDesc() { + for (int i = 0; i < GfxResourceType::Num; i++) { + resourcePoolSize[i] = GfxConfig::DefaultResourcePoolSize; + } + } + GfxDesc(const GfxDesc& rhs) { + *this = rhs; } GfxDesc& Width(int w) { width = w; return *this; @@ -937,11 +941,6 @@ struct GfxDesc { int resourceLabelStackCapacity = 256; int resourceRegistryCapacity = 256; int globalUniformBufferSize = GfxConfig::DefaultGlobalUniformBufferSize; - GfxDesc() { - for (int i = 0; i < GfxResourceType::Num; i++) { - resourcePoolSize[i] = GfxConfig::DefaultResourcePoolSize; - } - } }; //------------------------------------------------------------------------------ @@ -951,62 +950,56 @@ struct GfxDesc { @brief creation attributes for vertex- and index-buffers */ struct BufferDesc { - /// resource locator - class Locator Locator = Locator::NonShared(); - /// the buffer type (vertex- or index-buffer) - BufferType::Code Type = BufferType::VertexBuffer; - /// the buffer usage - Oryol::Usage::Code Usage = Usage::Immutable; - /// the buffer size in bytes - int Size = 0; - /// optional pointer to content - const void* Content = nullptr; - /// optional native 3D-API buffers - StaticArray NativeBuffers; - - /// default constructor BufferDesc() { - NativeBuffers.Fill(0); + nativeBuffers.Fill(0); } -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::BufferBuilder - @ingroup Gfx - @brief builder for BufferDesc object -*/ -class BufferBuilder { -public: - BufferDesc Desc; - BufferBuilder& From(const BufferDesc& desc) { - Desc = desc; return *this; + BufferDesc(const BufferDesc& rhs) { + *this = rhs; } - BufferBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; + BufferDesc& Locator(const class Locator& l) { + locator = l; return *this; } - BufferBuilder& Type(BufferType::Code t) { - Desc.Type = t; return *this; + const class Locator& Locator() const { + return locator; } - BufferBuilder& Usage(Usage::Code u) { - Desc.Usage = u; return *this; + BufferDesc& Type(BufferType::Code t) { + type = t; return *this; } - BufferBuilder& Size(int s) { - Desc.Size = s; return *this; + BufferType::Code Type() const { + return type; } - BufferBuilder& Content(const void* ptr) { - Desc.Content = ptr; return *this; + BufferDesc& Usage(Usage::Code u) { + usage = u; return *this; } - BufferBuilder& NativeBuffer(int index, intptr_t buf) { - Desc.NativeBuffers[index] = buf; return *this; + Usage::Code Usage() const { + return usage; } - const BufferDesc& Done() { - return Desc; + BufferDesc& Size(int s) { + size = s; return *this; } + int Size() const { + return size; + } + BufferDesc& Content(const void* c) { + content = c; return *this; + } + const void* Content() const { + return content; + } + BufferDesc& NativeBuffer(int index, intptr_t buf) { + nativeBuffers[index] = buf; return *this; + } + intptr_t NativeBuffer(int index) const { + return nativeBuffers[index]; + } + + class Locator locator = Locator::NonShared(); + BufferType::Code type = BufferType::VertexBuffer; + Oryol::Usage::Code usage = Usage::Immutable; + int size = 0; + const void* content = nullptr; + StaticArray nativeBuffers; }; -inline BufferBuilder NewBufferDesc() { - return BufferBuilder(); -} //------------------------------------------------------------------------------ /** @@ -1015,217 +1008,316 @@ inline BufferBuilder NewBufferDesc() { @brief creation attribute for pipeline state objects */ struct PipelineDesc { - /// resource locator - class Locator Locator = Locator::NonShared(); - /// shader - Id Shader; - /// input vertex layouts (one per vertex buffer slot) - StaticArray Layouts; - /// primitive type - PrimitiveType::Code PrimType = PrimitiveType::Triangles; - /// index type (none, 16-bit or 32-bit) - Oryol::IndexType::Code IndexType = IndexType::None; - - /// depth-stencil-state - CompareFunc::Code DepthCmpFunc = CompareFunc::Always; - bool DepthWriteEnabled = false; - bool StencilEnabled = false; - uint8_t StencilReadMask = 0xFF; - uint8_t StencilWriteMask = 0xFF; - uint8_t StencilRef = 0x00; - StencilOp::Code StencilFrontFailOp = StencilOp::Keep; - StencilOp::Code StencilFrontDepthFailOp = StencilOp::Keep; - StencilOp::Code StencilFrontPassOp = StencilOp::Keep; - CompareFunc::Code StencilFrontCmpFunc = CompareFunc::Always; - StencilOp::Code StencilBackFailOp = StencilOp::Keep; - StencilOp::Code StencilBackDepthFailOp = StencilOp::Keep; - StencilOp::Code StencilBackPassOp = StencilOp::Keep; - CompareFunc::Code StencilBackCmpFunc = CompareFunc::Always; - - /// blend state - bool BlendEnabled = false; - BlendFactor::Code BlendSrcFactorRGB = BlendFactor::One; - BlendFactor::Code BlendDstFactorRGB = BlendFactor::Zero; - BlendOperation::Code BlendOpRGB = BlendOperation::Add; - BlendFactor::Code BlendSrcFactorAlpha = BlendFactor::One; - BlendFactor::Code BlendDstFactorAlpha = BlendFactor::Zero; - BlendOperation::Code BlendOpAlpha = BlendOperation::Add; - PixelChannel::Mask ColorWriteMask = PixelChannel::RGBA; - PixelFormat::Code ColorFormat = PixelFormat::RGBA8; - PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; - int MRTCount = 1; - glm::vec4 BlendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - - /// rasterizer state - bool CullFaceEnabled = false; - bool AlphaToCoverageEnabled = false; - Face::Code CullFace = Face::Back; - int SampleCount = 1; - float DepthBias = 0.0f; - float DepthBiasSlopeScale = 0.0f; - float DepthBiasClamp = 0.0f; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::PipelineBuilder - @ingroup Gfx - @brief builder for PipelineDesc objects -*/ -class PipelineBuilder { -public: - PipelineDesc Desc; - PipelineBuilder& From(const PipelineDesc& desc) { - Desc = desc; return *this; + PipelineDesc() { }; + PipelineDesc(const PipelineDesc& rhs) { + *this = rhs; + } + PipelineDesc& Locator(const class Locator& loc) { + locator = loc; return *this; + } + const class Locator& Locator() const { + return locator; } - PipelineBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; + PipelineDesc& Shader(const Id& shd) { + shader = shd; return *this; } - PipelineBuilder& Shader(const Id& shd) { - Desc.Shader = shd; return *this; + const Id& Shader() const { + return shader; } - PipelineBuilder& Layout(int slotIndex, const VertexLayout& layout) { - Desc.Layouts[slotIndex] = layout; return *this; + PipelineDesc& Layout(int slotIndex, const VertexLayout& layout) { + layouts[slotIndex] = layout; return *this; } - PipelineBuilder& PrimitiveType(PrimitiveType::Code t) { - Desc.PrimType = t; return *this; + const VertexLayout& Layout(int slotIndex) const { + return layouts[slotIndex]; } - PipelineBuilder& IndexType(IndexType::Code t) { - Desc.IndexType = t; return *this; + PipelineDesc& PrimitiveType(PrimitiveType::Code t) { + primType = t; return *this; } - PipelineBuilder& DepthCmpFunc(CompareFunc::Code f) { - Desc.DepthCmpFunc = f; return *this; + PrimitiveType::Code PrimitiveType() const { + return primType; } - PipelineBuilder& DepthWriteEnabled(bool b) { - Desc.DepthWriteEnabled = b; return *this; + PipelineDesc& IndexType(IndexType::Code t) { + indexType = t; return *this; } - PipelineBuilder& StencilEnabled(bool b) { - Desc.StencilEnabled = b; return *this; + IndexType::Code IndexType() const { + return indexType; } - PipelineBuilder& StencilReadMask(uint8_t m) { - Desc.StencilReadMask = m; return *this; + PipelineDesc& DepthCmpFunc(CompareFunc::Code f) { + depthCmpFunc = f; return *this; } - PipelineBuilder& StencilWriteMask(uint8_t m) { - Desc.StencilWriteMask = m; return *this; + CompareFunc::Code DepthCmpFunc() const { + return depthCmpFunc; } - PipelineBuilder& StencilRef(uint8_t r) { - Desc.StencilRef = r; return *this; + PipelineDesc& DepthWriteEnabled(bool b) { + depthWriteEnabled = b; return *this; } - PipelineBuilder& StencilFailOp(Face::Code face, StencilOp::Code op) { + bool DepthWriteEnabled() const { + return depthWriteEnabled; + } + PipelineDesc& StencilEnabled(bool b) { + stencilEnabled = b; return *this; + } + bool StencilEnabled() const { + return stencilEnabled; + } + PipelineDesc& StencilReadMask(uint8_t m) { + stencilReadMask = m; return *this; + } + uint8_t StencilReadMask() const { + return stencilReadMask; + } + PipelineDesc& StencilWriteMask(uint8_t m) { + stencilWriteMask = m; return *this; + } + uint8_t StencilWriteMask() const { + return stencilWriteMask; + } + PipelineDesc& StencilRef(uint8_t r) { + stencilRef = r; return *this; + } + uint8_t StencilRef() const { + return stencilRef; + } + PipelineDesc& StencilFailOp(Face::Code face, StencilOp::Code op) { if (Face::Front & face) { - Desc.StencilFrontFailOp = op; + stencilFrontFailOp = op; } if (Face::Back & face) { - Desc.StencilBackFailOp = op; + stencilBackFailOp = op; } return *this; } - PipelineBuilder& StencilDepthFailOp(Face::Code face, StencilOp::Code op) { + StencilOp::Code StencilFailOp(Face::Code face) const { if (Face::Front & face) { - Desc.StencilFrontDepthFailOp = op; + return stencilFrontFailOp; + } + else { + return stencilBackFailOp; + } + } + PipelineDesc& StencilDepthFailOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + stencilFrontDepthFailOp = op; } if (Face::Back & face) { - Desc.StencilBackDepthFailOp = op; + stencilBackDepthFailOp = op; } return *this; } - PipelineBuilder& StencilPassOp(Face::Code face, StencilOp::Code op) { + StencilOp::Code StencilDepthFailOp(Face::Code face) { if (Face::Front & face) { - Desc.StencilFrontPassOp = op; + return stencilFrontDepthFailOp; + } + else { + return stencilBackDepthFailOp; + } + } + PipelineDesc& StencilPassOp(Face::Code face, StencilOp::Code op) { + if (Face::Front & face) { + stencilFrontPassOp = op; } if (Face::Back & face) { - Desc.StencilBackPassOp = op; + stencilBackPassOp = op; } return *this; } - PipelineBuilder& StencilCmpFunc(Face::Code face, CompareFunc::Code fn) { + StencilOp::Code StencilPassOp(Face::Code face) { if (Face::Front & face) { - Desc.StencilFrontCmpFunc = fn; + return stencilFrontPassOp; + } + else { + return stencilBackPassOp; + } + } + PipelineDesc& StencilCmpFunc(Face::Code face, CompareFunc::Code fn) { + if (Face::Front & face) { + stencilFrontCmpFunc = fn; } if (Face::Back & face) { - Desc.StencilBackCmpFunc = fn; + stencilBackCmpFunc = fn; } return *this; } - PipelineBuilder& BlendEnabled(bool b) { - Desc.BlendEnabled = b; return *this; + CompareFunc::Code StencilCmpFunc(Face::Code face) { + if (Face::Front & face) { + return stencilFrontCmpFunc; + } + else { + return stencilBackCmpFunc; + } + } + PipelineDesc& BlendEnabled(bool b) { + blendEnabled = b; return *this; } - PipelineBuilder& BlendSrcFactor(BlendFactor::Code f) { - Desc.BlendSrcFactorRGB = f; - Desc.BlendSrcFactorAlpha = f; + bool BlendEnabled() const { + return blendEnabled; + } + PipelineDesc& BlendSrcFactor(BlendFactor::Code f) { + blendSrcFactorRGB = f; + blendSrcFactorAlpha = f; return *this; } - PipelineBuilder& BlendSrcFactorRGB(BlendFactor::Code f) { - Desc.BlendSrcFactorRGB = f; return *this; + PipelineDesc& BlendSrcFactorRGB(BlendFactor::Code f) { + blendSrcFactorRGB = f; return *this; + } + BlendFactor::Code BlendSrcFactorRGB() const { + return blendSrcFactorRGB; + } + PipelineDesc& BlendSrcFactorAlpha(BlendFactor::Code f) { + blendSrcFactorAlpha = f; return *this; } - PipelineBuilder& BlendSrcFactorAlpha(BlendFactor::Code f) { - Desc.BlendSrcFactorAlpha = f; return *this; + BlendFactor::Code BlendSrcFactorAlpha() const { + return blendSrcFactorAlpha; } - PipelineBuilder& BlendDstFactor(BlendFactor::Code f) { - Desc.BlendDstFactorRGB = f; - Desc.BlendDstFactorAlpha = f; + PipelineDesc& BlendDstFactor(BlendFactor::Code f) { + blendDstFactorRGB = f; + blendDstFactorAlpha = f; return *this; } - PipelineBuilder& BlendDstFactorRGB(BlendFactor::Code f) { - Desc.BlendDstFactorRGB = f; return *this; + PipelineDesc& BlendDstFactorRGB(BlendFactor::Code f) { + blendDstFactorRGB = f; return *this; } - PipelineBuilder& BlendDstFactorAlpha(BlendFactor::Code f) { - Desc.BlendDstFactorAlpha = f; return *this; + BlendFactor::Code BlendDstFactorRGB() const { + return blendDstFactorRGB; } - PipelineBuilder& BlendOp(BlendOperation::Code op) { - Desc.BlendOpRGB = op; - Desc.BlendOpAlpha = op; + PipelineDesc& BlendDstFactorAlpha(BlendFactor::Code f) { + blendDstFactorAlpha = f; return *this; + } + BlendFactor::Code BlendDstFactorAlpha() const { + return blendDstFactorAlpha; + } + PipelineDesc& BlendOp(BlendOperation::Code op) { + blendOpRGB = op; + blendOpAlpha = op; return *this; } - PipelineBuilder& BlendOpRGB(BlendOperation::Code op) { - Desc.BlendOpRGB = op; return *this; + PipelineDesc& BlendOpRGB(BlendOperation::Code op) { + blendOpRGB = op; return *this; } - PipelineBuilder& BlendOpAlpha(BlendOperation::Code op) { - Desc.BlendOpAlpha = op; return *this; + BlendOperation::Code BlendOpRGB() const { + return blendOpRGB; } - PipelineBuilder& ColorWriteMask(PixelChannel::Mask m) { - Desc.ColorWriteMask = m; return *this; + PipelineDesc& BlendOpAlpha(BlendOperation::Code op) { + blendOpAlpha = op; return *this; } - PipelineBuilder& ColorFormat(PixelFormat::Code fmt) { - Desc.ColorFormat = fmt; return *this; + BlendOperation::Code BlendOpAlpha() const { + return blendOpAlpha; } - PipelineBuilder& DepthFormat(PixelFormat::Code fmt) { - Desc.DepthFormat = fmt; return *this; + PipelineDesc& ColorWriteMask(PixelChannel::Mask m) { + colorWriteMask = m; return *this; } - PipelineBuilder& SampleCount(int c) { - Desc.SampleCount = c; return *this; + PixelChannel::Mask ColorWriteMask() const { + return colorWriteMask; } - PipelineBuilder& MRTCount(int c) { - Desc.MRTCount = c; return *this; + PipelineDesc& ColorFormat(PixelFormat::Code fmt) { + colorFormat = fmt; return *this; } - PipelineBuilder& BlendColor(const glm::vec4& c) { - Desc.BlendColor = c; return *this; + PixelFormat::Code ColorFormat() const { + return colorFormat; } - PipelineBuilder& CullFaceEnabled(bool b) { - Desc.CullFaceEnabled = b; return *this; + PipelineDesc& DepthFormat(PixelFormat::Code fmt) { + depthFormat = fmt; return *this; } - PipelineBuilder& CullFace(Face::Code f) { - Desc.CullFace = f; return *this; + PixelFormat::Code DepthFormat() const { + return depthFormat; } - PipelineBuilder& AlphaToCoverageEnabled(bool b) { - Desc.AlphaToCoverageEnabled = b; return *this; + PipelineDesc& SampleCount(int c) { + sampleCount = c; return *this; } - PipelineBuilder& DepthBias(float f) { - Desc.DepthBias = f; return *this; + int SampleCount() const { + return sampleCount; + } + PipelineDesc& MRTCount(int c) { + mrtCount = c; return *this; + } + int MRTCount() const { + return mrtCount; + } + PipelineDesc& BlendColor(const glm::vec4& c) { + blendColor = c; return *this; + } + const glm::vec4& BlendColor() const { + return blendColor; + } + PipelineDesc& CullFaceEnabled(bool b) { + cullFaceEnabled = b; return *this; + } + bool CullFaceEnabled() const { + return cullFaceEnabled; + } + PipelineDesc& CullFace(Face::Code f) { + cullFace = f; return *this; + } + Face::Code CullFace() const { + return cullFace; + } + PipelineDesc& AlphaToCoverageEnabled(bool b) { + alphaToCoverageEnabled = b; return *this; + } + bool AlphaToCoverageEnabled() const { + return alphaToCoverageEnabled; } - PipelineBuilder& DepthBiasSlopeScale(float f) { - Desc.DepthBiasSlopeScale = f; return *this; + PipelineDesc& DepthBias(float f) { + depthBias = f; return *this; } - PipelineBuilder& DepthBiasClamp(float f) { - Desc.DepthBiasClamp = f; return *this; + float DepthBias() const { + return depthBias; } - const PipelineDesc& Done() { - return Desc; + PipelineDesc& DepthBiasSlopeScale(float f) { + depthBiasSlopeScale = f; return *this; } + float DepthBiasSlopeScale() const { + return depthBiasSlopeScale; + } + PipelineDesc& DepthBiasClamp(float f) { + depthBiasClamp = f; return *this; + } + float DepthBiasClamp() const { + return depthBiasClamp; + } + + class Locator locator = Locator::NonShared(); + Id shader; + StaticArray layouts; + PrimitiveType::Code primType = PrimitiveType::Triangles; + Oryol::IndexType::Code indexType = IndexType::None; + + CompareFunc::Code depthCmpFunc = CompareFunc::Always; + bool depthWriteEnabled = false; + bool stencilEnabled = false; + uint8_t stencilReadMask = 0xFF; + uint8_t stencilWriteMask = 0xFF; + uint8_t stencilRef = 0x00; + StencilOp::Code stencilFrontFailOp = StencilOp::Keep; + StencilOp::Code stencilFrontDepthFailOp = StencilOp::Keep; + StencilOp::Code stencilFrontPassOp = StencilOp::Keep; + CompareFunc::Code stencilFrontCmpFunc = CompareFunc::Always; + StencilOp::Code stencilBackFailOp = StencilOp::Keep; + StencilOp::Code stencilBackDepthFailOp = StencilOp::Keep; + StencilOp::Code stencilBackPassOp = StencilOp::Keep; + CompareFunc::Code stencilBackCmpFunc = CompareFunc::Always; + + bool blendEnabled = false; + BlendFactor::Code blendSrcFactorRGB = BlendFactor::One; + BlendFactor::Code blendDstFactorRGB = BlendFactor::Zero; + BlendOperation::Code blendOpRGB = BlendOperation::Add; + BlendFactor::Code blendSrcFactorAlpha = BlendFactor::One; + BlendFactor::Code blendDstFactorAlpha = BlendFactor::Zero; + BlendOperation::Code blendOpAlpha = BlendOperation::Add; + PixelChannel::Mask colorWriteMask = PixelChannel::RGBA; + PixelFormat::Code colorFormat = PixelFormat::RGBA8; + PixelFormat::Code depthFormat = PixelFormat::DEPTHSTENCIL; + int mrtCount = 1; + glm::vec4 blendColor = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); + + bool cullFaceEnabled = false; + bool alphaToCoverageEnabled = false; + Face::Code cullFace = Face::Back; + int sampleCount = 1; + float depthBias = 0.0f; + float depthBiasSlopeScale = 0.0f; + float depthBiasClamp = 0.0f; }; -inline PipelineBuilder NewPipelineDesc() { - return PipelineBuilder(); -} //------------------------------------------------------------------------------ /** @@ -1234,12 +1326,61 @@ inline PipelineBuilder NewPipelineDesc() { @brief creation attributes for shaders */ struct ShaderDesc { - /// the resource locator - class Locator Locator = Locator::NonShared(); - /// vertex shader input descriptions - VertexLayout Layout; + ShaderDesc() { }; + ShaderDesc(const ShaderDesc& rhs) { + *this = rhs; + } + ShaderDesc& Locator(const class Locator& loc) { + locator = loc; return *this; + } + const class Locator& Locator() const { + return locator; + } + ShaderDesc& Source(ShaderStage::Code stg, const char* src) { + stage[stg].Source = src; return *this; + } + const char* Source(ShaderStage::Code stg) { + return stage[stg].Source; + } + ShaderDesc& ByteCode(ShaderStage::Code stg, const uint8_t* ptr, int size) { + stage[stg].ByteCode = ptr; + stage[stg].ByteCodeSize = size; + return *this; + } + const uint8_t* ByteCodePtr(ShaderStage::Code stg) const { + return stage[stg].ByteCode; + } + int ByteCodeSize(ShaderStage::Code stg) const { + return stage[stg].ByteCodeSize; + } + ShaderDesc& Entry(ShaderStage::Code stg, const char* entry) { + stage[stg].Entry = entry; return *this; + } + const char* Entry(ShaderStage::Code stg) const { + return stage[stg].Entry; + } + ShaderDesc& Attr(const StringAtom& name, VertexFormat::Code fmt) { + layout.Add(name, fmt); return *this; + } + const VertexLayout& Layout() const { + return layout; + } + ShaderDesc& UniformBlock(ShaderStage::Code stg, int slot, const char* name, const char* type, int size) { + auto& ubSlot = stage[stg].UniformBlocks[slot]; + ubSlot.Name = name; + ubSlot.Type = type; + ubSlot.Size = size; + return *this; + } + ShaderDesc& Texture(ShaderStage::Code stg, int slot, const char* name, TextureType::Code type) { + auto& texSlot = stage[stg].Textures[slot]; + texSlot.Name = name; + texSlot.Type = type; + return *this; + } - /// shader stage descriptions + class Locator locator = Locator::NonShared(); + VertexLayout layout; struct UniformBlockDesc { const char* Name = nullptr; const char* Type = nullptr; @@ -1257,195 +1398,157 @@ struct ShaderDesc { StaticArray UniformBlocks; StaticArray Textures; }; - StaticArray Stage; + StaticArray stage; }; //------------------------------------------------------------------------------ /** - @class Oryol::ShaderBuilder + @class Oryol::TextureDesc @ingroup Gfx - @brief builder for ShaderDesc objects + @brief setup object for textures and render targets */ -class ShaderBuilder { -public: - ShaderDesc Desc; - ShaderBuilder& From(const ShaderDesc& desc) { - Desc = desc; return *this; +struct TextureDesc { + TextureDesc() { + nativeTextures.Fill(0); } - ShaderBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; + TextureDesc(const TextureDesc& rhs) { + *this = rhs; } - ShaderBuilder& Source(ShaderStage::Code stage, const char* src) { - Desc.Stage[stage].Source = src; return *this; + TextureDesc& Locator(const class Locator& loc) { + locator = loc; return *this; } - ShaderBuilder& ByteCode(ShaderStage::Code stage, const uint8_t* ptr, int size) { - Desc.Stage[stage].ByteCode = ptr; - Desc.Stage[stage].ByteCodeSize = size; - return *this; + const class Locator& Locator() const { + return locator; } - ShaderBuilder& Entry(ShaderStage::Code stage, const char* entry) { - Desc.Stage[stage].Entry = entry; return *this; + TextureDesc& Type(TextureType::Code t) { + type = t; return *this; } - ShaderBuilder& Attr(const StringAtom& name, VertexFormat::Code fmt) { - Desc.Layout.Add(name, fmt); return *this; + TextureType::Code Type() const { + return type; } - ShaderBuilder& UniformBlock(ShaderStage::Code stage, int slot, const char* name, const char* type, int size) { - auto& ubSlot = Desc.Stage[stage].UniformBlocks[slot]; - ubSlot.Name = name; - ubSlot.Type = type; - ubSlot.Size = size; - return *this; + TextureDesc& RenderTarget(bool b) { + renderTarget = b; return *this; } - ShaderBuilder& Texture(ShaderStage::Code stage, int slot, const char* name, TextureType::Code type) { - auto& texSlot = Desc.Stage[stage].Textures[slot]; - texSlot.Name = name; - texSlot.Type = type; - return *this; + bool RenderTarget() const { + return renderTarget; } -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureDesc - @ingroup Gfx - @brief setup object for textures and render targets -*/ -class TextureDesc { -public: - /// resource locator - class Locator Locator = Locator::NonShared(); - /// the texture type - TextureType::Code Type = TextureType::Texture2D; - /// whether the texture will be used as a render target - bool RenderTarget = false; - /// the texture width - int Width = 1; - /// the texture height - int Height = 1; - /// the texture depth or number of layers - int Depth = 1; - /// number of mipmaps in the texture - int NumMipMaps = 1; - /// the usage-hint of the texture - Oryol::Usage::Code Usage = Usage::Immutable; - /// the pixel format (can be one of the depth formats if this is a depth-render-target) - PixelFormat::Code Format = PixelFormat::RGBA8; - /// the sample count, for MSAA render targets - int SampleCount = 1; - /// magnification texture filter mode - TextureFilterMode::Code MagFilter = TextureFilterMode::Nearest; - /// minification texture filter mode - TextureFilterMode::Code MinFilter = TextureFilterMode::Nearest; - /// texture coordinate wrapping mode along U - TextureWrapMode::Code WrapU = TextureWrapMode::Repeat; - /// texture coordinate wrapping mode along V - TextureWrapMode::Code WrapV = TextureWrapMode::Repeat; - /// texture coordinate wrapping mode along W - TextureWrapMode::Code WrapW = TextureWrapMode::Repeat; - /// optional native textures (only on platforms which support GfxFeature::NativeTextures) - StaticArray NativeTextures; - /// optional image surface offsets and sizes - ImageContent Content; - - /// default constructor - TextureDesc() { - NativeTextures.Fill(0); + TextureDesc& Width(int w) { + width = w; return *this; } -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::TextureBuilder - @ingroup Gfx - @brief builder for TextureDesc objects -*/ -class TextureBuilder { -public: - TextureDesc Desc; - const void* ContentPtr = nullptr; - int ContentSize = 0; - static TextureBuilder New() { - return TextureBuilder(); + int Width() const { + return width; } - TextureBuilder& From(const TextureDesc& desc) { - Desc = desc; return *this; + TextureDesc& Height(int h) { + height = h; return *this; } - TextureBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; + int Height() const { + return height; } - TextureBuilder& Type(TextureType::Code t) { - Desc.Type = t; return *this; + TextureDesc& Depth(int d) { + depth = d; return *this; } - TextureBuilder& RenderTarget(bool b) { - Desc.RenderTarget = b; return *this; + int Depth() const { + return depth; } - TextureBuilder& Width(int w) { - Desc.Width = w; return *this; + TextureDesc& Layers(int l) { + depth = l; return *this; } - TextureBuilder& Height(int h) { - Desc.Height = h; return *this; + int Layers() const { + return depth; } - TextureBuilder& Depth(int d) { - Desc.Depth = d; return *this; + TextureDesc& NumMipMaps(int n) { + numMipMaps = n; return *this; } - TextureBuilder& Layers(int l) { - Desc.Depth = l; return *this; + int NumMipMaps() const { + return numMipMaps; } - TextureBuilder& NumMipMaps(int n) { - Desc.NumMipMaps = n; return *this; + TextureDesc& Usage(Usage::Code u) { + usage = u; return *this; } - TextureBuilder& Usage(Usage::Code u) { - Desc.Usage = u; return *this; + Usage::Code Usage() const { + return usage; } - TextureBuilder& Format(PixelFormat::Code fmt) { - Desc.Format = fmt; return *this; + TextureDesc& Format(PixelFormat::Code fmt) { + format = fmt; return *this; } - TextureBuilder& SampleCount(int c) { - Desc.SampleCount = c; return *this; + PixelFormat::Code Format() const { + return format; } - TextureBuilder& MagFilter(TextureFilterMode::Code f) { - Desc.MagFilter = f; return *this; + TextureDesc& SampleCount(int c) { + sampleCount = c; return *this; + } + int SampleCount() const { + return sampleCount; } - TextureBuilder& MinFilter(TextureFilterMode::Code f) { - Desc.MinFilter = f; return *this; + TextureDesc& MagFilter(TextureFilterMode::Code f) { + magFilter = f; return *this; } - TextureBuilder& WrapU(TextureWrapMode::Code m) { - Desc.WrapU = m; return *this; + TextureFilterMode::Code MagFilter() const { + return magFilter; } - TextureBuilder& WrapV(TextureWrapMode::Code m) { - Desc.WrapV = m; return *this; + TextureDesc& MinFilter(TextureFilterMode::Code f) { + minFilter = f; return *this; } - TextureBuilder& WrapW(TextureWrapMode::Code m) { - Desc.WrapW = m; return *this; + TextureFilterMode::Code MinFilter() const { + return minFilter; } - TextureBuilder& NativeTexture(int index, intptr_t tex) { - Desc.NativeTextures[index] = tex; return *this; + TextureDesc& WrapU(TextureWrapMode::Code m) { + wrapU = m; return *this; } - TextureBuilder& Content(const void* ptr, int size) { - ContentPtr = ptr; - ContentSize = size; - return *this; + TextureWrapMode::Code WrapU() const { + return wrapU; } - TextureBuilder& Content(const MemoryBuffer& content) { - ContentPtr = content.Data(); - ContentSize = content.Size(); - return *this; + TextureDesc& WrapV(TextureWrapMode::Code m) { + wrapV = m; return *this; } - TextureBuilder& MipSize(int faceIndex, int mipIndex, int size) { - Desc.Content.Size[faceIndex][mipIndex] = size; + TextureWrapMode::Code WrapV() const { + return wrapV; + } + TextureDesc& WrapW(TextureWrapMode::Code m) { + wrapW = m; return *this; + } + TextureWrapMode::Code WrapW() const { + return wrapW; + } + TextureDesc& NativeTexture(int index, intptr_t tex) { + nativeTextures[index] = tex; return *this; + } + intptr_t NativeTexture(int index) const { + return nativeTextures[index]; + } + TextureDesc& MipSize(int faceIndex, int mipIndex, int size) { + content.Size[faceIndex][mipIndex] = size; return *this; } - TextureBuilder& MipContent(int faceIndex, int mipIndex, const void* ptr) { - Desc.Content.Pointer[faceIndex][mipIndex] = ptr; + int MipSize(int faceIndex, int mipIndex) const { + return content.Size[faceIndex][mipIndex]; + } + TextureDesc& MipContent(int faceIndex, int mipIndex, const void* ptr) { + content.Pointer[faceIndex][mipIndex] = ptr; return *this; } - const TextureDesc& Done() { - return Desc; + const void* MipContent(int faceIndex, int mipIndex) const { + return content.Pointer[faceIndex][mipIndex]; } + + class Locator locator = Locator::NonShared(); + TextureType::Code type = TextureType::Texture2D; + bool renderTarget = false; + int width = 1; + int height = 1; + int depth = 1; + int numMipMaps = 1; + Oryol::Usage::Code usage = Usage::Immutable; + PixelFormat::Code format = PixelFormat::RGBA8; + int sampleCount = 1; + TextureFilterMode::Code magFilter = TextureFilterMode::Nearest; + TextureFilterMode::Code minFilter = TextureFilterMode::Nearest; + TextureWrapMode::Code wrapU = TextureWrapMode::Repeat; + TextureWrapMode::Code wrapV = TextureWrapMode::Repeat; + TextureWrapMode::Code wrapW = TextureWrapMode::Repeat; + StaticArray nativeTextures; + ImageContent content; }; -inline TextureBuilder NewTextureDesc() { - return TextureBuilder(); -} //------------------------------------------------------------------------------ /** @@ -1454,60 +1557,44 @@ inline TextureBuilder NewTextureDesc() { @brief creation attributes for render pass resource */ struct PassDesc { - /// resource locator - class Locator Locator = Locator::NonShared(); - /// a color- or depth-stencil attachment description - struct Attachment { - Id Texture; - int MipLevel = 0; - union { - int Face = 0; - int Layer; - int Slice; - }; - }; - /// color attachments (at least the first must be valid) - StaticArray ColorAttachments; - /// optional depth-stencil attachment - Attachment DepthStencilAttachment; -}; - -//------------------------------------------------------------------------------ -/** - @class Oryol::PassBuilder - @ingroup Gfx - @brief builder class for render pass creation -*/ -class PassBuilder { -public: - PassDesc Desc; - PassBuilder& From(const PassDesc& desc) { - Desc = desc; return *this; + PassDesc() { }; + PassDesc(const PassDesc& rhs) { + *this = rhs; } - PassBuilder& Locator(const class Locator& loc) { - Desc.Locator = loc; return *this; + PassDesc& Locator(const class Locator& loc) { + locator = loc; return *this; } - PassBuilder& ColorAttachment(int slotIndex, const Id& tex, int mipLevel=0, int faceLayerSlice=0) { - auto& att = this->Desc.ColorAttachments[slotIndex]; + const class Locator& Locator() const { + return locator; + } + PassDesc& ColorAttachment(int slotIndex, const Id& tex, int mipLevel=0, int faceLayerSlice=0) { + auto& att = colorAttachments[slotIndex]; att.Texture = tex; att.MipLevel = mipLevel; att.Face = faceLayerSlice; return *this; } - PassBuilder& DepthStencilAttachment(const Id& tex, int mipLevel=0, int faceLayerSlice=0) { - auto& att = this->Desc.DepthStencilAttachment; + PassDesc& DepthStencilAttachment(const Id& tex, int mipLevel=0, int faceLayerSlice=0) { + auto& att = depthStencilAttachment; att.Texture = tex; att.MipLevel = mipLevel; att.Face = faceLayerSlice; return *this; } - const PassDesc& Done() { - return Desc; - } + + class Locator locator = Locator::NonShared(); + struct Attachment { + Id Texture; + int MipLevel = 0; + union { + int Face = 0; + int Layer; + int Slice; + }; + }; + StaticArray colorAttachments; + Attachment depthStencilAttachment; }; -inline PassBuilder NewPassDesc() { - return PassBuilder(); -} //------------------------------------------------------------------------------ /** diff --git a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc index cc6c1a14f..7c766d350 100644 --- a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc @@ -166,20 +166,20 @@ static sg_compare_func convertCompareFunc(CompareFunc::Code f) { //------------------------------------------------------------------------------ static void convertDepthStencilState(const PipelineDesc& src, sg_pipeline_desc& dst) { - dst.depth_stencil.stencil_front.fail_op = convertStencilOp(src.StencilFrontFailOp); - dst.depth_stencil.stencil_front.depth_fail_op = convertStencilOp(src.StencilFrontDepthFailOp); - dst.depth_stencil.stencil_front.pass_op = convertStencilOp(src.StencilFrontPassOp); - dst.depth_stencil.stencil_front.compare_func = convertCompareFunc(src.StencilFrontCmpFunc); - dst.depth_stencil.stencil_back.fail_op = convertStencilOp(src.StencilBackFailOp); - dst.depth_stencil.stencil_back.depth_fail_op = convertStencilOp(src.StencilBackDepthFailOp); - dst.depth_stencil.stencil_back.pass_op = convertStencilOp(src.StencilBackPassOp); - dst.depth_stencil.stencil_back.compare_func = convertCompareFunc(src.StencilBackCmpFunc); - dst.depth_stencil.depth_compare_func = convertCompareFunc(src.DepthCmpFunc); - dst.depth_stencil.depth_write_enabled = src.DepthWriteEnabled; - dst.depth_stencil.stencil_enabled = src.StencilEnabled; - dst.depth_stencil.stencil_read_mask = src.StencilReadMask; - dst.depth_stencil.stencil_write_mask = src.StencilWriteMask; - dst.depth_stencil.stencil_ref = src.StencilRef; + dst.depth_stencil.stencil_front.fail_op = convertStencilOp(src.stencilFrontFailOp); + dst.depth_stencil.stencil_front.depth_fail_op = convertStencilOp(src.stencilFrontDepthFailOp); + dst.depth_stencil.stencil_front.pass_op = convertStencilOp(src.stencilFrontPassOp); + dst.depth_stencil.stencil_front.compare_func = convertCompareFunc(src.stencilFrontCmpFunc); + dst.depth_stencil.stencil_back.fail_op = convertStencilOp(src.stencilBackFailOp); + dst.depth_stencil.stencil_back.depth_fail_op = convertStencilOp(src.stencilBackDepthFailOp); + dst.depth_stencil.stencil_back.pass_op = convertStencilOp(src.stencilBackPassOp); + dst.depth_stencil.stencil_back.compare_func = convertCompareFunc(src.stencilBackCmpFunc); + dst.depth_stencil.depth_compare_func = convertCompareFunc(src.depthCmpFunc); + dst.depth_stencil.depth_write_enabled = src.depthWriteEnabled; + dst.depth_stencil.stencil_enabled = src.stencilEnabled; + dst.depth_stencil.stencil_read_mask = src.stencilReadMask; + dst.depth_stencil.stencil_write_mask = src.stencilWriteMask; + dst.depth_stencil.stencil_ref = src.stencilRef; } //------------------------------------------------------------------------------ @@ -260,21 +260,21 @@ static sg_pixel_format convertPixelFormat(PixelFormat::Code fmt) { //------------------------------------------------------------------------------ static void convertBlendState(const PipelineDesc& src, sg_pipeline_desc& dst) { - dst.blend.enabled = src.BlendEnabled; - dst.blend.src_factor_rgb = convertBlendFactor(src.BlendSrcFactorRGB); - dst.blend.dst_factor_rgb = convertBlendFactor(src.BlendDstFactorRGB); - dst.blend.op_rgb = convertBlendOp(src.BlendOpRGB); - dst.blend.src_factor_alpha = convertBlendFactor(src.BlendSrcFactorAlpha); - dst.blend.dst_factor_alpha = convertBlendFactor(src.BlendDstFactorAlpha); - dst.blend.op_alpha = convertBlendOp(src.BlendOpAlpha); - dst.blend.color_write_mask = convertColorMask(src.ColorWriteMask); - dst.blend.color_attachment_count = src.MRTCount; - dst.blend.color_format = convertPixelFormat(src.ColorFormat); - dst.blend.depth_format = convertPixelFormat(src.DepthFormat); - dst.blend.blend_color[0] = src.BlendColor.r; - dst.blend.blend_color[1] = src.BlendColor.g; - dst.blend.blend_color[2] = src.BlendColor.b; - dst.blend.blend_color[3] = src.BlendColor.a; + dst.blend.enabled = src.blendEnabled; + dst.blend.src_factor_rgb = convertBlendFactor(src.blendSrcFactorRGB); + dst.blend.dst_factor_rgb = convertBlendFactor(src.blendDstFactorRGB); + dst.blend.op_rgb = convertBlendOp(src.blendOpRGB); + dst.blend.src_factor_alpha = convertBlendFactor(src.blendSrcFactorAlpha); + dst.blend.dst_factor_alpha = convertBlendFactor(src.blendDstFactorAlpha); + dst.blend.op_alpha = convertBlendOp(src.blendOpAlpha); + dst.blend.color_write_mask = convertColorMask(src.colorWriteMask); + dst.blend.color_attachment_count = src.mrtCount; + dst.blend.color_format = convertPixelFormat(src.colorFormat); + dst.blend.depth_format = convertPixelFormat(src.depthFormat); + dst.blend.blend_color[0] = src.blendColor.r; + dst.blend.blend_color[1] = src.blendColor.g; + dst.blend.blend_color[2] = src.blendColor.b; + dst.blend.blend_color[3] = src.blendColor.a; } //------------------------------------------------------------------------------ @@ -294,13 +294,13 @@ static sg_cull_mode convertCullMode(bool enabled, Face::Code face) { //------------------------------------------------------------------------------ static void convertRasterizerState(const PipelineDesc& src, sg_pipeline_desc& dst) { - dst.rasterizer.alpha_to_coverage_enabled = src.AlphaToCoverageEnabled; - dst.rasterizer.cull_mode = convertCullMode(src.CullFaceEnabled, src.CullFace); + dst.rasterizer.alpha_to_coverage_enabled = src.alphaToCoverageEnabled; + dst.rasterizer.cull_mode = convertCullMode(src.cullFaceEnabled, src.cullFace); dst.rasterizer.face_winding = _SG_FACEWINDING_DEFAULT; - dst.rasterizer.sample_count = src.SampleCount; - dst.rasterizer.depth_bias = src.DepthBias; - dst.rasterizer.depth_bias_slope_scale = src.DepthBiasSlopeScale; - dst.rasterizer.depth_bias_clamp = src.DepthBiasClamp; + dst.rasterizer.sample_count = src.sampleCount; + dst.rasterizer.depth_bias = src.depthBias; + dst.rasterizer.depth_bias_slope_scale = src.depthBiasSlopeScale; + dst.rasterizer.depth_bias_clamp = src.depthBiasClamp; } //------------------------------------------------------------------------------ @@ -336,7 +336,7 @@ static sg_vertex_format convertVertexFormat(VertexFormat::Code fmt) { static void convertVertexLayouts(const PipelineDesc& src, sg_pipeline_desc& dst, const VertexLayout& vsInput) { o_assert_dbg(GfxConfig::MaxNumVertexBuffers <= SG_MAX_SHADERSTAGE_BUFFERS); for (int layoutIndex = 0; layoutIndex < GfxConfig::MaxNumVertexBuffers; layoutIndex++) { - const auto& srcLayout = src.Layouts[layoutIndex]; + const auto& srcLayout = src.layouts[layoutIndex]; if (srcLayout.Empty()) { break; } @@ -419,61 +419,61 @@ static sg_feature convertFeature(GfxFeature::Code f) { //------------------------------------------------------------------------------ static void convertBufferDesc(const BufferDesc& src, sg_buffer_desc& dst) { - dst.size = src.Size; - dst.type = convertBufferType(src.Type); - dst.usage = convertUsage(src.Usage); - dst.content = src.Content; + dst.size = src.size; + dst.type = convertBufferType(src.type); + dst.usage = convertUsage(src.usage); + dst.content = src.content; o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); #if ORYOL_OPENGL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - dst.gl_buffers[i] = (uint32_t) src.NativeBuffers[i]; + dst.gl_buffers[i] = (uint32_t) src.nativeBuffers[i]; } #elif ORYOL_METAL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - dst.mtl_buffers[i] = (const void*) src.NativeBuffers[i]; + dst.mtl_buffers[i] = (const void*) src.nativeBuffers[i]; } #elif ORYOL_D3D11 - dst.d3d11_buffer = (const void*) src.NativeBuffers[0]; + dst.d3d11_buffer = (const void*) src.nativeBuffers[0]; #endif } //------------------------------------------------------------------------------ static void convertTextureDesc(const TextureDesc& src, sg_image_desc& dst) { - dst.type = convertTextureType(src.Type); - dst.render_target = src.RenderTarget; - dst.width = src.Width; - dst.height = src.Height; - dst.depth = src.Depth; - dst.num_mipmaps = src.NumMipMaps; - dst.usage = convertUsage(src.Usage); - dst.pixel_format = convertPixelFormat(src.Format); - dst.sample_count = src.SampleCount; - dst.min_filter = convertFilter(src.MinFilter); - dst.mag_filter = convertFilter(src.MagFilter); - dst.wrap_u = convertWrap(src.WrapU); - dst.wrap_v = convertWrap(src.WrapV); - dst.wrap_w = convertWrap(src.WrapW); + dst.type = convertTextureType(src.type); + dst.render_target = src.renderTarget; + dst.width = src.width; + dst.height = src.height; + dst.depth = src.depth; + dst.num_mipmaps = src.numMipMaps; + dst.usage = convertUsage(src.usage); + dst.pixel_format = convertPixelFormat(src.format); + dst.sample_count = src.sampleCount; + dst.min_filter = convertFilter(src.minFilter); + dst.mag_filter = convertFilter(src.magFilter); + dst.wrap_u = convertWrap(src.wrapU); + dst.wrap_v = convertWrap(src.wrapV); + dst.wrap_w = convertWrap(src.wrapW); o_assert_dbg(GfxConfig::MaxNumTextureMipMaps <= SG_MAX_MIPMAPS); o_assert_dbg(GfxConfig::MaxNumTextureFaces <= SG_CUBEFACE_NUM); for (int f = 0; f < GfxConfig::MaxNumTextureFaces; f++) { for (int m = 0; m < GfxConfig::MaxNumTextureMipMaps; m++) { - if (src.Content.Pointer[f][m] && (src.Content.Size[f][m] > 0)) { - dst.content.subimage[f][m].ptr = src.Content.Pointer[f][m]; - dst.content.subimage[f][m].size = src.Content.Size[f][m]; + if (src.content.Pointer[f][m] && (src.content.Size[f][m] > 0)) { + dst.content.subimage[f][m].ptr = src.content.Pointer[f][m]; + dst.content.subimage[f][m].size = src.content.Size[f][m]; } } } o_assert_dbg(GfxConfig::MaxInflightFrames <= SG_NUM_INFLIGHT_FRAMES); #if ORYOL_OPENGL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - dst.gl_textures[i] = (uint32_t) src.NativeTextures[i]; + dst.gl_textures[i] = (uint32_t) src.nativeTextures[i]; } #elif ORYOL_METAL for (int i = 0; i < GfxConfig::MaxInflightFrames; i++) { - dst.mtl_textures[i] = (const void*) src.NativeTextures[i]; + dst.mtl_textures[i] = (const void*) src.nativeTextures[i]; } #elif ORYOL_D3D11 - dst.d3d11_texture = (const void*) src.NativeTextures[0]; + dst.d3d11_texture = (const void*) src.nativeTextures[0]; #endif } @@ -716,19 +716,19 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { // set source- or byte-code, and optional entry function #if ORYOL_OPENGL - sgDesc.vs.source = desc.Stage[ShaderStage::VS].Source; - sgDesc.fs.source = desc.Stage[ShaderStage::FS].Source; + sgDesc.vs.source = desc.stage[ShaderStage::VS].Source; + sgDesc.fs.source = desc.stage[ShaderStage::FS].Source; #elif ORYOL_METAL || ORYOL_D3D11 - sgDesc.vs.byte_code = desc.Stage[ShaderStage::VS].ByteCode; - sgDesc.vs.byte_code_size = desc.Stage[ShaderStage::VS].ByteCodeSize; - sgDesc.fs.byte_code = desc.Stage[ShaderStage::FS].ByteCode; - sgDesc.fs.byte_code_size = desc.Stage[ShaderStage::FS].ByteCodeSize; + sgDesc.vs.byte_code = desc.stage[ShaderStage::VS].byteCode; + sgDesc.vs.byte_code_size = desc.stage[ShaderStage::VS].byteCodeSize; + sgDesc.fs.byte_code = desc.stage[ShaderStage::FS].byteCode; + sgDesc.fs.byte_code_size = desc.stage[ShaderStage::FS].byteCodeSize; #endif - if (desc.Stage[ShaderStage::VS].Entry) { - sgDesc.vs.entry = desc.Stage[ShaderStage::VS].Entry; + if (desc.stage[ShaderStage::VS].Entry) { + sgDesc.vs.entry = desc.stage[ShaderStage::VS].Entry; } - if (desc.Stage[ShaderStage::FS].Entry) { - sgDesc.fs.entry = desc.Stage[ShaderStage::FS].Entry; + if (desc.stage[ShaderStage::FS].Entry) { + sgDesc.fs.entry = desc.stage[ShaderStage::FS].Entry; } // uniform block declarations @@ -737,7 +737,7 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { int fsUbIndex = 0; for (int stageIndex = 0; stageIndex < ShaderStage::Num; stageIndex++) { for (int ubIndex = 0; ubIndex < GfxConfig::MaxNumUniformBlocksPerStage; ubIndex++) { - auto& src = desc.Stage[stageIndex].UniformBlocks[ubIndex]; + auto& src = desc.stage[stageIndex].UniformBlocks[ubIndex]; if (src.Size > 0) { sg_shader_uniform_block_desc* dst = nullptr; if (stageIndex == ShaderStage::VS) { @@ -765,7 +765,7 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { int fsImgIndex = 0; for (int stageIndex = 0; stageIndex < ShaderStage::Num; stageIndex++) { for (int texIndex = 0; texIndex < GfxConfig::MaxNumShaderTextures; texIndex++) { - auto& src = desc.Stage[stageIndex].Textures[texIndex]; + auto& src = desc.stage[stageIndex].Textures[texIndex]; if (src.Type != TextureType::Invalid) { sg_shader_image_desc* dst = nullptr; if (stageIndex == ShaderStage::VS) { @@ -782,9 +782,9 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { Id shd = makeId(GfxResourceType::Shader, sg_make_shader(&sgDesc).id); // keep track of the shader's vertex layout - o_assert_dbg(!desc.Layout.Empty()); + o_assert_dbg(!desc.layout.Empty()); o_assert_dbg(this->vsInputs[shd.SlotIndex].Empty()); - this->vsInputs[shd.SlotIndex] = desc.Layout; + this->vsInputs[shd.SlotIndex] = desc.layout; return shd; } @@ -793,16 +793,16 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { Id sokolGfxBackend::CreatePipeline(const PipelineDesc& desc) { o_assert_dbg(this->isValid); - o_assert_dbg(desc.Shader.IsValid()); + o_assert_dbg(desc.shader.IsValid()); // lookup the shader vertex shader input layout - const VertexLayout& vsLayout = this->vsInputs[desc.Shader.SlotIndex]; + const VertexLayout& vsLayout = this->vsInputs[desc.shader.SlotIndex]; o_assert_dbg(!vsLayout.Empty()); sg_pipeline_desc sgDesc = { }; - sgDesc.shader = makeShaderId(desc.Shader); - sgDesc.primitive_type = convertPrimitiveType(desc.PrimType); - sgDesc.index_type = convertIndexType(desc.IndexType); + sgDesc.shader = makeShaderId(desc.shader); + sgDesc.primitive_type = convertPrimitiveType(desc.primType); + sgDesc.index_type = convertIndexType(desc.indexType); convertVertexLayouts(desc, sgDesc, vsLayout); convertDepthStencilState(desc, sgDesc); convertBlendState(desc, sgDesc); @@ -817,7 +817,7 @@ sokolGfxBackend::CreatePass(const PassDesc& desc) { o_assert_dbg(GfxConfig::MaxNumColorAttachments <= SG_MAX_COLOR_ATTACHMENTS); sg_pass_desc sgDesc = { }; for (int i = 0; i < GfxConfig::MaxNumColorAttachments; i++) { - const auto& src = desc.ColorAttachments[i]; + const auto& src = desc.colorAttachments[i]; if (src.Texture.IsValid()) { auto& dst = sgDesc.color_attachments[i]; dst.image = makeImageId(src.Texture); @@ -825,7 +825,7 @@ sokolGfxBackend::CreatePass(const PassDesc& desc) { dst.layer = src.Layer; } } - const auto& src = desc.DepthStencilAttachment; + const auto& src = desc.depthStencilAttachment; if (src.Texture.IsValid()) { auto& dst = sgDesc.depth_stencil_attachment; dst.image = makeImageId(src.Texture); diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index 9cb08d2d0..c00ce88b8 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -63,7 +63,7 @@ ArrayTextureApp::OnInit() { } } } - this->drawState.FSTexture[Shader::tex] = Gfx::CreateTexture(NewTextureDesc() + this->drawState.FSTexture[Shader::tex] = Gfx::CreateTexture(TextureDesc() .Type(TextureType::TextureArray) .Width(width) .Height(height) @@ -72,8 +72,7 @@ ArrayTextureApp::OnInit() { .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) .MipSize(0, 0, sizeof(data)) - .MipContent(0, 0, data) - .Done()); + .MipContent(0, 0, data)); // build a cube mesh auto shape = ShapeBuilder::New() @@ -86,13 +85,11 @@ ArrayTextureApp::OnInit() { this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // ...and a pipeline object to complete the DrawState - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); // setup a projection matrix with the right aspect ratio const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/BlendTest/BlendTest.cc b/code/Samples/BlendTest/BlendTest.cc index e32d0eb10..e9207a12b 100644 --- a/code/Samples/BlendTest/BlendTest.cc +++ b/code/Samples/BlendTest/BlendTest.cc @@ -33,17 +33,15 @@ BlendTestApp::OnInit() { // create pipeline object for a patterned background const float bgVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->bgDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->bgDrawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(bgVertices)) - .Content(bgVertices) - .Done()); - this->bgDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Content(bgVertices)); + this->bgDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(BGShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip) - .Done()); + .PrimitiveType(PrimitiveType::TriangleStrip)); // setup a triangle mesh and shader float triVertices[] = { @@ -52,13 +50,12 @@ BlendTestApp::OnInit() { 0.05f, -0.05f, 0.5f, 0.0f, 0.75f, 0.0f, 0.75f, -0.05f, -0.05f, 0.5f, 0.0f, 0.0f, 0.75f, 0.75f }; - this->triVBuf = Gfx::CreateBuffer(NewBufferDesc() + this->triVBuf = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(triVertices)) - .Content(triVertices) - .Done()); + .Content(triVertices)); // setup one draw state for each blend factor combination - auto ps = NewPipelineDesc() + auto ps = PipelineDesc() .Shader(Gfx::CreateShader(TriShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float3 }, @@ -71,7 +68,7 @@ BlendTestApp::OnInit() { for (uint32_t x = 0; x < BlendFactor::Num; x++) { ps.BlendSrcFactorRGB((BlendFactor::Code)x); ps.BlendDstFactorRGB((BlendFactor::Code)y); - this->pipelines[y][x] = Gfx::CreatePipeline(ps.Done()); + this->pipelines[y][x] = Gfx::CreatePipeline(ps); } } return App::OnInit(); diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index c5caa8777..14d5718fd 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -53,13 +53,12 @@ DDSCubeMapApp::OnInit() { else { texPath = "tex:romechurch_dxt1.dds"; } - this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(NewTextureDesc() + this->drawState.FSTexture[Shader::tex] = TextureLoader::Load(TextureDesc() .Locator(texPath) .MinFilter(TextureFilterMode::LinearMipmapLinear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::ClampToEdge) - .WrapV(TextureWrapMode::ClampToEdge) - .Done()); + .WrapV(TextureWrapMode::ClampToEdge)); auto shape = ShapeBuilder::New() .Positions("in_pos", VertexFormat::Float3) @@ -70,12 +69,10 @@ DDSCubeMapApp::OnInit() { this->primGroup = shape.PrimitiveGroups[0]; this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + .DepthCmpFunc(CompareFunc::LessEqual)); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index 4640ff5fa..879e2e0e7 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -67,13 +67,12 @@ DDSTextureLoadingApp::OnInit() { "tex:lok_bgr565.dds", }; for (int i = 0; i < NumTextures; i++) { - this->textures[i] = TextureLoader::Load(NewTextureDesc() + this->textures[i] = TextureLoader::Load(TextureDesc() .Locator(paths[i]) .MinFilter(TextureFilterMode::LinearMipmapLinear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::ClampToEdge) - .WrapV(TextureWrapMode::ClampToEdge) - .Done()); + .WrapV(TextureWrapMode::ClampToEdge)); } auto shape = ShapeBuilder::New() @@ -85,12 +84,10 @@ DDSTextureLoadingApp::OnInit() { this->primGroup = shape.PrimitiveGroups[0]; this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + .DepthCmpFunc(CompareFunc::LessEqual)); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; diff --git a/code/Samples/DrawCallPerf/DrawCallPerf.cc b/code/Samples/DrawCallPerf/DrawCallPerf.cc index 68a17b73b..347b39466 100644 --- a/code/Samples/DrawCallPerf/DrawCallPerf.cc +++ b/code/Samples/DrawCallPerf/DrawCallPerf.cc @@ -69,13 +69,11 @@ DrawCallPerfApp::OnInit() { this->primGroup = shape.PrimitiveGroups[0]; this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .CullFaceEnabled(true) .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + .DepthCmpFunc(CompareFunc::LessEqual)); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/FullscreenQuad/FullscreenQuad.cc b/code/Samples/FullscreenQuad/FullscreenQuad.cc index 8e6eed4b6..785f47670 100644 --- a/code/Samples/FullscreenQuad/FullscreenQuad.cc +++ b/code/Samples/FullscreenQuad/FullscreenQuad.cc @@ -24,15 +24,13 @@ AppState::Code FullscreenQuadApp::OnInit() { Gfx::Setup(GfxDesc().Width(600).Height(600).Title("Oryol Fullscreen Quad Sample")); const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Content(quadVertices)); + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip) - .Done()); + .PrimitiveType(PrimitiveType::TriangleStrip)); this->params.time = 0.0f; return App::OnInit(); } diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index 8ce7e3ca0..eb2ed47be 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -79,43 +79,35 @@ GPUParticlesApp::OnInit() { // the 2 ping/pong particle state textures and render passes for (int i = 0; i < 2; i++) { - this->particleBuffer[i].texture = Gfx::CreateTexture(NewTextureDesc() + this->particleBuffer[i].texture = Gfx::CreateTexture(TextureDesc() .RenderTarget(true) .Width(ParticleBufferWidth) .Height(ParticleBufferHeight) .Format(PixelFormat::RGBA32F) .MinFilter(TextureFilterMode::Nearest) - .MagFilter(TextureFilterMode::Nearest) - .Done()); - this->particleBuffer[i].pass = Gfx::CreatePass(NewPassDesc() - .ColorAttachment(0, this->particleBuffer[i].texture) - .Done()); + .MagFilter(TextureFilterMode::Nearest)); + this->particleBuffer[i].pass = Gfx::CreatePass(PassDesc() + .ColorAttachment(0, this->particleBuffer[i].texture)); } // a fullscreen mesh for the particle init- and update-shaders const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - Id quadVbuf = Gfx::CreateBuffer(NewBufferDesc() + Id quadVbuf = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); + .Content(quadVertices)); this->initParticles.VertexBuffers[0] = quadVbuf; this->updParticles.VertexBuffers[0] = quadVbuf; // particle initialization and update resources - PipelineDesc particlePipDesc = NewPipelineDesc() + PipelineDesc particlePipDesc = PipelineDesc() .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) .ColorFormat(PixelFormat::RGBA32F) - .DepthFormat(PixelFormat::None) - .Done(); - this->initParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(particlePipDesc) - .Shader(Gfx::CreateShader(InitShader::Desc())) - .Done()); - this->updParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(particlePipDesc) - .Shader(Gfx::CreateShader(UpdateShader::Desc())) - .Done()); + .DepthFormat(PixelFormat::None); + this->initParticles.Pipeline = Gfx::CreatePipeline(PipelineDesc(particlePipDesc) + .Shader(Gfx::CreateShader(InitShader::Desc()))); + this->updParticles.Pipeline = Gfx::CreatePipeline(PipelineDesc(particlePipDesc) + .Shader(Gfx::CreateShader(UpdateShader::Desc()))); // the static geometry of a single particle is at mesh slot 0 const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); @@ -137,24 +129,21 @@ GPUParticlesApp::OnInit() { for (int i = 0; i < MaxNumParticles; i++) { particleIdData[i] = (float) i; } - this->drawParticles.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() + this->drawParticles.VertexBuffers[1] = Gfx::CreateBuffer(BufferDesc() .Size(particleIdSize) - .Content(particleIdData) - .Done()); + .Content(particleIdData)); Memory::Free(particleIdData); } // ...and the pipeline object for instanced particle rendering - this->drawParticles.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawParticles.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(DrawShader::Desc())) .Layout(1, VertexLayout::New() .EnableInstancing() .Add("in_particleId", VertexFormat::Float)) .CullFaceEnabled(true) .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + .DepthCmpFunc(CompareFunc::LessEqual)); // the static projection matrix const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index 8d7807534..76b421a95 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -50,14 +50,13 @@ InfiniteSpheresApp::OnInit() { const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; const int rtWidth = 512; const int rtHeight = 512; - Id rtDepth = Gfx::CreateTexture(NewTextureDesc() + Id rtDepth = Gfx::CreateTexture(TextureDesc() .RenderTarget(true) .Width(rtWidth) .Height(rtHeight) - .Format(rtDepthFormat) - .Done()); + .Format(rtDepthFormat)); for (int i = 0; i < 2; i++) { - this->passInfo[i].texture = Gfx::CreateTexture(NewTextureDesc() + this->passInfo[i].texture = Gfx::CreateTexture(TextureDesc() .RenderTarget(true) .Width(rtWidth) .Height(rtHeight) @@ -65,12 +64,10 @@ InfiniteSpheresApp::OnInit() { .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::Repeat) - .WrapV(TextureWrapMode::Repeat) - .Done()); - this->passInfo[i].pass = Gfx::CreatePass(NewPassDesc() + .WrapV(TextureWrapMode::Repeat)); + this->passInfo[i].pass = Gfx::CreatePass(PassDesc() .ColorAttachment(0, this->passInfo[i].texture) - .DepthStencilAttachment(rtDepth) - .Done()); + .DepthStencilAttachment(rtDepth)); } // create a sphere shape mesh @@ -92,21 +89,17 @@ InfiniteSpheresApp::OnInit() { Id shd = Gfx::CreateShader(Shader::Desc()); // create draw state for rendering into default render target - this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(sphere.PipelineDesc) + this->displayDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(sphere.PipelineDesc) .Shader(shd) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); - this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(sphere.PipelineDesc) + .SampleCount(Gfx::Desc().SampleCount())); + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(sphere.PipelineDesc) .Shader(shd) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) - .DepthFormat(rtDepthFormat) - .Done()); + .DepthFormat(rtDepthFormat)); // setup static transform matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/Instancing/Instancing.cc b/code/Samples/Instancing/Instancing.cc index 3c40e507f..1affea3ab 100644 --- a/code/Samples/Instancing/Instancing.cc +++ b/code/Samples/Instancing/Instancing.cc @@ -69,22 +69,19 @@ InstancingApp::OnInit() { this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); // create dynamic instance data vertex buffer on slot 1 - this->drawState.VertexBuffers[1] = Gfx::CreateBuffer(NewBufferDesc() + this->drawState.VertexBuffers[1] = Gfx::CreateBuffer(BufferDesc() .Size(MaxNumParticles * VertexFormat::ByteSize(VertexFormat::Float4)) - .Usage(Usage::Stream) - .Done()); + .Usage(Usage::Stream)); // setup pipeline state for instanced rendering - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(1, VertexLayout::New() .EnableInstancing() .Add("in_instpos", VertexFormat::Float4)) .CullFaceEnabled(true) .DepthWriteEnabled(true) - .DepthCmpFunc(CompareFunc::LessEqual) - .Done()); + .DepthCmpFunc(CompareFunc::LessEqual)); // setup projection and view matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index b5c9526c3..f5aebcd8f 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -63,7 +63,7 @@ MultipleRenderTargetApp::OnInit() { const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTHSTENCIL; const int rtSampleCount = 4; - auto rtDesc = NewTextureDesc() + auto rtDesc = TextureDesc() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(OffscreenWidth) @@ -71,20 +71,18 @@ MultipleRenderTargetApp::OnInit() { .Format(rtColorFormat) .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) - .SampleCount(rtSampleCount) - .Done(); + .SampleCount(rtSampleCount); Id rtColor0 = Gfx::CreateTexture(rtDesc); Id rtColor1 = Gfx::CreateTexture(rtDesc); Id rtColor2 = Gfx::CreateTexture(rtDesc); - Id rtDepth = Gfx::CreateTexture(NewTextureDesc().From(rtDesc).Format(rtDepthFormat).Done()); + Id rtDepth = Gfx::CreateTexture(TextureDesc(rtDesc).Format(rtDepthFormat)); // create a render pass with the 3 color- and 1 depth-attachment - this->mrtPass = Gfx::CreatePass(NewPassDesc() + this->mrtPass = Gfx::CreatePass(PassDesc() .ColorAttachment(0, rtColor0) .ColorAttachment(1, rtColor1) .ColorAttachment(2, rtColor2) - .DepthStencilAttachment(rtDepth) - .Done()); + .DepthStencilAttachment(rtDepth)); // a pass-action to clear the multiple-render-target this->mrtPassAction @@ -107,8 +105,7 @@ MultipleRenderTargetApp::OnInit() { // create a draw state to render a cube into the // offscreen render targets (this is where the MRT rendering happens) - this->cubeDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + this->cubeDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) @@ -116,26 +113,23 @@ MultipleRenderTargetApp::OnInit() { .ColorFormat(rtColorFormat) .DepthFormat(rtDepthFormat) .SampleCount(rtSampleCount) - .MRTCount(3) - .Done()); + .MRTCount(3)); this->cubeDrawState.VertexBuffers[0] = shapesVertexBuffer; this->cubeDrawState.IndexBuffer = shapesIndexBuffer; // create a quad-mesh for displaying the 3 render target textures on screen const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - Id quadVertexBuffer = Gfx::CreateBuffer(NewBufferDesc() + Id quadVertexBuffer = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); - Id quadPipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Content(quadVertices)); + Id quadPipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(QuadShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) .DepthWriteEnabled(false) .DepthCmpFunc(CompareFunc::Always) .CullFaceEnabled(false) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); this->rt0DrawState.Pipeline = quadPipeline; this->rt0DrawState.VertexBuffers[0] = quadVertexBuffer; this->rt0DrawState.FSTexture[QuadShader::tex] = rtColor0; @@ -148,14 +142,12 @@ MultipleRenderTargetApp::OnInit() { // and finally create a draw state to render a plane to the // main display which samples the 3 offscreen render targets - this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + this->displayDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(DisplayShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(false) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); this->displayDrawState.VertexBuffers[0] = shapesVertexBuffer; this->displayDrawState.IndexBuffer = shapesIndexBuffer; this->displayDrawState.FSTexture[DisplayShader::redTex] = rtColor0; diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 61d84556a..8ab45ea4c 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -90,27 +90,23 @@ NativeTextureApp::OnInit() { // push a new resource label and keep it for later since we'll have // to cleanup the resource ourselves Gfx::PushResourceLabel(); - this->drawState.FSTexture[0] = Gfx::CreateTexture(NewTextureDesc() + this->drawState.FSTexture[0] = Gfx::CreateTexture(TextureDesc() .Type(TextureType::Texture2D) .Width(TexWidth) .Height(TexHeight) .Format(PixelFormat::RGBA8) .Usage(Usage::Stream) .NativeTexture(0, this->glTextures[0]) - .NativeTexture(1, this->glTextures[1]) - .Done()); + .NativeTexture(1, this->glTextures[1])); this->texLabel = Gfx::PopResourceLabel(); #endif // ...and finally the pipeline object - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); - + .SampleCount(Gfx::Desc().SampleCount())); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; this->proj = glm::perspectiveFov(glm::radians(45.0f), fbWidth, fbHeight, 0.01f, 100.0f); diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index 9ea0dfdb2..abdb6e61c 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -44,14 +44,12 @@ PackedNormalsApp::OnInit() { .Build(); this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .CullFaceEnabled(true) - .SampleCount(4) - .Done()); + .SampleCount(4)); this->primGroups = std::move(shapes.PrimitiveGroups); float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index 01ae3a692..e02bc540f 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -40,26 +40,24 @@ OryolMain(PrimitiveTypesApp); //------------------------------------------------------------------------------ Id createIndexBuffer(const uint16_t* data, int dataSize) { - return Gfx::CreateBuffer(NewBufferDesc() + return Gfx::CreateBuffer(BufferDesc() .Size(dataSize) .Content(data) .Type(BufferType::IndexBuffer) - .Usage(Usage::Immutable) - .Done()); + .Usage(Usage::Immutable)); } //------------------------------------------------------------------------------ Id createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const VertexLayout& layout, Id shd, int sampleCount) { - return Gfx::CreatePipeline(NewPipelineDesc() + return Gfx::CreatePipeline(PipelineDesc() .Shader(shd) .Layout(0, layout) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .SampleCount(sampleCount) .IndexType(indexType) - .PrimitiveType(primType) - .Done()); + .PrimitiveType(primType)); } //------------------------------------------------------------------------------ diff --git a/code/Samples/Quad/Quad.cc b/code/Samples/Quad/Quad.cc index 25dbb5c07..06b9d07dc 100644 --- a/code/Samples/Quad/Quad.cc +++ b/code/Samples/Quad/Quad.cc @@ -31,32 +31,29 @@ QuadApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, -0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 0.0f, 1.0f, }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Type(BufferType::VertexBuffer) .Size(sizeof(vertices)) - .Content(vertices) - .Done()); + .Content(vertices)); // create index buffer const uint16_t indices[2 * 3] = { 0, 1, 2, // first triangle 0, 2, 3, // second triangle }; - this->drawState.IndexBuffer = Gfx::CreateBuffer(NewBufferDesc() + this->drawState.IndexBuffer = Gfx::CreateBuffer(BufferDesc() .Type(BufferType::IndexBuffer) .Size(sizeof(indices)) - .Content(indices) - .Done()); + .Content(indices)); // create shader and pipeline-state-object - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float3 }, { "in_color", VertexFormat::Float4 } }) - .IndexType(IndexType::UInt16) - .Done()); + .IndexType(IndexType::UInt16)); return App::OnInit(); } diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index 514430355..164cef4c4 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -72,31 +72,28 @@ RenderToCubeMapApp::OnInit() { // create a cubemap which will serve as render target const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; - this->cubeMap = Gfx::CreateTexture(NewTextureDesc() + this->cubeMap = Gfx::CreateTexture(TextureDesc() .Type(TextureType::TextureCube) .RenderTarget(true) .Width(1024) .Height(1024) .Format(rtColorFormat) .MinFilter(TextureFilterMode::Linear) - .MagFilter(TextureFilterMode::Linear) - .Done()); + .MagFilter(TextureFilterMode::Linear)); // ...and a matching 2D depth buffer render target - Id rtDepth = Gfx::CreateTexture(NewTextureDesc() + Id rtDepth = Gfx::CreateTexture(TextureDesc() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(1024) .Height(1024) - .Format(rtDepthFormat) - .Done()); + .Format(rtDepthFormat)); // create 6 render passes, one per cubemap face for (int faceIndex = 0; faceIndex < NumFaces; faceIndex++) { - this->passes[faceIndex] = Gfx::CreatePass(NewPassDesc() + this->passes[faceIndex] = Gfx::CreatePass(PassDesc() .ColorAttachment(0, this->cubeMap, 0, faceIndex) - .DepthStencilAttachment(rtDepth) - .Done()); + .DepthStencilAttachment(rtDepth)); } // mesh, shaders and pipelines to render color shapes @@ -112,33 +109,27 @@ RenderToCubeMapApp::OnInit() { this->primGroups = std::move(shapes.PrimitiveGroups); this->shapesVertexBuffer = Gfx::CreateBuffer(shapes.VertexBufferDesc); this->shapesIndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); - this->displayShapesPipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + this->displayShapesPipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(ShapeShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); - this->offscreenShapesPipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + .SampleCount(Gfx::Desc().SampleCount())); + this->offscreenShapesPipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(ShapeShaderWithGamma::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) - .DepthFormat(rtDepthFormat) - .Done()); + .DepthFormat(rtDepthFormat)); // create a sphere where the env-shapes reflect and refract in this->sphereDrawState.VertexBuffers[0] = this->shapesVertexBuffer; this->sphereDrawState.IndexBuffer = this->shapesIndexBuffer; this->sphereDrawState.FSTexture[SphereShader::tex] = this->cubeMap; - this->sphereDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + this->sphereDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(SphereShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); // setup projection matrix for main view float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index 35065ab82..fe0348643 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -132,20 +132,17 @@ ResourceStressApp::createObjects() { obj.primGroup = shape.PrimitiveGroups[0]; obj.drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); obj.drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - obj.drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + obj.drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(this->shader) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .CullFaceEnabled(true) - .Done()); - obj.drawState.FSTexture[Shader::tex] = TextureLoader::Load(NewTextureDesc() + .CullFaceEnabled(true)); + obj.drawState.FSTexture[Shader::tex] = TextureLoader::Load(TextureDesc() .Locator(Locator::NonShared("tex:lok_dxt1.dds")) .MinFilter(TextureFilterMode::LinearMipmapLinear) .MagFilter(TextureFilterMode::Linear) .WrapU(TextureWrapMode::ClampToEdge) - .WrapV(TextureWrapMode::ClampToEdge) - .Done()); + .WrapV(TextureWrapMode::ClampToEdge)); glm::vec3 pos = glm::ballRand(2.0f) + glm::vec3(0.0f, 0.0f, -6.0f); obj.modelTransform = glm::translate(glm::mat4(), pos); this->objects.Add(obj); diff --git a/code/Samples/Sensors/Sensors.cc b/code/Samples/Sensors/Sensors.cc index d25b0cdad..609a8abf2 100644 --- a/code/Samples/Sensors/Sensors.cc +++ b/code/Samples/Sensors/Sensors.cc @@ -47,13 +47,11 @@ SensorsApp::OnInit() { this->primGroup = shape.PrimitiveGroups[0]; this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .CullFaceEnabled(true) - .Done()); + .CullFaceEnabled(true)); // setup transform matrices const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index bfc5dcc4e..f150ee350 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -63,22 +63,19 @@ SeparateBuffersApp::OnInit() { for (int vi = 0; vi < NumVertices; vi++) { colorVertices[vi][i] = glm::linearRand(0.5f, 1.0f); } - this->colorBuffers[i] = Gfx::CreateBuffer(NewBufferDesc() + this->colorBuffers[i] = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(colorVertices)) - .Content(colorVertices) - .Done()); + .Content(colorVertices)); } // create shader and pipeline, the position data vertex Layout // goes into the first layout slot, and the color data vertex layout into the second slot - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(1, { { "in_color", VertexFormat::Float3 } }) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index 5c7c7c0ef..81a5d3b26 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -44,13 +44,11 @@ ShapeApp::OnInit() { .Build(); this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shapes.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shapes.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shapes.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shapes.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); this->primGroups = std::move(shapes.PrimitiveGroups); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 7ef199a57..14d496ca9 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -45,7 +45,7 @@ SimpleRenderTargetApp::OnInit() { const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTH; const int rtSampleCount = Gfx::QueryFeature(GfxFeature::MSAARenderTargets) ? 4 : 1; - auto rtCommon = NewTextureDesc() + auto rtCommon = TextureDesc() .Type(TextureType::Texture2D) .RenderTarget(true) .Width(128) @@ -54,14 +54,12 @@ SimpleRenderTargetApp::OnInit() { .WrapV(TextureWrapMode::Repeat) .MagFilter(TextureFilterMode::Linear) .MinFilter(TextureFilterMode::Linear) - .SampleCount(rtSampleCount) - .Done(); - Id rtColorTexture = Gfx::CreateTexture(NewTextureDesc().From(rtCommon).Format(rtColorFormat).Done()); - Id rtDepthTexture = Gfx::CreateTexture(NewTextureDesc().From(rtCommon).Format(rtDepthFormat).Done()); - this->renderPass = Gfx::CreatePass(NewPassDesc() + .SampleCount(rtSampleCount); + Id rtColorTexture = Gfx::CreateTexture(TextureDesc(rtCommon).Format(rtColorFormat)); + Id rtDepthTexture = Gfx::CreateTexture(TextureDesc(rtCommon).Format(rtDepthFormat)); + this->renderPass = Gfx::CreatePass(PassDesc() .ColorAttachment(0, rtColorTexture) - .DepthStencilAttachment(rtDepthTexture) - .Done()); + .DepthStencilAttachment(rtDepthTexture)); // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) @@ -73,15 +71,13 @@ SimpleRenderTargetApp::OnInit() { this->donutPrimGroup = donut.PrimitiveGroups[0]; this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(donut.VertexBufferDesc); this->offscreenDrawState.IndexBuffer = Gfx::CreateBuffer(donut.IndexBufferDesc); - this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(donut.PipelineDesc) + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(donut.PipelineDesc) .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) .ColorFormat(rtColorFormat) .DepthFormat(rtDepthFormat) - .SampleCount(rtSampleCount) - .Done()); + .SampleCount(rtSampleCount)); // create a sphere mesh, shader and pipeline object for rendering to display auto sphere = ShapeBuilder::New() @@ -93,13 +89,11 @@ SimpleRenderTargetApp::OnInit() { this->spherePrimGroup = sphere.PrimitiveGroups[0]; this->displayDrawState.VertexBuffers[0] = Gfx::CreateBuffer(sphere.VertexBufferDesc); this->displayDrawState.IndexBuffer = Gfx::CreateBuffer(sphere.IndexBufferDesc); - this->displayDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(sphere.PipelineDesc) + this->displayDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(sphere.PipelineDesc) .Shader(Gfx::CreateShader(DisplayShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); this->displayDrawState.FSTexture[DisplayShader::tex] = rtColorTexture; // setup static transform matrices diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index 0495fd556..5cdda2c4e 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -97,13 +97,11 @@ TestInputApp::OnInit() { this->primGroup = shape.PrimitiveGroups[0]; this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .CullFaceEnabled(true) - .Done()); + .CullFaceEnabled(true)); const float fbWidth = (const float) Gfx::DisplayAttrs().Width; const float fbHeight = (const float) Gfx::DisplayAttrs().Height; diff --git a/code/Samples/TextureFloat/TextureFloat.cc b/code/Samples/TextureFloat/TextureFloat.cc index 8c32469ff..99ac0f795 100644 --- a/code/Samples/TextureFloat/TextureFloat.cc +++ b/code/Samples/TextureFloat/TextureFloat.cc @@ -44,41 +44,37 @@ TextureFloatApp::OnInit() { // create an offscreen float render target, same size as display, // configure texture sampler with point-filtering const PixelFormat::Code rtColorFormat = PixelFormat::RGBA32F; - Id rt = Gfx::CreateTexture(NewTextureDesc() + Id rt = Gfx::CreateTexture(TextureDesc() .RenderTarget(true) .Width(Gfx::Desc().Width()) .Height(Gfx::Desc().Height()) .Format(rtColorFormat) .MinFilter(TextureFilterMode::Nearest) - .MagFilter(TextureFilterMode::Nearest) - .Done()); - this->renderPass = Gfx::CreatePass(NewPassDesc().ColorAttachment(0, rt).Done()); + .MagFilter(TextureFilterMode::Nearest)); + this->renderPass = Gfx::CreatePass(PassDesc().ColorAttachment(0, rt)); this->renderPassAction.DontCareColor(0); // fullscreen mesh, we'll reuse this several times const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->offscreenDrawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); + .Content(quadVertices)); this->copyDrawState.VertexBuffers[0] = this->offscreenDrawState.VertexBuffers[0]; // setup draw state for offscreen rendering to float render target - this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + this->offscreenDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(OffscreenShader::Desc())) .Layout(0, {{"in_pos", VertexFormat::Float2}}) .PrimitiveType(PrimitiveType::TriangleStrip) .ColorFormat(rtColorFormat) - .DepthFormat(PixelFormat::None) - .Done()); + .DepthFormat(PixelFormat::None)); this->offscreenFSParams.time = 0.0f; // fullscreen-copy resources - this->copyDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + this->copyDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(CopyShader::Desc())) .Layout(0, {{"in_pos", VertexFormat::Float2}}) - .PrimitiveType(PrimitiveType::TriangleStrip) - .Done()); + .PrimitiveType(PrimitiveType::TriangleStrip)); this->copyDrawState.FSTexture[CopyShader::tex] = rt; // setup static transform matrices diff --git a/code/Samples/Triangle/Triangle.cc b/code/Samples/Triangle/Triangle.cc index 4fdaa9523..42ecc0996 100644 --- a/code/Samples/Triangle/Triangle.cc +++ b/code/Samples/Triangle/Triangle.cc @@ -31,19 +31,17 @@ TriangleApp::OnInit() { 0.5f, -0.5f, 0.5f, 0.0f, 1.0f, 0.0f , 1.0f, -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(vertices)) - .Content(vertices) - .Done()); + .Content(vertices)); // create shader and pipeline-state-object - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(Shader::Desc())) .Layout(0, { { "position", VertexFormat::Float3 }, { "color0", VertexFormat::Float4 } - }) - .Done()); + })); return App::OnInit(); } diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index d1aed5b29..08189937e 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -44,31 +44,26 @@ VertexTextureApp::OnInit() { // FIXME: need a way to check number of vertex texture units // create RGBA offscreen render pass which holds the plasma - Id plasmaTex = Gfx::CreateTexture(NewTextureDesc() + Id plasmaTex = Gfx::CreateTexture(TextureDesc() .RenderTarget(true) .Width(256) .Height(256) .Format(PixelFormat::RGBA8) .MinFilter(TextureFilterMode::Nearest) - .MagFilter(TextureFilterMode::Nearest) - .Done()); - this->plasmaRenderPass = Gfx::CreatePass(NewPassDesc() - .ColorAttachment(0, plasmaTex) - .Done()); + .MagFilter(TextureFilterMode::Nearest)); + this->plasmaRenderPass = Gfx::CreatePass(PassDesc().ColorAttachment(0, plasmaTex)); // setup draw state for offscreen rendering to float render target const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->plasmaDrawState.VertexBuffers[0] = Gfx::CreateBuffer(NewBufferDesc() + this->plasmaDrawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() .Size(sizeof(quadVertices)) - .Content(quadVertices) - .Done()); - this->plasmaDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() + .Content(quadVertices)); + this->plasmaDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() .Shader(Gfx::CreateShader(PlasmaShader::Desc())) .Layout(0, { { "in_pos", VertexFormat::Float2 } }) .PrimitiveType(PrimitiveType::TriangleStrip) .ColorFormat(PixelFormat::RGBA8) - .DepthFormat(PixelFormat::None) - .Done()); + .DepthFormat(PixelFormat::None)); // draw state for a 256x256 plane auto shape = ShapeBuilder::New() @@ -79,13 +74,11 @@ VertexTextureApp::OnInit() { this->planePrimGroup = shape.PrimitiveGroups[0]; this->planeDrawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->planeDrawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->planeDrawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->planeDrawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(PlaneShader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(4) - .Done()); + .SampleCount(4)); this->planeDrawState.VSTexture[PlaneShader::tex] = plasmaTex; const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index da70e96ee..ff224a320 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -60,7 +60,7 @@ VolumeTextureApp::OnInit() { } p.z += 1.0f / dim; } - this->drawState.FSTexture[Shader::tex] = Gfx::CreateTexture(NewTextureDesc() + this->drawState.FSTexture[Shader::tex] = Gfx::CreateTexture(TextureDesc() .Type(TextureType::Texture3D) .Width(dim) .Height(dim) @@ -69,8 +69,7 @@ VolumeTextureApp::OnInit() { .MinFilter(TextureFilterMode::Linear) .MagFilter(TextureFilterMode::Linear) .MipSize(0, 0, sizeof(data)) - .MipContent(0, 0, data) - .Done()); + .MipContent(0, 0, data)); // create a cube which will be the hull geometry for raycasting through the 3D texture auto shape = ShapeBuilder::New() @@ -80,13 +79,11 @@ VolumeTextureApp::OnInit() { this->primGroup = shape.PrimitiveGroups[0]; this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(shape.VertexBufferDesc); this->drawState.IndexBuffer = Gfx::CreateBuffer(shape.IndexBufferDesc); - this->drawState.Pipeline = Gfx::CreatePipeline(NewPipelineDesc() - .From(shape.PipelineDesc) + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) .DepthWriteEnabled(true) .DepthCmpFunc(CompareFunc::LessEqual) - .SampleCount(Gfx::Desc().SampleCount()) - .Done()); + .SampleCount(Gfx::Desc().SampleCount())); // setup a projection matrix with the right aspect ratio const float fbWidth = (const float) Gfx::DisplayAttrs().Width; diff --git a/fips-generators/Shader.py b/fips-generators/Shader.py index 35e474009..06e94360c 100644 --- a/fips-generators/Shader.py +++ b/fips-generators/Shader.py @@ -2,7 +2,7 @@ Code generator for shader libraries. ''' -Version = 61 +Version = 63 import os, platform, json import genutil as util @@ -566,8 +566,8 @@ def writeShaderSource(f, absPath, shdLib, shd, slVersion) : def writeProgramSource(f, shdLib, prog, slangs) : # write the Desc() function f.write('Oryol::ShaderDesc ' + prog.name + '::Desc() {\n') - f.write(' Oryol::ShaderBuilder bld;\n') - f.write(' bld.Locator("' + prog.name + '");\n') + f.write(' Oryol::ShaderDesc desc;\n') + f.write(' desc.Locator("' + prog.name + '");\n') vs = shdLib.vertexShaders[prog.vs] fs = shdLib.fragmentShaders[prog.fs] vsName = vs.name @@ -578,21 +578,21 @@ def writeProgramSource(f, shdLib, prog, slangs) : fsSource = '{}_{}_src'.format(fsName, slang) if isGLSL(slang): f.write(' if (Oryol::Gfx::QueryShaderLang() == {}) {{\n'.format(slangType)) - f.write(' bld.Source(Oryol::ShaderStage::VS, {});\n'.format(vsSource)) - f.write(' bld.Source(Oryol::ShaderStage::FS, {});\n'.format(fsSource)) + f.write(' desc.Source(Oryol::ShaderStage::VS, {});\n'.format(vsSource)) + f.write(' desc.Source(Oryol::ShaderStage::FS, {});\n'.format(fsSource)) f.write(' }\n') elif isHLSL(slang): vs_c_name = '{}_vs_hlsl5'.format(vs.name) fs_c_name = '{}_fs_hlsl5'.format(fs.name) - f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}));\n'.format(vs_c_name, vs_c_name)) - f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) + f.write(' desc.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}));\n'.format(vs_c_name, vs_c_name)) + f.write(' desc.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) elif isMetal(slang): vs_c_name = '{}_vs_metallib'.format(vs.name) fs_c_name = '{}_fs_metallib'.format(fs.name) - f.write(' bld.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}));\n'.format(vs_c_name, vs_c_name)) - f.write(' bld.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) - f.write(' bld.Entry(Oryol::ShaderStage::VS, "main0");\n') - f.write(' bld.Entry(Oryol::ShaderStage::FS, "main0");\n') + f.write(' desc.ByteCode(Oryol::ShaderStage::VS, {}, sizeof({}));\n'.format(vs_c_name, vs_c_name)) + f.write(' desc.ByteCode(Oryol::ShaderStage::FS, {}, sizeof({}));\n'.format(fs_c_name, fs_c_name)) + f.write(' desc.Entry(Oryol::ShaderStage::VS, "main0");\n') + f.write(' desc.Entry(Oryol::ShaderStage::FS, "main0");\n') slang = slangs[0] # add vertex shader input layout @@ -603,7 +603,7 @@ def writeProgramSource(f, shdLib, prog, slangs) : ord_vs_inputs[attr['slot']] = attr vs_inputs = ord_vs_inputs for attr in vs_inputs: - f.write(' bld.Attr("{}", Oryol::{});\n'.format(attr['name'], attrOryolType[attr['type']])) + f.write(' desc.Attr("{}", Oryol::{});\n'.format(attr['name'], attrOryolType[attr['type']])) # add uniform block layouts to desc object for stage in ['VS', 'FS']: @@ -614,13 +614,13 @@ def writeProgramSource(f, shdLib, prog, slangs) : ub_size = ub['size'] if 'glsl' in slang: ub_size = roundup(ub_size, 16) - f.write(' bld.UniformBlock(Oryol::ShaderStage::{}, {}, "{}", "{}", {});\n'.format( + f.write(' desc.UniformBlock(Oryol::ShaderStage::{}, {}, "{}", "{}", {});\n'.format( stage, ub['slot'], ub['name'], ub['type'], ub_size)) # add textures layouts to desc objects for tex in refl['textures']: - f.write(' bld.Texture(Oryol::ShaderStage::{}, {}, "{}", {});\n'.format( + f.write(' desc.Texture(Oryol::ShaderStage::{}, {}, "{}", {});\n'.format( stage, tex['slot'], tex['name'], texOryolType[tex['type']])) - f.write(' return bld.Desc;\n') + f.write(' return desc;\n') f.write('}\n') #------------------------------------------------------------------------------- From 28ee7f521e6261ac2212a9ea8379b9fc00ef7723 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 17 Apr 2018 18:49:21 +0200 Subject: [PATCH 49/91] fixes for Metal --- .../Gfx/private/metal/mtlDisplayMgr.mm | 29 +++++++------------ .../Gfx/private/sokol/sokolGfxBackend.cc | 8 ++--- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm b/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm index d0dfb2ca5..259c8bd9e 100644 --- a/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm +++ b/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm @@ -72,16 +72,16 @@ mtlDisplayMgr::configureWindow(const GfxDesc& desc) { #if ORYOL_MACOS - StringBuilder strBuilder(desc.Title); + StringBuilder strBuilder(desc.title); strBuilder.Append(" (Metal)"); NSWindow* window = osxBridge::ptr()->appWindow; [window setTitle:[NSString stringWithUTF8String:strBuilder.AsCStr()]]; - [window setContentSize:NSMakeSize(desc.Width, desc.Height)]; + [window setContentSize:NSMakeSize(desc.width, desc.height)]; [window center]; osBridge* bridge = osBridge::ptr(); - if (!desc.HighDPI) { - CGSize drawableSize = { (CGFloat) desc.Width, (CGFloat) desc.Height }; + if (!desc.highDPI) { + CGSize drawableSize = { (CGFloat) desc.width, (CGFloat) desc.height }; [bridge->mtkView setDrawableSize:drawableSize]; } #elif ORYOL_IOS @@ -99,26 +99,19 @@ [[bridge->mtkView layer] setMagnificationFilter:kCAFilterNearest]; // get actual rendering size - #if ORYOL_IOS - const CGRect winContentRect = [bridge->mtkView frame]; - #else - const NSRect winContentRect = [bridge->mtkView frame]; - #endif CGSize fbSize = [bridge->mtkView drawableSize]; int fbWidth = (int) fbSize.width; int fbHeight = (int) fbSize.height; #if ORYOL_OSX - if (fbWidth == desc.Width * 2) { + if (fbWidth == desc.width * 2) { // we're on a Retina display bridge->mouseScale = 2.0; } #endif Log::Info("mtlDisplayMgr: actual framebuffer size w=%d, h=%d\n", fbWidth, fbHeight); - this->displayAttrs.FramebufferWidth = fbWidth; - this->displayAttrs.FramebufferHeight = fbHeight; - this->displayAttrs.WindowWidth = winContentRect.size.width; - this->displayAttrs.WindowHeight = winContentRect.size.height; - [osBridge::ptr()->mtkView setSampleCount:desc.SampleCount]; + this->displayAttrs.Width = fbWidth; + this->displayAttrs.Height = fbHeight; + [osBridge::ptr()->mtkView setSampleCount:desc.sampleCount]; } //------------------------------------------------------------------------------ @@ -129,10 +122,8 @@ if (self) { // need to get the actual size CGSize fbSize = [osxBridge::ptr()->mtkView drawableSize]; - self->displayAttrs.FramebufferWidth = (int) fbSize.width; - self->displayAttrs.FramebufferHeight = (int) fbSize.height; - self->displayAttrs.WindowWidth = w; - self->displayAttrs.WindowHeight = h; + self->displayAttrs.Width = (int) fbSize.width; + self->displayAttrs.Height = (int) fbSize.height; } } #endif diff --git a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc index 7c766d350..a3c4c54b0 100644 --- a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc @@ -719,10 +719,10 @@ sokolGfxBackend::CreateShader(const ShaderDesc& desc) { sgDesc.vs.source = desc.stage[ShaderStage::VS].Source; sgDesc.fs.source = desc.stage[ShaderStage::FS].Source; #elif ORYOL_METAL || ORYOL_D3D11 - sgDesc.vs.byte_code = desc.stage[ShaderStage::VS].byteCode; - sgDesc.vs.byte_code_size = desc.stage[ShaderStage::VS].byteCodeSize; - sgDesc.fs.byte_code = desc.stage[ShaderStage::FS].byteCode; - sgDesc.fs.byte_code_size = desc.stage[ShaderStage::FS].byteCodeSize; + sgDesc.vs.byte_code = desc.stage[ShaderStage::VS].ByteCode; + sgDesc.vs.byte_code_size = desc.stage[ShaderStage::VS].ByteCodeSize; + sgDesc.fs.byte_code = desc.stage[ShaderStage::FS].ByteCode; + sgDesc.fs.byte_code_size = desc.stage[ShaderStage::FS].ByteCodeSize; #endif if (desc.stage[ShaderStage::VS].Entry) { sgDesc.vs.entry = desc.stage[ShaderStage::VS].Entry; From efcc72085e3832bc1ccd90e86cdd9d3812bc114c Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 18 Apr 2018 10:31:11 +0200 Subject: [PATCH 50/91] GfxTypes.h: remove some obsolete constants --- code/Modules/Gfx/GfxTypes.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 41e526600..04f2c9c5b 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -25,10 +25,6 @@ class GfxConfig { static const int DefaultResourcePoolSize = 128; /// default uniform buffer size (only relevant on some platforms) static const int DefaultGlobalUniformBufferSize = 4 * 1024 * 1024; - /// default maximum number of draw-calls per frame (only relevant on some platforms) - static const int DefaultMaxDrawCallsPerFrame = (1<<16); - /// default maximum number of Gfx::ApplyDrawState per frame (only relevant on some platforms) - static const int DefaultMaxApplyDrawStatesPerFrame = 4096; /// max number of input vertex buffers static const int MaxNumVertexBuffers = 4; /// maximum number of textures on vertex shader stage @@ -41,8 +37,6 @@ class GfxConfig { static const int MaxNumShaderTextures = MaxNumVertexTextures>MaxNumFragmentTextures?MaxNumVertexTextures:MaxNumFragmentTextures; /// max number of texture faces static const int MaxNumTextureFaces = 6; - /// max number of texture array slices - static const int MaxNumTextureArraySlices = 128; /// max number of texture mipmaps static const int MaxNumTextureMipMaps = 12; /// maximum number of components in vertex layout From 4437b280151da97595491f4647b247974b1005cf Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 21 Apr 2018 11:45:23 +0200 Subject: [PATCH 51/91] GfxTypes: minor code cleanup --- code/Modules/Gfx/GfxTypes.cc | 14 -------- code/Modules/Gfx/GfxTypes.h | 33 +++++++++---------- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 14 +++++++- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 0c60b39e5..69867e2d7 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -317,20 +317,6 @@ int PixelFormat::ImagePitch(PixelFormat::Code fmt, int width, int height) { return pitch; } -//------------------------------------------------------------------------------ -const char* PrimitiveType::ToString(PrimitiveType::Code c) { - switch (c) { - case Points: return "Points"; - case Lines: return "Lines"; - case LineStrip: return "LineStrip"; - case Triangles: return "Triangles"; - case TriangleStrip: return "TriangleStrip"; - default: - o_error("PrimitiveType::ToString(): invalid value!\n"); - return 0; - } -} - //------------------------------------------------------------------------------ int VertexFormat::ByteSize(Code c) { switch (c) { diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index 04f2c9c5b..fef93624d 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -19,32 +19,31 @@ namespace Oryol { @ingroup Gfx @brief central configuration constants of the Gfx module */ -class GfxConfig { -public: +namespace GfxConfig { /// default resource pool size - static const int DefaultResourcePoolSize = 128; + constexpr int DefaultResourcePoolSize = 128; /// default uniform buffer size (only relevant on some platforms) - static const int DefaultGlobalUniformBufferSize = 4 * 1024 * 1024; + constexpr int DefaultGlobalUniformBufferSize = 4 * 1024 * 1024; /// max number of input vertex buffers - static const int MaxNumVertexBuffers = 4; + constexpr int MaxNumVertexBuffers = 4; /// maximum number of textures on vertex shader stage - static const int MaxNumVertexTextures = 4; + constexpr int MaxNumVertexTextures = 4; /// maximum number of textures on fragment shader stage - static const int MaxNumFragmentTextures = 12; + constexpr int MaxNumFragmentTextures = 12; /// max number of uniform blocks per stage - static const int MaxNumUniformBlocksPerStage = 4; + constexpr int MaxNumUniformBlocksPerStage = 4; /// max number of textures on any stage - static const int MaxNumShaderTextures = MaxNumVertexTextures>MaxNumFragmentTextures?MaxNumVertexTextures:MaxNumFragmentTextures; + constexpr int MaxNumShaderTextures = MaxNumVertexTextures>MaxNumFragmentTextures?MaxNumVertexTextures:MaxNumFragmentTextures; /// max number of texture faces - static const int MaxNumTextureFaces = 6; + constexpr int MaxNumTextureFaces = 6; /// max number of texture mipmaps - static const int MaxNumTextureMipMaps = 12; + constexpr int MaxNumTextureMipMaps = 12; /// maximum number of components in vertex layout - static const int MaxNumVertexLayoutComponents = 16; + constexpr int MaxNumVertexLayoutComponents = 16; /// maximum number of in-flight frames (not used by all platforms) - static const int MaxInflightFrames = 2; + constexpr int MaxInflightFrames = 2; /// maximum number of render pass color attachments - static const int MaxNumColorAttachments = 4; + constexpr int MaxNumColorAttachments = 4; }; //------------------------------------------------------------------------------ @@ -286,8 +285,6 @@ struct PrimitiveType { Num, Invalid }; - /// convert primitive type to string - static const char* ToString(PrimitiveType::Code c); }; //------------------------------------------------------------------------------ @@ -671,9 +668,9 @@ class VertexLayout { class Component { public: /// default constructor - Component() {}; + Component() { } /// construct from format (no attr name) - Component(VertexFormat::Code fmt): Format(fmt) { }; + Component(VertexFormat::Code fmt): Format(fmt) { } /// construct from vertex attr name and format Component(const StringAtom& name, VertexFormat::Code fmt): Name(name), Format(fmt) { } /// return true if valid (attr and format set) diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index e02bc540f..bfb1dd12d 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -204,6 +204,18 @@ PrimitiveTypesApp::OnInit() { return App::OnInit(); } +//------------------------------------------------------------------------------ +static const char* primTypeToString(PrimitiveType::Code t) { + switch (t) { + case PrimitiveType::Points: return "Points"; + case PrimitiveType::Lines: return "Lines"; + case PrimitiveType::LineStrip: return "LineStrip"; + case PrimitiveType::Triangles: return "Triangles"; + case PrimitiveType::TriangleStrip: return "TriangleString"; + default: return "Unknown"; + } +} + //------------------------------------------------------------------------------ AppState::Code PrimitiveTypesApp::OnRunning() { @@ -279,7 +291,7 @@ PrimitiveTypesApp::OnRunning() { else { Dbg::TextColor(1.0f, 1.0f, 0.0f, 1.0f); } - Dbg::PrintF("\n\r %d: %s", i+1, PrimitiveType::ToString(PrimitiveType::Code(i))); + Dbg::PrintF("\n\r %d: %s", i+1, primTypeToString(PrimitiveType::Code(i))); } Dbg::DrawTextBuffer(); From 456e4695c8c308cf7baa2b37ea00d3c20fb73c15 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 21 Apr 2018 16:11:22 +0200 Subject: [PATCH 52/91] cleanup Asset module APIs --- code/Modules/Assets/CMakeLists.txt | 15 -- code/Modules/Assets/Gfx/MeshBuilder.cc | 60 ++---- code/Modules/Assets/Gfx/MeshBuilder.h | 140 ++++++------ code/Modules/Assets/Gfx/MeshLoader.cc | 91 -------- code/Modules/Assets/Gfx/MeshLoader.h | 36 ---- code/Modules/Assets/Gfx/OmshParser.cc | 127 ----------- code/Modules/Assets/Gfx/OmshParser.h | 59 ----- code/Modules/Assets/Gfx/ShapeBuilder.cc | 203 +++++++++--------- code/Modules/Assets/Gfx/ShapeBuilder.h | 90 ++++---- .../Assets/UnitTests/MeshBuilderTest.cc | 86 -------- .../Assets/UnitTests/ShapeBuilderTest.cc | 84 -------- .../Assets/UnitTests/VertexWriterTest.cc | 131 ----------- code/Modules/Core/Containers/MemoryBuffer.h | 12 ++ code/Samples/ArrayTexture/ArrayTexture.cc | 2 +- code/Samples/DDSCubeMap/DDSCubeMap.cc | 2 +- .../DDSTextureLoading/DDSTextureLoading.cc | 2 +- code/Samples/DrawCallPerf/DrawCallPerf.cc | 2 +- code/Samples/GPUParticles/GPUParticles.cc | 2 +- .../InfiniteSpheres/InfiniteSpheres.cc | 2 +- code/Samples/Instancing/Instancing.cc | 2 +- .../MultipleRenderTarget.cc | 2 +- code/Samples/NativeTexture/NativeTexture.cc | 2 +- code/Samples/PackedNormals/PackedNormals.cc | 2 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 56 ++--- .../RenderToCubeMap/RenderToCubeMap.cc | 2 +- code/Samples/ResourceStress/ResourceStress.cc | 2 +- code/Samples/Sensors/Sensors.cc | 2 +- .../SeparateBuffers/SeparateBuffers.cc | 2 +- code/Samples/Shapes/Shapes.cc | 2 +- .../SimpleRenderTarget/SimpleRenderTarget.cc | 4 +- code/Samples/TestInput/TestInput.cc | 2 +- code/Samples/VertexTexture/VertexTexture.cc | 2 +- code/Samples/VolumeTexture/VolumeTexture.cc | 2 +- 33 files changed, 284 insertions(+), 946 deletions(-) delete mode 100644 code/Modules/Assets/Gfx/MeshLoader.cc delete mode 100644 code/Modules/Assets/Gfx/MeshLoader.h delete mode 100644 code/Modules/Assets/Gfx/OmshParser.cc delete mode 100644 code/Modules/Assets/Gfx/OmshParser.h delete mode 100644 code/Modules/Assets/UnitTests/MeshBuilderTest.cc delete mode 100644 code/Modules/Assets/UnitTests/ShapeBuilderTest.cc delete mode 100644 code/Modules/Assets/UnitTests/VertexWriterTest.cc diff --git a/code/Modules/Assets/CMakeLists.txt b/code/Modules/Assets/CMakeLists.txt index 7e0596452..5dbeffb98 100644 --- a/code/Modules/Assets/CMakeLists.txt +++ b/code/Modules/Assets/CMakeLists.txt @@ -6,20 +6,5 @@ fips_begin_module(Assets) ShapeBuilder.cc ShapeBuilder.h VertexWriter.cc VertexWriter.h TextureLoader.cc TextureLoader.h -# OmshParser.cc OmshParser.h -# MeshLoader.cc MeshLoader.h ) fips_end_module() - -fips_begin_unittest(Assets) - fips_vs_warning_level(3) - fips_dir(UnitTests) - fips_files( - MeshBuilderTest.cc - ShapeBuilderTest.cc - VertexWriterTest.cc - ) - fips_deps(Gfx Assets) -fips_end_unittest() - - diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index 1243bd3b8..6657055c2 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -10,64 +10,50 @@ namespace Oryol { //------------------------------------------------------------------------------ -MeshBuilder& -MeshBuilder::Begin() { - o_assert_dbg(!this->inBegin); - o_assert_dbg(this->NumVertices > 0); - o_assert_dbg(!this->Layout.Empty()); - this->inBegin = true; +MeshBuilder::Result +MeshBuilder::Build(std::function func) { + o_assert_dbg(!this->inBuild); + o_assert_dbg(this->numVertices > 0); + o_assert_dbg(!this->layout.Empty()); + this->inBuild = true; // compute the data buffer size - const int vbSize = this->NumVertices * this->Layout.ByteSize(); - const int ibSize = this->NumIndices * IndexType::ByteSize(this->IndexType); + const int vbSize = this->numVertices * this->layout.ByteSize(); + const int ibSize = this->numIndices * IndexType::ByteSize(this->indexType); int allSize = vbSize + ibSize; // setup the data buffer object - this->vertexPointer = this->result.Data.Add(allSize); + this->vertexPointer = (uint8_t*) Memory::Alloc(allSize); this->indexPointer = this->vertexPointer + vbSize; this->endPointer = this->indexPointer + ibSize; - // setup Result object - this->result.Layout = this->Layout; - this->result.IndexType = this->IndexType; - this->result.VertexBufferDesc = BufferDesc() + // call the content-build function + func(*this); + + // setup the Result object + Result res; + res.Data.MoveRaw(this->vertexPointer, allSize); + res.Layout = this->layout; + res.IndexType = this->indexType; + res.VertexBufferDesc = BufferDesc() .Size(vbSize) .Type(BufferType::VertexBuffer) - .Usage(this->VertexUsage) + .Usage(this->vertexUsage) .Content(this->vertexPointer); if (ibSize > 0) { - this->result.IndexBufferDesc = BufferDesc() + res.IndexBufferDesc = BufferDesc() .Size(ibSize) .Type(BufferType::IndexBuffer) - .Usage(this->IndexUsage) + .Usage(this->indexUsage) .Content(this->indexPointer); } else { - this->result.IndexBufferDesc = BufferDesc(); + res.IndexBufferDesc = BufferDesc(); } - return *this; -} - -//------------------------------------------------------------------------------ -MeshBuilder::Result -MeshBuilder::Build() { - o_assert(this->inBegin); - - this->inBegin = false; - - // NOTE: explicit moves required by VS2013 - Result res(std::move(this->result)); - - // clear private data, not configuration data + this->inBuild = false; this->vertexPointer = nullptr; this->indexPointer = nullptr; this->endPointer = nullptr; - this->result.VertexBufferDesc = BufferDesc(); - this->result.IndexBufferDesc = BufferDesc(); - this->result.Layout = VertexLayout(); - this->result.IndexType = IndexType::Invalid; - this->result.Data.Clear(); - return res; } diff --git a/code/Modules/Assets/Gfx/MeshBuilder.h b/code/Modules/Assets/Gfx/MeshBuilder.h index 15f57c74b..8dddbc1e7 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.h +++ b/code/Modules/Assets/Gfx/MeshBuilder.h @@ -20,62 +20,38 @@ MeshBuilder the number of vertices and their layout, the number of indices (in case of indexed geometry), the index type (16- or 32-bits) and finally the primitive group definitions, then call - the Begin() method, and start writing vertices and indices, - when done call End() and get the resulting SetupAndData object - object which can be handed to Gfx::CreateResource(). - + the Build() method, and in the callback function write vertices and indices. + The MeshBuilder::Result object returned by the Build() method contains + all the required information to create buffers and pipeline + objects needed to render the mesh data. + Vertex format packing happens on the fly when writing vertex data according to the vertex layout given. - This is the format of the stream data that will be written: - - [1..numVertices] - [1..N bytes per vertex] - [4-byte aligned, 1..numIndices] - [2 or 4 bytes per index] - @see VertexWriter, ShapeBuilder */ #include "Core/Types.h" #include "Gfx/GfxTypes.h" #include "Assets/Gfx/VertexWriter.h" +#include namespace Oryol { class MeshBuilder { public: - /// number of vertices - uint32_t NumVertices = 0; - /// number of indices (default 0 for non-indexed meshes) - uint32_t NumIndices = 0; - /// index type (default is 16-bit indices) - Oryol::IndexType::Code IndexType = IndexType::UInt16; - /// read/write access to vertex layout - VertexLayout Layout; - /// vertex data usage - Usage::Code VertexUsage = Usage::Immutable; - /// index data usage - Usage::Code IndexUsage = Usage::Immutable; - - /// begin writing vertex and index data - MeshBuilder& Begin(); - /// write 1D component vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x); - /// write 2D vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x, float y); - /// write 3D vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z); - /// write 4D vertex data - MeshBuilder& Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z, float w); - /// write 16-bit vertex-index at index-buffer-index - MeshBuilder& Index(uint32_t index, uint16_t vertexIndex); - /// write 32-bit vertex-index at index-buffer-index - MeshBuilder& Index32(uint32_t index, uint32_t vertexIndex); - /// write 16-bit triangle indices - MeshBuilder& Triangle(uint32_t triangleIndex, uint16_t vertexIndex0, uint16_t vertexIndex1, uint16_t vertexIndex2); - /// write 32-bit triangle indices - MeshBuilder& Triangle32(uint32_t triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); - /// mesh builder result + MeshBuilder& NumVertices(int n) { numVertices = n; return *this; } + int NumVertices() const { return numVertices; } + MeshBuilder& NumIndices(int n) { numIndices = n; return *this; } + int NumIndices() const { return numIndices; } + MeshBuilder& IndexType(Oryol::IndexType::Code t) { indexType = t; return *this; } + Oryol::IndexType::Code IndexType() const { return indexType; } + MeshBuilder& Layout(const VertexLayout& l) { layout = l; return *this; } + const VertexLayout& Layout() const { return layout; } + VertexLayout& Layout() { return layout; } + MeshBuilder& VertexUsage(Usage::Code u) { vertexUsage = u; return *this; } + Usage::Code VertexUsage() const { return vertexUsage; } + MeshBuilder& IndexUsage(Usage::Code u) { indexUsage = u; return *this; } + Usage::Code IndexUsage() const { return indexUsage; } struct Result { BufferDesc VertexBufferDesc; BufferDesc IndexBufferDesc; @@ -83,18 +59,30 @@ class MeshBuilder { Oryol::IndexType::Code IndexType; MemoryBuffer Data; }; - /// end writing vertex and index data, return result, and reset MeshBuilfer - Result Build(); + Result Build(std::function func); + + /// these functions must be called from within the Build() callback + MeshBuilder& Vertex(int vertexIndex, int compIndex, float x); + MeshBuilder& Vertex(int vertexIndex, int compIndex, float x, float y); + MeshBuilder& Vertex(int vertexIndex, int compIndex, float x, float y, float z); + MeshBuilder& Vertex(int vertexIndex, int compIndex, float x, float y, float z, float w); + MeshBuilder& Index(int index, uint16_t vertexIndex); + MeshBuilder& Index32(int index, uint32_t vertexIndex); + MeshBuilder& Triangle(int triangleIndex, uint16_t vertexIndex0, uint16_t vertexIndex1, uint16_t vertexIndex2); + MeshBuilder& Triangle32(int triangleIndex, uint32_t vertexIndex0, uint32_t vertexIndex1, uint32_t vertexIndex2); private: - /// clear/reset the object void clear(); - /// compute byte offset into vertex buffer given vertex and component index - uint32_t vertexByteOffset(uint32_t vertexIndex, int compIndex) const; + int vertexByteOffset(int vertexIndex, int compIndex) const; - Result result; - bool inBegin = false; - + int numVertices = 0; + int numIndices = 0; + IndexType::Code indexType = IndexType::UInt16; + Usage::Code vertexUsage = Usage::Immutable; + Usage::Code indexUsage = Usage::Immutable; + VertexLayout layout; + + bool inBuild = false; uint8_t* vertexPointer = nullptr; uint8_t* indexPointer = nullptr; uint8_t* endPointer = nullptr; @@ -102,9 +90,9 @@ class MeshBuilder { //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Index(uint32_t index, uint16_t vertexIndex) { - o_assert_dbg(this->inBegin && (index < this->NumIndices) && (this->IndexType == IndexType::UInt16)); - o_assert_dbg(vertexIndex < this->NumVertices); +MeshBuilder::Index(int index, uint16_t vertexIndex) { + o_assert_dbg(this->inBuild && (index < this->numIndices) && (this->indexType == IndexType::UInt16)); + o_assert_dbg(vertexIndex < this->numVertices); uint16_t* ptr = ((uint16_t*)this->indexPointer) + index; o_assert_dbg(ptr < (uint16_t*)this->endPointer); @@ -114,9 +102,9 @@ MeshBuilder::Index(uint32_t index, uint16_t vertexIndex) { //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Index32(uint32_t index, uint32_t vertexIndex) { - o_assert_dbg(this->inBegin && (index < this->NumIndices) && (this->IndexType == IndexType::UInt32)); - o_assert_dbg(vertexIndex < this->NumVertices); +MeshBuilder::Index32(int index, uint32_t vertexIndex) { + o_assert_dbg(this->inBuild && (index < this->numIndices) && (this->indexType == IndexType::UInt32)); + o_assert_dbg((int)vertexIndex < this->numVertices); uint32_t* ptr = ((uint32_t*)this->indexPointer) + index; o_assert_dbg(ptr < (uint32_t*)this->endPointer); @@ -126,9 +114,9 @@ MeshBuilder::Index32(uint32_t index, uint32_t vertexIndex) { //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Triangle(uint32_t triIndex, uint16_t vi0, uint16_t vi1, uint16_t vi2) { - o_assert_dbg(this->inBegin && (triIndex*3 < this->NumIndices)); - o_assert_dbg((vi0 < this->NumVertices) && (vi1 < this->NumVertices) && (vi2 < this->NumVertices)); +MeshBuilder::Triangle(int triIndex, uint16_t vi0, uint16_t vi1, uint16_t vi2) { + o_assert_dbg(this->inBuild && (triIndex*3 < this->numIndices)); + o_assert_dbg((vi0 < this->numVertices) && (vi1 < this->numVertices) && (vi2 < this->numVertices)); uint16_t* ptr = ((uint16_t*)this->indexPointer) + triIndex * 3; o_assert_dbg(ptr < (uint16_t*)this->endPointer); @@ -137,46 +125,46 @@ MeshBuilder::Triangle(uint32_t triIndex, uint16_t vi0, uint16_t vi1, uint16_t vi } //------------------------------------------------------------------------------ -inline uint32_t -MeshBuilder::vertexByteOffset(uint32_t vertexIndex, int compIndex) const { - o_assert_dbg(vertexIndex < this->NumVertices); +inline int +MeshBuilder::vertexByteOffset(int vertexIndex, int compIndex) const { + o_assert_dbg(vertexIndex < this->numVertices); o_assert_dbg(InvalidIndex != compIndex); - return vertexIndex * this->Layout.ByteSize() + this->Layout.ComponentByteOffset(compIndex); + return vertexIndex * this->layout.ByteSize() + this->layout.ComponentByteOffset(compIndex); } //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x) { - o_assert_dbg(this->inBegin); +MeshBuilder::Vertex(int vertexIndex, int compIndex, float x) { + o_assert_dbg(this->inBuild); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); - VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x); + VertexWriter::Write(ptr, this->layout.ComponentAt(compIndex).Format, x); return *this; } //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x, float y) { - o_assert_dbg(this->inBegin); +MeshBuilder::Vertex(int vertexIndex, int compIndex, float x, float y) { + o_assert_dbg(this->inBuild); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); - VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x, y); + VertexWriter::Write(ptr, this->layout.ComponentAt(compIndex).Format, x, y); return *this; } //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z) { - o_assert_dbg(this->inBegin); +MeshBuilder::Vertex(int vertexIndex, int compIndex, float x, float y, float z) { + o_assert_dbg(this->inBuild); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); - VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x, y, z); + VertexWriter::Write(ptr, this->layout.ComponentAt(compIndex).Format, x, y, z); return *this; } //------------------------------------------------------------------------------ inline MeshBuilder& -MeshBuilder::Vertex(uint32_t vertexIndex, int compIndex, float x, float y, float z, float w) { - o_assert_dbg(this->inBegin); +MeshBuilder::Vertex(int vertexIndex, int compIndex, float x, float y, float z, float w) { + o_assert_dbg(this->inBuild); uint8_t* ptr = this->vertexPointer + this->vertexByteOffset(vertexIndex, compIndex); - VertexWriter::Write(ptr, this->Layout.ComponentAt(compIndex).Format, x, y, z, w); + VertexWriter::Write(ptr, this->layout.ComponentAt(compIndex).Format, x, y, z, w); return *this; } diff --git a/code/Modules/Assets/Gfx/MeshLoader.cc b/code/Modules/Assets/Gfx/MeshLoader.cc deleted file mode 100644 index 191c5076d..000000000 --- a/code/Modules/Assets/Gfx/MeshLoader.cc +++ /dev/null @@ -1,91 +0,0 @@ -//------------------------------------------------------------------------------ -// MeshLoader.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "MeshLoader.h" -#include "Assets/Gfx/OmshParser.h" -#include "Gfx/Gfx.h" -#include "Gfx/private/gfxResourceContainer.h" -#include "IO/IO.h" - -namespace Oryol { - -//------------------------------------------------------------------------------ -MeshLoader::MeshLoader(const MeshSetup& setup_) : -MeshLoaderBase(setup_) { - // empty -} - -//------------------------------------------------------------------------------ -MeshLoader::MeshLoader(const MeshSetup& setup_, LoadedFunc loadedFunc_) : -MeshLoaderBase(setup_, loadedFunc_) { - // empty -} - -//------------------------------------------------------------------------------ -MeshLoader::~MeshLoader() { - o_assert_dbg(!this->ioRequest); -} - -//------------------------------------------------------------------------------ -void -MeshLoader::Cancel() { - if (this->ioRequest) { - this->ioRequest->Cancelled = true; - this->ioRequest = nullptr; - } -} - -//------------------------------------------------------------------------------ -Id -MeshLoader::Start() { - this->resId = Gfx::resource()->prepareAsync(this->setup); - this->ioRequest = IO::LoadFile(setup.Locator.Location()); - return this->resId; -} - -//------------------------------------------------------------------------------ -ResourceState::Code -MeshLoader::Continue() { - o_assert_dbg(this->resId.IsValid()); - o_assert_dbg(this->ioRequest.isValid()); - - ResourceState::Code result = ResourceState::Pending; - - if (this->ioRequest->Handled) { - if (IOStatus::OK == this->ioRequest->Status) { - // async loading has finished, use OmshParser to - // create a MeshSetup object from the loaded data - const void* data = this->ioRequest->Data.Data(); - const int numBytes = this->ioRequest->Data.Size(); - - MeshSetup meshSetup = MeshSetup::FromData(this->setup); - if (OmshParser::Parse(data, numBytes, meshSetup)) { - - // call the Loaded callback if defined, this - // gives the app a chance to look at the - // setup object, and possibly modify it - if (this->onLoaded) { - this->onLoaded(meshSetup); - } - - // NOTE: the prepared resource might have already been - // destroyed at this point, if this happens, initAsync will - // silently fail and return ResourceState::InvalidState - // (the same for failedAsync) - result = Gfx::resource()->initAsync(this->resId, meshSetup, data, numBytes); - } - else { - result = Gfx::resource()->failedAsync(this->resId); - } - } - else { - // IO had failed - result = Gfx::resource()->failedAsync(this->resId); - } - this->ioRequest = nullptr; - } - return result; -} - -} // namespace Oryol diff --git a/code/Modules/Assets/Gfx/MeshLoader.h b/code/Modules/Assets/Gfx/MeshLoader.h deleted file mode 100644 index 5cb3b6253..000000000 --- a/code/Modules/Assets/Gfx/MeshLoader.h +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::MeshLoader - @ingroup Assets - @brief standard mesh loader for loading .omsh files - - NOTE: .omsh files are created by the oryol-exporter tool - in the project https://github.com/floooh/oryol-tools -*/ -#include "Gfx/MeshLoaderBase.h" -#include "IO/private/ioRequests.h" - -namespace Oryol { - -class MeshLoader : public MeshLoaderBase { - OryolClassDecl(MeshLoader); -public: - /// constructor without success-callback - MeshLoader(const MeshSetup& setup); - /// constructor with success callback - MeshLoader(const MeshSetup& setup, LoadedFunc onLoaded); - /// destructor - ~MeshLoader(); - /// start loading, return a resource id - virtual Id Start() override; - /// continue loading, return resource state (Pending, Valid, Failed) - virtual ResourceState::Code Continue() override; - /// cancel the load process - virtual void Cancel() override; -private: - Id resId; - Ptr ioRequest; -}; - -} // namespace Oryol diff --git a/code/Modules/Assets/Gfx/OmshParser.cc b/code/Modules/Assets/Gfx/OmshParser.cc deleted file mode 100644 index 836bccc42..000000000 --- a/code/Modules/Assets/Gfx/OmshParser.cc +++ /dev/null @@ -1,127 +0,0 @@ -//------------------------------------------------------------------------------ -// OmshParser.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "OmshParser.h" - -namespace Oryol { - -//------------------------------------------------------------------------------ -PrimitiveType::Code -OmshParser::translatePrimType(uint32_t omshPrimType) { - switch (omshPrimType) { - case 0: return PrimitiveType::Points; - case 1: return PrimitiveType::Lines; - case 3: return PrimitiveType::LineStrip; - case 4: return PrimitiveType::Triangles; - case 5: return PrimitiveType::TriangleStrip; - default: return PrimitiveType::InvalidPrimitiveType; - } -} - -//------------------------------------------------------------------------------ -bool -OmshParser::Parse(const void* ptr, uint32_t size, MeshSetup& outSetup) { - o_assert_dbg(ptr); - o_assert_dbg(size > 4); - o_assert_dbg(outSetup.NumPrimitiveGroups() == 0); - o_assert_dbg(outSetup.Layout.Empty()); - - // size must be multiple of 4 - if ((size & 3) != 0) { - return false; - } - - const uint32_t* u32StartPtr = (const uint32_t*) ptr; - const uint32_t* u32Ptr = u32StartPtr; - const uint32_t u32Size = size >> 2; - const uint32_t* u32EndPtr = u32StartPtr + u32Size; - - // check if enough data for header - uint32_t u32CheckSize = 7; - if (u32CheckSize > u32Size) { - return false; - } - - // start parsing static header - const uint32_t magic = *u32Ptr++; - if (magic != 'OMSH') { - return false; - } - outSetup.NumVertices = *u32Ptr++; - const uint32_t vertexSize = *u32Ptr++; - outSetup.NumIndices = *u32Ptr++; - const uint32_t indexSize = *u32Ptr++; - if (2 == indexSize) { - outSetup.IndicesType = IndexType::Index16; - } - else if (4 == indexSize) { - outSetup.IndicesType = IndexType::Index32; - } - else { - return false; - } - const uint32_t numVertexAttrs = *u32Ptr++; - if (numVertexAttrs > VertexAttr::NumVertexAttrs) { - return false; - } - const uint32_t numPrimGroups = *u32Ptr++; - if (numPrimGroups > GfxConfig::MaxNumPrimGroups) { - return false; - } - - // check if enough data for vertex components - u32CheckSize += numVertexAttrs * 2; - if (u32CheckSize > u32Size) { - return false; - } - for (uint32_t i = 0; i < numVertexAttrs; i++) { - VertexLayout::Component comp; - comp.Attr = (VertexAttr::Code) *u32Ptr++; - comp.Format = (VertexFormat::Code) *u32Ptr++; - outSetup.Layout.Add(comp); - } - - // check if enough data for primitive groups - u32CheckSize += numPrimGroups * 3; - if (u32CheckSize > u32Size) { - return false; - } - for(uint32_t i = 0; i < numPrimGroups; i++) { - PrimitiveGroup primGroup; - // skip primitive type - u32Ptr++; - primGroup.BaseElement = *u32Ptr++; - primGroup.NumElements = *u32Ptr++; - outSetup.AddPrimitiveGroup(primGroup); - } - - // check if enough data for vertices - const uint32_t u32VertexDataSize = (outSetup.NumVertices * vertexSize) >> 2; - u32CheckSize += u32VertexDataSize; - if (u32CheckSize > u32Size) { - return false; - } - outSetup.VertexDataOffset = int(u32Ptr - u32StartPtr) << 2; - u32Ptr += u32VertexDataSize; - - // check if enough data for indices (index block is padded - // so that size is multiple of 4) - uint32_t indexDataSize = outSetup.NumIndices * indexSize; - if ((indexDataSize & 3) != 0) { - indexDataSize += 2; - o_assert_dbg((indexDataSize & 3) == 0); - } - const uint32_t u32IndexDataSize = indexDataSize >> 2; - u32CheckSize += u32IndexDataSize; - if (u32CheckSize > u32Size) { - return false; - } - outSetup.IndexDataOffset = int(u32Ptr - u32StartPtr) << 2; - u32Ptr += u32IndexDataSize; - - // cleanly reached the end? - return (u32EndPtr == u32Ptr); -} - -} // namespace Oryol diff --git a/code/Modules/Assets/Gfx/OmshParser.h b/code/Modules/Assets/Gfx/OmshParser.h deleted file mode 100644 index 92635d627..000000000 --- a/code/Modules/Assets/Gfx/OmshParser.h +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::OmshParser - @ingroup Assets - @brief in-memory OMSH mesh file-format parser - - Takes a piece of memory with OMSH data in it, and returns - a MeshSetup object. OMSH mesh data is created by the - oryol-export tool ( https://github.com/floooh/oryol-tools ) - - OMSH file format (see oryol-tools project): - - struct { - uint32 magic = 'OMSH'; - uint32 numVertices; - uint32 vertexSize; // size of one vertex in bytes (guaranteed multiple of 4) - uint32 numIndices; - uint32 indexSize; // size of one index, must be 2 or 4 - uint32 numVertexAttrs; - uint32 numPrimitiveGroups; - struct { - uint32 attr; // values of VertexAttr::Code - uint32 format; // values of VertexFormat::Code - } vertexAttrs[numVertexAttr]; - struct { - uint32 primitiveType; // values of OmshPrimitiveType (see below) - uint32 baseElement; - uint32 numElements; - } primitiveGroups[numPrimitiveGroups]; - uint8 vertexData[numVertices * vertexSize]; - uint8 indexData[numIndices * indexSize]; - - optional: 2 zero-bytes of padding if odd number of 16-bit-indices - }; - - enum OmshPrimitiveType { - Points = 0, - Lines = 1, - LineLoop = 2, - LineStrip = 3, - Triangles = 4, - TriangleStrip = 5, - TriangleFan = 6, - } -*/ -#include "Gfx/GfxTypes.h" - -namespace Oryol { - -class OmshParser { -public: - /// parse block of memory into MeshSetup object - static bool Parse(const void* ptr, uint32_t size, MeshSetup& outSetup); -private: - /// translate OMSH primtype to actual primtype - static PrimitiveType::Code translatePrimType(uint32_t omshPrimType); -}; - -} // namespace Oryol diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.cc b/code/Modules/Assets/Gfx/ShapeBuilder.cc index 849177331..207f534c9 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.cc +++ b/code/Modules/Assets/Gfx/ShapeBuilder.cc @@ -21,8 +21,8 @@ ShapeBuilder::RandomColors(bool b) { ShapeBuilder& ShapeBuilder::Positions(const StringAtom& name, VertexFormat::Code fmt) { o_assert_dbg(this->posIndex == InvalidIndex); - this->posIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); + this->posIndex = this->layout.NumComponents(); + this->layout.Add(name, fmt); return *this; } @@ -44,8 +44,8 @@ ShapeBuilder::VertexColor(const glm::vec4& c) { ShapeBuilder& ShapeBuilder::Normals(const StringAtom& name, VertexFormat::Code fmt) { o_assert_dbg(this->normalIndex == InvalidIndex); - this->normalIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); + this->normalIndex = this->layout.NumComponents(); + this->layout.Add(name, fmt); return *this; } @@ -53,8 +53,8 @@ ShapeBuilder::Normals(const StringAtom& name, VertexFormat::Code fmt) { ShapeBuilder& ShapeBuilder::TexCoords(const StringAtom& name, VertexFormat::Code fmt) { o_assert_dbg(this->texCoordIndex == InvalidIndex); - this->texCoordIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); + this->texCoordIndex = this->layout.NumComponents(); + this->layout.Add(name, fmt); return *this; } @@ -62,8 +62,8 @@ ShapeBuilder::TexCoords(const StringAtom& name, VertexFormat::Code fmt) { ShapeBuilder& ShapeBuilder::Colors(const Oryol::StringAtom &name, VertexFormat::Code fmt) { o_assert_dbg(this->colorIndex == InvalidIndex); - this->colorIndex = this->meshBuilder.Layout.NumComponents(); - this->meshBuilder.Layout.Add(name, fmt); + this->colorIndex = this->layout.NumComponents(); + this->layout.Add(name, fmt); return *this; } @@ -91,7 +91,7 @@ ShapeBuilder::Box(float w, float h, float d, int tiles, bool buildPrimGroup) { shape.f2 = d; shape.i0 = tiles; shape.color = this->color; - this->UpdateNumElements(shape); + this->updateNumElements(shape); this->shapes.Add(shape); this->curPrimGroupNumElements += shape.numTris * 3; if (buildPrimGroup) { @@ -112,7 +112,7 @@ ShapeBuilder::Sphere(float radius, int slices, int stacks, bool buildPrimGroup) shape.i0 = slices; shape.i1 = stacks; shape.color = this->color; - this->UpdateNumElements(shape); + this->updateNumElements(shape); this->shapes.Add(shape); this->curPrimGroupNumElements += shape.numTris * 3; if (buildPrimGroup) { @@ -134,7 +134,7 @@ ShapeBuilder::Cylinder(float radius, float length, int slices, int stacks, bool shape.i0 = slices; shape.i1 = stacks; shape.color = this->color; - this->UpdateNumElements(shape); + this->updateNumElements(shape); this->shapes.Add(shape); this->curPrimGroupNumElements += shape.numTris * 3; if (buildPrimGroup) { @@ -156,7 +156,7 @@ ShapeBuilder::Torus(float ringRadius, float radius, int sides, int rings, bool b shape.i0 = sides; shape.i1 = rings; shape.color = this->color; - this->UpdateNumElements(shape); + this->updateNumElements(shape); this->shapes.Add(shape); this->curPrimGroupNumElements += shape.numTris * 3; if (buildPrimGroup) { @@ -177,7 +177,7 @@ ShapeBuilder::Plane(float w, float d, int tiles, bool buildPrimGroup) { shape.f1 = d; shape.i0 = tiles; shape.color = this->color; - this->UpdateNumElements(shape); + this->updateNumElements(shape); this->shapes.Add(shape); this->curPrimGroupNumElements += shape.numTris * 3; if (buildPrimGroup) { @@ -188,7 +188,7 @@ ShapeBuilder::Plane(float w, float d, int tiles, bool buildPrimGroup) { //------------------------------------------------------------------------------ void -ShapeBuilder::UpdateNumElements(ShapeData& shape) { +ShapeBuilder::updateNumElements(ShapeData& shape) { switch (shape.type) { case BoxShape: { @@ -256,43 +256,33 @@ ShapeBuilder::Build() { } // configure the mesh builder - this->meshBuilder.NumVertices = numVerticesAll; - this->meshBuilder.IndexType = IndexType::UInt16; - this->meshBuilder.NumIndices = numIndicesAll; - this->meshBuilder.Begin(); - int curVertexIndex = 0; - int curTriIndex = 0; - for (const ShapeData& shape : this->shapes) { - switch (shape.type) { - case BoxShape: - this->BuildBox(shape, curVertexIndex, curTriIndex); - break; - case SphereShape: - this->BuildSphere(shape, curVertexIndex, curTriIndex); - break; - case CylinderShape: - this->BuildCylinder(shape, curVertexIndex, curTriIndex); - break; - case TorusShape: - this->BuildTorus(shape, curVertexIndex, curTriIndex); - break; - case PlaneShape: - this->BuildPlane(shape, curVertexIndex, curTriIndex); - break; - default: - o_assert(false); - break; - } - curVertexIndex += shape.numVertices; - curTriIndex += shape.numTris; - } - MeshBuilder::Result meshResult = this->meshBuilder.Build(); + auto mesh = MeshBuilder() + .Layout(this->layout) + .NumVertices(numVerticesAll) + .IndexType(IndexType::UInt16) + .NumIndices(numIndicesAll) + .Build([this](MeshBuilder& mb) { + int curVertexIndex = 0; + int curTriIndex = 0; + for (const ShapeData& shape : this->shapes) { + switch (shape.type) { + case BoxShape: this->buildBox(mb, shape, curVertexIndex, curTriIndex); break; + case SphereShape: this->buildSphere(mb, shape, curVertexIndex, curTriIndex); break; + case CylinderShape: this->buildCylinder(mb, shape, curVertexIndex, curTriIndex); break; + case TorusShape: this->buildTorus(mb, shape, curVertexIndex, curTriIndex); break; + case PlaneShape: this->buildPlane(mb, shape, curVertexIndex, curTriIndex); break; + default: o_assert(false); break; + } + curVertexIndex += shape.numVertices; + curTriIndex += shape.numTris; + } + }); ShapeBuilder::Result shapeResult; - shapeResult.VertexBufferDesc = std::move(meshResult.VertexBufferDesc); - shapeResult.IndexBufferDesc = std::move(meshResult.IndexBufferDesc); - shapeResult.PipelineDesc.layouts[0] = std::move(meshResult.Layout); - shapeResult.PipelineDesc.indexType = meshResult.IndexType; - shapeResult.Data = std::move(meshResult.Data); + shapeResult.VertexBufferDesc = std::move(mesh.VertexBufferDesc); + shapeResult.IndexBufferDesc = std::move(mesh.IndexBufferDesc); + shapeResult.PipelineDesc.layouts[0] = std::move(mesh.Layout); + shapeResult.PipelineDesc.indexType = mesh.IndexType; + shapeResult.Data = std::move(mesh.Data); shapeResult.PrimitiveGroups = std::move(this->primGroups); // clear private data (but not config params) @@ -306,21 +296,20 @@ ShapeBuilder::Build() { this->color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); this->shapes.Clear(); this->primGroups.Clear(); - this->meshBuilder.Layout.Clear(); return shapeResult; } //------------------------------------------------------------------------------ void -ShapeBuilder::BuildVertexColors(const ShapeData& shape, int startVertexIndex) { +ShapeBuilder::buildVertexColors(MeshBuilder& mb, const ShapeData& shape, int startVertexIndex) { o_assert(InvalidIndex != this->colorIndex); if (this->randomColors) { const glm::vec3 minRand(0.0f, 0.0f, 0.0f); const glm::vec3 maxRand(1.0f, 1.0f, 1.0f); for (int i = 0; i < shape.numVertices; i++) { glm::vec3 rnd = glm::linearRand(minRand, maxRand); - this->meshBuilder.Vertex(startVertexIndex + i, this->colorIndex, rnd.x, rnd.y, rnd.z, 1.0f); + mb.Vertex(startVertexIndex + i, this->colorIndex, rnd.x, rnd.y, rnd.z, 1.0f); } } else { @@ -329,14 +318,14 @@ ShapeBuilder::BuildVertexColors(const ShapeData& shape, int startVertexIndex) { const float b = shape.color.z; const float a = shape.color.w; for (int i = 0; i < shape.numVertices; i++) { - this->meshBuilder.Vertex(startVertexIndex + i, this->colorIndex, r, g, b, a); + mb.Vertex(startVertexIndex + i, this->colorIndex, r, g, b, a); } } } //------------------------------------------------------------------------------ void -ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriIndex) { +ShapeBuilder::buildBox(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex) { o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; @@ -379,12 +368,12 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd for (int iz = 0; iz <= numTiles; iz++) { pos.z = z0 + dz * iz; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iz * duv); + mb.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iz * duv); } curVertexIndex++; } @@ -408,12 +397,12 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd for (int iz = 0; iz <= numTiles; iz++) { pos.z = z0 + dz * iz; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, iy * duv, iz * duv); + mb.Vertex(curVertexIndex, this->texCoordIndex, iy * duv, iz * duv); } curVertexIndex++; } @@ -437,12 +426,12 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd for (int iy = 0; iy <= numTiles; iy++) { pos.y = y0 + dy * iy; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iy * duv); + mb.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iy * duv); } curVertexIndex++; } @@ -451,7 +440,7 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); if (InvalidIndex != this->colorIndex) { - this->BuildVertexColors(shape, startVertexIndex); + this->buildVertexColors(mb, shape, startVertexIndex); } // write indices @@ -467,8 +456,8 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd uint16_t i3 = i2 + 1; // the 2 tile triangles - this->meshBuilder.Triangle(curTriIndex++, i0, i1, i3); - this->meshBuilder.Triangle(curTriIndex++, i0, i3, i2); + mb.Triangle(curTriIndex++, i0, i1, i3); + mb.Triangle(curTriIndex++, i0, i3, i2); } } } @@ -494,7 +483,7 @@ ShapeBuilder::BuildBox(const ShapeData& shape, int curVertexIndex, int curTriInd + + + + + + south pole */ void -ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTriIndex) { +ShapeBuilder::buildSphere(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex) { o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; const int numSlices = shape.i0; @@ -519,13 +508,13 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri const glm::vec3 norm(sinSlice * sinStack, cosSlice * sinStack, cosStack); const glm::vec4 pos(norm * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormals) { const glm::vec4 tnorm = shape.transform * glm::vec4(norm, 0.0f); - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, tnorm.x, tnorm.y, tnorm.z); + mb.Vertex(curVertexIndex, this->normalIndex, tnorm.x, tnorm.y, tnorm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, du * slice, dv * stack); + mb.Vertex(curVertexIndex, this->texCoordIndex, du * slice, dv * stack); } curVertexIndex++; } @@ -533,7 +522,7 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); if (InvalidIndex != this->colorIndex) { - this->BuildVertexColors(shape, startVertexIndex); + this->buildVertexColors(mb, shape, startVertexIndex); } // north-pole triangles @@ -541,7 +530,7 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri int rowA = startVertexIndex; int rowB = rowA + numSlices + 1; for (int slice = 0; slice < numSlices; slice++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice, rowB + slice + 1); + mb.Triangle(curTriIndex++, rowA + slice, rowB + slice, rowB + slice + 1); } // stack triangles @@ -549,8 +538,8 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri rowA = startVertexIndex + stack * (numSlices + 1); rowB = rowA + numSlices + 1; for (int slice = 0; slice < numSlices; slice++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowA + slice + 1); - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice, rowB + slice + 1); + mb.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowA + slice + 1); + mb.Triangle(curTriIndex++, rowA + slice, rowB + slice, rowB + slice + 1); } } @@ -558,7 +547,7 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri rowA = startVertexIndex + (numStacks - 1) * (numSlices + 1); rowB = rowA + numSlices + 1; for (int slice = 0; slice < numSlices; slice++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowA + slice + 1); + mb.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowA + slice + 1); } o_assert_dbg((curTriIndex - startTriIndex) == shape.numTris); } @@ -585,7 +574,7 @@ ShapeBuilder::BuildSphere(const ShapeData& shape, int curVertexIndex, int curTri */ void -ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curTriIndex) { +ShapeBuilder::buildCylinder(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex) { o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; const int numSlices = shape.i0; @@ -602,9 +591,9 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT glm::vec4 cpos(0.0f, y, 0.0f, 1.0f); glm::vec4 tcpos = shape.transform * cpos; for (int slice = 0; slice <= numSlices; slice++) { - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tcpos.x, tcpos.y, tcpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tcpos.x, tcpos.y, tcpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -616,9 +605,9 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float cosSlice = glm::cos(sliceAngle); const glm::vec4 pos(sinSlice * radius, y, cosSlice * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -633,11 +622,11 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float cosSlice = glm::cos(sliceAngle); const glm::vec4 pos(sinSlice * radius, y, cosSlice * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { glm::vec4 norm(sinSlice, 0.0f, cosSlice, 0.0f); norm = shape.transform * norm; - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -652,9 +641,9 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT const float cosSlice = glm::cos(sliceAngle); const glm::vec4 pos(sinSlice * radius, y, cosSlice * radius, 1.0f); const glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -663,19 +652,19 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT cpos = glm::vec4(0.0f, y, 0.0f, 1.0f); tcpos = shape.transform * cpos; for (int slice = 0; slice <= numSlices; slice++) { - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tcpos.x, tcpos.y, tcpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tcpos.x, tcpos.y, tcpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); if (InvalidIndex != this->colorIndex) { - this->BuildVertexColors(shape, startVertexIndex); + this->buildVertexColors(mb, shape, startVertexIndex); } if (InvalidIndex != this->texCoordIndex) { - o_warn("FIXME: ShapeBuilder::BuildCylinder() texcoord not implemented yet!\n"); + o_warn("FIXME: ShapeBuilder::buildCylinder() texcoord not implemented yet!\n"); } // north cap triangles @@ -683,7 +672,7 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT int rowA = startVertexIndex; int rowB = rowA + numSlices + 1; for (int slice = 0; slice < numSlices; slice++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowB + slice); + mb.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowB + slice); } // shaft triangles @@ -691,8 +680,8 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT rowA = startVertexIndex + (stack + 2) * (numSlices + 1); rowB = rowA + numSlices + 1; for (int slice = 0; slice < numSlices; slice++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowA + slice + 1, rowB + slice + 1); - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowB + slice); + mb.Triangle(curTriIndex++, rowA + slice, rowA + slice + 1, rowB + slice + 1); + mb.Triangle(curTriIndex++, rowA + slice, rowB + slice + 1, rowB + slice); } } @@ -700,7 +689,7 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT rowA = startVertexIndex + (numStacks + 3) * (numSlices + 1); rowB = rowA + numSlices + 1; for (int slice = 0; slice < numSlices; slice++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + slice, rowA + slice + 1, rowB + slice + 1); + mb.Triangle(curTriIndex++, rowA + slice, rowA + slice + 1, rowB + slice + 1); } o_assert((curTriIndex - startTriIndex) == shape.numTris); } @@ -725,7 +714,7 @@ ShapeBuilder::BuildCylinder(const ShapeData& shape, int curVertexIndex, int curT */ void -ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriIndex) { +ShapeBuilder::buildTorus(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex) { o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; static const float ringRadius = shape.f0; @@ -753,7 +742,7 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI // surface position const glm::vec4 tpos = shape.transform * glm::vec4(spx, spy, spz, 1.0f); - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); // surface normal if (hasNormals) { @@ -763,7 +752,7 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI const float ipz = 0.0f; glm::vec4 norm = glm::normalize(glm::vec4(spx - ipx, spy - ipy, spz - ipz, 0.0f)); norm = shape.transform * norm; - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } curVertexIndex++; } @@ -771,10 +760,10 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); if (InvalidIndex != this->colorIndex) { - this->BuildVertexColors(shape, startVertexIndex); + this->buildVertexColors(mb, shape, startVertexIndex); } if (InvalidIndex != this->texCoordIndex) { - o_warn("FIXME: ShapeBuilder::BuildTorus() texcoord not implemented yet!\n"); + o_warn("FIXME: ShapeBuilder::buildTorus() texcoord not implemented yet!\n"); } // triangles @@ -783,8 +772,8 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI const int rowA = startVertexIndex + side * (numRings + 1); const int rowB = rowA + numRings + 1; for (int ring = 0; ring < numRings; ring++) { - this->meshBuilder.Triangle(curTriIndex++, rowA + ring, rowA + ring + 1, rowB + ring + 1); - this->meshBuilder.Triangle(curTriIndex++, rowA + ring, rowB + ring + 1, rowB + ring); + mb.Triangle(curTriIndex++, rowA + ring, rowA + ring + 1, rowB + ring + 1); + mb.Triangle(curTriIndex++, rowA + ring, rowB + ring + 1, rowB + ring); } } o_assert((curTriIndex - startTriIndex) == shape.numTris); @@ -809,7 +798,7 @@ ShapeBuilder::BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriI +--+--+--+--+ */ void -ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriIndex) { +ShapeBuilder::buildPlane(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex) { o_assert(InvalidIndex != this->posIndex); const int startVertexIndex = curVertexIndex; @@ -833,12 +822,12 @@ ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriI for (int iz = 0; iz <= numTiles; iz++) { pos.z = z0 + dz * iz; glm::vec4 tpos = shape.transform * pos; - this->meshBuilder.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); + mb.Vertex(curVertexIndex, this->posIndex, tpos.x, tpos.y, tpos.z); if (hasNormal) { - this->meshBuilder.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); + mb.Vertex(curVertexIndex, this->normalIndex, norm.x, norm.y, norm.z); } if (hasTexCoords) { - this->meshBuilder.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iz * duv); + mb.Vertex(curVertexIndex, this->texCoordIndex, ix * duv, iz * duv); } curVertexIndex++; } @@ -846,7 +835,7 @@ ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriI o_assert((curVertexIndex - startVertexIndex) == shape.numVertices); if (InvalidIndex != this->colorIndex) { - this->BuildVertexColors(shape, startVertexIndex); + this->buildVertexColors(mb, shape, startVertexIndex); } // write indices @@ -860,8 +849,8 @@ ShapeBuilder::BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriI uint16_t i3 = i2 + 1; // the 2 tile triangles - this->meshBuilder.Triangle(curTriIndex++, i0, i1, i3); - this->meshBuilder.Triangle(curTriIndex++, i0, i3, i2); + mb.Triangle(curTriIndex++, i0, i1, i3); + mb.Triangle(curTriIndex++, i0, i3, i2); } } o_assert((curTriIndex - startTriIndex) == shape.numTris); diff --git a/code/Modules/Assets/Gfx/ShapeBuilder.h b/code/Modules/Assets/Gfx/ShapeBuilder.h index 49a7e3ae1..b19112faf 100644 --- a/code/Modules/Assets/Gfx/ShapeBuilder.h +++ b/code/Modules/Assets/Gfx/ShapeBuilder.h @@ -5,10 +5,10 @@ @ingroup Assets @brief shape geometry helper class @todo describe ShapeBuilder -*/ +*/ #include "Assets/Gfx/MeshBuilder.h" -#include "Core/String/StringAtom.h" -#include "Core/Containers/Array.h" +#include "Core/String/StringAtom.h" +#include "Core/Containers/Array.h" #include "Core/Containers/InlineArray.h" #include "glm/mat4x4.hpp" #include "glm/vec4.hpp" @@ -17,22 +17,20 @@ namespace Oryol { class ShapeBuilder { public: - /// return a new ShapeBuilder object - static ShapeBuilder New(); - /// declare position vertex components - ShapeBuilder& Positions(const StringAtom& name, VertexFormat::Code fmt); - /// declare normal vertex components - ShapeBuilder& Normals(const StringAtom& name, VertexFormat::Code fmt); - /// declare texture coords vertex components - ShapeBuilder& TexCoords(const StringAtom& name, VertexFormat::Code fmt); - /// declare color + /// declare position vertex components + ShapeBuilder& Positions(const StringAtom& name, VertexFormat::Code fmt); + /// declare normal vertex components + ShapeBuilder& Normals(const StringAtom& name, VertexFormat::Code fmt); + /// declare texture coords vertex components + ShapeBuilder& TexCoords(const StringAtom& name, VertexFormat::Code fmt); + /// declare color ShapeBuilder& Colors(const StringAtom& name, VertexFormat::Code fmt); - /// enable random vertex colors - ShapeBuilder& RandomColors(bool b); - /// put new transform - ShapeBuilder& Transform(const glm::mat4& t); - /// put a new vertex color - ShapeBuilder& VertexColor(const glm::vec4& c); + /// enable random vertex colors + ShapeBuilder& RandomColors(bool b); + /// put new transform + ShapeBuilder& Transform(const glm::mat4& t); + /// put a new vertex color + ShapeBuilder& VertexColor(const glm::vec4& c); /// add a box shape ShapeBuilder& Box(float w, float h, float d, int tiles, bool buildPrimGroup=true); /// add a sphere shape @@ -43,16 +41,16 @@ class ShapeBuilder { ShapeBuilder& Torus(float ringRadius, float radius, int sides, int rings, bool builPrimGroup=true); /// add a plane ShapeBuilder& Plane(float w, float d, int tiles, bool buildPrimGroup=true); - - /// result struct - struct Result { - BufferDesc VertexBufferDesc; - BufferDesc IndexBufferDesc; - struct PipelineDesc PipelineDesc; - MemoryBuffer Data; - Array PrimitiveGroups; - }; - /// build geometry and clear object state + + /// result struct + struct Result { + BufferDesc VertexBufferDesc; + BufferDesc IndexBufferDesc; + struct PipelineDesc PipelineDesc; + MemoryBuffer Data; + Array PrimitiveGroups; + }; + /// build geometry and clear object state Result Build(); private: @@ -77,33 +75,27 @@ class ShapeBuilder { int numTris; }; - void UpdateNumElements(ShapeData& shapeData); - void BuildVertexColors(const ShapeData& shape, int startVertexIndex); - void BuildBox(const ShapeData& shape, int curVertexIndex, int curTriIndex); - void BuildSphere(const ShapeData& shape, int curVertexIndex, int curTriIndex); - void BuildCylinder(const ShapeData& shape, int curVertexIndex, int curTriIndex); - void BuildTorus(const ShapeData& shape, int curVertexIndex, int curTriIndex); - void BuildPlane(const ShapeData& shape, int curVertexIndex, int curTriIndex); + void updateNumElements(ShapeData& shapeData); + void buildVertexColors(MeshBuilder& mb, const ShapeData& shape, int startVertexIndex); + void buildBox(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex); + void buildSphere(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex); + void buildCylinder(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex); + void buildTorus(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex); + void buildPlane(MeshBuilder& mb, const ShapeData& shape, int curVertexIndex, int curTriIndex); void buildPrimitiveGroup(); - + bool randomColors = false; int curPrimGroupBaseElement = 0; - int curPrimGroupNumElements = 0; - int posIndex = InvalidIndex; - int normalIndex = InvalidIndex; - int texCoordIndex = InvalidIndex; + int curPrimGroupNumElements = 0; + int posIndex = InvalidIndex; + int normalIndex = InvalidIndex; + int texCoordIndex = InvalidIndex; int colorIndex = InvalidIndex; glm::mat4 transform; glm::vec4 color = glm::vec4(1.0f, 1.0f, 1.0f, 1.0f); - Array shapes; + Array shapes; Array primGroups; - MeshBuilder meshBuilder; -}; - -//------------------------------------------------------------------------------ -inline ShapeBuilder -ShapeBuilder::New() { - return ShapeBuilder(); -} + VertexLayout layout; +}; } // namespace Oryol diff --git a/code/Modules/Assets/UnitTests/MeshBuilderTest.cc b/code/Modules/Assets/UnitTests/MeshBuilderTest.cc deleted file mode 100644 index 932a8c5b5..000000000 --- a/code/Modules/Assets/UnitTests/MeshBuilderTest.cc +++ /dev/null @@ -1,86 +0,0 @@ -//------------------------------------------------------------------------------ -// MeshBuilderTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Assets/Gfx/MeshBuilder.h" -#include - -using namespace Oryol; - -//------------------------------------------------------------------------------ -TEST(MeshBuilderTest) { - - // build a quad with 4 vertices and 2 triangles - MeshBuilder mb; - mb.NumVertices = 4; - mb.NumIndices = 6; - mb.IndicesType = IndexType::Index16; - mb.Layout - .Add(VertexAttr::Position, VertexFormat::Float3) - .Add(VertexAttr::TexCoord0, VertexFormat::Float2); - mb.PrimitiveGroups.Add(0, 6); - mb.Begin() - // positions - .Vertex(0, VertexAttr::Position, 0.0f, 0.0f, 0.0f) // top-left - .Vertex(1, VertexAttr::Position, 1.0f, 0.0f, 0.0f) // top-right - .Vertex(2, VertexAttr::Position, 1.0f, 1.0f, 0.0f) // bottom-right - .Vertex(3, VertexAttr::Position, 0.0f, 1.0f, 0.0f) // bottom-left - - // uvs - .Vertex(0, VertexAttr::TexCoord0, 0.0f, 0.0f) - .Vertex(1, VertexAttr::TexCoord0, 1.0f, 0.0f) - .Vertex(2, VertexAttr::TexCoord0, 1.0f, 1.0f) - .Vertex(3, VertexAttr::TexCoord0, 0.0f, 1.0f) - - // indices - .Triangle(0, 0, 1, 2) - .Triangle(1, 0, 2, 3); - auto buildResult = mb.Build(); - - // get the resulting stream object - const MeshSetup& meshSetup = buildResult.Setup; - CHECK(meshSetup.ShouldSetupFromData()); - - // check MeshSetup - CHECK(meshSetup.NumVertices == 4); - CHECK(meshSetup.NumIndices == 6); - CHECK(meshSetup.IndicesType == IndexType::Index16); - CHECK(meshSetup.VertexUsage == Usage::Immutable); - CHECK(meshSetup.IndexUsage == Usage::Immutable); - CHECK(meshSetup.Layout.NumComponents() == 2); - CHECK(meshSetup.Layout.ComponentAt(0).Attr == VertexAttr::Position); - CHECK(meshSetup.Layout.ComponentAt(0).Format == VertexFormat::Float3); - CHECK(meshSetup.Layout.ComponentAt(1).Attr == VertexAttr::TexCoord0); - CHECK(meshSetup.Layout.ComponentAt(1).Format == VertexFormat::Float2); - CHECK(meshSetup.NumPrimitiveGroups() == 1); - CHECK(meshSetup.PrimitiveGroup(0).BaseElement == 0); - CHECK(meshSetup.PrimitiveGroup(0).NumElements == 6); - - // see MeshBuilder header for those sizes - const uint32_t vbufSize = 4 * 5 * sizeof(float); - const uint32_t ibufSize = 6 * sizeof(uint16_t); - const uint32_t allDataSize = vbufSize + ibufSize; - CHECK(buildResult.Data.Size() == allDataSize); - - // check the generated data - const uint8_t* ptr = buildResult.Data.Data(); - o_assert(nullptr != ptr); - CHECK(ptr != nullptr); - - // check vertices - const float* vPtr = (const float*) ptr; - CHECK(vPtr[0] == 0.0f); CHECK(vPtr[1] == 0.0f); CHECK(vPtr[2] == 0.0f); - CHECK(vPtr[3] == 0.0f); CHECK(vPtr[4] == 0.0f); - CHECK(vPtr[5] == 1.0f); CHECK(vPtr[6] == 0.0f); CHECK(vPtr[7] == 0.0f); - CHECK(vPtr[8] == 1.0f); CHECK(vPtr[9] == 0.0f); - CHECK(vPtr[10] == 1.0f); CHECK(vPtr[11] == 1.0f); CHECK(vPtr[12] == 0.0f); - CHECK(vPtr[13] == 1.0f); CHECK(vPtr[14] == 1.0f); - CHECK(vPtr[15] == 0.0f); CHECK(vPtr[16] == 1.0f); CHECK(vPtr[17] == 0.0f); - CHECK(vPtr[18] == 0.0f); CHECK(vPtr[19] == 1.0f); - - // check indices - const uint16_t* iPtr = (const uint16_t*) &(vPtr[20]); - CHECK(iPtr[0] == 0); CHECK(iPtr[1] == 1); CHECK(iPtr[2] == 2); - CHECK(iPtr[3] == 0); CHECK(iPtr[4] == 2); CHECK(iPtr[5] == 3); -} diff --git a/code/Modules/Assets/UnitTests/ShapeBuilderTest.cc b/code/Modules/Assets/UnitTests/ShapeBuilderTest.cc deleted file mode 100644 index 1dc107335..000000000 --- a/code/Modules/Assets/UnitTests/ShapeBuilderTest.cc +++ /dev/null @@ -1,84 +0,0 @@ -//------------------------------------------------------------------------------ -// ShapeBuilderTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Assets/Gfx/ShapeBuilder.h" -#include "Gfx/Gfx.h" -#include "Gfx/private/displayMgr.h" -#include "Gfx/private/renderer.h" -#include "Gfx/private/resourcePools.h" -#include "Gfx/private/gfxFactory.h" -#include - -#if ORYOL_OPENGL -#include "Gfx/private/gl/gl_impl.h" -#endif - -using namespace Oryol; -using namespace _priv; - -//------------------------------------------------------------------------------ -TEST(ShapeBuilderTest) { - #if !ORYOL_UNITTESTS_HEADLESS - - // setup a GL context - auto gfxSetup = GfxSetup::Window(400, 300, "Oryol Test"); - - displayMgr displayManager; - meshPool meshPool; - texturePool texPool; - class renderer renderer; - - gfxPointers ptrs; - ptrs.displayMgr = &displayManager; - ptrs.renderer = &renderer; - ptrs.meshPool = &meshPool; - ptrs.texturePool = &texPool; - displayManager.SetupDisplay(gfxSetup, ptrs); - - // setup a meshFactory object - renderer.setup(gfxSetup, ptrs); - gfxFactory factory; - factory.setup(ptrs); - - // the state builder - ShapeBuilder shapeBuilder; - - // build a simple cube - shapeBuilder.Layout.Add(VertexAttr::Position, VertexFormat::Float3); - shapeBuilder.Box(1.0f, 1.0f, 1.0f, 1); - auto buildResult = shapeBuilder.Build(); - - const void* data = buildResult.Data.Data(); - const int size = buildResult.Data.Size(); - - // ...create a mesh from it and verify the mesh - mesh simpleCube; - simpleCube.Setup = buildResult.Setup; - factory.initMesh(simpleCube, data, size); - CHECK(simpleCube.vertexBufferAttrs.NumVertices == 24); - CHECK(simpleCube.vertexBufferAttrs.Layout.NumComponents() == 1); - CHECK(simpleCube.vertexBufferAttrs.Layout.ByteSize() == 12); - CHECK(simpleCube.vertexBufferAttrs.Layout.ComponentAt(0).IsValid()); - CHECK(simpleCube.vertexBufferAttrs.Layout.ComponentAt(0).Attr == VertexAttr::Position); - CHECK(simpleCube.vertexBufferAttrs.Layout.ComponentAt(0).Format == VertexFormat::Float3); - CHECK(simpleCube.vertexBufferAttrs.Layout.ComponentAt(0).ByteSize() == 12); - CHECK(simpleCube.indexBufferAttrs.NumIndices == 36); - CHECK(simpleCube.indexBufferAttrs.Type == IndexType::Index16); - CHECK(simpleCube.indexBufferAttrs.BufferUsage == Usage::Immutable); - CHECK(simpleCube.numPrimGroups == 1); - CHECK(simpleCube.primGroups[0].BaseElement == 0); - CHECK(simpleCube.primGroups[0].NumElements == 36); - #if ORYOL_OPENGL - CHECK(simpleCube.buffers[mesh::vb].glBuffers[0] != 0); - CHECK(simpleCube.buffers[mesh::ib].glBuffers[0] != 0); - #endif - - factory.destroyMesh(simpleCube); - factory.discard(); - renderer.discard(); - displayManager.DiscardDisplay(); - - #endif -} diff --git a/code/Modules/Assets/UnitTests/VertexWriterTest.cc b/code/Modules/Assets/UnitTests/VertexWriterTest.cc deleted file mode 100644 index d47168208..000000000 --- a/code/Modules/Assets/UnitTests/VertexWriterTest.cc +++ /dev/null @@ -1,131 +0,0 @@ -//------------------------------------------------------------------------------ -// VertexWriterTest.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "UnitTest++/src/UnitTest++.h" -#include "Assets/Gfx/VertexWriter.h" -#include "Core/Memory/Memory.h" - -using namespace Oryol; - -//------------------------------------------------------------------------------ -TEST(VertexWriterTest) { - - uint8_t scratchSpace[1024]; - - // test non-packed functions - Memory::Clear(scratchSpace, sizeof(scratchSpace)); - uint8_t* ptr = scratchSpace; - ptr = VertexWriter::Write(ptr, VertexFormat::Float, 1.0f); - ptr = VertexWriter::Write(ptr, VertexFormat::Float2, 2.0f, 3.0f); - ptr = VertexWriter::Write(ptr, VertexFormat::Float3, 4.0f, 5.0f, 6.0f); - ptr = VertexWriter::Write(ptr, VertexFormat::Float4, 7.0f, 8.0f, 9.0f, 10.0f); - CHECK(ptr == (scratchSpace + 40)); - const float* fp = (const float*) scratchSpace; - CHECK(fp[0] == 1.0f); - CHECK(fp[1] == 2.0f); - CHECK(fp[2] == 3.0f); - CHECK(fp[3] == 4.0f); - CHECK(fp[4] == 5.0f); - CHECK(fp[5] == 6.0f); - CHECK(fp[6] == 7.0f); - CHECK(fp[7] == 8.0f); - CHECK(fp[8] == 9.0f); - CHECK(fp[9] == 10.0f); - - // test packed-stuff - Memory::Clear(scratchSpace, sizeof(scratchSpace)); - ptr = scratchSpace; - - // test UByte4 packing - const uint8_t* u8p = ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::UByte4, 0.0f, 128.5f, -1.0f, 255.5f); - CHECK(u8p[0] == 0); - CHECK(u8p[1] == 128); - CHECK(u8p[2] == 0); - CHECK(u8p[3] == 255); - u8p = ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::UByte4, 64.0f, -64.0f, 2000.0f, -2000.0f); - CHECK(u8p[0] == 64); - CHECK(u8p[1] == 0); - CHECK(u8p[2] == 255); - CHECK(u8p[3] == 0); - - // test UByte4N packing - u8p = ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::UByte4N, -1.0f, +1.0f, 0.5f, -32123.0f); - CHECK(u8p[0] == 0); - CHECK(u8p[1] == 255); - CHECK(u8p[2] == 128); - CHECK(u8p[3] == 0); - - // test Byte4N packing - const int8_t* i8p = (int8_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Byte4, -64.0f, 0.0f, +64.0f, 127.5f); - CHECK(i8p[0] == -64); - CHECK(i8p[1] == 0); - CHECK(i8p[2] == 64); - CHECK(i8p[3] == 127); - i8p = (int8_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Byte4, -200.0f, +200.0f, -1.0f, +1.0f); - CHECK(i8p[0] == -128); - CHECK(i8p[1] == 127); - CHECK(i8p[2] == -1); - CHECK(i8p[3] == 1); - - // test Byte4N packing - i8p = (int8_t*) ptr; - VertexWriter::Write(ptr, VertexFormat::Byte4N, -1.0f, +1.0f, -0.5f, +0.5f); - CHECK(i8p[0] == -127); - CHECK(i8p[1] == 127); - CHECK(i8p[2] == -64); - CHECK(i8p[3] == 64); - - // test Short4 packing - Memory::Clear(scratchSpace, sizeof(scratchSpace)); - ptr = scratchSpace; - const int16_t* i16p = (const int16_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Short4, -40000.0f, +40000.0f, -2000.0f, +2000.0f); - CHECK(i16p[0] == -32768); - CHECK(i16p[1] == 32767); - CHECK(i16p[2] == -2000); - CHECK(i16p[3] == 2000); - - // test Short4N packing - i16p = (const int16_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Short4N, -2.0f, +2.0f, -1.0f, +1.0f); - CHECK(i16p[0] == -32767); - CHECK(i16p[1] == 32767); - CHECK(i16p[2] == -32767); - CHECK(i16p[3] == 32767); - i16p = (const int16_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Short4N, -0.5f, +0.5f, 0.0f, 0.0f); - CHECK(i16p[0] == -16384); - CHECK(i16p[1] == 16384); - CHECK(i16p[2] == 0); - CHECK(i16p[3] == 0); - - // test Short2 packing - i16p = (const int16_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Short2, -40000.0f, +40000.0f); - ptr = VertexWriter::Write(ptr, VertexFormat::Short2, -2000.0f, +2000.0f); - CHECK(i16p[0] == -32768); - CHECK(i16p[1] == 32767); - CHECK(i16p[2] == -2000); - CHECK(i16p[3] == 2000); - - // test Short2N packing - i16p = (const int16_t*) ptr; - ptr = VertexWriter::Write(ptr, VertexFormat::Short2N, -2.0f, +2.0f); - ptr = VertexWriter::Write(ptr, VertexFormat::Short2N, -1.0f, +1.0f); - ptr = VertexWriter::Write(ptr, VertexFormat::Short2N, -0.5f, +0.5f); - VertexWriter::Write(ptr, VertexFormat::Short2N, 0.0f, 0.0f); - CHECK(i16p[0] == -32767); - CHECK(i16p[1] == 32767); - CHECK(i16p[2] == -32767); - CHECK(i16p[3] == 32767); - CHECK(i16p[4] == -16384); - CHECK(i16p[5] == 16384); - CHECK(i16p[6] == 0); - CHECK(i16p[7] == 0); -} \ No newline at end of file diff --git a/code/Modules/Core/Containers/MemoryBuffer.h b/code/Modules/Core/Containers/MemoryBuffer.h index fc60d4359..0531c8708 100644 --- a/code/Modules/Core/Containers/MemoryBuffer.h +++ b/code/Modules/Core/Containers/MemoryBuffer.h @@ -37,6 +37,8 @@ class MemoryBuffer { /// get number of free bytes at back int Spare() const; + /// take ownership of a memory chunk allocated with Memory::Alloc + void MoveRaw(const void* ptr, int numBytes); /// make room for N more bytes void Reserve(int numBytes); /// add bytes to buffer @@ -82,6 +84,16 @@ MemoryBuffer::~MemoryBuffer() { this->destroy(); } +//------------------------------------------------------------------------------ +inline void +MemoryBuffer::MoveRaw(const void* ptr, int numBytes) { + o_assert(ptr && (numBytes > 0)); + this->destroy(); + this->data = (uint8_t*) ptr; + this->capacity = numBytes; + this->size = numBytes; +} + //------------------------------------------------------------------------------ inline void MemoryBuffer::alloc(int newCapacity) { diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index c00ce88b8..fb56b95f5 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -75,7 +75,7 @@ ArrayTextureApp::OnInit() { .MipContent(0, 0, data)); // build a cube mesh - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .TexCoords("in_uv", VertexFormat::Float2) .Box(1.0f, 1.0f, 1.0f, 1) diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index 14d5718fd..d7c01c08e 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -60,7 +60,7 @@ DDSCubeMapApp::OnInit() { .WrapU(TextureWrapMode::ClampToEdge) .WrapV(TextureWrapMode::ClampToEdge)); - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Float3) .Transform(glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index 879e2e0e7..f1cc9cd0f 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -75,7 +75,7 @@ DDSTextureLoadingApp::OnInit() { .WrapV(TextureWrapMode::ClampToEdge)); } - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .TexCoords("in_uv", VertexFormat::Float2) .Transform(glm::rotate(glm::mat4(), glm::radians(-90.0f), glm::vec3(1.0f, 0.0f, 0.0f))) diff --git a/code/Samples/DrawCallPerf/DrawCallPerf.cc b/code/Samples/DrawCallPerf/DrawCallPerf.cc index 347b39466..fc6306580 100644 --- a/code/Samples/DrawCallPerf/DrawCallPerf.cc +++ b/code/Samples/DrawCallPerf/DrawCallPerf.cc @@ -59,7 +59,7 @@ DrawCallPerfApp::OnInit() { // create resources const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .RandomColors(true) .Positions("in_pos", VertexFormat::Float3) .Colors("in_color", VertexFormat::Float4) diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index eb2ed47be..e0f3d00fa 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -111,7 +111,7 @@ GPUParticlesApp::OnInit() { // the static geometry of a single particle is at mesh slot 0 const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .RandomColors(true) .Positions("in_pos", VertexFormat::Float3) .Colors("in_color", VertexFormat::Float4) diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index 76b421a95..db23657ff 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -71,7 +71,7 @@ InfiniteSpheresApp::OnInit() { } // create a sphere shape mesh - auto sphere = ShapeBuilder::New() + auto sphere = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Byte4N) .TexCoords("in_uv", VertexFormat::Float2) diff --git a/code/Samples/Instancing/Instancing.cc b/code/Samples/Instancing/Instancing.cc index 1affea3ab..d6fc77313 100644 --- a/code/Samples/Instancing/Instancing.cc +++ b/code/Samples/Instancing/Instancing.cc @@ -57,7 +57,7 @@ InstancingApp::OnInit() { // create static mesh at mesh slot 0 const glm::mat4 rot90 = glm::rotate(glm::mat4(), glm::radians(90.0f), glm::vec3(1.0f, 0.0f, 0.0f)); - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .RandomColors(true) .Positions("in_pos", VertexFormat::Float3) .Colors("in_color", VertexFormat::Float4) diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index f5aebcd8f..0d3fc903e 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -91,7 +91,7 @@ MultipleRenderTargetApp::OnInit() { .ClearColor(2, glm::vec4(0.0f, 0.0f, 0.25f, 1.0f)); // create a mesh with 2 shapes, a box and a plane - auto shapes = ShapeBuilder::New() + auto shapes = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::UByte4N) .TexCoords("in_uv", VertexFormat::Float2) diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index 8ab45ea4c..f2e7c2191 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -57,7 +57,7 @@ NativeTextureApp::OnInit() { return App::OnInit(); #endif - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .RandomColors(true) .Positions("in_pos", VertexFormat::Float3) .TexCoords("in_uv", VertexFormat::Float2) diff --git a/code/Samples/PackedNormals/PackedNormals.cc b/code/Samples/PackedNormals/PackedNormals.cc index abdb6e61c..a91d7a294 100644 --- a/code/Samples/PackedNormals/PackedNormals.cc +++ b/code/Samples/PackedNormals/PackedNormals.cc @@ -33,7 +33,7 @@ AppState::Code PackedNormalsApp::OnInit() { Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Oryol Packed Normals Sample")); - auto shapes = ShapeBuilder::New() + auto shapes = ShapeBuilder() .Positions("position", VertexFormat::Float3) .Normals("normal", VertexFormat::Byte4N) .Box(1.0f, 1.0f, 1.0f, 4) diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index bfb1dd12d..0056ceefa 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -69,30 +69,30 @@ PrimitiveTypesApp::OnInit() { // create a 2D vertex grid mesh, the same vertex data is combined // with different index buffers - MeshBuilder meshBuilder; - meshBuilder.NumVertices = NumVertices; - meshBuilder.IndexType = IndexType::None; - meshBuilder.Layout = { - { "position", VertexFormat::Float3 }, - { "color0", VertexFormat::UByte4N } - }; - meshBuilder.Begin(); - const float dx = 1.0f / NumX; - const float dy = 1.0f / NumY; - const float xOffset = -dx * (NumX/2); - const float yOffset = -dy * (NumY/2); - for (int y = 0, vi=0; y < NumY; y++) { - for (int x = 0; x < NumX; x++, vi++) { - meshBuilder.Vertex(vi, 0, x*dx+xOffset, y*dy+yOffset, 0.0f); - switch (vi % 3) { - case 0: meshBuilder.Vertex(vi, 1, 1.0f, 0.0f, 0.0f, 1.0f); break; - case 1: meshBuilder.Vertex(vi, 1, 0.0f, 1.0f, 0.0f, 1.0f); break; - default: meshBuilder.Vertex(vi, 1, 1.0f, 1.0f, 0.0f, 1.0f); break; + MeshBuilder::Result mesh = MeshBuilder() + .NumVertices(NumVertices) + .IndexType(IndexType::None) + .Layout({ + { "position", VertexFormat::Float3 }, + { "color0", VertexFormat::UByte4N } + }) + .Build([](MeshBuilder& mb) { + const float dx = 1.0f / NumX; + const float dy = 1.0f / NumY; + const float xOffset = -dx * (NumX/2); + const float yOffset = -dy * (NumY/2); + for (int y = 0, vi=0; y < NumY; y++) { + for (int x = 0; x < NumX; x++, vi++) { + mb.Vertex(vi, 0, x*dx+xOffset, y*dy+yOffset, 0.0f); + switch (vi % 3) { + case 0: mb.Vertex(vi, 1, 1.0f, 0.0f, 0.0f, 1.0f); break; + case 1: mb.Vertex(vi, 1, 0.0f, 1.0f, 0.0f, 1.0f); break; + default: mb.Vertex(vi, 1, 1.0f, 1.0f, 0.0f, 1.0f); break; + } + } } - } - } - auto meshResult = meshBuilder.Build(); - Id vbuf = Gfx::CreateBuffer(meshResult.VertexBufferDesc); + }); + Id vbuf = Gfx::CreateBuffer(mesh.VertexBufferDesc); // a single shader used by all pipeline objects Id shd = Gfx::CreateShader(Shader::Desc()); @@ -103,7 +103,7 @@ PrimitiveTypesApp::OnInit() { // point list (only need a pipeline object, no index buffer) { auto& ds = this->drawStates[PrimitiveType::Points]; - ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); + ds.Pipeline = createPipeline(PrimitiveType::Points, IndexType::None, mesh.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; } @@ -123,7 +123,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Lines]; - ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); + ds.Pipeline = createPipeline(PrimitiveType::Lines, IndexType::UInt16, mesh.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -142,7 +142,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::LineStrip]; - ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); + ds.Pipeline = createPipeline(PrimitiveType::LineStrip, IndexType::UInt16, mesh.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -165,7 +165,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::Triangles]; - ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); + ds.Pipeline = createPipeline(PrimitiveType::Triangles, IndexType::UInt16, mesh.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } @@ -190,7 +190,7 @@ PrimitiveTypesApp::OnInit() { } o_assert_dbg(i == numIndices); auto& ds = this->drawStates[PrimitiveType::TriangleStrip]; - ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, meshBuilder.Layout, shd, Gfx::Desc().SampleCount()); + ds.Pipeline = createPipeline(PrimitiveType::TriangleStrip, IndexType::UInt16, mesh.Layout, shd, Gfx::Desc().SampleCount()); ds.VertexBuffers[0] = vbuf; ds.IndexBuffer = createIndexBuffer(&indices[0], indices.Size()*sizeof(uint16_t)); } diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index 164cef4c4..860d9ae7b 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -97,7 +97,7 @@ RenderToCubeMapApp::OnInit() { } // mesh, shaders and pipelines to render color shapes - auto shapes = ShapeBuilder::New() + auto shapes = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1, true) diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index fe0348643..6bff09e85 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -124,7 +124,7 @@ ResourceStressApp::createObjects() { Object obj; obj.label = Gfx::PushResourceLabel(); obj.createdFrame = this->frameCount; - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("position", VertexFormat::Float3) .TexCoords("texcoord0", VertexFormat::Float2) .Box(0.1f, 0.1f, 0.1f, 1) diff --git a/code/Samples/Sensors/Sensors.cc b/code/Samples/Sensors/Sensors.cc index 609a8abf2..1596f8097 100644 --- a/code/Samples/Sensors/Sensors.cc +++ b/code/Samples/Sensors/Sensors.cc @@ -39,7 +39,7 @@ SensorsApp::OnInit() { Input::Setup(); // create a 3D cube - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Byte4N) .Box(2.0, 2.0, 2.0, 1) diff --git a/code/Samples/SeparateBuffers/SeparateBuffers.cc b/code/Samples/SeparateBuffers/SeparateBuffers.cc index f150ee350..ca9862a99 100644 --- a/code/Samples/SeparateBuffers/SeparateBuffers.cc +++ b/code/Samples/SeparateBuffers/SeparateBuffers.cc @@ -47,7 +47,7 @@ SeparateBuffersApp::OnInit() { // create a cube mesh with positions only, this will be placed // into the first vertex buffer bind slot - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1) .Build(); diff --git a/code/Samples/Shapes/Shapes.cc b/code/Samples/Shapes/Shapes.cc index 81a5d3b26..33fc9e91d 100644 --- a/code/Samples/Shapes/Shapes.cc +++ b/code/Samples/Shapes/Shapes.cc @@ -32,7 +32,7 @@ OryolMain(ShapeApp); AppState::Code ShapeApp::OnInit() { Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Oryol Shapes Sample")); - auto shapes = ShapeBuilder::New() + auto shapes = ShapeBuilder() .RandomColors(true) .Positions("position", VertexFormat::Float3) .Colors("color0", VertexFormat::UByte4N) diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 14d496ca9..3946c130f 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -63,7 +63,7 @@ SimpleRenderTargetApp::OnInit() { // create a donut mesh, shader and pipeline object // (this will be rendered into the offscreen render target) - auto donut = ShapeBuilder::New() + auto donut = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Byte4N) .Torus(0.3f, 0.5f, 20, 36) @@ -80,7 +80,7 @@ SimpleRenderTargetApp::OnInit() { .SampleCount(rtSampleCount)); // create a sphere mesh, shader and pipeline object for rendering to display - auto sphere = ShapeBuilder::New() + auto sphere = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Byte4N) .TexCoords("in_uv", VertexFormat::Float2) diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index 5cdda2c4e..848d94ce8 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -89,7 +89,7 @@ TestInputApp::OnInit() { }); // create a 3D cube - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Normals("in_normal", VertexFormat::Byte4N) .Box(1.0f, 1.0f, 1.0f, 1) diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index 08189937e..a5870b9ea 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -66,7 +66,7 @@ VertexTextureApp::OnInit() { .DepthFormat(PixelFormat::None)); // draw state for a 256x256 plane - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .TexCoords("in_uv", VertexFormat::Float2) .Plane(3.0f, 3.0f, 255) diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index ff224a320..34e618423 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -72,7 +72,7 @@ VolumeTextureApp::OnInit() { .MipContent(0, 0, data)); // create a cube which will be the hull geometry for raycasting through the 3D texture - auto shape = ShapeBuilder::New() + auto shape = ShapeBuilder() .Positions("in_pos", VertexFormat::Float3) .Box(1.0f, 1.0f, 1.0f, 1) .Build(); From 51fc0a086062f15a0217101d40252354e3c96327 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 22 Apr 2018 12:38:08 +0200 Subject: [PATCH 53/91] DbgSetup => DbgDesc with builder methods --- code/Modules/Assets/Gfx/MeshBuilder.cc | 1 - code/Modules/Dbg/Dbg.cc | 4 +- code/Modules/Dbg/Dbg.h | 2 +- code/Modules/Dbg/DbgTypes.h | 47 +++++++++++-------- code/Modules/Dbg/private/debugTextRenderer.cc | 26 +++++----- code/Modules/Dbg/private/debugTextRenderer.h | 6 +-- code/Samples/DebugText/DebugText.cc | 5 +- code/Samples/NativeTexture/NativeTexture.cc | 2 +- code/Samples/PrimitiveTypes/PrimitiveTypes.cc | 2 +- code/Samples/VertexTexture/VertexTexture.cc | 4 +- 10 files changed, 52 insertions(+), 47 deletions(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index 6657055c2..9cd0a9f51 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -5,7 +5,6 @@ #include "MeshBuilder.h" #include "Core/Assertion.h" #include "Gfx/Gfx.h" -#include namespace Oryol { diff --git a/code/Modules/Dbg/Dbg.cc b/code/Modules/Dbg/Dbg.cc index 29d38707b..5e84cb4f5 100644 --- a/code/Modules/Dbg/Dbg.cc +++ b/code/Modules/Dbg/Dbg.cc @@ -18,10 +18,10 @@ namespace { //------------------------------------------------------------------------------ void -Dbg::Setup(const DbgSetup& setup) { +Dbg::Setup(const DbgDesc& desc) { o_assert(!IsValid()); state = Memory::New<_state>(); - state->debugTextRenderer.setup(setup); + state->debugTextRenderer.setup(desc); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Dbg/Dbg.h b/code/Modules/Dbg/Dbg.h index 1d30adaf8..bf1804925 100644 --- a/code/Modules/Dbg/Dbg.h +++ b/code/Modules/Dbg/Dbg.h @@ -16,7 +16,7 @@ namespace Oryol { class Dbg { public: /// setup the Debug module - static void Setup(const DbgSetup& setup=DbgSetup()); + static void Setup(const DbgDesc& desc=DbgDesc()); /// discard the Debug module static void Discard(); /// return true if Debug module is valid diff --git a/code/Modules/Dbg/DbgTypes.h b/code/Modules/Dbg/DbgTypes.h index e3c78a2ad..bb7b3f656 100644 --- a/code/Modules/Dbg/DbgTypes.h +++ b/code/Modules/Dbg/DbgTypes.h @@ -9,29 +9,38 @@ namespace Oryol { -class DbgSetup { +class DbgDesc { public: - /// number of text columns on whole screen - int NumTextColumns = 120; - /// number of text lines on whole screen - int NumTextRows = 80; - /// initial text scale, x dimension - float TextScaleX = 1.0f; - /// initial text scale, y dimension - float TextScaleY = 1.0f; + /// number of text columns on screen + DbgDesc& NumTextColumns(int n) { numTextColumns = n; return *this; } + int NumTextColumns() const { return numTextColumns; } + /// number of text rows on screen + DbgDesc& NumTextRows(int n) { numTextRows = n; return *this; } + int NumTextRows() const { return numTextRows; } + /// initial text scale, in x dimension + DbgDesc& TextScaleX(float s) { textScaleX = s; return *this; } + float TextScaleX() const { return textScaleX; } + /// initial text scale, in y dimension + DbgDesc& TextScaleY(float s) { textScaleY = s; return *this; } + float TextScaleY() const { return textScaleY; } /// color pixel format of render pass to render text to - PixelFormat::Code ColorFormat = PixelFormat::RGBA8; + DbgDesc& ColorFormat(PixelFormat::Code fmt) { colorFormat = fmt; return *this; } + PixelFormat::Code ColorFormat() const { return colorFormat; } /// depth pixel format of render pass to render text to - PixelFormat::Code DepthFormat = PixelFormat::DEPTHSTENCIL; - /// multi-sample count of render pass to render text to - int SampleCount = 1; + DbgDesc& DepthFormat(PixelFormat::Code fmt) { depthFormat = fmt; return *this; } + PixelFormat::Code DepthFormat() const { return depthFormat; } + /// sample count of render pass to render to + DbgDesc& SampleCount(int c) { sampleCount = c; return *this; } + int SampleCount() const { return sampleCount; } - /// return a DbgSetup object with MSAA4 sample count - static DbgSetup MSAA4() { - DbgSetup setup; - setup.SampleCount = 4; - return setup; - } + + int numTextColumns = 120; + int numTextRows = 80; + float textScaleX = 1.0f; + float textScaleY = 1.0f; + PixelFormat::Code colorFormat = PixelFormat::RGBA8; + PixelFormat::Code depthFormat = PixelFormat::DEPTHSTENCIL; + int sampleCount = 1; }; } // namespace Oryol diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 5a0915ffa..90bfac460 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -28,21 +28,21 @@ debugTextRenderer::~debugTextRenderer() { //------------------------------------------------------------------------------ void -debugTextRenderer::setup(const DbgSetup& s) { +debugTextRenderer::setup(const DbgDesc& desc) { o_assert_dbg(!this->valid); o_assert_dbg(nullptr == this->vertexData); - this->numColumns = s.NumTextColumns; - this->numRows = s.NumTextRows; - this->maxNumChars = s.NumTextColumns * s.NumTextRows; - this->textScaleX = s.TextScaleX; - this->textScaleY = s.TextScaleY; + this->numColumns = desc.numTextColumns; + this->numRows = desc.numTextRows; + this->maxNumChars = desc.numTextColumns * desc.numTextRows; + this->textScaleX = desc.textScaleX; + this->textScaleY = desc.textScaleY; this->maxNumVertices = this->maxNumChars * 6; this->stringBuilder.Reserve(this->maxNumChars * 2); this->curNumVertices = 0; this->vertexData = (Vertex*) Memory::Alloc(this->maxNumVertices * sizeof(Vertex)); Gfx::PushResourceLabel(); - this->setupResources(s); + this->setupResources(desc); this->resourceLabel = Gfx::PopResourceLabel(); this->valid = true; } @@ -82,8 +82,8 @@ debugTextRenderer::printf(const char* text, std::va_list args) { void debugTextRenderer::cursorPos(uint8_t x, uint8_t y) { SCOPED_LOCK; - this->stringBuilder.Append((char) 0x1B); // start ESC control sequence - this->stringBuilder.Append((char) 0x01); // set cursor + this->stringBuilder.Append(0x1B); // start ESC control sequence + this->stringBuilder.Append(0x01); // set cursor this->stringBuilder.Append((char)x); this->stringBuilder.Append((char)y); } @@ -135,7 +135,7 @@ debugTextRenderer::drawTextBuffer() { //------------------------------------------------------------------------------ void -debugTextRenderer::setupResources(const DbgSetup& setup) { +debugTextRenderer::setupResources(const DbgDesc& desc) { o_assert_dbg(this->vertexLayout.Empty()); o_assert_dbg((this->maxNumVertices > 0) && (this->maxNumVertices == this->maxNumChars*6)); @@ -161,9 +161,9 @@ debugTextRenderer::setupResources(const DbgSetup& setup) { .BlendSrcFactorRGB(BlendFactor::SrcAlpha) .BlendDstFactorRGB(BlendFactor::OneMinusSrcAlpha) .ColorWriteMask(PixelChannel::RGB) - .ColorFormat(setup.ColorFormat) - .DepthFormat(setup.DepthFormat) - .SampleCount(setup.SampleCount)); + .ColorFormat(desc.colorFormat) + .DepthFormat(desc.depthFormat) + .SampleCount(desc.sampleCount)); // convert the KC85/4 font into 8bpp image data const int numChars = 128; diff --git a/code/Modules/Dbg/private/debugTextRenderer.h b/code/Modules/Dbg/private/debugTextRenderer.h index 41e0e7c6f..0c99456af 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.h +++ b/code/Modules/Dbg/private/debugTextRenderer.h @@ -10,7 +10,7 @@ #include "Core/String/StringBuilder.h" #include "Gfx/Gfx.h" #include "Dbg/DbgTypes.h" -#include +#include namespace Oryol { namespace _priv { @@ -20,7 +20,7 @@ class debugTextRenderer { ~debugTextRenderer(); /// setup the text renderer - void setup(const DbgSetup& setup); + void setup(const DbgDesc& desc); /// discard the text renderer void discard(); /// return true if the text renderer has been setup @@ -39,7 +39,7 @@ class debugTextRenderer { /// draw the accumulated text void drawTextBuffer(); /// setup the text dynamic mesh - void setupResources(const DbgSetup& setup); + void setupResources(const DbgDesc& desc); /// convert the provides string object into vertices, and return number of vertices void convertStringToVertices(const String& str); /// write one glyph vertex, returns next vertex index diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index 6e2f611e5..48400b2f9 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -31,10 +31,7 @@ OryolMain(DebugTextApp); AppState::Code DebugTextApp::OnInit() { Gfx::Setup(GfxDesc().Width(800).Height(600).Title("Oryol DebugText Sample")); - DbgSetup dbgSetup; - dbgSetup.TextScaleX = 2.0f; - dbgSetup.TextScaleY = 2.0f; - Dbg::Setup(dbgSetup); + Dbg::Setup(DbgDesc().TextScaleX(2.0f).TextScaleY(2.0f)); this->width = Gfx::DisplayAttrs().Width / 16; this->height = Gfx::DisplayAttrs().Height / 16; diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index f2e7c2191..b1e0cb129 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -50,7 +50,7 @@ AppState::Code NativeTextureApp::OnInit() { Gfx::Setup(GfxDesc().Width(600).Height(400).SampleCount(4).Title("Oryol NativeTexture Sample")); - Dbg::Setup(DbgSetup::MSAA4()); + Dbg::Setup(DbgDesc().SampleCount(4)); // FIXME: D3D and Metal #if !ORYOL_OPENGL diff --git a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc index 0056ceefa..cce3d238f 100644 --- a/code/Samples/PrimitiveTypes/PrimitiveTypes.cc +++ b/code/Samples/PrimitiveTypes/PrimitiveTypes.cc @@ -64,7 +64,7 @@ createPipeline(PrimitiveType::Code primType, IndexType::Code indexType, const Ve AppState::Code PrimitiveTypesApp::OnInit() { Gfx::Setup(GfxDesc().Width(640).Height(480).SampleCount(4).Title("Oryol PrimitiveTypes Test")); - Dbg::Setup(DbgSetup::MSAA4()); + Dbg::Setup(DbgDesc().SampleCount(4)); Input::Setup(); // create a 2D vertex grid mesh, the same vertex data is combined diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index a5870b9ea..75f65e78e 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -38,8 +38,8 @@ OryolMain(VertexTextureApp); AppState::Code VertexTextureApp::OnInit() { // setup rendering system - Gfx::Setup(GfxDesc().Width(800).Height(600).Title("Oryol Vertex Texture Sample")); - Dbg::Setup(DbgSetup::MSAA4()); + Gfx::Setup(GfxDesc().Width(800).Height(600).SampleCount(4).Title("Oryol Vertex Texture Sample")); + Dbg::Setup(DbgDesc().SampleCount(4)); // FIXME: need a way to check number of vertex texture units From 98381f122fab8dbe1dfa0d9fe2927f624862d364 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 22 Apr 2018 12:50:46 +0200 Subject: [PATCH 54/91] Cleanup Resource module --- code/Modules/Resource/CMakeLists.txt | 1 - code/Modules/Resource/ResourceBase.h | 3 -- code/Modules/Resource/ResourceInfo.h | 2 -- code/Modules/Resource/ResourceLoader.cc | 34 ------------------- code/Modules/Resource/ResourceLoader.h | 28 --------------- code/Modules/Resource/ResourcePool.h | 20 ----------- .../Resource/UnitTests/ResourcePoolTest.cc | 2 -- 7 files changed, 90 deletions(-) delete mode 100644 code/Modules/Resource/ResourceLoader.cc delete mode 100644 code/Modules/Resource/ResourceLoader.h diff --git a/code/Modules/Resource/CMakeLists.txt b/code/Modules/Resource/CMakeLists.txt index 22b94c182..b8b3584ce 100644 --- a/code/Modules/Resource/CMakeLists.txt +++ b/code/Modules/Resource/CMakeLists.txt @@ -8,7 +8,6 @@ fips_begin_module(Resource) Locator.cc Locator.h ResourceLabel.h ResourceState.h - ResourceLoader.cc ResourceLoader.h ResourcePool.h ResourceLabelStack.cc ResourceLabelStack.h ResourceRegistry.cc ResourceRegistry.h diff --git a/code/Modules/Resource/ResourceBase.h b/code/Modules/Resource/ResourceBase.h index 1124fb97d..b9218f4ba 100644 --- a/code/Modules/Resource/ResourceBase.h +++ b/code/Modules/Resource/ResourceBase.h @@ -13,7 +13,6 @@ of a resource is controlled by a matching Setup object, which holds all information required to create a resource object. */ -#include "Core/Assertion.h" #include "Resource/Id.h" #include "Resource/ResourceState.h" @@ -25,8 +24,6 @@ class ResourceBase { class Id Id; /// current resource state ResourceState::Code State = ResourceState::Initial; - /// frame count of last state change - int StateStartFrame = 0; }; } // namespace Oryol diff --git a/code/Modules/Resource/ResourceInfo.h b/code/Modules/Resource/ResourceInfo.h index 745409586..09e37758a 100644 --- a/code/Modules/Resource/ResourceInfo.h +++ b/code/Modules/Resource/ResourceInfo.h @@ -13,8 +13,6 @@ class ResourceInfo { public: /// current state of the resource ResourceState::Code State = ResourceState::InvalidState; - /// age of current state in number of frame - int StateAge = 0; }; } // namespace Oryol \ No newline at end of file diff --git a/code/Modules/Resource/ResourceLoader.cc b/code/Modules/Resource/ResourceLoader.cc deleted file mode 100644 index 793169f8e..000000000 --- a/code/Modules/Resource/ResourceLoader.cc +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// ResourceLoader.cc -//------------------------------------------------------------------------------ -#include "Pre.h" -#include "ResourceLoader.h" - -namespace Oryol { - -//------------------------------------------------------------------------------ -class Locator -ResourceLoader::Locator() const { - class Locator loc; - return loc; -} - -//------------------------------------------------------------------------------ -Id -ResourceLoader::Start() { - return Id::InvalidId(); -} - -//------------------------------------------------------------------------------ -ResourceState::Code -ResourceLoader::Continue() { - return ResourceState::InvalidState; -} - -//------------------------------------------------------------------------------ -void -ResourceLoader::Cancel() { - // empty -} - -} // namespace Oryol diff --git a/code/Modules/Resource/ResourceLoader.h b/code/Modules/Resource/ResourceLoader.h deleted file mode 100644 index 818a084a6..000000000 --- a/code/Modules/Resource/ResourceLoader.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once -//------------------------------------------------------------------------------ -/** - @class Oryol::ResourceLoader - @ingroup Resource - @brief base class for resource loaders -*/ -#include "Core/RefCounted.h" -#include "Resource/Id.h" -#include "Resource/Locator.h" -#include "Resource/ResourceState.h" - -namespace Oryol { - -class ResourceLoader : public RefCounted { - OryolClassDecl(ResourceLoader); -public: - /// return resource locator - virtual class Locator Locator() const; - /// start loading, return a resource id - virtual Id Start(); - /// continue loading, return resource state (Pending, Valid, Failed) - virtual ResourceState::Code Continue(); - /// cancel the resource loading process - virtual void Cancel(); -}; - -} // namespace Oryol diff --git a/code/Modules/Resource/ResourcePool.h b/code/Modules/Resource/ResourcePool.h index 89ecf8882..cc3b52043 100644 --- a/code/Modules/Resource/ResourcePool.h +++ b/code/Modules/Resource/ResourcePool.h @@ -50,8 +50,6 @@ template class ResourcePool { bool Contains(const Id& id) const; /// query the loading state of a contained resource ResourceState::Code QueryState(const Id& id) const; - /// query additional info about a contained resource - ResourceInfo QueryResourceInfo(const Id& id) const; /// query additional info about the pool (slow) ResourcePoolInfo QueryPoolInfo() const; @@ -168,7 +166,6 @@ ResourcePool::Assign(const Id& id, ResourceState::Code state) { auto& slot = this->slots[id.SlotIndex]; o_assert_dbg(ResourceState::Valid != slot.State); slot.State = state; - slot.StateStartFrame = this->frameCounter; slot.Id = id; return slot; } @@ -183,7 +180,6 @@ ResourcePool::Unassign(const Id& id) { o_assert_dbg(ResourceState::Initial != slot.State); slot.Id.Invalidate(); slot.State = ResourceState::Initial; - slot.StateStartFrame = 0; this->FreeId(id); } else { @@ -233,7 +229,6 @@ ResourcePool::UpdateState(const Id& id, ResourceState::Code newState) if (id == slot.Id) { o_assert_dbg(ResourceState::Initial != slot.State); slot.State = newState; - slot.StateStartFrame = this->frameCounter; } else { o_warn("ResourcePool::UpdateState(): id not in pool (type: '%d', slot: '%d')\n", id.Type, id.SlotIndex); @@ -263,21 +258,6 @@ ResourcePool::QueryState(const Id& id) const { } } -//------------------------------------------------------------------------------ -template ResourceInfo -ResourcePool::QueryResourceInfo(const Id& id) const { - o_assert_dbg(this->isValid); - o_assert_dbg(id.Type == this->resourceType); - - ResourceInfo info; - const auto& slot = this->slots[id.SlotIndex]; - if (id == slot.Id) { - info.State = slot.State; - info.StateAge = this->frameCounter - slot.StateStartFrame; - } - return info; -} - //------------------------------------------------------------------------------ template ResourcePoolInfo ResourcePool::QueryPoolInfo() const { diff --git a/code/Modules/Resource/UnitTests/ResourcePoolTest.cc b/code/Modules/Resource/UnitTests/ResourcePoolTest.cc index 55ab0b089..bf036946b 100644 --- a/code/Modules/Resource/UnitTests/ResourcePoolTest.cc +++ b/code/Modules/Resource/UnitTests/ResourcePoolTest.cc @@ -41,7 +41,6 @@ TEST(ResourcePoolTest) { const myResource* res = resourcePool.Lookup(resId); CHECK(nullptr != res); CHECK(res->Id == resId); - CHECK(resourcePool.QueryResourceInfo(resId).State == ResourceState::Valid); Id resId1 = resourcePool.AllocId(); CHECK(resId1.IsValid()); @@ -58,7 +57,6 @@ TEST(ResourcePoolTest) { const myResource* res1 = resourcePool.Lookup(resId1); CHECK(nullptr != res1); CHECK(res1->Id == resId1); - CHECK(resourcePool.QueryResourceInfo(resId1).State == ResourceState::Valid); const ResourcePoolInfo poolInfo = resourcePool.QueryPoolInfo(); CHECK(poolInfo.ResourceType == myResourceType); From 594f5f0f400c9ac8f1daab54e17014880519de2c Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 22 Apr 2018 13:43:34 +0200 Subject: [PATCH 55/91] iOS: Gfx module compile fixes --- code/Modules/Gfx/private/gl/iosDisplayMgr.mm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/Modules/Gfx/private/gl/iosDisplayMgr.mm b/code/Modules/Gfx/private/gl/iosDisplayMgr.mm index 09926d052..f6ff981c7 100644 --- a/code/Modules/Gfx/private/gl/iosDisplayMgr.mm +++ b/code/Modules/Gfx/private/gl/iosDisplayMgr.mm @@ -36,13 +36,13 @@ // modify the color/depth/stencil format and content scaling of the GLKView GLKView* glkView = _priv::iosBridge::ptr()->glkView; - if (gfxDesc.HighDPI) { + if (gfxDesc.highDPI) { glkView.contentScaleFactor = 2.0f; } else { glkView.contentScaleFactor = 1.0f; } - switch (gfxDesc.ColorFormat) { + switch (gfxDesc.colorFormat) { case PixelFormat::R5G6B5: glkView.drawableColorFormat = GLKViewDrawableColorFormatRGB565; break; @@ -57,7 +57,7 @@ glkView.drawableColorFormat = GLKViewDrawableColorFormatRGB565; break; } - switch (gfxDesc.DepthFormat) { + switch (gfxDesc.depthFormat) { case PixelFormat::None: glkView.drawableDepthFormat = GLKViewDrawableDepthFormatNone; glkView.drawableStencilFormat = GLKViewDrawableStencilFormatNone; @@ -98,10 +98,8 @@ this->glFramebufferWidth = (int) glkView.drawableWidth; this->glFramebufferHeight = (int) glkView.drawableHeight; Log::Info("iosDisplayMgr: actual framebuffer size w=%d, h=%d\n", this->glFramebufferWidth, this->glFramebufferHeight); - this->displayAttrs.FramebufferWidth = this->glFramebufferWidth; - this->displayAttrs.FramebufferHeight = this->glFramebufferHeight; - this->displayAttrs.WindowWidth = this->glFramebufferWidth; - this->displayAttrs.WindowHeight = this->glFramebufferHeight; + this->displayAttrs.Width = this->glFramebufferWidth; + this->displayAttrs.Height = this->glFramebufferHeight; } //------------------------------------------------------------------------------ From 62f2b4751275fe2b1cfad3cece20c59697aa1f8d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 22 Apr 2018 13:50:07 +0200 Subject: [PATCH 56/91] Emscripten: Gfx module compile fixes --- code/Modules/Gfx/private/gl/emscDisplayMgr.cc | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/code/Modules/Gfx/private/gl/emscDisplayMgr.cc b/code/Modules/Gfx/private/gl/emscDisplayMgr.cc index 6868a91f5..e17058be8 100644 --- a/code/Modules/Gfx/private/gl/emscDisplayMgr.cc +++ b/code/Modules/Gfx/private/gl/emscDisplayMgr.cc @@ -73,22 +73,22 @@ emscDisplayMgr::SetupDisplay(const GfxDesc& desc) { o_assert(!this->IsDisplayValid()); displayMgrBase::SetupDisplay(desc); - if (desc.HtmlTrackElementSize) { + if (desc.htmlTrackElementSize) { // register notification callback when canvas size changes double width, height; - if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(desc.HtmlElement.AsCStr(), &width, &height)) { - this->displayAttrs.FramebufferWidth = (int) width; - this->displayAttrs.FramebufferHeight = (int) height; + if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(desc.htmlElement.AsCStr(), &width, &height)) { + this->displayAttrs.Width = (int) width; + this->displayAttrs.Height = (int) height; Log::Info("Tracked HTML element size '%s': %dx%d\n", - desc.HtmlElement.AsCStr(), - this->displayAttrs.FramebufferWidth, - this->displayAttrs.FramebufferHeight); + desc.htmlElement.AsCStr(), + this->displayAttrs.Width, + this->displayAttrs.Height); } - emscripten_set_canvas_element_size(desc.HtmlElement.AsCStr(), this->displayAttrs.FramebufferWidth, this->displayAttrs.FramebufferHeight); + emscripten_set_canvas_element_size(desc.htmlElement.AsCStr(), this->displayAttrs.Width, this->displayAttrs.Height); emscripten_set_resize_callback(nullptr, nullptr, false, emscWindowSizeChanged); } - else if (desc.Windowed) { - emscripten_set_canvas_element_size("#canvas", desc.Width, desc.Height); + else if (desc.windowed) { + emscripten_set_canvas_element_size("#canvas", desc.width, desc.height); } else { enter_soft_fullscreen(); @@ -96,10 +96,10 @@ emscDisplayMgr::SetupDisplay(const GfxDesc& desc) { EmscriptenWebGLContextAttributes ctxAttrs; emscripten_webgl_init_context_attributes(&ctxAttrs); - ctxAttrs.alpha = 0 < PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Alpha); - ctxAttrs.depth = 0 < PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth); - ctxAttrs.stencil = 0 < PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil); - ctxAttrs.antialias = desc.SampleCount > 1; + ctxAttrs.alpha = 0 < PixelFormat::NumBits(desc.colorFormat, PixelChannel::Alpha); + ctxAttrs.depth = 0 < PixelFormat::NumBits(desc.depthFormat, PixelChannel::Depth); + ctxAttrs.stencil = 0 < PixelFormat::NumBits(desc.depthFormat, PixelChannel::Stencil); + ctxAttrs.antialias = desc.sampleCount > 1; ctxAttrs.premultipliedAlpha = false; ctxAttrs.preserveDrawingBuffer = false; Log::Info("emscDisplayMgr: alpha=%d, depth=%d, stencil=%d, antialias=%d\n", @@ -157,8 +157,8 @@ EM_BOOL emscDisplayMgr::emscCanvasSizeChanged(int eventType, const void* reserved, void* userData) { int newWidth, newHeight; emscripten_get_canvas_element_size("#canvas", &newWidth, &newHeight); - self->displayAttrs.FramebufferWidth = newWidth; - self->displayAttrs.FramebufferHeight = newHeight; + self->displayAttrs.Width = newWidth; + self->displayAttrs.Height = newHeight; return true; } @@ -166,10 +166,10 @@ emscDisplayMgr::emscCanvasSizeChanged(int eventType, const void* reserved, void* EM_BOOL emscDisplayMgr::emscWindowSizeChanged(int eventType, const EmscriptenUiEvent* uiEvent, void* userData) { double width, height; - if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(self->gfxDesc.HtmlElement.AsCStr(), &width, &height)) { - self->displayAttrs.FramebufferWidth = (int) width; - self->displayAttrs.FramebufferHeight = (int) height; - emscripten_set_canvas_element_size(self->gfxDesc.HtmlElement.AsCStr(), self->displayAttrs.FramebufferWidth, self->displayAttrs.FramebufferHeight); + if (EMSCRIPTEN_RESULT_SUCCESS == emscripten_get_element_css_size(self->gfxDesc.htmlElement.AsCStr(), &width, &height)) { + self->displayAttrs.Width = (int) width; + self->displayAttrs.Height = (int) height; + emscripten_set_canvas_element_size(self->gfxDesc.htmlElement.AsCStr(), self->displayAttrs.Width, self->displayAttrs.Height); } return true; } From 4a95fdf647b7b5a010f1220ee232352fb8892751 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 22 Apr 2018 13:50:59 +0200 Subject: [PATCH 57/91] InputSetup => InputDesc --- code/Modules/Input/Input.cc | 4 +- code/Modules/Input/Input.h | 2 +- code/Modules/Input/InputTypes.h | 44 ++++++++++++++----- .../Input/private/android/androidInputMgr.cc | 6 +-- .../Input/private/android/androidInputMgr.h | 2 +- .../Input/private/emsc/emscInputMgr.cc | 8 ++-- .../Modules/Input/private/emsc/emscInputMgr.h | 2 +- .../Input/private/glfw/glfwInputMgr.cc | 4 +- .../Modules/Input/private/glfw/glfwInputMgr.h | 2 +- code/Modules/Input/private/inputMgrBase.cc | 14 +++--- code/Modules/Input/private/inputMgrBase.h | 4 +- code/Modules/Input/private/ios/iosInputMgr.h | 2 +- code/Modules/Input/private/ios/iosInputMgr.mm | 10 ++--- code/Modules/Input/private/osx/osxInputMgr.cc | 4 +- code/Modules/Input/private/osx/osxInputMgr.h | 2 +- .../Input/private/raspi/raspiInputMgr.cc | 4 +- .../Input/private/raspi/raspiInputMgr.h | 2 +- code/Modules/Input/private/win/winInputMgr.cc | 4 +- code/Modules/Input/private/win/winInputMgr.h | 2 +- 19 files changed, 71 insertions(+), 51 deletions(-) diff --git a/code/Modules/Input/Input.cc b/code/Modules/Input/Input.cc index 90012b712..eaae632f6 100644 --- a/code/Modules/Input/Input.cc +++ b/code/Modules/Input/Input.cc @@ -17,10 +17,10 @@ namespace { //------------------------------------------------------------------------------ void -Input::Setup(const InputSetup& setup) { +Input::Setup(const InputDesc& desc) { o_assert_dbg(!IsValid()); state = Memory::New<_state>(); - state->inputManager.setup(setup); + state->inputManager.setup(desc); } //------------------------------------------------------------------------------ diff --git a/code/Modules/Input/Input.h b/code/Modules/Input/Input.h index 38558e274..6c3822887 100644 --- a/code/Modules/Input/Input.h +++ b/code/Modules/Input/Input.h @@ -19,7 +19,7 @@ namespace Oryol { class Input { public: /// setup the Input module - static void Setup(const InputSetup& inputSetup = InputSetup()); + static void Setup(const InputDesc& desc = InputDesc()); /// discard the Input module static void Discard(); /// check if Input module is valid diff --git a/code/Modules/Input/InputTypes.h b/code/Modules/Input/InputTypes.h index 40d560814..2db0e5d66 100644 --- a/code/Modules/Input/InputTypes.h +++ b/code/Modules/Input/InputTypes.h @@ -113,26 +113,46 @@ class GamepadMapping { //------------------------------------------------------------------------------ /** - @class Oryol::InputSetup + @class Oryol::InputDesc @ingroup Input @brief configure the Input module */ -class InputSetup { +class InputDesc { public: - /// initial set of gamepad mappings, use id="__default" to override default mapping - Map GamepadMappings; + /// initial set of gamepad mappings, use name="__default" to override default mapping + InputDesc& GamepadMapping(const StringAtom& name, const class GamepadMapping& mapping) { + gamepadMappings.Add(name, mapping); + return *this; + } + const Map& GamepadMappings() const { + return gamepadMappings; + } /// enable/disable single-tap touch gesture - bool TapEnabled = true; + InputDesc& TapEnabled(bool b) { tapEnabled = b; return *this; } + bool TapEnabled() const { return tapEnabled; } /// enable/disable double-tap touch gesture - bool DoubleTapEnabled = true; + InputDesc& DoubleTapEnabled(bool b) { doubleTapEnabled = b; return *this; } + bool DoubleTapEnabled() const { return doubleTapEnabled; } /// enable/disable pinch touch gesture - bool PinchEnabled = true; + InputDesc& PinchEnabled(bool b) { pinchEnabled = b; return *this; } + bool PinchEnabled() const { return pinchEnabled; } /// enable/disable pan touch gesture - bool PanEnabled = true; - /// accelerometer enabled - bool AccelerometerEnabled = true; - /// gyrometer enabled - bool GyrometerEnabled = true; + InputDesc& PanEnabled(bool b) { panEnabled = b; return *this; } + bool PanEnabled() const { return panEnabled; } + /// enable/disable accelerometer readings + InputDesc& AccelerometerEnabled(bool b) { accelerometerEnabled = b; return *this; } + bool AccelerometerEnabled() const { return accelerometerEnabled; } + /// enable/disable gyrometer readings + InputDesc& GyrometerEnabled(bool b) { gyrometerEnabled = b; return *this; } + bool GyrometerEnabled() const { return gyrometerEnabled; } + + Map gamepadMappings; + bool tapEnabled = true; + bool doubleTapEnabled = true; + bool pinchEnabled = true; + bool panEnabled = true; + bool accelerometerEnabled = true; + bool gyrometerEnabled = true; }; //------------------------------------------------------------------------------ diff --git a/code/Modules/Input/private/android/androidInputMgr.cc b/code/Modules/Input/private/android/androidInputMgr.cc index 94d29cb55..252618f1c 100644 --- a/code/Modules/Input/private/android/androidInputMgr.cc +++ b/code/Modules/Input/private/android/androidInputMgr.cc @@ -34,7 +34,7 @@ androidInputMgr::~androidInputMgr() { //------------------------------------------------------------------------------ void -androidInputMgr::setup(const InputSetup& setup) { +androidInputMgr::setup(const InputDesc& desc) { Log::Info("androidInputMgr::setup called!\n"); if (!Gfx::IsValid()) { @@ -128,7 +128,7 @@ androidInputMgr::onSensorEvent(const ASensorEvent* event) { switch (event->type) { case ASENSOR_TYPE_ACCELEROMETER: - if (self->inputSetup.AccelerometerEnabled) { + if (self->inputDesc.accelerometerEnabled) { // NOTE: x and y are swapped because the default orientation is landscape self->sensors.acceleration.x = event->acceleration.y; self->sensors.acceleration.y = -event->acceleration.x; @@ -141,7 +141,7 @@ androidInputMgr::onSensorEvent(const ASensorEvent* event) { /* case ASENSOR_TYPE_GAME_ROTATION_VECTOR: // FIXME FIXME FIXME: this doesn't seem to work! - if (self->inputSetup.GyrometerEnabled) { + if (self->inputDesc.gyrometerEnabled) { glm::vec3 axis(event->vector.x, event->vector.y, event->vector.z); float mag = glm::length(axis); glm::quat q(glm::cos(mag), event->vector.x, event->vector.y, event->vector.z); diff --git a/code/Modules/Input/private/android/androidInputMgr.h b/code/Modules/Input/private/android/androidInputMgr.h index f02916ce7..51e801f04 100644 --- a/code/Modules/Input/private/android/androidInputMgr.h +++ b/code/Modules/Input/private/android/androidInputMgr.h @@ -22,7 +22,7 @@ class androidInputMgr : public inputMgrBase { ~androidInputMgr(); /// setup the input manager - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the input manager void discard(); diff --git a/code/Modules/Input/private/emsc/emscInputMgr.cc b/code/Modules/Input/private/emsc/emscInputMgr.cc index d51452afc..48ff77fc1 100644 --- a/code/Modules/Input/private/emsc/emscInputMgr.cc +++ b/code/Modules/Input/private/emsc/emscInputMgr.cc @@ -27,9 +27,9 @@ emscInputMgr::~emscInputMgr() { //------------------------------------------------------------------------------ void -emscInputMgr::setup(const InputSetup& setup) { +emscInputMgr::setup(const InputDesc& desc) { this->setupGamepadMappings(); // needs to happen before calling base class - inputMgrBase::setup(setup); + inputMgrBase::setup(desc); this->setupKeyTable(); this->keyboard.attached = true; this->mouse.attached = true; @@ -64,10 +64,10 @@ emscInputMgr::setupCallbacks() { emscripten_set_touchend_callback("#canvas", this, true, emscTouch); emscripten_set_touchmove_callback("#canvas", this, true, emscTouch); emscripten_set_touchcancel_callback("#canvas", this, true, emscTouch); - if (this->inputSetup.AccelerometerEnabled) { + if (this->inputDesc.accelerometerEnabled) { emscripten_set_devicemotion_callback(this, true, emscDeviceMotion); } - if (this->inputSetup.GyrometerEnabled) { + if (this->inputDesc.gyrometerEnabled) { emscripten_set_deviceorientation_callback(this, true, emscDeviceOrientation); } } diff --git a/code/Modules/Input/private/emsc/emscInputMgr.h b/code/Modules/Input/private/emsc/emscInputMgr.h index 4fd6fc7ef..534e8e074 100644 --- a/code/Modules/Input/private/emsc/emscInputMgr.h +++ b/code/Modules/Input/private/emsc/emscInputMgr.h @@ -20,7 +20,7 @@ class emscInputMgr : public inputMgrBase { ~emscInputMgr(); /// setup the input manager - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the input manager void discard(); diff --git a/code/Modules/Input/private/glfw/glfwInputMgr.cc b/code/Modules/Input/private/glfw/glfwInputMgr.cc index d9399f47b..d4f976d38 100644 --- a/code/Modules/Input/private/glfw/glfwInputMgr.cc +++ b/code/Modules/Input/private/glfw/glfwInputMgr.cc @@ -31,10 +31,10 @@ glfwInputMgr::~glfwInputMgr() { //------------------------------------------------------------------------------ void -glfwInputMgr::setup(const InputSetup& setup) { +glfwInputMgr::setup(const InputDesc& desc) { this->setupGamepadMappings(); // must be called before parent class! - inputMgrBase::setup(setup); + inputMgrBase::setup(desc); this->keyboard.attached = true; this->mouse.attached = true; diff --git a/code/Modules/Input/private/glfw/glfwInputMgr.h b/code/Modules/Input/private/glfw/glfwInputMgr.h index fd25dab79..0aa3c4e0b 100644 --- a/code/Modules/Input/private/glfw/glfwInputMgr.h +++ b/code/Modules/Input/private/glfw/glfwInputMgr.h @@ -21,7 +21,7 @@ class glfwInputMgr : public inputMgrBase { ~glfwInputMgr(); /// setup the GLFW input manager - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the GLFW input manager void discard(); diff --git a/code/Modules/Input/private/inputMgrBase.cc b/code/Modules/Input/private/inputMgrBase.cc index a9ed1bb71..1dcc582e9 100644 --- a/code/Modules/Input/private/inputMgrBase.cc +++ b/code/Modules/Input/private/inputMgrBase.cc @@ -21,13 +21,13 @@ inputMgrBase::~inputMgrBase() { //------------------------------------------------------------------------------ void -inputMgrBase::setup(const InputSetup& setup) { +inputMgrBase::setup(const InputDesc& desc) { o_assert_dbg(!this->isValid()); this->singleTapDetector.numRequiredTaps = 1; this->doubleTapDetector.numRequiredTaps = 2; this->valid = true; - this->inputSetup = setup; - for (const auto& item : setup.GamepadMappings) { + this->inputDesc = desc; + for (const auto& item : desc.gamepadMappings) { this->addGamepadMapping(item.Key(), item.Value()); } } @@ -69,7 +69,7 @@ void inputMgrBase::onTouchEvent(const touchEvent& event) { o_assert_dbg(event.numTouches > 0); if (this->touchpad.attached) { - if (this->inputSetup.PanEnabled) { + if (this->inputDesc.panEnabled) { switch (this->panDetector.detect(event)) { case gestureState::start: this->touchpad.onPanningStarted(this->panDetector.position, this->panDetector.startPosition); @@ -89,17 +89,17 @@ inputMgrBase::onTouchEvent(const touchEvent& event) { // extract 'raw' touch state and position from panDetector this->touchpad.onTouch(touchEvent::invalid != this->panDetector.startEvent.type, this->panDetector.position); } - if (this->inputSetup.TapEnabled) { + if (this->inputDesc.tapEnabled) { if (gestureState::action == this->singleTapDetector.detect(event)) { this->touchpad.onTapped(this->singleTapDetector.position); } } - if (this->inputSetup.DoubleTapEnabled) { + if (this->inputDesc.doubleTapEnabled) { if (gestureState::action == this->doubleTapDetector.detect(event)) { this->touchpad.onDoubleTapped(this->doubleTapDetector.position); } } - if (this->inputSetup.PinchEnabled) { + if (this->inputDesc.pinchEnabled) { switch (this->pinchDetector.detect(event)) { case gestureState::start: this->touchpad.onPinchingStarted( diff --git a/code/Modules/Input/private/inputMgrBase.h b/code/Modules/Input/private/inputMgrBase.h index f2d211243..b8b6f30ab 100644 --- a/code/Modules/Input/private/inputMgrBase.h +++ b/code/Modules/Input/private/inputMgrBase.h @@ -18,7 +18,7 @@ class inputMgrBase { inputMgrBase(); ~inputMgrBase(); - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); void discard(); bool isValid() const; void reset(); @@ -34,7 +34,7 @@ class inputMgrBase { bool valid = false; - InputSetup inputSetup; + InputDesc inputDesc; inputDispatcher dispatcher; tapDetector singleTapDetector; tapDetector doubleTapDetector; diff --git a/code/Modules/Input/private/ios/iosInputMgr.h b/code/Modules/Input/private/ios/iosInputMgr.h index 065f4c57f..97ba8af5c 100644 --- a/code/Modules/Input/private/ios/iosInputMgr.h +++ b/code/Modules/Input/private/ios/iosInputMgr.h @@ -19,7 +19,7 @@ class iosInputMgr : public inputMgrBase { ~iosInputMgr(); /// setup the object - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the object void discard(); diff --git a/code/Modules/Input/private/ios/iosInputMgr.mm b/code/Modules/Input/private/ios/iosInputMgr.mm index 21e48d9b0..0473530eb 100644 --- a/code/Modules/Input/private/ios/iosInputMgr.mm +++ b/code/Modules/Input/private/ios/iosInputMgr.mm @@ -84,9 +84,9 @@ - (void) touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { //------------------------------------------------------------------------------ void -iosInputMgr::setup(const InputSetup& setup) { +iosInputMgr::setup(const InputDesc& desc) { - inputMgrBase::setup(setup); + inputMgrBase::setup(desc); if (!Gfx::IsValid()) { o_error("iosInputMgr: Gfx::Setup() must be called before Input::Setup()!\n"); @@ -98,7 +98,7 @@ - (void) touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { this->inputDelegate = [[iosInputDelegate alloc] init]; // create CoreMotionManager to sample device motion data - if (setup.AccelerometerEnabled || setup.GyrometerEnabled) { + if (desc.accelerometerEnabled || desc.gyrometerEnabled) { this->motionManager = [[CMMotionManager alloc] init]; if ([this->motionManager isDeviceMotionAvailable]) { [this->motionManager startDeviceMotionUpdates]; @@ -165,14 +165,14 @@ - (void) touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { CMAcceleration cmUserAccel = motionData.userAcceleration; // acceleration - if (this->inputSetup.AccelerometerEnabled) { + if (this->inputDesc.accelerometerEnabled) { static const float earthGravity = 9.80665f; glm::vec3 accel(cmGravity.x + cmUserAccel.x, cmGravity.y + cmUserAccel.y, cmGravity.z + cmUserAccel.z); this->sensors.acceleration = accel * earthGravity; } // attitude - if (this->inputSetup.GyrometerEnabled) { + if (this->inputDesc.gyrometerEnabled) { this->sensors.yawPitchRoll.x = motionData.attitude.yaw; this->sensors.yawPitchRoll.y = motionData.attitude.pitch; this->sensors.yawPitchRoll.z = motionData.attitude.roll; diff --git a/code/Modules/Input/private/osx/osxInputMgr.cc b/code/Modules/Input/private/osx/osxInputMgr.cc index a0a248e4c..9ee376677 100644 --- a/code/Modules/Input/private/osx/osxInputMgr.cc +++ b/code/Modules/Input/private/osx/osxInputMgr.cc @@ -30,9 +30,9 @@ osxInputMgr::~osxInputMgr() { //------------------------------------------------------------------------------ void -osxInputMgr::setup(const InputSetup& setup) { +osxInputMgr::setup(const InputDesc& desc) { - inputMgrBase::setup(setup); + inputMgrBase::setup(desc); this->keyboard.attached = true; this->mouse.attached = true; diff --git a/code/Modules/Input/private/osx/osxInputMgr.h b/code/Modules/Input/private/osx/osxInputMgr.h index ba025c76c..812331a5e 100644 --- a/code/Modules/Input/private/osx/osxInputMgr.h +++ b/code/Modules/Input/private/osx/osxInputMgr.h @@ -18,7 +18,7 @@ class osxInputMgr : public inputMgrBase { ~osxInputMgr(); /// setup the input manager - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the input manager void discard(); diff --git a/code/Modules/Input/private/raspi/raspiInputMgr.cc b/code/Modules/Input/private/raspi/raspiInputMgr.cc index e89f2687d..3c336b49a 100644 --- a/code/Modules/Input/private/raspi/raspiInputMgr.cc +++ b/code/Modules/Input/private/raspi/raspiInputMgr.cc @@ -37,8 +37,8 @@ raspiInputMgr::~raspiInputMgr() { //------------------------------------------------------------------------------ void -raspiInputMgr::setup(const InputSetup& setup) { - inputMgrBase::setup(setup); +raspiInputMgr::setup(const InputDesc& desc) { + inputMgrBase::setup(desc); if (this->openDevices()) { if (-1 != this->kbdFd) { this->keyboard.attached = true; diff --git a/code/Modules/Input/private/raspi/raspiInputMgr.h b/code/Modules/Input/private/raspi/raspiInputMgr.h index 4bc0db961..19231b2dd 100644 --- a/code/Modules/Input/private/raspi/raspiInputMgr.h +++ b/code/Modules/Input/private/raspi/raspiInputMgr.h @@ -19,7 +19,7 @@ class raspiInputMgr : public inputMgrBase { ~raspiInputMgr(); /// setup the input manager - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the input manager void discard(); diff --git a/code/Modules/Input/private/win/winInputMgr.cc b/code/Modules/Input/private/win/winInputMgr.cc index ff9fd4e17..fbce5b4be 100644 --- a/code/Modules/Input/private/win/winInputMgr.cc +++ b/code/Modules/Input/private/win/winInputMgr.cc @@ -29,9 +29,9 @@ winInputMgr::~winInputMgr() { //------------------------------------------------------------------------------ void -winInputMgr::setup(const InputSetup& setup) { +winInputMgr::setup(const InputDesc& desc) { - inputMgrBase::setup(setup); + inputMgrBase::setup(desc); this->keyboard.attached = true; this->mouse.attached = true; diff --git a/code/Modules/Input/private/win/winInputMgr.h b/code/Modules/Input/private/win/winInputMgr.h index 854243b16..5a9457df2 100644 --- a/code/Modules/Input/private/win/winInputMgr.h +++ b/code/Modules/Input/private/win/winInputMgr.h @@ -22,7 +22,7 @@ class winInputMgr : public inputMgrBase { ~winInputMgr(); /// setup the window input manager - void setup(const InputSetup& setup); + void setup(const InputDesc& desc); /// discard the windows input manager void discard(); From 4abea442f163be38492eb3e0303ebef4f99b8a85 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sun, 22 Apr 2018 14:06:07 +0200 Subject: [PATCH 58/91] IOSetup => IODesc --- .../HttpFS/UnitTests/HTTPFileSystemTest.cc | 4 +--- code/Modules/IO/IO.cc | 6 +++--- code/Modules/IO/IO.h | 2 +- code/Modules/IO/IOTypes.h | 19 ++++++++++++++++--- code/Modules/IO/UnitTests/IOFacadeTest.cc | 2 +- .../LocalFS/UnitTests/LocalFileSystemTest.cc | 13 +++++-------- code/Samples/DDSCubeMap/DDSCubeMap.cc | 7 +++---- .../DDSTextureLoading/DDSTextureLoading.cc | 7 +++---- code/Samples/IOQueueSample/IOQueueSample.cc | 9 ++++----- code/Samples/ResourceStress/ResourceStress.cc | 7 +++---- 10 files changed, 40 insertions(+), 36 deletions(-) diff --git a/code/Modules/HttpFS/UnitTests/HTTPFileSystemTest.cc b/code/Modules/HttpFS/UnitTests/HTTPFileSystemTest.cc index 5b1f0d41e..eb532924b 100644 --- a/code/Modules/HttpFS/UnitTests/HTTPFileSystemTest.cc +++ b/code/Modules/HttpFS/UnitTests/HTTPFileSystemTest.cc @@ -16,9 +16,7 @@ TEST(HTTPFileSystemTest) { Core::Setup(); // setup an IO facade, and associate http: with the HTTPFileSystem - IOSetup ioSetup; - ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - IO::Setup(ioSetup); + IO::Setup(IOSetup.FileSystem("http", HTTPFileSystem::Create())); // asynchronously load the index.html file Ptr req = IO::LoadFile("http://www.flohofwoe.net/index.html"); diff --git a/code/Modules/IO/IO.cc b/code/Modules/IO/IO.cc index 6a7155cdf..a61f551cc 100644 --- a/code/Modules/IO/IO.cc +++ b/code/Modules/IO/IO.cc @@ -29,7 +29,7 @@ namespace { //------------------------------------------------------------------------------ void -IO::Setup(const IOSetup& setup) { +IO::Setup(const IODesc& desc) { o_assert(!IsValid()); state = Memory::New<_state>(); @@ -39,12 +39,12 @@ IO::Setup(const IOSetup& setup) { state->router.setup(ptrs); // setup initial assigns - for (const auto& assign : setup.Assigns) { + for (const auto& assign : desc.assigns) { SetAssign(assign.Key(), assign.Value()); } // setup initial filesystems - for (const auto& fs : setup.FileSystems) { + for (const auto& fs : desc.fileSystems) { RegisterFileSystem(fs.Key(), fs.Value()); } diff --git a/code/Modules/IO/IO.h b/code/Modules/IO/IO.h index d260112d9..93c3754a8 100644 --- a/code/Modules/IO/IO.h +++ b/code/Modules/IO/IO.h @@ -18,7 +18,7 @@ namespace Oryol { class IO { public: /// setup the IO module - static void Setup(const IOSetup& setup); + static void Setup(const IODesc& desc); /// discard the IO module static void Discard(); /// check if IO module is valid diff --git a/code/Modules/IO/IOTypes.h b/code/Modules/IO/IOTypes.h index 60657983a..ee54a8479 100644 --- a/code/Modules/IO/IOTypes.h +++ b/code/Modules/IO/IOTypes.h @@ -17,12 +17,25 @@ class FileSystemBase; @ingroup IO @brief configure the IO system */ -class IOSetup { +class IODesc { public: /// initial assigns - Map Assigns; + IODesc& Assign(const String& name, const String& path) { + assigns.Add(name, path); + return *this; + } + const Map Assigns() const { return assigns; } /// initial file systems - Map()>> FileSystems; + IODesc& FileSystem(const StringAtom& scheme, std::function()> fsCreatorFunc) { + fileSystems.Add(scheme, fsCreatorFunc); + return *this; + } + const Map()>>& FileSystems() const { + return fileSystems; + } + + Map assigns; + Map()>> fileSystems; }; //------------------------------------------------------------------------------ diff --git a/code/Modules/IO/UnitTests/IOFacadeTest.cc b/code/Modules/IO/UnitTests/IOFacadeTest.cc index ec2fe551c..09dcf8957 100644 --- a/code/Modules/IO/UnitTests/IOFacadeTest.cc +++ b/code/Modules/IO/UnitTests/IOFacadeTest.cc @@ -36,7 +36,7 @@ class TestFileSystem : public FileSystemBase { #if !ORYOL_EMSCRIPTEN && !ORYOL_UNITTESTS_HEADLESS TEST(IOFacadeTest) { Core::Setup(); - IO::Setup(IOSetup()); + IO::Setup(); // register our test file-system as URI scheme "test" IO::RegisterFileSystem("test", TestFileSystem::Creator()); diff --git a/code/Modules/LocalFS/UnitTests/LocalFileSystemTest.cc b/code/Modules/LocalFS/UnitTests/LocalFileSystemTest.cc index a7c7ede6c..6a2bf6c2c 100644 --- a/code/Modules/LocalFS/UnitTests/LocalFileSystemTest.cc +++ b/code/Modules/LocalFS/UnitTests/LocalFileSystemTest.cc @@ -24,11 +24,10 @@ wait(const Ptr& msg) { TEST(LocalFileSystemTest) { Core::Setup(); - IOSetup ioSetup; - ioSetup.Assigns.Add("bla:", "root:bla/"); - ioSetup.Assigns.Add("blub:", "cwd:blub/"); - ioSetup.FileSystems.Add("file", LocalFileSystem::Creator()); - IO::Setup(ioSetup); + IO::Setup(IOSetup() + .Assign("bla:", "root:bla/") + .Assign("blub:", "cwd:blub/") + .FileSystem("file", LocalFileSystem::Creator())); // check whether assigns have been set StringBuilder strBuilder; @@ -90,9 +89,7 @@ TEST(LocalFileSystemTest) { TEST(SameExtensionTest) { Core::Setup(); - IOSetup ioSetup; - ioSetup.FileSystems.Add("file", LocalFileSystem::Creator()); - IO::Setup(ioSetup); + IO::Setup(IOSetup().FileSystem("file", LocalFileSystem::Creator())); // write 2 files with the same extension const String helloJSON("Hello JSON! Bla bla bla bla"); diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index d7c01c08e..803beda50 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -37,10 +37,9 @@ AppState::Code DDSCubeMapApp::OnInit() { // setup IO system - IOSetup ioSetup; - ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); - IO::Setup(ioSetup); + IO::Setup(IODesc() + .FileSystem("http", HTTPFileSystem::Creator()) + .Assign("tex:", ORYOL_SAMPLE_URL)); // setup rendering system Gfx::Setup(GfxDesc().Width(600).Height(400).Title("Oryol DXT Cube Map Sample")); diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index f1cc9cd0f..372652355 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -39,10 +39,9 @@ AppState::Code DDSTextureLoadingApp::OnInit() { // setup IO system - IOSetup ioSetup; - ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); - IO::Setup(ioSetup); + IO::Setup(IODesc() + .FileSystem("http", HTTPFileSystem::Creator()) + .Assign("tex:", ORYOL_SAMPLE_URL)); // setup rendering system Gfx::Setup(GfxDesc().Width(600).Height(400).Title("Oryol DDS Loading Sample")); diff --git a/code/Samples/IOQueueSample/IOQueueSample.cc b/code/Samples/IOQueueSample/IOQueueSample.cc index 64c0e3eff..eaaefcf7a 100644 --- a/code/Samples/IOQueueSample/IOQueueSample.cc +++ b/code/Samples/IOQueueSample/IOQueueSample.cc @@ -27,11 +27,10 @@ IOQueueApp::OnInit() { // setup the IO module, attach a HTTP filesystem and setup // a path assign (aka path alias) - IOSetup ioSetup; - ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - ioSetup.Assigns.Add("res:", ORYOL_SAMPLE_URL); - IO::Setup(ioSetup); - + IO::Setup(IODesc() + .FileSystem("http", HTTPFileSystem::Creator()) + .Assign("res:", ORYOL_SAMPLE_URL)); + // now the important part: start loading files, and define // the success-callbacks as lambdas // diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index 6bff09e85..73027028c 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -46,10 +46,9 @@ OryolMain(ResourceStressApp); AppState::Code ResourceStressApp::OnInit() { // setup IO system - IOSetup ioSetup; - ioSetup.FileSystems.Add("http", HTTPFileSystem::Creator()); - ioSetup.Assigns.Add("tex:", ORYOL_SAMPLE_URL); - IO::Setup(ioSetup); + IO::Setup(IODesc() + .FileSystem("http", HTTPFileSystem::Creator()) + .Assign("tex:", ORYOL_SAMPLE_URL)); // setup Gfx system Gfx::Setup(GfxDesc() From 08d39eccda6eb876f98d38a0e32455dd17844a5a Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 23 Apr 2018 13:09:52 +0200 Subject: [PATCH 59/91] D3D11: fix compile errors --- code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc | 12 ++++++------ code/Modules/Gfx/private/d3d11/winDisplayMgr.cc | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc index f187c00a0..3e01bf332 100644 --- a/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc +++ b/code/Modules/Gfx/private/d3d11/d3d11DisplayMgr.cc @@ -53,7 +53,7 @@ d3d11DisplayMgr::DiscardDisplay() { void d3d11DisplayMgr::Present() { o_assert_dbg(this->dxgiSwapChain); - this->dxgiSwapChain->Present(this->gfxDesc.SwapInterval, 0); + this->dxgiSwapChain->Present(this->gfxDesc.swapInterval, 0); } //------------------------------------------------------------------------------ @@ -76,11 +76,11 @@ d3d11DisplayMgr::createDeviceAndSwapChain() { dxgiSwapChainDesc.BufferDesc.RefreshRate.Numerator = 60; dxgiSwapChainDesc.BufferDesc.RefreshRate.Denominator = 1; dxgiSwapChainDesc.OutputWindow = this->hwnd; - dxgiSwapChainDesc.Windowed = this->gfxDesc.Windowed; + dxgiSwapChainDesc.Windowed = this->gfxDesc.windowed; dxgiSwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; dxgiSwapChainDesc.BufferCount = 1; - dxgiSwapChainDesc.SampleDesc.Count = this->gfxDesc.SampleCount; - dxgiSwapChainDesc.SampleDesc.Quality = this->gfxDesc.SampleCount > 1 ? D3D11_STANDARD_MULTISAMPLE_PATTERN : 0; + dxgiSwapChainDesc.SampleDesc.Count = this->gfxDesc.sampleCount; + dxgiSwapChainDesc.SampleDesc.Quality = this->gfxDesc.sampleCount > 1 ? D3D11_STANDARD_MULTISAMPLE_PATTERN : 0; dxgiSwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; dxgiSwapChainDesc.Flags = 0; @@ -141,7 +141,7 @@ d3d11DisplayMgr::createDefaultRenderTarget(int width, int height) { o_assert_dbg(this->d3d11RenderTargetView); // setup depth/stencil buffer (if required) - if (PixelFormat::None != this->gfxDesc.DepthFormat) { + if (PixelFormat::None != this->gfxDesc.depthFormat) { D3D11_TEXTURE2D_DESC depthStencilDesc = { }; depthStencilDesc.Width = width; depthStencilDesc.Height = height; @@ -159,7 +159,7 @@ d3d11DisplayMgr::createDefaultRenderTarget(int width, int height) { D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc = { }; dsvDesc.Format = depthStencilDesc.Format; - if (this->gfxDesc.SampleCount > 1) { + if (this->gfxDesc.sampleCount > 1) { dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2DMS; } else { diff --git a/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc b/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc index d94b7240e..ee37ceb22 100644 --- a/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc +++ b/code/Modules/Gfx/private/d3d11/winDisplayMgr.cc @@ -73,7 +73,7 @@ winDisplayMgr::SetupDisplay(const GfxDesc& desc, const char* windowTitlePostfix) displayMgrBase::SetupDisplay(desc); - this->initDPI(desc.HighDPI); + this->initDPI(desc.highDPI); this->registerWindowClass(); this->createWindow(windowTitlePostfix); @@ -183,7 +183,7 @@ winDisplayMgr::createWindow(const char* titlePostFix) { // setup window style flags this->dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN; this->dwExStyle = WS_EX_APPWINDOW; - if (this->gfxDesc.Windowed) { + if (this->gfxDesc.windowed) { this->dwStyle |= WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SIZEBOX; this->dwExStyle |= WS_EX_WINDOWEDGE; } @@ -192,9 +192,9 @@ winDisplayMgr::createWindow(const char* titlePostFix) { } int width, height; - this->computeWindowSize(this->gfxDesc.Width, this->gfxDesc.Height, width, height); + this->computeWindowSize(this->gfxDesc.width, this->gfxDesc.height, width, height); - StringBuilder strBuilder(this->gfxDesc.Title); + StringBuilder strBuilder(this->gfxDesc.title); strBuilder.Append(titlePostFix); WideString title = StringConverter::UTF8ToWide(strBuilder.AsCStr()); From 5be0b69678be6c537a085ecd1a37852ed8acf644 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 23 Apr 2018 13:55:26 +0200 Subject: [PATCH 60/91] Gfx: Remove static New from VertexLayout and PassAction --- code/Modules/Gfx/GfxTypes.cc | 10 ---------- code/Modules/Gfx/GfxTypes.h | 10 ++-------- code/Samples/ArrayTexture/ArrayTexture.cc | 4 ++-- code/Samples/DDSCubeMap/DDSCubeMap.cc | 2 +- code/Samples/DDSTextureLoading/DDSTextureLoading.cc | 2 +- code/Samples/DebugText/DebugText.cc | 2 +- code/Samples/GPUParticles/GPUParticles.cc | 7 +++---- code/Samples/InfiniteSpheres/InfiniteSpheres.cc | 2 +- code/Samples/Instancing/Instancing.cc | 3 +-- .../MultipleRenderTarget/MultipleRenderTarget.cc | 4 ++-- code/Samples/NativeTexture/NativeTexture.cc | 2 +- code/Samples/RenderToCubeMap/RenderToCubeMap.cc | 4 ++-- code/Samples/ResourceStress/ResourceStress.cc | 2 +- code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc | 4 ++-- code/Samples/TestInput/TestInput.cc | 2 +- code/Samples/VertexTexture/VertexTexture.cc | 2 +- code/Samples/VolumeTexture/VolumeTexture.cc | 4 ++-- 17 files changed, 24 insertions(+), 42 deletions(-) diff --git a/code/Modules/Gfx/GfxTypes.cc b/code/Modules/Gfx/GfxTypes.cc index 69867e2d7..0e042dee8 100644 --- a/code/Modules/Gfx/GfxTypes.cc +++ b/code/Modules/Gfx/GfxTypes.cc @@ -374,11 +374,6 @@ PassAction::PassAction() { } } -//------------------------------------------------------------------------------ -PassAction PassAction::New() { - return PassAction(); -} - //------------------------------------------------------------------------------ PassAction& PassAction::Load() { this->Flags = LoadC0|LoadC1|LoadC2|LoadC3|LoadDS; @@ -506,11 +501,6 @@ VertexLayout::VertexLayout(std::initializer_list l) { } } -//------------------------------------------------------------------------------ -VertexLayout VertexLayout::New() { - return VertexLayout(); -} - //------------------------------------------------------------------------------ VertexLayout& VertexLayout::Clear() { this->StepFunction = VertexStepFunction::PerVertex; diff --git a/code/Modules/Gfx/GfxTypes.h b/code/Modules/Gfx/GfxTypes.h index fef93624d..5bd22a38c 100644 --- a/code/Modules/Gfx/GfxTypes.h +++ b/code/Modules/Gfx/GfxTypes.h @@ -586,9 +586,8 @@ class PassAction { }; uint16_t Flags = ClearC0|ClearC1|ClearC2|ClearC3|ClearDS; - /// return a default-initialized PassAction object - static PassAction New(); - + /// default constructor + PassAction(); /// clear all attachments PassAction& Clear(float r, float g, float b, float a, float depth=1.0f, uint8_t stencil=0); /// clear all attachments with color as glm::vec4 @@ -622,9 +621,6 @@ class PassAction { PassAction& LoadDepthStencil(); /// leave content of depth-stencil attachment undefined PassAction& DontCareDepthStencil(); - - /// default constructor - PassAction(); }; //------------------------------------------------------------------------------ @@ -700,8 +696,6 @@ class VertexLayout { VertexLayout(); /// initializer list constructor VertexLayout(std::initializer_list l); - /// return a new vertex layout object to start building via chained methods - static VertexLayout New(); /// clear the vertex layout, chainable VertexLayout& Clear(); /// return true if layout is empty diff --git a/code/Samples/ArrayTexture/ArrayTexture.cc b/code/Samples/ArrayTexture/ArrayTexture.cc index fb56b95f5..df0a7d280 100644 --- a/code/Samples/ArrayTexture/ArrayTexture.cc +++ b/code/Samples/ArrayTexture/ArrayTexture.cc @@ -112,7 +112,7 @@ ArrayTextureApp::OnRunning() { auto vsParams = this->computeShaderParams(); // render texture cube - Gfx::BeginPass(PassAction::New().Clear(0.2f, 0.2f, 0.3f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.2f, 0.2f, 0.3f, 1.0f)); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(vsParams); Gfx::Draw(this->primGroup); @@ -162,7 +162,7 @@ ArrayTextureApp::notSupported() { #endif uint8_t x = uint8_t((Gfx::DisplayAttrs().Width/16 - std::strlen(msg))/2); uint8_t y = uint8_t((Gfx::DisplayAttrs().Height/16)/2); - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); Dbg::Print(msg); diff --git a/code/Samples/DDSCubeMap/DDSCubeMap.cc b/code/Samples/DDSCubeMap/DDSCubeMap.cc index 803beda50..cc2383cc6 100644 --- a/code/Samples/DDSCubeMap/DDSCubeMap.cc +++ b/code/Samples/DDSCubeMap/DDSCubeMap.cc @@ -90,7 +90,7 @@ DDSCubeMapApp::OnRunning() { this->angleY += 0.02f; this->angleX += 0.01f; - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.5f, 0.5f, 1.0f)); this->vsParams.mvp = this->computeMVP(glm::vec3(0.0f, 0.0f, 0.0f)); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->vsParams); diff --git a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc index 372652355..3d19d9cda 100644 --- a/code/Samples/DDSTextureLoading/DDSTextureLoading.cc +++ b/code/Samples/DDSTextureLoading/DDSTextureLoading.cc @@ -102,7 +102,7 @@ DDSTextureLoadingApp::OnRunning() { this->distVal += 0.01f; - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.5f, 0.5f, 1.0f)); // only render when texture is loaded (until texture placeholder are implemented) static const glm::vec3 pos[NumTextures] = { diff --git a/code/Samples/DebugText/DebugText.cc b/code/Samples/DebugText/DebugText.cc index 48400b2f9..f04eb1aff 100644 --- a/code/Samples/DebugText/DebugText.cc +++ b/code/Samples/DebugText/DebugText.cc @@ -51,7 +51,7 @@ DebugTextApp::OnRunning() { this->moveChars(); this->drawText(); - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.5f, 0.5f, 1.0f)); Dbg::DrawTextBuffer(); Gfx::EndPass(); Gfx::CommitFrame(); diff --git a/code/Samples/GPUParticles/GPUParticles.cc b/code/Samples/GPUParticles/GPUParticles.cc index e0f3d00fa..8d4f97e8b 100644 --- a/code/Samples/GPUParticles/GPUParticles.cc +++ b/code/Samples/GPUParticles/GPUParticles.cc @@ -138,8 +138,7 @@ GPUParticlesApp::OnInit() { // ...and the pipeline object for instanced particle rendering this->drawParticles.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(DrawShader::Desc())) - .Layout(1, VertexLayout::New() - .EnableInstancing() + .Layout(1, VertexLayout().EnableInstancing() .Add("in_particleId", VertexFormat::Float)) .CullFaceEnabled(true) .DepthWriteEnabled(true) @@ -158,7 +157,7 @@ GPUParticlesApp::OnInit() { // 'draw' the initial particle state (positions at origin, pseudo-random velocity) for (int i = 0; i < 2; i++) { - Gfx::BeginPass(this->particleBuffer[0].pass, PassAction::New().DontCare()); + Gfx::BeginPass(this->particleBuffer[0].pass, PassAction().DontCare()); Gfx::ApplyDrawState(this->initParticles); Gfx::ApplyUniformBlock(this->initFSParams); Gfx::Draw(0, 4); @@ -194,7 +193,7 @@ GPUParticlesApp::OnRunning() { const int scissorHeight = (this->curNumParticles / NumParticlesX) + 1; this->updParticles.FSTexture[UpdateShader::prevState] = this->particleBuffer[readIndex].texture; this->updFSParams.numParticles = (float) this->curNumParticles; - Gfx::BeginPass(this->particleBuffer[drawIndex].pass, PassAction::New().DontCare()); + Gfx::BeginPass(this->particleBuffer[drawIndex].pass, PassAction().DontCare()); Gfx::ApplyScissorRect(0, 0, ParticleBufferWidth, scissorHeight, Gfx::QueryFeature(GfxFeature::OriginTopLeft)); Gfx::ApplyDrawState(this->updParticles); Gfx::ApplyUniformBlock(this->updFSParams); diff --git a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc index db23657ff..e61043e66 100644 --- a/code/Samples/InfiniteSpheres/InfiniteSpheres.cc +++ b/code/Samples/InfiniteSpheres/InfiniteSpheres.cc @@ -29,7 +29,7 @@ class InfiniteSpheresApp : public App { Id pass; } passInfo[2]; Shader::vsParams vsParams; - PassAction passAction = PassAction::New().Clear(0.25f, 0.25f, 0.25f, 1.0f); + PassAction passAction = PassAction().Clear(0.25f, 0.25f, 0.25f, 1.0f); glm::mat4 view; glm::mat4 offscreenProj; glm::mat4 displayProj; diff --git a/code/Samples/Instancing/Instancing.cc b/code/Samples/Instancing/Instancing.cc index d6fc77313..528a2ea20 100644 --- a/code/Samples/Instancing/Instancing.cc +++ b/code/Samples/Instancing/Instancing.cc @@ -76,8 +76,7 @@ InstancingApp::OnInit() { // setup pipeline state for instanced rendering this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(shape.PipelineDesc) .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(1, VertexLayout::New() - .EnableInstancing() + .Layout(1, VertexLayout().EnableInstancing() .Add("in_instpos", VertexFormat::Float4)) .CullFaceEnabled(true) .DepthWriteEnabled(true) diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 0d3fc903e..8d2e42a47 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -184,7 +184,7 @@ MultipleRenderTargetApp::OnRunning() { Gfx::EndPass(); // debug-visualize the 3 offscreen render targets at the bottom of the screen - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.5f, 0.5f, 1.0f)); Gfx::ApplyViewPort(0, 0, 200, 200); Gfx::ApplyDrawState(this->rt0DrawState); Gfx::Draw(0, 4); @@ -234,7 +234,7 @@ MultipleRenderTargetApp::notSupported() { #endif uint8_t x = uint8_t((Gfx::DisplayAttrs().Width/16 - std::strlen(msg))/2); uint8_t y = uint8_t((Gfx::DisplayAttrs().Height/16)/2); - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); Dbg::Print(msg); diff --git a/code/Samples/NativeTexture/NativeTexture.cc b/code/Samples/NativeTexture/NativeTexture.cc index b1e0cb129..e96a53d65 100644 --- a/code/Samples/NativeTexture/NativeTexture.cc +++ b/code/Samples/NativeTexture/NativeTexture.cc @@ -182,7 +182,7 @@ NativeTextureApp::notSupported() { const char* msg = "This demo needs GL\n"; int x = (Gfx::DisplayAttrs().Width/16 - int(std::strlen(msg)))/2; int y = (Gfx::DisplayAttrs().Height/16)/2; - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(uint8_t(x), uint8_t(y)); Dbg::Print(msg); diff --git a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc index 860d9ae7b..0a75914c9 100644 --- a/code/Samples/RenderToCubeMap/RenderToCubeMap.cc +++ b/code/Samples/RenderToCubeMap/RenderToCubeMap.cc @@ -175,14 +175,14 @@ RenderToCubeMapApp::OnRunning() { { glm::vec3(0.0f, 0.0f, -1.0f), glm::vec3(0.0f, -1.0f, 0.0f) }, }; for (int i = 0; i < NumFaces; i++) { - Gfx::BeginPass(this->passes[i], PassAction::New().Clear(ClearColor)); + Gfx::BeginPass(this->passes[i], PassAction().Clear(ClearColor)); const glm::mat4 view = glm::lookAt(glm::vec3(0.0f), centerAndUp[i][0], centerAndUp[i][1]); this->drawEnvShapes(this->offscreenShapesPipeline, glm::vec3(0.0f), view, this->offscreenProj); Gfx::EndPass(); } // render the main view - Gfx::BeginPass(PassAction::New().Clear(ClearColor)); + Gfx::BeginPass(PassAction().Clear(ClearColor)); // draw the environment shapes const glm::vec3 eyePos = glm::euclidean(this->polar) * distance; diff --git a/code/Samples/ResourceStress/ResourceStress.cc b/code/Samples/ResourceStress/ResourceStress.cc index 73027028c..fb71b83be 100644 --- a/code/Samples/ResourceStress/ResourceStress.cc +++ b/code/Samples/ResourceStress/ResourceStress.cc @@ -79,7 +79,7 @@ ResourceStressApp::OnRunning() { this->updateObjects(); this->createObjects(); - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.5f, 0.5f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.5f, 0.5f, 1.0f)); for (const auto& obj : this->objects) { // only render objects that have successfully loaded (technically // the check is not necessary since rendering for non-valid resources diff --git a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc index 3946c130f..cf183181e 100644 --- a/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc +++ b/code/Samples/SimpleRenderTarget/SimpleRenderTarget.cc @@ -115,7 +115,7 @@ SimpleRenderTargetApp::OnRunning() { this->angleX += 0.02f; // render donut to offscreen render target - Gfx::BeginPass(this->renderPass, PassAction::New().Clear(0.25f, 0.25f, 0.25f, 1.0f)); + Gfx::BeginPass(this->renderPass, PassAction().Clear(0.25f, 0.25f, 0.25f, 1.0f)); Gfx::ApplyDrawState(this->offscreenDrawState); this->offscreenParams.mvp = this->computeMVP(this->offscreenProj, this->angleX, this->angleY, glm::vec3(0.0f, 0.0f, -3.0f)); Gfx::ApplyUniformBlock(this->offscreenParams); @@ -123,7 +123,7 @@ SimpleRenderTargetApp::OnRunning() { Gfx::EndPass(); // render sphere to display, with offscreen render target as texture - Gfx::BeginPass(PassAction::New().Clear(0.25f, 0.45f, 0.65f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.25f, 0.45f, 0.65f, 1.0f)); Gfx::ApplyDrawState(this->displayDrawState); this->displayVSParams.mvp = this->computeMVP(this->displayProj, -this->angleX * 0.25f, this->angleY * 0.25f, glm::vec3(0.0f, 0.0f, -1.5f)); Gfx::ApplyUniformBlock(this->displayVSParams); diff --git a/code/Samples/TestInput/TestInput.cc b/code/Samples/TestInput/TestInput.cc index 848d94ce8..a8dceeeb5 100644 --- a/code/Samples/TestInput/TestInput.cc +++ b/code/Samples/TestInput/TestInput.cc @@ -490,7 +490,7 @@ TestInputApp::OnRunning() { this->updateView(); // draw frame - Gfx::BeginPass(PassAction::New().Clear(this->getClearColor())); + Gfx::BeginPass(PassAction().Clear(this->getClearColor())); this->drawCube(); Dbg::DrawTextBuffer(); Gfx::EndPass(); diff --git a/code/Samples/VertexTexture/VertexTexture.cc b/code/Samples/VertexTexture/VertexTexture.cc index 75f65e78e..950c8a929 100644 --- a/code/Samples/VertexTexture/VertexTexture.cc +++ b/code/Samples/VertexTexture/VertexTexture.cc @@ -98,7 +98,7 @@ VertexTextureApp::OnRunning() { this->planeVSParams.mvp = this->computeMVP(glm::vec2(0.0f, 0.0f)); // render plasma to offscreen render target - Gfx::BeginPass(this->plasmaRenderPass, PassAction::New().DontCare()); + Gfx::BeginPass(this->plasmaRenderPass, PassAction().DontCare()); Gfx::ApplyDrawState(this->plasmaDrawState); Gfx::ApplyUniformBlock(this->plasmaFSParams); Gfx::Draw(0, 4); diff --git a/code/Samples/VolumeTexture/VolumeTexture.cc b/code/Samples/VolumeTexture/VolumeTexture.cc index 34e618423..1c52057a7 100644 --- a/code/Samples/VolumeTexture/VolumeTexture.cc +++ b/code/Samples/VolumeTexture/VolumeTexture.cc @@ -105,7 +105,7 @@ VolumeTextureApp::OnRunning() { this->computeShaderParams(); // render the rotating cube - Gfx::BeginPass(PassAction::New().Clear(0.25f, 0.25f, 0.25f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.25f, 0.25f, 0.25f, 1.0f)); Gfx::ApplyDrawState(this->drawState); Gfx::ApplyUniformBlock(this->vsParams); Gfx::Draw(this->primGroup); @@ -149,7 +149,7 @@ VolumeTextureApp::notSupported() { #endif uint8_t x = uint8_t((Gfx::DisplayAttrs().Width/16 - std::strlen(msg))/2); uint8_t y = uint8_t((Gfx::DisplayAttrs().Height/16)/2); - Gfx::BeginPass(PassAction::New().Clear(0.5f, 0.0f, 0.0f, 1.0f)); + Gfx::BeginPass(PassAction().Clear(0.5f, 0.0f, 0.0f, 1.0f)); Dbg::TextScale(2.0f, 2.0f); Dbg::CursorPos(x, y); Dbg::Print(msg); From 21e627c8f83024c86b525722f48a3c25085f7c8e Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 23 Apr 2018 14:38:11 +0200 Subject: [PATCH 61/91] BufferTest => MemoryBufferTest --- code/Modules/Core/CMakeLists.txt | 2 +- .../{BufferTest.cc => MemoryBufferTest.cc} | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) rename code/Modules/Core/UnitTests/{BufferTest.cc => MemoryBufferTest.cc} (93%) diff --git a/code/Modules/Core/CMakeLists.txt b/code/Modules/Core/CMakeLists.txt index cfb9351f1..7c5655866 100644 --- a/code/Modules/Core/CMakeLists.txt +++ b/code/Modules/Core/CMakeLists.txt @@ -118,7 +118,7 @@ fips_begin_unittest(Core) SliceTest.cc InlineArrayTest.cc StackTraceTest.cc - BufferTest.cc + MemoryBufferTest.cc ArgsTest.cc ArrayTest.cc StaticArrayTest.cc diff --git a/code/Modules/Core/UnitTests/BufferTest.cc b/code/Modules/Core/UnitTests/MemoryBufferTest.cc similarity index 93% rename from code/Modules/Core/UnitTests/BufferTest.cc rename to code/Modules/Core/UnitTests/MemoryBufferTest.cc index 46f6c585f..b020c002c 100644 --- a/code/Modules/Core/UnitTests/BufferTest.cc +++ b/code/Modules/Core/UnitTests/MemoryBufferTest.cc @@ -1,16 +1,16 @@ //------------------------------------------------------------------------------ -// BufferTest.cc +// MemoryBufferTest.cc //------------------------------------------------------------------------------ #include "Pre.h" #include "UnitTest++/src/UnitTest++.h" -#include "Core/Containers/Buffer.h" +#include "Core/Containers/MemoryBuffer.h" #include using namespace Oryol; -TEST(BufferTest) { +TEST(MemoryBufferTest) { - Buffer buf0; + MemoryBuffer buf0; CHECK(buf0.Size() == 0); CHECK(buf0.Empty()); CHECK(buf0.Capacity() == 0); @@ -42,7 +42,7 @@ TEST(BufferTest) { CHECK(i+1 == buf0.Data()[i+sizeof(bla)]); } - Buffer buf1(std::move(buf0)); + MemoryBuffer buf1(std::move(buf0)); CHECK(buf1.Size() == 14); CHECK(!buf1.Empty()); CHECK(buf1.Capacity() == 14); @@ -54,7 +54,7 @@ TEST(BufferTest) { CHECK(buf0.Empty()); CHECK(buf0.Capacity() == 0); - Buffer buf2; + MemoryBuffer buf2; buf2 = std::move(buf1); CHECK(buf2.Size() == 14); CHECK(!buf2.Empty()); @@ -86,7 +86,7 @@ TEST(BufferTest) { CHECK(buf2.Capacity() == 21); CHECK(buf2.Spare() == 21); - Buffer buf3; + MemoryBuffer buf3; const char* str = "Hello wonderful world!"; buf3.Add((const uint8_t*)str, int(std::strlen(str))+1); CHECK(0 == buf3.Remove(0, 0)); @@ -106,7 +106,7 @@ TEST(BufferTest) { CHECK(buf3.Size() == 5); CHECK(std::strcmp((const char*)buf3.Data(), "worl") == 0); - Buffer buf4; + MemoryBuffer buf4; buf4.Add((const uint8_t*)str, int(std::strlen(str))+1); CHECK(6 == buf4.Remove(0, 6)); CHECK(std::strcmp((const char*)buf4.Data(), "wonderful world!") == 0); From 6050edf3a8ac747f9b48cd011271512461f827aa Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 24 Apr 2018 18:14:34 +0200 Subject: [PATCH 62/91] Fix a header dependency problem in IOTypes.h/.cc --- code/Modules/IO/IOTypes.cc | 23 +++++++++++++++++++++++ code/Modules/IO/IOTypes.h | 16 ++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/code/Modules/IO/IOTypes.cc b/code/Modules/IO/IOTypes.cc index f74d6c749..1156ce96a 100644 --- a/code/Modules/IO/IOTypes.cc +++ b/code/Modules/IO/IOTypes.cc @@ -4,11 +4,34 @@ #include "Pre.h" #include "IOTypes.h" #include "IO/IO.h" +#include "IO/FileSystemBase.h" namespace Oryol { #define _TOSTRING(c) case c: return #c +//------------------------------------------------------------------------------ +IODesc& IODesc::Assign(const String& name, const String& path) { + assigns.Add(name, path); + return *this; +} + +//------------------------------------------------------------------------------ +const Map IODesc::Assigns() const { + return assigns; +} + +//------------------------------------------------------------------------------ +IODesc& IODesc::FileSystem(const StringAtom& scheme, std::function()> fsCreatorFunc) { + fileSystems.Add(scheme, fsCreatorFunc); + return *this; +} + +//------------------------------------------------------------------------------ +const Map()>>& IODesc::FileSystems() const { + return fileSystems; +} + //------------------------------------------------------------------------------ const char* IOStatus::ToString(Code c) { diff --git a/code/Modules/IO/IOTypes.h b/code/Modules/IO/IOTypes.h index ee54a8479..cfeb5e10b 100644 --- a/code/Modules/IO/IOTypes.h +++ b/code/Modules/IO/IOTypes.h @@ -20,19 +20,11 @@ class FileSystemBase; class IODesc { public: /// initial assigns - IODesc& Assign(const String& name, const String& path) { - assigns.Add(name, path); - return *this; - } - const Map Assigns() const { return assigns; } + IODesc& Assign(const String& name, const String& path); + const Map Assigns() const; /// initial file systems - IODesc& FileSystem(const StringAtom& scheme, std::function()> fsCreatorFunc) { - fileSystems.Add(scheme, fsCreatorFunc); - return *this; - } - const Map()>>& FileSystems() const { - return fileSystems; - } + IODesc& FileSystem(const StringAtom& scheme, std::function()> fsCreatorFunc); + const Map()>>& FileSystems() const; Map assigns; Map()>> fileSystems; From b412fac636c25592ee684869e407b205b0ec36a2 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 24 Apr 2018 18:14:57 +0200 Subject: [PATCH 63/91] Remove an unnecessary include --- code/Modules/Assets/Gfx/MeshBuilder.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/code/Modules/Assets/Gfx/MeshBuilder.cc b/code/Modules/Assets/Gfx/MeshBuilder.cc index 9cd0a9f51..6f6cb6443 100644 --- a/code/Modules/Assets/Gfx/MeshBuilder.cc +++ b/code/Modules/Assets/Gfx/MeshBuilder.cc @@ -4,7 +4,6 @@ #include "Pre.h" #include "MeshBuilder.h" #include "Core/Assertion.h" -#include "Gfx/Gfx.h" namespace Oryol { From 57ac2e8b71ca587b332ef5460997c64642a3055d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 24 Apr 2018 18:15:16 +0200 Subject: [PATCH 64/91] Add a FullscreenQuadBuilder class in Assets module --- code/Modules/Assets/CMakeLists.txt | 1 + .../Assets/Gfx/FullscreenQuadBuilder.cc | 41 ++++++++++++++++ .../Assets/Gfx/FullscreenQuadBuilder.h | 49 +++++++++++++++++++ code/Samples/FullscreenQuad/CMakeLists.txt | 2 +- code/Samples/FullscreenQuad/FullscreenQuad.cc | 13 ++--- code/Samples/FullscreenQuad/shaders.glsl | 7 +-- 6 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 code/Modules/Assets/Gfx/FullscreenQuadBuilder.cc create mode 100644 code/Modules/Assets/Gfx/FullscreenQuadBuilder.h diff --git a/code/Modules/Assets/CMakeLists.txt b/code/Modules/Assets/CMakeLists.txt index 5dbeffb98..4ff28e953 100644 --- a/code/Modules/Assets/CMakeLists.txt +++ b/code/Modules/Assets/CMakeLists.txt @@ -2,6 +2,7 @@ fips_begin_module(Assets) fips_vs_warning_level(3) fips_dir(Gfx) fips_files( + FullscreenQuadBuilder.cc FullscreenQuadBuilder.h MeshBuilder.cc MeshBuilder.h ShapeBuilder.cc ShapeBuilder.h VertexWriter.cc VertexWriter.h diff --git a/code/Modules/Assets/Gfx/FullscreenQuadBuilder.cc b/code/Modules/Assets/Gfx/FullscreenQuadBuilder.cc new file mode 100644 index 000000000..d4f2be9b8 --- /dev/null +++ b/code/Modules/Assets/Gfx/FullscreenQuadBuilder.cc @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// FullscreenQuadBuilder.cc +//------------------------------------------------------------------------------ +#include "Pre.h" +#include "FullscreenQuadBuilder.h" + +namespace Oryol { + +static const float vertsNoFlip[20] = { + -1.0f, +1.0f, 0.0f, 0.0f, 1.0f, + +1.0f, +1.0f, 0.0f, 1.0f, 1.0f, + -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, + +1.0f, -1.0f, 0.0f, 1.0f, 0.0f +}; + +static const float vertsFlip[20] = { + -1.0f, +1.0f, 0.0f, 0.0f, 0.0f, + +1.0f, +1.0f, 0.0f, 1.0f, 0.0f, + -1.0f, -1.0f, 0.0f, 0.0f, 1.0f, + +1.0f, -1.0f, 0.0f, 1.0f, 1.0f +}; + +static_assert(sizeof(vertsNoFlip) == sizeof(vertsFlip), "FullscreenQuadBuilder"); + +FullscreenQuadBuilder::Result +FullscreenQuadBuilder::Build() { + Result res; + res.VertexBufferDesc + .Type(BufferType::VertexBuffer) + .Size(sizeof(vertsNoFlip)) + .Content(this->flipV ? vertsFlip : vertsNoFlip); + res.PipelineDesc + .Layout(0, { + { "position", VertexFormat::Float3 }, + { "texcoord0", VertexFormat::Float2 } + }) + .PrimitiveType(PrimitiveType::TriangleStrip); + return res; +} + +} // namespace Oryol diff --git a/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h b/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h new file mode 100644 index 000000000..09c061477 --- /dev/null +++ b/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h @@ -0,0 +1,49 @@ +#pragma once +//------------------------------------------------------------------------------ +/** + @class Oryol::FullscreenQuadBuilder + @ingroup Assets + @brief helper class to build a fullscreen quad mesh. + + FIXME: probably makes sense to rewrite this to a single triangle + + Positions (vertex attr name: "position") + 0: -1.0,+1.0,0.0 + 1: +1.0,+1.0,0.0 + 2: -1.0,-1.0,0.0 + 3: +1.0,-1.0,0.0 + + UV Coords (vertex attr name: "texcoord0", FlipV == false: + 0: 0.0, 1.0 + 1: 1.0, 1.0 + 2: 0.0, 0.0 + 3: 1.0, 0.0 + + UV Coords, FlipV == true: + 0: 0.0, 0.0 + 1: 1.0, 0.0 + 2: 0.0, 1.0 + 3: 1.0, 1.0 +*/ +#include "Gfx/GfxTypes.h" + +namespace Oryol { + +class FullscreenQuadBuilder { +public: + struct Result { + BufferDesc VertexBufferDesc; + PipelineDesc PipelineDesc; // blueprint pipeline desc + int NumElements = 4; // rendered as triangle strip + }; + bool flipV = false; + + // texture v coord is (1.0 - y) + FullscreenQuadBuilder& FlipV(bool b) { flipV = b; return *this; } + bool FlipV() const { return flipV; } + + // populate and return Result object + Result Build(); +}; + +} // namespace Oryol diff --git a/code/Samples/FullscreenQuad/CMakeLists.txt b/code/Samples/FullscreenQuad/CMakeLists.txt index 5cd3f52e3..94e7895c3 100644 --- a/code/Samples/FullscreenQuad/CMakeLists.txt +++ b/code/Samples/FullscreenQuad/CMakeLists.txt @@ -2,6 +2,6 @@ fips_begin_app(FullscreenQuad windowed) fips_vs_warning_level(3) fips_files(FullscreenQuad.cc) oryol_shader(shaders.glsl) - fips_deps(Gfx) + fips_deps(Gfx Assets) oryol_add_web_sample(FullscreenQuad "Fullscreen quad with some distance field ray-marching" "emscripten" FullscreenQuad.jpg "FullscreenQuad/FullscreenQuad.cc") fips_end_app() diff --git a/code/Samples/FullscreenQuad/FullscreenQuad.cc b/code/Samples/FullscreenQuad/FullscreenQuad.cc index 785f47670..22b92bf96 100644 --- a/code/Samples/FullscreenQuad/FullscreenQuad.cc +++ b/code/Samples/FullscreenQuad/FullscreenQuad.cc @@ -4,6 +4,7 @@ #include "Pre.h" #include "Core/Main.h" #include "Gfx/Gfx.h" +#include "Assets/Gfx/FullscreenQuadBuilder.h" #include "shaders.h" using namespace Oryol; @@ -23,14 +24,10 @@ OryolMain(FullscreenQuadApp); AppState::Code FullscreenQuadApp::OnInit() { Gfx::Setup(GfxDesc().Width(600).Height(600).Title("Oryol Fullscreen Quad Sample")); - const float quadVertices[] = { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f }; - this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(BufferDesc() - .Size(sizeof(quadVertices)) - .Content(quadVertices)); - this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc() - .Shader(Gfx::CreateShader(Shader::Desc())) - .Layout(0, { { "in_pos", VertexFormat::Float2 } }) - .PrimitiveType(PrimitiveType::TriangleStrip)); + auto fsq = FullscreenQuadBuilder().Build(); + this->drawState.VertexBuffers[0] = Gfx::CreateBuffer(fsq.VertexBufferDesc); + this->drawState.Pipeline = Gfx::CreatePipeline(PipelineDesc(fsq.PipelineDesc) + .Shader(Gfx::CreateShader(Shader::Desc()))); this->params.time = 0.0f; return App::OnInit(); } diff --git a/code/Samples/FullscreenQuad/shaders.glsl b/code/Samples/FullscreenQuad/shaders.glsl index 1afee8a71..cab56de5e 100644 --- a/code/Samples/FullscreenQuad/shaders.glsl +++ b/code/Samples/FullscreenQuad/shaders.glsl @@ -31,7 +31,8 @@ uniform params { float time; }; -in vec2 in_pos; +in vec4 position; +in vec2 texcoord0; out vec2 uv; out vec3 eye; out vec3 up; @@ -40,8 +41,8 @@ out vec3 fwd; out vec4 sinTime; void main() { - gl_Position = vec4(in_pos * 2.0 - 1.0, 0.5, 1.0); - uv = in_pos * 2.0 - 1.0; + gl_Position = position; + uv = texcoord0 * 2.0 - 1.0; vec3 center = vec3(0.0, 0.0, 0.0); eye = eyePos(time, center); lookatResult lookatVecs = lookat(eye, center, vec3(0.0, 1.0, 0.0)); From 98d7216ece028da0d1f74f149be560b92b3cfe51 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 24 Apr 2018 19:48:34 +0200 Subject: [PATCH 65/91] Gfx: Remove PassAttrs method --- code/Modules/Gfx/Gfx.cc | 9 ------- code/Modules/Gfx/Gfx.h | 54 ++++++++++++++++++++--------------------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/code/Modules/Gfx/Gfx.cc b/code/Modules/Gfx/Gfx.cc index 7db82fd74..ebf7d8c82 100644 --- a/code/Modules/Gfx/Gfx.cc +++ b/code/Modules/Gfx/Gfx.cc @@ -88,15 +88,6 @@ Gfx::DisplayAttrs() { return state->backend.displayManager.GetDisplayAttrs(); } -//------------------------------------------------------------------------------ -const DisplayAttrs& -Gfx::PassAttrs() { - o_assert_dbg(IsValid()); - // FIXME - return DisplayAttrs(); - //return state->backend.renderer.renderPassAttrs(); -} - //------------------------------------------------------------------------------ const GfxFrameInfo& Gfx::FrameInfo() { diff --git a/code/Modules/Gfx/Gfx.h b/code/Modules/Gfx/Gfx.h index bc4734436..ac1869c29 100644 --- a/code/Modules/Gfx/Gfx.h +++ b/code/Modules/Gfx/Gfx.h @@ -17,7 +17,7 @@ namespace Oryol { class Gfx { -public: +public: /// setup Gfx module static void Setup(const GfxDesc& desc); /// discard Gfx module @@ -37,8 +37,6 @@ class Gfx { static const GfxDesc& Desc(); /// get the default frame buffer attributes static const struct DisplayAttrs& DisplayAttrs(); - /// get the current render pass attributes (default or offscreen) - static const struct DisplayAttrs& PassAttrs(); /// get frame-render stats, gets reset in CommitFrame()! static const GfxFrameInfo& FrameInfo(); @@ -47,8 +45,8 @@ class Gfx { /// push explicit resource label on label stack static void PushResourceLabel(ResourceLabel label); /// pop resource label from label stack - static ResourceLabel PopResourceLabel(); - + static ResourceLabel PopResourceLabel(); + /// create a buffer object without associated data static Id CreateBuffer(const BufferDesc& desc); /// create a texture object without associated data @@ -58,32 +56,32 @@ class Gfx { /// create a pipeline object static Id CreatePipeline(const PipelineDesc& desc); /// create a render-pass object - static Id CreatePass(const PassDesc& desc); - - /// lookup a resource Id by Locator - static Id LookupResource(const Locator& locator); - /// destroy one or several resources by matching label - static void DestroyResources(ResourceLabel label); - - /// allocate a buffer resource id (async resource creation) - static Id AllocBuffer(const Locator& loc); - /// initialize a buffer (async resource creation) - static void InitBuffer(const Id& id, const BufferDesc& desc); - /// set allocated buffer to failed resource state (async resource creation) - static void FailBuffer(const Id& id); - /// allocate a texture resource id (async resource creation) - static Id AllocTexture(const Locator& loc); - /// initialize a texture (async resource creation) - static void InitTexture(const Id& id, const TextureDesc& desc); - /// set allocated texture to failed resource state (async resource creation) - static void FailTexture(const Id& id); - + static Id CreatePass(const PassDesc& desc); + + /// lookup a resource Id by Locator + static Id LookupResource(const Locator& locator); + /// destroy one or several resources by matching label + static void DestroyResources(ResourceLabel label); + + /// allocate a buffer resource id (async resource creation) + static Id AllocBuffer(const Locator& loc); + /// initialize a buffer (async resource creation) + static void InitBuffer(const Id& id, const BufferDesc& desc); + /// set allocated buffer to failed resource state (async resource creation) + static void FailBuffer(const Id& id); + /// allocate a texture resource id (async resource creation) + static Id AllocTexture(const Locator& loc); + /// initialize a texture (async resource creation) + static void InitTexture(const Id& id, const TextureDesc& desc); + /// set allocated texture to failed resource state (async resource creation) + static void FailTexture(const Id& id); + /// test if an optional feature is supported static bool QueryFeature(GfxFeature::Code feat); /// get the supported shader language - static ShaderLang::Code QueryShaderLang(); - /// query the resource state of a resource - static ResourceState::Code QueryResourceState(const Id& id); + static ShaderLang::Code QueryShaderLang(); + /// query the resource state of a resource + static ResourceState::Code QueryResourceState(const Id& id); /// begin rendering to default render pass with override clear values static void BeginPass(const PassAction& action=PassAction()); From ee1af4af2b4ad4d4d8f43995d4be28d4ad9887f8 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 24 Apr 2018 19:49:15 +0200 Subject: [PATCH 66/91] Dbg: add width/height to Dbg::DrawTextBuffer() --- code/Modules/Dbg/Dbg.cc | 4 ++-- code/Modules/Dbg/Dbg.h | 4 ++-- code/Modules/Dbg/private/debugTextRenderer.cc | 12 +++++++++--- code/Modules/Dbg/private/debugTextRenderer.h | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code/Modules/Dbg/Dbg.cc b/code/Modules/Dbg/Dbg.cc index 5e84cb4f5..daf55487d 100644 --- a/code/Modules/Dbg/Dbg.cc +++ b/code/Modules/Dbg/Dbg.cc @@ -88,10 +88,10 @@ Dbg::TextColor(const float (&c)[4]) { } //------------------------------------------------------------------------------ void -Dbg::DrawTextBuffer() { +Dbg::DrawTextBuffer(int width, int height) { o_trace_scoped(Dbg_DrawTextBuffer); o_assert_dbg(IsValid()); - state->debugTextRenderer.drawTextBuffer(); + state->debugTextRenderer.drawTextBuffer(width, height); } } // namespace Oryol diff --git a/code/Modules/Dbg/Dbg.h b/code/Modules/Dbg/Dbg.h index bf1804925..245e7afaf 100644 --- a/code/Modules/Dbg/Dbg.h +++ b/code/Modules/Dbg/Dbg.h @@ -34,8 +34,8 @@ class Dbg { static void TextColor(float r, float g, float b, float a); /// add a color tag as float[4] array static void TextColor(const float (&c)[4]); - /// draw the debug text buffer (call one per frame) - static void DrawTextBuffer(); + /// draw the debug text buffer (call once per frame) + static void DrawTextBuffer(int width=0, int height=0); }; } // namespace Oryol \ No newline at end of file diff --git a/code/Modules/Dbg/private/debugTextRenderer.cc b/code/Modules/Dbg/private/debugTextRenderer.cc index 90bfac460..4fc419483 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.cc +++ b/code/Modules/Dbg/private/debugTextRenderer.cc @@ -102,7 +102,7 @@ debugTextRenderer::textColor(float r, float g, float b, float a) { //------------------------------------------------------------------------------ void -debugTextRenderer::drawTextBuffer() { +debugTextRenderer::drawTextBuffer(int width, int height) { // get the currently accumulated string String str; @@ -121,11 +121,17 @@ debugTextRenderer::drawTextBuffer() { // FIXME: this would be wrong if rendering to a render target which // isn't the same size as the back buffer, there's no method yet // to query the current render target width/height + if (0 == width) { + width = Gfx::DisplayAttrs().Width; + } + if (0 == height) { + height = Gfx::DisplayAttrs().Height; + } Gfx::UpdateBuffer(this->drawState.VertexBuffers[0], this->vertexData, this->curNumVertices * this->vertexLayout.ByteSize()); Gfx::ApplyDrawState(this->drawState); DbgTextShader::vsParams vsParams; - const float w = 8.0f / Gfx::PassAttrs().Width; // glyph is 8 pixels wide - const float h = 8.0f / Gfx::PassAttrs().Height; // glyph is 8 pixel tall + const float w = 8.0f / width; // glyph is 8 pixels wide + const float h = 8.0f / height; // glyph is 8 pixel tall vsParams.glyphSize = glm::vec2(w * this->textScaleX * 2.0f, h * this->textScaleY * 2.0f); Gfx::ApplyUniformBlock(vsParams); Gfx::Draw(0, this->curNumVertices); diff --git a/code/Modules/Dbg/private/debugTextRenderer.h b/code/Modules/Dbg/private/debugTextRenderer.h index 0c99456af..85c0f563f 100644 --- a/code/Modules/Dbg/private/debugTextRenderer.h +++ b/code/Modules/Dbg/private/debugTextRenderer.h @@ -37,7 +37,7 @@ class debugTextRenderer { /// change text color void textColor(float r, float g, float b, float a); /// draw the accumulated text - void drawTextBuffer(); + void drawTextBuffer(int width, int height); /// setup the text dynamic mesh void setupResources(const DbgDesc& desc); /// convert the provides string object into vertices, and return number of vertices From d926cdb27f47c730bd7e30aa9eb47322bb3d2f83 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 24 Apr 2018 19:49:34 +0200 Subject: [PATCH 67/91] Minor fixes --- code/Modules/Assets/Gfx/FullscreenQuadBuilder.h | 2 +- code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h b/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h index 09c061477..6e4706f4e 100644 --- a/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h +++ b/code/Modules/Assets/Gfx/FullscreenQuadBuilder.h @@ -33,7 +33,7 @@ class FullscreenQuadBuilder { public: struct Result { BufferDesc VertexBufferDesc; - PipelineDesc PipelineDesc; // blueprint pipeline desc + struct PipelineDesc PipelineDesc; // blueprint pipeline desc int NumElements = 4; // rendered as triangle strip }; bool flipV = false; diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 8d2e42a47..77e737748 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -196,7 +196,7 @@ MultipleRenderTargetApp::OnRunning() { Gfx::Draw(0, 4); // render the final plane which samples from all 3 offscreen rendertarget textures - const auto& rpAttrs = Gfx::PassAttrs(); + const auto& rpAttrs = Gfx::DisplayAttrs(); Gfx::ApplyViewPort(0, 0, rpAttrs.Width, rpAttrs.Height); Gfx::ApplyDrawState(this->displayDrawState); Gfx::ApplyUniformBlock(this->displayParams); From 765c790cfb8af9fd4e9f7726ec1af69048bd3d7d Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 25 Apr 2018 14:53:19 +0200 Subject: [PATCH 68/91] Resource module: Fix the broken Locator::operator<() --- code/Modules/Core/UnitTests/MapTest.cc | 158 +++++++++++++++++++++++++ code/Modules/Resource/Locator.h | 12 +- 2 files changed, 164 insertions(+), 6 deletions(-) diff --git a/code/Modules/Core/UnitTests/MapTest.cc b/code/Modules/Core/UnitTests/MapTest.cc index b0e5e19aa..6891cdefe 100644 --- a/code/Modules/Core/UnitTests/MapTest.cc +++ b/code/Modules/Core/UnitTests/MapTest.cc @@ -6,6 +6,7 @@ #include "UnitTest++/src/UnitTest++.h" #include "Core/Containers/Map.h" #include "Core/String/String.h" +#include "Core/String/StringAtom.h" using namespace Oryol; @@ -155,4 +156,161 @@ TEST(MapTest) { testMap.Add(counter, "testString"); testMap.Erase(counter); } + + // test removing the first element + Map map5; + map5.Add(0, 0); + map5.Add(1, 1); + map5.Add(2, 2); + map5.Add(3, 3); + map5.Add(4, 4); + map5.Add(5, 5); + CHECK(map5.KeyAtIndex(0) == 0); + CHECK(map5.KeyAtIndex(1) == 1); + int key = map5.KeyAtIndex(0); + map5.Erase(key); + CHECK(map5.KeyAtIndex(0) == 1); +} + +namespace MapTest { + +class Locator { +public: + static const uint32_t NonSharedSignature = 0xFFFFFFFF; + static const uint32_t DefaultSignature = 0xFFFFFFFE; + + Locator(); + Locator(const StringAtom& location); + Locator(const char* location); + Locator(const StringAtom& location, uint32_t signature); + Locator(const char* location, uint32_t signature); + + static Locator NonShared(); + static Locator NonShared(const StringAtom& location); + + Locator(const Locator& rhs); + void operator=(const Locator& rhs); + + bool operator==(const Locator& rhs) const; + bool operator!=(const Locator& rhs) const; + bool operator<(const Locator& rhs) const; + + bool IsShared() const; + bool HasValidLocation() const; + const StringAtom& Location() const; + uint32_t Signature() const; + +private: + StringAtom location; + uint32_t signature; +}; + +inline Locator::Locator(const StringAtom& loc) : +location(loc), +signature(DefaultSignature) { + // empty +} + +inline Locator::Locator(const char* loc) : +location(loc), +signature(DefaultSignature) { + // empty +} + +inline Locator::Locator(const StringAtom& loc, uint32_t sig) : +location(loc), +signature(sig) { + // empty +} + +inline Locator::Locator(const char* loc, uint32_t sig) : +location(loc), +signature(sig) { + // empty +} + +inline Locator Locator::NonShared() { + return Locator(StringAtom(), NonSharedSignature); +} + +inline Locator Locator::NonShared(const StringAtom& loc) { + return Locator(loc, NonSharedSignature); +} + +inline Locator::Locator() : +signature(DefaultSignature) { + // empty } + +inline Locator::Locator(const Locator& rhs) : +location(rhs.location), +signature(rhs.signature) { + // empty +} + +inline void Locator::operator=(const Locator& rhs) { + this->location = rhs.location; + this->signature = rhs.signature; +} + +inline bool Locator::operator==(const Locator& rhs) const { + return (this->location == rhs.location) && (this->signature == rhs.signature); +} + +inline bool Locator::operator!=(const Locator& rhs) const { + return (this->location != rhs.location) || (this->signature != rhs.signature); +} + +inline bool Locator::operator<(const Locator& rhs) const { + if (this->location == rhs.location) { + return this->signature < rhs.signature; + } + else { + return this->location < rhs.location; + } +} + +inline bool Locator::IsShared() const { + return NonSharedSignature != this->signature; +} + +inline bool Locator::HasValidLocation() const { + return this->location.IsValid(); +} + +inline const StringAtom& Locator::Location() const { + return this->location; +} + +inline uint32_t Locator::Signature() const { + return this->signature; +} + +TEST(MapTest2) { + Locator l0("IMUIShader"); + Locator l1("LambertShader"); + Locator l2("model", 1); + Locator l3("model", 2); + Map map; + map.Add(l0, 2); + map.Add(l1, 4); + map.Add(l2, 6); + map.Add(l3, 7); + CHECK(map.KeyAtIndex(0) == l0); + CHECK(map.KeyAtIndex(1) == l1); + CHECK(map.KeyAtIndex(2) == l2); + CHECK(map.KeyAtIndex(3) == l3); + CHECK(map.ValueAtIndex(0) == 2); + CHECK(map.ValueAtIndex(1) == 4); + CHECK(map.ValueAtIndex(2) == 6); + CHECK(map.ValueAtIndex(3) == 7); + map.Erase(l0); + CHECK(map.KeyAtIndex(0) == l1); + CHECK(map.KeyAtIndex(1) == l2); + CHECK(map.KeyAtIndex(2) == l3); + CHECK(map.ValueAtIndex(0) == 4); + CHECK(map.ValueAtIndex(1) == 6); + CHECK(map.ValueAtIndex(2) == 7); +} + +} // namespace MapTest diff --git a/code/Modules/Resource/Locator.h b/code/Modules/Resource/Locator.h index c432dced5..34f726496 100644 --- a/code/Modules/Resource/Locator.h +++ b/code/Modules/Resource/Locator.h @@ -107,12 +107,12 @@ Locator::operator!=(const Locator& rhs) const { //------------------------------------------------------------------------------ inline bool Locator::operator<(const Locator& rhs) const { - if (this->signature < rhs.signature) { - return true; - } - else { - return this->location < rhs.location; - } + if (this->location == rhs.location) { + return this->signature < rhs.signature; + } + else { + return this->location < rhs.location; + } } //------------------------------------------------------------------------------ From 9d02dff4d69de8bb7c080ada1106ae689dcaf123 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 25 Apr 2018 14:54:14 +0200 Subject: [PATCH 69/91] ResourceRegistry: add a DumpDebugInfo method --- code/Modules/Resource/ResourceRegistry.cc | 46 ++++++++++++++++++++--- code/Modules/Resource/ResourceRegistry.h | 4 +- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/code/Modules/Resource/ResourceRegistry.cc b/code/Modules/Resource/ResourceRegistry.cc index 9b1bab291..90d72de87 100644 --- a/code/Modules/Resource/ResourceRegistry.cc +++ b/code/Modules/Resource/ResourceRegistry.cc @@ -112,7 +112,7 @@ ResourceRegistry::Remove(ResourceLabel label) { // FIXME: this can be slow if many resource are live! int entryIndex = this->entries.Size() - 1; for (; entryIndex >= 0; entryIndex--) { - if ((ResourceLabel::All == label) || (this->entries[entryIndex].label == label)) { + if ((ResourceLabel::All == label) || (this->entries[entryIndex].label == label)) { Id id = this->entries[entryIndex].id; Locator loc = this->entries[entryIndex].locator; removed.Add(id); @@ -120,7 +120,8 @@ ResourceRegistry::Remove(ResourceLabel label) { // remove entries this->entries.EraseSwapBack(entryIndex); this->idIndexMap.Erase(id); - if (loc.IsShared()) { + if (loc.IsShared()) { + o_assert_dbg(this->locatorIndexMap.Contains(loc)); this->locatorIndexMap.Erase(loc); } @@ -142,7 +143,8 @@ ResourceRegistry::Remove(ResourceLabel label) { } // make sure nothing broke - #if ORYOL_DEBUG + #if ORYOL_DEBUG + //this->DumpDebugInfo(); o_assert(this->CheckIntegrity()); #endif } @@ -189,11 +191,11 @@ ResourceRegistry::GetIdByIndex(int index) const { //------------------------------------------------------------------------------ #if ORYOL_DEBUG bool -ResourceRegistry::CheckIntegrity() const { +ResourceRegistry::CheckIntegrity() const { for (const auto& kvp : this->locatorIndexMap) { const Locator& loc = kvp.key; const int entryIndex = kvp.value; - const Locator& entryLoc = this->entries[entryIndex].locator; + const Locator& entryLoc = this->entries[entryIndex].locator; if (entryLoc != loc) { o_error("ResourceRegistry: locator mismatch at index '%d' (%s != %s)\n", entryIndex, entryLoc.Location().AsCStr(), loc.Location().AsCStr()); @@ -212,7 +214,39 @@ ResourceRegistry::CheckIntegrity() const { } } return true; -} +} #endif + +//------------------------------------------------------------------------------ +#if ORYOL_DEBUG +void +ResourceRegistry::DumpDebugInfo() const { + Log::Info("\n\n--- entries:\n"); + for (int i = 0; i < this->entries.Size(); i++) { + const auto& item = this->entries[i]; + Log::Info("%d: loc=%s/%08X, id=%lld, label=%d\n", + i, + item.locator.HasValidLocation() ? item.locator.Location().AsCStr() : "---", + item.locator.Signature(), + item.id.Value, item.label.Value); + } + Log::Info("--- locator/index map:\n"); + for (int i = 0; i < this->locatorIndexMap.Size(); i++) { + const Locator& loc = this->locatorIndexMap.KeyAtIndex(i); + int entryIndex = this->locatorIndexMap.ValueAtIndex(i); + Log::Info("%d: loc=%s/%08X, i=%d\n", + i, + loc.HasValidLocation() ? loc.Location().AsCStr() : "---", + loc.Signature(), + entryIndex); + } + Log::Info("--- id/index map:\n"); + for (int i = 0; i < this->idIndexMap.Size(); i++) { + const Id& id = this->idIndexMap.KeyAtIndex(i); + int entryIndex = this->idIndexMap.ValueAtIndex(i); + Log::Info("%d: id=%lld, i=%d\n", i, id.Value, entryIndex); + } +} +#endif } // namespace Oryol diff --git a/code/Modules/Resource/ResourceRegistry.h b/code/Modules/Resource/ResourceRegistry.h index fcca16e30..31a20bd3a 100644 --- a/code/Modules/Resource/ResourceRegistry.h +++ b/code/Modules/Resource/ResourceRegistry.h @@ -46,7 +46,9 @@ class ResourceRegistry { #if ORYOL_DEBUG /// validate integrity of internal data structures - bool CheckIntegrity() const; + bool CheckIntegrity() const; + /// dump debugging info to stdout + void DumpDebugInfo() const; #endif struct Entry { From e877685fc58c2d2b1f2c40b87fef7e660bb4803e Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Tue, 1 May 2018 20:23:13 +0200 Subject: [PATCH 70/91] Fix bug in GLES3->GLES2 fallback path --- code/Modules/Gfx/private/sokol/sokolGfxBackend.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc index a3c4c54b0..56ec2552d 100644 --- a/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc +++ b/code/Modules/Gfx/private/sokol/sokolGfxBackend.cc @@ -495,8 +495,8 @@ sokolGfxBackend::Setup(const GfxDesc& desc) { sgDesc.shader_pool_size = desc.resourcePoolSize[GfxResourceType::Shader]; sgDesc.pipeline_pool_size = desc.resourcePoolSize[GfxResourceType::Pipeline]; sgDesc.pass_pool_size = desc.resourcePoolSize[GfxResourceType::Pass]; - #if ORYOL_GLES3 - sgDesc.gl_force_gles2 = this->displayManager.forceGLES2; + #if ORYOL_OPENGLES3 + sgDesc.gl_force_gles2 = this->displayManager.useGLES2; #elif ORYOL_METAL sgDesc.mtl_device = mtlDisplayMgr::mtlDevice(); sgDesc.mtl_renderpass_descriptor_cb = mtlDisplayMgr::mtlRenderPassDescriptor; From 5d243ba71ac0b0225771dd2e8fab17e93426e4d5 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Thu, 3 May 2018 15:56:32 +0200 Subject: [PATCH 71/91] iOS Metal: fix small compile error --- code/Modules/Gfx/private/metal/mtlDisplayMgr.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm b/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm index 259c8bd9e..c665495ed 100644 --- a/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm +++ b/code/Modules/Gfx/private/metal/mtlDisplayMgr.mm @@ -86,7 +86,7 @@ } #elif ORYOL_IOS osBridge* bridge = osBridge::ptr(); - if (desc.HighDPI) { + if (desc.HighDPI()) { [bridge->mtkView setContentScaleFactor:2.0f]; bridge->mouseScale = 2.0f; } From bac124f7a13e0b907cf777a2486f8f06843cbfe5 Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Sat, 5 May 2018 15:09:33 +0200 Subject: [PATCH 72/91] fix a comment --- code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc index 77e737748..b59c72fb3 100644 --- a/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc +++ b/code/Samples/MultipleRenderTarget/MultipleRenderTarget.cc @@ -58,8 +58,8 @@ MultipleRenderTargetApp::OnInit() { return App::OnInit(); } - // create 3 rendertarget textures, the first one with a DepthStencil - // surface, note that the render target textures use MSAA anti-aliasing + // create 3 color rendertarget textures, and a matching + // depth-stencil render target texture const PixelFormat::Code rtColorFormat = PixelFormat::RGBA8; const PixelFormat::Code rtDepthFormat = PixelFormat::DEPTHSTENCIL; const int rtSampleCount = 4; From e3657d14bda8dc17b7b1525582705015d1f5387a Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Mon, 7 May 2018 15:27:47 +0200 Subject: [PATCH 73/91] Android fixes --- code/Modules/Gfx/private/gl/eglDisplayMgr.cc | 16 +++++++--------- code/Modules/Gfx/private/gl/eglDisplayMgr.h | 2 +- .../Input/private/android/androidInputMgr.cc | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/code/Modules/Gfx/private/gl/eglDisplayMgr.cc b/code/Modules/Gfx/private/gl/eglDisplayMgr.cc index f4bdabf6e..a64adebbd 100644 --- a/code/Modules/Gfx/private/gl/eglDisplayMgr.cc +++ b/code/Modules/Gfx/private/gl/eglDisplayMgr.cc @@ -50,17 +50,17 @@ eglDisplayMgr::SetupDisplay(const GfxDesc& desc) { // make sure we have a valid rendering RGBA format, e.g. RGB is // not a valid framebuffer format - int colorBits = PixelFormat::NumBits(desc.ColorFormat, PixelChannel::Red); + int colorBits = PixelFormat::NumBits(desc.ColorFormat(), PixelChannel::Red); o_assert((colorBits == 4) || (colorBits == 8)); EGLint eglConfigAttrs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, - EGL_SAMPLES, desc.SampleCount, + EGL_SAMPLES, desc.SampleCount(), EGL_RED_SIZE, colorBits, EGL_GREEN_SIZE, colorBits, EGL_BLUE_SIZE, colorBits, EGL_ALPHA_SIZE, colorBits, - EGL_DEPTH_SIZE, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Depth), - EGL_STENCIL_SIZE, PixelFormat::NumBits(desc.DepthFormat, PixelChannel::Stencil), + EGL_DEPTH_SIZE, PixelFormat::NumBits(desc.DepthFormat(), PixelChannel::Depth), + EGL_STENCIL_SIZE, PixelFormat::NumBits(desc.DepthFormat(), PixelChannel::Stencil), EGL_NONE }; EGLint numConfigs = 0; @@ -104,7 +104,7 @@ eglDisplayMgr::SetupDisplay(const GfxDesc& desc) { eglGetConfigAttrib(this->eglDisplay, this->eglConfig, EGL_NATIVE_VISUAL_ID, &format); int32_t w = ANativeWindow_getWidth(window); int32_t h = ANativeWindow_getHeight(window); - if (!gfxDesc.HighDPI) { + if (!gfxDesc.HighDPI()) { w/=2; h/=2; } ANativeWindow_setBuffersGeometry(window, w, h, format); @@ -160,10 +160,8 @@ eglDisplayMgr::SetupDisplay(const GfxDesc& desc) { eglQuerySurface(this->eglDisplay, this->eglSurface, EGL_WIDTH, &actualWidth); eglQuerySurface(this->eglDisplay, this->eglSurface, EGL_HEIGHT, &actualHeight); Log::Info("eglDisplayMgr: actual framebuffer size w=%d, h=%d\n", actualWidth, actualHeight); - this->displayAttrs.FramebufferWidth = actualWidth; - this->displayAttrs.FramebufferHeight = actualHeight; - this->displayAttrs.WindowWidth = actualWidth; - this->displayAttrs.WindowHeight = actualHeight; + this->displayAttrs.Width = actualWidth; + this->displayAttrs.Height = actualHeight; } //------------------------------------------------------------------------------ diff --git a/code/Modules/Gfx/private/gl/eglDisplayMgr.h b/code/Modules/Gfx/private/gl/eglDisplayMgr.h index 5a15f3740..9d9710271 100644 --- a/code/Modules/Gfx/private/gl/eglDisplayMgr.h +++ b/code/Modules/Gfx/private/gl/eglDisplayMgr.h @@ -6,7 +6,7 @@ @brief display manager class for EGL platforms */ #include "Gfx/private/displayMgrBase.h" -#include "Gfx/private/gl.h" +#include "Gfx/private/gl/gl.h" #include namespace Oryol { diff --git a/code/Modules/Input/private/android/androidInputMgr.cc b/code/Modules/Input/private/android/androidInputMgr.cc index 252618f1c..d0ba9c312 100644 --- a/code/Modules/Input/private/android/androidInputMgr.cc +++ b/code/Modules/Input/private/android/androidInputMgr.cc @@ -43,7 +43,7 @@ androidInputMgr::setup(const InputDesc& desc) { } this->highDPI = Gfx::Desc().HighDPI(); - inputMgrBase::setup(setup); + inputMgrBase::setup(desc); this->touchpad.attached = true; this->sensors.attached = true; OryolAndroidAppState->onInputEvent = androidInputMgr::onInputEvent; From 9304fff4df811b42bed4dc812050de618c8ba00a Mon Sep 17 00:00:00 2001 From: Andre Weissflog Date: Wed, 9 May 2018 19:01:24 +0200 Subject: [PATCH 74/91] new sample webpage design --- .../configs/webgl2-emsc-ninja-release.yml | 2 +- fips-files/verbs/webpage.py | 24 +- web/about.html | 38 ---- web/emsc.html | 26 +-- web/emsc.js | 66 ------ web/index.html | 19 +- web/style.css | 206 ++++-------------- web/wasm.html | 37 +--- web/wasm.js | 27 --- 9 files changed, 74 insertions(+), 371 deletions(-) delete mode 100644 web/about.html diff --git a/fips-files/configs/webgl2-emsc-ninja-release.yml b/fips-files/configs/webgl2-emsc-ninja-release.yml index df3d5a9ac..833d48bac 100644 --- a/fips-files/configs/webgl2-emsc-ninja-release.yml +++ b/fips-files/configs/webgl2-emsc-ninja-release.yml @@ -8,4 +8,4 @@ defines: FIPS_NO_ASSERTS_IN_RELEASE: ON FIPS_EMSCRIPTEN_USE_WEBGL2: ON FIPS_EMSCRIPTEN_USE_CWRAP: ON - + FIPS_EMSCRIPTEN_MEM_INIT_METHOD: 0 diff --git a/fips-files/verbs/webpage.py b/fips-files/verbs/webpage.py index 5a4045129..9ac4a37ab 100644 --- a/fips-files/verbs/webpage.py +++ b/fips-files/verbs/webpage.py @@ -18,16 +18,6 @@ # webpage template arguments GitHubSamplesURL = 'https://github.com/floooh/oryol/tree/master/code/Samples/' -DocTitle = 'Oryol Core Samples' -Title = 'Oryol' -Subtitle = 'core samples' -# Separator = 'rainbow-separator' -# GameSeparator = 'game-rainbow-separator' -# BackgroundColor = '#19A3FF' # this is the original bright blue - -Separator = 'simple-separator' -GameSeparator = 'simple-separator' -BackgroundColor = '#42A5F5' # build configuration EmscConfig = 'webgl2-emsc-ninja-release' @@ -85,19 +75,19 @@ def deploy_webpage(fips_dir, proj_dir, webpage_dir) : # populate the html template, and write to the build directory with open(proj_dir + '/web/index.html', 'r') as f : templ = Template(f.read()) - html = templ.safe_substitute(doctitle=DocTitle, title=Title, subtitle=Subtitle, samples=content, separator=Separator) + html = templ.safe_substitute(samples=content) with open(webpage_dir + '/index.html', 'w') as f : f.write(html) # and the same with the CSS template with open(proj_dir + '/web/style.css', 'r') as f : templ = Template(f.read()) - css = templ.safe_substitute(background=BackgroundColor) + css = templ.safe_substitute() with open(webpage_dir +'/style.css', 'w') as f : f.write(css) # copy other required files - for name in ['dummy.jpg', 'emsc.js', 'wasm.js', 'about.html', 'favicon.png', 'ext_samples.jpg'] : + for name in ['dummy.jpg', 'emsc.js', 'wasm.js', 'favicon.png', 'ext_samples.jpg'] : log.info('> copy file: {}'.format(name)) shutil.copy(proj_dir + '/web/' + name, webpage_dir + '/' + name) @@ -108,14 +98,14 @@ def deploy_webpage(fips_dir, proj_dir, webpage_dir) : name = sample['name'] if name != '__end__' and 'emscripten' in sample['type'] : log.info('> generate emscripten HTML page: {}'.format(name)) - for ext in ['js', 'html.mem'] : + for ext in ['js'] : src_path = '{}/{}.{}'.format(emsc_deploy_dir, name, ext) if os.path.isfile(src_path) : shutil.copy(src_path, '{}/asmjs/'.format(webpage_dir)) with open(proj_dir + '/web/emsc.html', 'r') as f : templ = Template(f.read()) src_url = GitHubSamplesURL + sample['src']; - html = templ.safe_substitute(name=name, source=src_url, separator=GameSeparator) + html = templ.safe_substitute(name=name, source=src_url) with open('{}/asmjs/{}.html'.format(webpage_dir, name, name), 'w') as f : f.write(html) @@ -130,14 +120,14 @@ def deploy_webpage(fips_dir, proj_dir, webpage_dir) : src_path = '{}/{}.{}'.format(wasm_deploy_dir, name, ext) if os.path.isfile(src_path) : shutil.copy(src_path, '{}/wasm/'.format(webpage_dir)) - for ext in ['html.mem', 'wasm'] : + for ext in ['wasm'] : src_path = '{}/{}.{}'.format(wasm_deploy_dir, name, ext) if os.path.isfile(src_path) : shutil.copy(src_path, '{}/wasm/{}.{}.txt'.format(webpage_dir, name, ext)) with open(proj_dir + '/web/wasm.html', 'r') as f : templ = Template(f.read()) src_url = GitHubSamplesURL + sample['src']; - html = templ.safe_substitute(name=name, source=src_url, separator=GameSeparator) + html = templ.safe_substitute(name=name, source=src_url) with open('{}/wasm/{}.html'.format(webpage_dir, name), 'w') as f : f.write(html) diff --git a/web/about.html b/web/about.html deleted file mode 100644 index 0f2d058ec..000000000 --- a/web/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - -Oryol About - - - - - -

-
-
-
-Oryol is a very experimental, multiplatform, MIT-licensed, 3D engine, written in C++11. -

-The focus is on web and mobile platforms, and on providing a very lean general purpose engine -for realtime 3D apps. -

-A word of warning: The samples on this page use bleeding-edge browser features and thus -may accordingly require the bleeding-edge versions of browsers (like -Firefox Nightly or -Chrome Canary). -

-Enjoy! -
-
- - diff --git a/web/emsc.html b/web/emsc.html index 0b29b639d..49a59ccc7 100644 --- a/web/emsc.html +++ b/web/emsc.html @@ -7,27 +7,13 @@ - -
${name}asm.js
-
- -

!H+l<7`h2~qTbXpfXIC3>`eUXV#R_X~O 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