diff --git a/WickedEngine/DeferredRenderableComponent.cpp b/WickedEngine/DeferredRenderableComponent.cpp index 6add2411e..8b8b9f40f 100644 --- a/WickedEngine/DeferredRenderableComponent.cpp +++ b/WickedEngine/DeferredRenderableComponent.cpp @@ -1,5 +1,11 @@ #include "DeferredRenderableComponent.h" -#include "WickedEngine.h" +#include "wiRenderer.h" +#include "wiImage.h" +#include "wiImageEffects.h" +#include "wiCamera.h" +#include "wiStencilRef.h" +#include "wiHelper.h" +#include "wiTextureHelper.h" DeferredRenderableComponent::DeferredRenderableComponent(){ } @@ -12,7 +18,7 @@ void DeferredRenderableComponent::Initialize() setSSREnabled(true); setSSAOEnabled(true); - setPreferredThreadingCount(4); + setPreferredThreadingCount(0); } void DeferredRenderableComponent::Load() { diff --git a/WickedEngine/ForwardRenderableComponent.cpp b/WickedEngine/ForwardRenderableComponent.cpp index 263a39c4e..60314aeed 100644 --- a/WickedEngine/ForwardRenderableComponent.cpp +++ b/WickedEngine/ForwardRenderableComponent.cpp @@ -1,5 +1,10 @@ #include "ForwardRenderableComponent.h" -#include "WickedEngine.h" +#include "wiRenderer.h" +#include "wiImage.h" +#include "wiImageEffects.h" +#include "wiCamera.h" +#include "wiStencilRef.h" +#include "wiHelper.h" ForwardRenderableComponent::ForwardRenderableComponent(){ } @@ -13,7 +18,7 @@ void ForwardRenderableComponent::Initialize() setSSAOEnabled(false); setShadowsEnabled(false); - setPreferredThreadingCount(4); + setPreferredThreadingCount(0); } void ForwardRenderableComponent::Load() { diff --git a/WickedEngine/Renderable3DSceneComponent.cpp b/WickedEngine/Renderable3DSceneComponent.cpp index accbdf0b2..ec358ceec 100644 --- a/WickedEngine/Renderable3DSceneComponent.cpp +++ b/WickedEngine/Renderable3DSceneComponent.cpp @@ -1,5 +1,11 @@ #include "Renderable3DSceneComponent.h" -#include "WickedEngine.h" +#include "wiRenderer.h" +#include "wiImage.h" +#include "wiImageEffects.h" +#include "wiCamera.h" +#include "wiStencilRef.h" +#include "wiHelper.h" +#include "wiTextureHelper.h" Renderable3DSceneComponent::Renderable3DSceneComponent() { diff --git a/WickedEngine/WickedEngine.h b/WickedEngine/WickedEngine.h index 3800d082b..6a4148584 100644 --- a/WickedEngine/WickedEngine.h +++ b/WickedEngine/WickedEngine.h @@ -19,6 +19,8 @@ #include "wiCpuInfo.h" #include "wiLoader.h" #include "wiParticle.h" +#include "wiEmittedParticle.h" +#include "wiHairParticle.h" #include "wiRenderer.h" #include "wiDirectInput.h" #include "wiXInput.h" @@ -38,6 +40,7 @@ #include "wiPHYSICS.h" #include "wiBULLET.h" #include "wiGraphicsThreads.h" +#include "wiStencilRef.h" #include "RenderableComponent.h" #include "Renderable3DSceneComponent.h" diff --git a/WickedEngine/WickedEngine.vcxproj b/WickedEngine/WickedEngine.vcxproj index 6926b6e1b..29bcd31fb 100644 --- a/WickedEngine/WickedEngine.vcxproj +++ b/WickedEngine/WickedEngine.vcxproj @@ -588,6 +588,7 @@ + diff --git a/WickedEngine/WickedEngine.vcxproj.filters b/WickedEngine/WickedEngine.vcxproj.filters index 29ebcaedf..9c1c42d17 100644 --- a/WickedEngine/WickedEngine.vcxproj.filters +++ b/WickedEngine/WickedEngine.vcxproj.filters @@ -1414,6 +1414,9 @@ Header Files + + Header Files + diff --git a/WickedEngine/wiLoader.h b/WickedEngine/wiLoader.h index 5709098af..f68d190b6 100644 --- a/WickedEngine/wiLoader.h +++ b/WickedEngine/wiLoader.h @@ -5,6 +5,7 @@ #include "wiRenderTarget.h" #include "wiDepthTarget.h" #include "wiGraphicsThreads.h" +#include "wiStencilRef.h" struct HitSphere; class wiParticle; @@ -275,15 +276,6 @@ struct VertexGroup{ VertexGroup(string n){name=n;} void addVertex(const VertexRef& vRef){vertices.insert(pair(vRef.index,vRef.weight));} }; -enum STENCILREF{ - STENCILREF_EMPTY, - STENCILREF_SKY, - STENCILREF_DEFAULT, - STENCILREF_TRANSPARENT, - STENCILREF_CHARACTER, - STENCILREF_SHADELESS, - STENCILREF_SKIN, -}; struct Mesh{ string name; string parent; diff --git a/WickedEngine/wiParticle.h b/WickedEngine/wiParticle.h index 47ccc23be..8359af377 100644 --- a/WickedEngine/wiParticle.h +++ b/WickedEngine/wiParticle.h @@ -18,6 +18,4 @@ public: static void ChangeRasterizer(){wireRender=!wireRender;} }; -#include "wiEmittedParticle.h" -#include "wiHairParticle.h" diff --git a/WickedEngine/wiRenderer.h b/WickedEngine/wiRenderer.h index 66ad3290e..4a289fe99 100644 --- a/WickedEngine/wiRenderer.h +++ b/WickedEngine/wiRenderer.h @@ -962,10 +962,10 @@ public: static D3D11_BUFFER_DESC desc; buffer->GetDesc(&desc); static HRESULT hr; - if(dataSize>(int)desc.ByteWidth){ //recreate the buffer if new datasize exceeds buffer size [SLOW][TEST!!!!] + if (dataSize>(int)desc.ByteWidth){ //recreate the buffer if new datasize exceeds buffer size [SLOW][TEST!!!!] buffer->Release(); - desc.ByteWidth=dataSize*2; - hr=graphicsDevice->CreateBuffer( &desc, nullptr, &buffer ); + desc.ByteWidth = dataSize * 2; + hr = graphicsDevice->CreateBuffer(&desc, nullptr, &buffer); } if(desc.Usage == D3D11_USAGE_DYNAMIC){ static D3D11_MAPPED_SUBRESOURCE mappedResource; diff --git a/WickedEngine/wiStencilRef.h b/WickedEngine/wiStencilRef.h new file mode 100644 index 000000000..3d6b3574a --- /dev/null +++ b/WickedEngine/wiStencilRef.h @@ -0,0 +1,11 @@ +#pragma once + +enum STENCILREF{ + STENCILREF_EMPTY, + STENCILREF_SKY, + STENCILREF_DEFAULT, + STENCILREF_TRANSPARENT, + STENCILREF_CHARACTER, + STENCILREF_SHADELESS, + STENCILREF_SKIN, +}; \ No newline at end of file diff --git a/WickedEngine/wiTaskThread.h b/WickedEngine/wiTaskThread.h index 59aba68e0..418ea6779 100644 --- a/WickedEngine/wiTaskThread.h +++ b/WickedEngine/wiTaskThread.h @@ -12,46 +12,34 @@ public: {} ~wiTaskThread() { stop(); join(); } - // wake up the thread and execute the task void wakeup() { auto lock = std::unique_lock(m_wakemutex); - //std::cout << "main: sending wakeup signal..." << std::endl; m_wakeup = true; m_wakecond.notify_one(); } - // wait for the task to complete void wait() { auto lock = std::unique_lock(m_waitmutex); - //std::cout << "main: waiting for task completion..." << std::endl; while (m_wakeup) m_waitcond.wait(lock); - //std::cout << "main: task completed!" << std::endl; } - // ask the thread to stop void stop() { auto lock = std::unique_lock(m_wakemutex); - //std::cout << "main: sending stop signal..." << std::endl; m_stop = true; m_wakecond.notify_one(); } - // wait for the thread to actually be stopped void join() { - //std::cout << "main: waiting for join..." << std::endl; m_thread.join(); - //std::cout << "main: joined!" << std::endl; } private: std::function m_task; - // wake up the thread bool m_wakeup; bool m_stop; std::mutex m_wakemutex; std::condition_variable m_wakecond; - // wait for the thread to finish its task std::mutex m_waitmutex; std::condition_variable m_waitcond; @@ -61,25 +49,17 @@ private: while (true) { { auto lock = std::unique_lock(m_wakemutex); - //std::cout << "thread: waiting for wakeup or stop signal..." << std::endl; while (!m_wakeup && !m_stop) m_wakecond.wait(lock); if (m_stop) { - //std::cout << "thread: got stop signal!" << std::endl; return; } - //std::cout << "thread: got wakeup signal!" << std::endl; } - //std::cout << "thread: running the task..." << std::endl; - // you should probably do something cleaner than catch (...) - // just ensure that no exception propagates from m_task() to taskFunc() try { m_task(); } catch (...) {} - //std::cout << "thread: task completed!" << std::endl; { auto lock = std::unique_lock(m_waitmutex); - //std::cout << "thread: sending task completed signal..." << std::endl; m_wakeup = false; m_waitcond.notify_all(); } diff --git a/readme.txt b/readme.txt index f1c8ec897..3c6438401 100644 --- a/readme.txt +++ b/readme.txt @@ -72,6 +72,9 @@ _________________________________________________________ - Optimize image rendering - Rewrite camera class - Decouple API from wiRenderer + - Add a Loading Screen Component Template + - 2D Renderable Component Template (after optimized image rendering) + - Multithreaded rendering bug after refactor (flashing geometry)(turned off for the time being) Other: - Cleanup - Documentation