diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index 258e6053f..c609ebcb9 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -65,6 +65,8 @@ void MainComponent::ActivatePath(RenderPath* component, float fadeSeconds, wiCol void MainComponent::Run() { + GraphicsDevice* device = wiRenderer::GetDevice(); + if (!initialized) { // Initialize in a lazy way, so the user application doesn't have to call this explicitly @@ -74,14 +76,14 @@ void MainComponent::Run() if (!wiInitializer::IsInitializeFinished()) { // Until engine is not loaded, present initialization screen... - CommandList cmd = wiRenderer::GetDevice()->BeginCommandList(); - wiRenderer::GetDevice()->RenderPassBegin(&swapChain, cmd); + CommandList cmd = device->BeginCommandList(); + device->RenderPassBegin(&swapChain, cmd); wiImage::SetCanvas(canvas, cmd); wiFont::SetCanvas(canvas, cmd); Viewport viewport; viewport.Width = (float)swapChain.desc.width; viewport.Height = (float)swapChain.desc.height; - wiRenderer::GetDevice()->BindViewports(1, &viewport, cmd); + device->BindViewports(1, &viewport, cmd); wiFontParams params; params.posX = 5.f; params.posY = 5.f; @@ -93,8 +95,8 @@ void MainComponent::Run() params.posY = screenheight - textheight; } wiFont::Draw(text, params, cmd); - wiRenderer::GetDevice()->RenderPassEnd(cmd); - wiRenderer::GetDevice()->SubmitCommandLists(); + device->RenderPassEnd(cmd); + device->SubmitCommandLists(); return; } @@ -164,21 +166,21 @@ void MainComponent::Run() wiInput::Update(window); - CommandList cmd = wiRenderer::GetDevice()->BeginCommandList(); - wiRenderer::GetDevice()->RenderPassBegin(&swapChain, cmd); + CommandList cmd = device->BeginCommandList(); + device->RenderPassBegin(&swapChain, cmd); { wiImage::SetCanvas(canvas, cmd); wiFont::SetCanvas(canvas, cmd); Viewport viewport; viewport.Width = (float)swapChain.desc.width; viewport.Height = (float)swapChain.desc.height; - wiRenderer::GetDevice()->BindViewports(1, &viewport, cmd); + device->BindViewports(1, &viewport, cmd); Compose(cmd); } - wiRenderer::GetDevice()->RenderPassEnd(cmd); + device->RenderPassEnd(cmd); wiProfiler::EndFrame(cmd); - wiRenderer::GetDevice()->SubmitCommandLists(); + device->SubmitCommandLists(); } void MainComponent::Update(float dt) diff --git a/WickedEngine/wiAudio.cpp b/WickedEngine/wiAudio.cpp index 41fadab2d..fde519ec9 100644 --- a/WickedEngine/wiAudio.cpp +++ b/WickedEngine/wiAudio.cpp @@ -1,6 +1,7 @@ #include "wiAudio.h" #include "wiBackLog.h" #include "wiHelper.h" +#include "wiTimer.h" #include @@ -193,11 +194,13 @@ namespace wiAudio void Initialize() { + wiTimer timer; + audio = std::make_shared(); if (audio->success) { - wiBackLog::post("wiAudio Initialized"); + wiBackLog::post("wiAudio Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } } diff --git a/WickedEngine/wiBackLog.cpp b/WickedEngine/wiBackLog.cpp index 56f0cca50..843704ba8 100644 --- a/WickedEngine/wiBackLog.cpp +++ b/WickedEngine/wiBackLog.cpp @@ -146,7 +146,7 @@ namespace wiBackLog scroll = 0; logLock.unlock(); } - void post(const char* input) + void post(const std::string& input) { logLock.lock(); std::string str; diff --git a/WickedEngine/wiBackLog.h b/WickedEngine/wiBackLog.h index b4809557a..366f1e34c 100644 --- a/WickedEngine/wiBackLog.h +++ b/WickedEngine/wiBackLog.h @@ -15,7 +15,7 @@ namespace wiBackLog std::string getText(); void clear(); - void post(const char* input); + void post(const std::string& input); void input(const char input); void acceptInput(); void deletefromInput(); diff --git a/WickedEngine/wiEmittedParticle.cpp b/WickedEngine/wiEmittedParticle.cpp index 81d19f0c8..2d3adf801 100644 --- a/WickedEngine/wiEmittedParticle.cpp +++ b/WickedEngine/wiEmittedParticle.cpp @@ -12,6 +12,7 @@ #include "wiProfiler.h" #include "wiBackLog.h" #include "wiEvent.h" +#include "wiTimer.h" #include @@ -656,6 +657,7 @@ namespace wiEmittedParticle_Internal void wiEmittedParticle::Initialize() { + wiTimer timer; RasterizerState rs; rs.FillMode = FILL_SOLID; @@ -730,7 +732,7 @@ void wiEmittedParticle::Initialize() static wiEvent::Handle handle = wiEvent::Subscribe(SYSTEM_EVENT_RELOAD_SHADERS, [](uint64_t userdata) { wiEmittedParticle_Internal::LoadShaders(); }); wiEmittedParticle_Internal::LoadShaders(); - wiBackLog::post("wiEmittedParticle Initialized"); + wiBackLog::post("wiEmittedParticle Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp index 49b8b5fd3..8bf665dfb 100644 --- a/WickedEngine/wiFont.cpp +++ b/WickedEngine/wiFont.cpp @@ -10,6 +10,7 @@ #include "wiSpinLock.h" #include "wiPlatform.h" #include "wiEvent.h" +#include "wiTimer.h" #include "Utility/arial.h" #include "Utility/stb_truetype.h" @@ -273,6 +274,8 @@ void Initialize() return; } + wiTimer timer; + // add default font if there is none yet: if (fontStyles.empty()) { @@ -327,7 +330,7 @@ void Initialize() LoadShaders(); - wiBackLog::post("wiFont Initialized"); + wiBackLog::post("wiFont Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); initialized.store(true); } diff --git a/WickedEngine/wiGPUBVH.cpp b/WickedEngine/wiGPUBVH.cpp index 738ffe341..088a2219e 100644 --- a/WickedEngine/wiGPUBVH.cpp +++ b/WickedEngine/wiGPUBVH.cpp @@ -8,6 +8,7 @@ #include "wiTextureHelper.h" #include "wiBackLog.h" #include "wiEvent.h" +#include "wiTimer.h" //#define BVH_VALIDATE // slow but great for debug! #ifdef BVH_VALIDATE @@ -399,6 +400,10 @@ namespace wiGPUBVH_Internal void wiGPUBVH::Initialize() { + wiTimer timer; + static wiEvent::Handle handle = wiEvent::Subscribe(SYSTEM_EVENT_RELOAD_SHADERS, [](uint64_t userdata) { wiGPUBVH_Internal::LoadShaders(); }); wiGPUBVH_Internal::LoadShaders(); + + wiBackLog::post("wiGPUBVH Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } diff --git a/WickedEngine/wiGPUSortLib.cpp b/WickedEngine/wiGPUSortLib.cpp index 09a4f24f1..6118aff18 100644 --- a/WickedEngine/wiGPUSortLib.cpp +++ b/WickedEngine/wiGPUSortLib.cpp @@ -3,6 +3,8 @@ #include "wiResourceManager.h" #include "shaders/ShaderInterop_GPUSortLib.h" #include "wiEvent.h" +#include "wiTimer.h" +#include "wiBackLog.h" using namespace wiGraphics; @@ -28,6 +30,8 @@ namespace wiGPUSortLib void Initialize() { + wiTimer timer; + GPUBufferDesc bd; bd.Usage = USAGE_DEFAULT; bd.BindFlags = BIND_UNORDERED_ACCESS; @@ -37,6 +41,8 @@ namespace wiGPUSortLib static wiEvent::Handle handle = wiEvent::Subscribe(SYSTEM_EVENT_RELOAD_SHADERS, [](uint64_t userdata) { LoadShaders(); }); LoadShaders(); + + wiBackLog::post("wiGPUSortLib Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } diff --git a/WickedEngine/wiHairParticle.cpp b/WickedEngine/wiHairParticle.cpp index 24bf0efe3..139fb05c3 100644 --- a/WickedEngine/wiHairParticle.cpp +++ b/WickedEngine/wiHairParticle.cpp @@ -12,6 +12,7 @@ #include "shaders/ShaderInterop_HairParticle.h" #include "wiBackLog.h" #include "wiEvent.h" +#include "wiTimer.h" using namespace wiGraphics; @@ -482,6 +483,7 @@ namespace wiHairParticle_Internal void wiHairParticle::Initialize() { + wiTimer timer; RasterizerState rsd; rsd.FillMode = FILL_SOLID; @@ -550,7 +552,7 @@ void wiHairParticle::Initialize() static wiEvent::Handle handle = wiEvent::Subscribe(SYSTEM_EVENT_RELOAD_SHADERS, [](uint64_t userdata) { wiHairParticle_Internal::LoadShaders(); }); wiHairParticle_Internal::LoadShaders(); - wiBackLog::post("wiHairParticle Initialized"); + wiBackLog::post("wiHairParticle Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } } diff --git a/WickedEngine/wiImage.cpp b/WickedEngine/wiImage.cpp index 8760151ba..462ffb7b2 100644 --- a/WickedEngine/wiImage.cpp +++ b/WickedEngine/wiImage.cpp @@ -7,6 +7,7 @@ #include "shaders/ShaderInterop_Image.h" #include "wiBackLog.h" #include "wiEvent.h" +#include "wiTimer.h" #include @@ -264,6 +265,8 @@ namespace wiImage void Initialize() { + wiTimer timer; + GraphicsDevice* device = wiRenderer::GetDevice(); RasterizerState rs; @@ -392,7 +395,7 @@ namespace wiImage static wiEvent::Handle handle = wiEvent::Subscribe(SYSTEM_EVENT_RELOAD_SHADERS, [](uint64_t userdata) { LoadShaders(); }); LoadShaders(); - wiBackLog::post("wiImage Initialized"); + wiBackLog::post("wiImage Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); initialized.store(true); } diff --git a/WickedEngine/wiInput.cpp b/WickedEngine/wiInput.cpp index e6a13c9f3..4a09f80de 100644 --- a/WickedEngine/wiInput.cpp +++ b/WickedEngine/wiInput.cpp @@ -7,6 +7,7 @@ #include "wiBackLog.h" #include "wiProfiler.h" #include "wiColor.h" +#include "wiTimer.h" #include #include @@ -80,10 +81,12 @@ namespace wiInput void Initialize() { + wiTimer timer; + wiRawInput::Initialize(); wiSDLInput::Initialize(); - wiBackLog::post("wiInput Initialized"); + wiBackLog::post("wiInput Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); initialized.store(true); } diff --git a/WickedEngine/wiLua.cpp b/WickedEngine/wiLua.cpp index d7013a2cf..8a11a83e2 100644 --- a/WickedEngine/wiLua.cpp +++ b/WickedEngine/wiLua.cpp @@ -21,6 +21,7 @@ #include "wiBackLog_BindLua.h" #include "wiNetwork_BindLua.h" #include "wiIntersect_BindLua.h" +#include "wiTimer.h" #include #include @@ -88,6 +89,8 @@ namespace wiLua void Initialize() { + wiTimer timer; + luainternal.m_luaState = luaL_newstate(); luaL_openlibs(luainternal.m_luaState); RegisterFunc("dofile", Internal_DoFile); @@ -114,7 +117,7 @@ namespace wiLua wiNetwork_BindLua::Bind(); wiIntersect_BindLua::Bind(); - wiBackLog::post("wiLua Initialized"); + wiBackLog::post("wiLua Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } lua_State* GetLuaState() diff --git a/WickedEngine/wiNetwork_Windows.cpp b/WickedEngine/wiNetwork_Windows.cpp index 0013fb5b4..b4b66d810 100644 --- a/WickedEngine/wiNetwork_Windows.cpp +++ b/WickedEngine/wiNetwork_Windows.cpp @@ -3,6 +3,7 @@ #if defined(_WIN32) && !defined(PLATFORM_UWP) #include "wiNetwork.h" #include "wiBackLog.h" +#include "wiTimer.h" #include @@ -44,6 +45,8 @@ namespace wiNetwork void Initialize() { + wiTimer timer; + int result; networkinternal = std::make_shared(); @@ -58,7 +61,7 @@ namespace wiNetwork assert(0); } - wiBackLog::post("wiNetwork Initialized"); + wiBackLog::post("wiNetwork Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } bool CreateSocket(Socket* sock) diff --git a/WickedEngine/wiOcean.cpp b/WickedEngine/wiOcean.cpp index 6c501bf51..9b75eda43 100644 --- a/WickedEngine/wiOcean.cpp +++ b/WickedEngine/wiOcean.cpp @@ -5,6 +5,7 @@ #include "wiScene.h" #include "wiBackLog.h" #include "wiEvent.h" +#include "wiTimer.h" #include #include @@ -408,8 +409,9 @@ void wiOcean::Render(const CameraComponent& camera, const OceanParameters& param void wiOcean::Initialize() { - GraphicsDevice* device = wiRenderer::GetDevice(); + wiTimer timer; + GraphicsDevice* device = wiRenderer::GetDevice(); RasterizerState ras_desc; ras_desc.FillMode = FILL_SOLID; @@ -454,7 +456,7 @@ void wiOcean::Initialize() wiFFTGenerator::LoadShaders(); fft512x512_create_plan(m_fft_plan, 3); - wiBackLog::post("wiOcean Initialized"); + wiBackLog::post("wiOcean Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } const Texture* wiOcean::getDisplacementMap() const diff --git a/WickedEngine/wiPhysicsEngine_Bullet.cpp b/WickedEngine/wiPhysicsEngine_Bullet.cpp index 01d7133c2..53c324c11 100644 --- a/WickedEngine/wiPhysicsEngine_Bullet.cpp +++ b/WickedEngine/wiPhysicsEngine_Bullet.cpp @@ -4,6 +4,7 @@ #include "wiBackLog.h" #include "wiJobSystem.h" #include "wiRenderer.h" +#include "wiTimer.h" #include "btBulletDynamicsCommon.h" #include "BulletSoftBody/btSoftBodyHelpers.h" @@ -66,6 +67,8 @@ namespace wiPhysicsEngine void Initialize() { + wiTimer timer; + dispatcher = std::make_unique(&collisionConfiguration); dynamicsWorld = std::make_unique(dispatcher.get(), &overlappingPairCache, &solver, &collisionConfiguration); @@ -86,7 +89,7 @@ namespace wiPhysicsEngine softRigidWorld->setDebugDrawer(&debugDraw); - wiBackLog::post("wiPhysicsEngine_Bullet Initialized"); + wiBackLog::post("wiPhysicsEngine_Bullet Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } bool IsEnabled() { return ENABLED; } diff --git a/WickedEngine/wiProfiler.cpp b/WickedEngine/wiProfiler.cpp index d36a7f161..8504c77f4 100644 --- a/WickedEngine/wiProfiler.cpp +++ b/WickedEngine/wiProfiler.cpp @@ -38,7 +38,7 @@ namespace wiProfiler float time = 0; CommandList cmd = COMMANDLIST_COUNT; - wiTimer cpuBegin, cpuEnd; + wiTimer cpuTimer; int gpuBegin[arraysize(queryHeap)]; int gpuEnd[arraysize(queryHeap)]; @@ -126,12 +126,7 @@ namespace wiProfiler { auto& range = x.second; - range.time = 0; - if (range.IsCPURange()) - { - range.time = (float)abs(range.cpuEnd.elapsed() - range.cpuBegin.elapsed()); - } - else + if (!range.IsCPURange()) { int begin_query = range.gpuBegin[queryheap_idx]; int end_query = range.gpuEnd[queryheap_idx]; @@ -177,8 +172,7 @@ namespace wiProfiler } ranges[id].in_use = true; ranges[id].name = name; - - ranges[id].cpuBegin.record(); + ranges[id].cpuTimer.record(); lock.unlock(); @@ -201,7 +195,6 @@ namespace wiProfiler } ranges[id].in_use = true; ranges[id].name = name; - ranges[id].cmd = cmd; ranges[id].gpuBegin[queryheap_idx] = nextQuery.fetch_add(1); @@ -223,7 +216,7 @@ namespace wiProfiler { if (it->second.IsCPURange()) { - it->second.cpuEnd.record(); + it->second.time = (float)it->second.cpuTimer.elapsed(); } else { diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 6df02088e..1f4c8142c 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -20,6 +20,7 @@ #include "wiPlatform.h" #include "wiSheenLUT.h" #include "wiShaderCompiler.h" +#include "wiTimer.h" #include "shaders/ShaderInterop_Postprocess.h" #include "shaders/ShaderInterop_Raytracing.h" @@ -2212,6 +2213,8 @@ void ReloadShaders() void Initialize() { + wiTimer timer; + SetUpStates(); LoadBuffers(); @@ -2221,7 +2224,7 @@ void Initialize() SetShadowProps2D(SHADOWRES_2D, SHADOWCOUNT_2D); SetShadowPropsCube(SHADOWRES_CUBE, SHADOWCOUNT_CUBE); - wiBackLog::post("wiRenderer Initialized"); + wiBackLog::post("wiRenderer Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } void ClearWorld(Scene& scene) { diff --git a/WickedEngine/wiTextureHelper.cpp b/WickedEngine/wiTextureHelper.cpp index 0059ce540..6faec8b61 100644 --- a/WickedEngine/wiTextureHelper.cpp +++ b/WickedEngine/wiTextureHelper.cpp @@ -4,6 +4,7 @@ #include "wiColor.h" #include "wiBackLog.h" #include "wiSpinLock.h" +#include "wiTimer.h" #include @@ -31,6 +32,8 @@ namespace wiTextureHelper void Initialize() { + wiTimer timer; + GraphicsDevice* device = wiRenderer::GetDevice(); // Random64x64 @@ -151,7 +154,7 @@ namespace wiTextureHelper device->SetName(&helperTextures[HELPERTEXTURE_BLUENOISE], "HELPERTEXTURE_BLUENOISE"); } - wiBackLog::post("wiTextureHelper Initialized"); + wiBackLog::post("wiTextureHelper Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); } const Texture* getRandom64x64() diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index bbeb5ba6a..e9b9218e6 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates, breaking compatibility changes const int minor = 57; // minor bug fixes, alterations, refactors, updates - const int revision = 14; + const int revision = 15; const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision); diff --git a/WickedEngine/wiWidget.cpp b/WickedEngine/wiWidget.cpp index e830cecc5..f2c54515d 100644 --- a/WickedEngine/wiWidget.cpp +++ b/WickedEngine/wiWidget.cpp @@ -8,6 +8,7 @@ #include "shaders/ShaderInterop_Renderer.h" #include "wiEvent.h" #include "wiBackLog.h" +#include "wiTimer.h" #include @@ -354,8 +355,12 @@ namespace wiWidget_Internal void wiWidget::Initialize() { + wiTimer timer; + static wiEvent::Handle handle = wiEvent::Subscribe(SYSTEM_EVENT_RELOAD_SHADERS, [](uint64_t userdata) { wiWidget_Internal::LoadShaders(); }); wiWidget_Internal::LoadShaders(); + + wiBackLog::post("wiWidget Initialized (" + std::to_string((int)std::round(timer.elapsed())) + " ms)"); }