From fc34c359ef700309fecb284707f9f02be773eec7 Mon Sep 17 00:00:00 2001 From: turanszkij Date: Sat, 22 Oct 2016 00:11:31 +0200 Subject: [PATCH] updated water shaders; added some render event annotations; updated editor; --- WickedEngine/Editor.cpp | 2 +- WickedEngine/Renderable2DComponent.cpp | 3 +- WickedEngine/Renderable3DComponent.cpp | 28 +++++++++++++++++- WickedEngine/Resource/directional_light.dds | Bin 22000 -> 22000 bytes WickedEngine/Resource/pointlight.dds | Bin 22000 -> 22000 bytes WickedEngine/Resource/spotlight.dds | Bin 22000 -> 22000 bytes .../objectPS_forward_dirlight_water.hlsl | 4 +-- WickedEngine/objectPS_tiledforward_water.hlsl | 4 +-- WickedEngine/wiGUI.cpp | 2 ++ WickedEngine/wiRenderer.cpp | 6 ++-- WickedEngine/wiVersion.cpp | 2 +- 11 files changed, 41 insertions(+), 10 deletions(-) diff --git a/WickedEngine/Editor.cpp b/WickedEngine/Editor.cpp index d466988ef..4858fb38b 100644 --- a/WickedEngine/Editor.cpp +++ b/WickedEngine/Editor.cpp @@ -1038,7 +1038,7 @@ void EditorComponent::Compose() { for (auto& y : x->lights) { - float dist = wiMath::Distance(y->translation, wiRenderer::getCamera()->translation) * 0.1f; + float dist = wiMath::Distance(y->translation, wiRenderer::getCamera()->translation) * 0.08f; wiImageEffects fx; fx.pos = y->translation; diff --git a/WickedEngine/Renderable2DComponent.cpp b/WickedEngine/Renderable2DComponent.cpp index 720665fbb..6b90ec2cb 100644 --- a/WickedEngine/Renderable2DComponent.cpp +++ b/WickedEngine/Renderable2DComponent.cpp @@ -84,7 +84,7 @@ void Renderable2DComponent::Render() { rtFinal.Activate(GRAPHICSTHREAD_IMMEDIATE, 0.0f, 0.0f, 0.0f, 0); - + wiRenderer::GetDevice()->EventBegin(L"Sprite Layers"); for (auto& x : layers) { for (auto& y : x.entities) @@ -99,6 +99,7 @@ void Renderable2DComponent::Render() } } } + wiRenderer::GetDevice()->EventEnd(); GetGUI().Render(); diff --git a/WickedEngine/Renderable3DComponent.cpp b/WickedEngine/Renderable3DComponent.cpp index b46946ac0..0360f8e19 100644 --- a/WickedEngine/Renderable3DComponent.cpp +++ b/WickedEngine/Renderable3DComponent.cpp @@ -244,6 +244,7 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende if (getLightShaftsEnabled() && XMVectorGetX(XMVector3Dot(wiRenderer::GetSunPosition(), wiRenderer::getCamera()->GetAt())) > 0) { + wiRenderer::GetDevice()->EventBegin(L"Light Shafts", threadID); wiRenderer::GetDevice()->UnBindResources(TEXSLOT_ONDEMAND0, TEXSLOT_ONDEMAND_COUNT, threadID); rtSun[0].Activate(threadID, mainRT.depth); { wiRenderer::DrawSun(threadID); @@ -258,6 +259,7 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende wiImage::Draw(rtSun[0].GetTexture(), fxs, threadID); } } + wiRenderer::GetDevice()->EventEnd(); } if (getEmittedParticlesEnabled()) @@ -274,6 +276,7 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende } rtSceneCopy.Activate(threadID, 0, 0, 0, 0); { + wiRenderer::GetDevice()->EventBegin(L"Refraction Target"); fx.blendFlag = BLENDMODE_OPAQUE; fx.presentFullScreen = true; wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID); @@ -282,17 +285,21 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende // first draw light volumes to refraction target wiRenderer::DrawVolumeLights(wiRenderer::getCamera(), threadID); } + wiRenderer::GetDevice()->EventEnd(); } wiRenderer::GetDevice()->UnBindResources(TEXSLOT_ONDEMAND0, TEXSLOT_ONDEMAND_COUNT, threadID); shadedSceneRT.Set(threadID, mainRT.depth); { RenderTransparentScene(rtSceneCopy, threadID); + wiRenderer::DrawTrails(threadID, rtSceneCopy.GetTexture()); if (getVolumeLightsEnabled()) { // second draw volume lights on top of transparent scene wiRenderer::DrawVolumeLights(wiRenderer::getCamera(), threadID); } + + wiRenderer::GetDevice()->EventBegin(L"Contribute Emitters"); fx.presentFullScreen = true; fx.blendFlag = BLENDMODE_ALPHA; if (getEmittedParticlesEnabled()) { @@ -303,9 +310,14 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende if (getEmittedParticlesEnabled()) { wiImage::Draw(rtParticleAdditive.GetTexture(), fx, threadID); } + wiRenderer::GetDevice()->EventEnd(); + + wiRenderer::GetDevice()->EventBegin(L"Contribute LightShafts"); if (getLightShaftsEnabled()) { wiImage::Draw(rtSun.back().GetTexture(), fx, threadID); } + wiRenderer::GetDevice()->EventEnd(); + if (getLensFlareEnabled()) { if (!wiRenderer::IsWireRender()) @@ -374,17 +386,19 @@ void Renderable3DComponent::RenderComposition(wiRenderTarget& shadedSceneRT, wiR } if (getMotionBlurEnabled()) { + wiRenderer::GetDevice()->EventBegin(L"Motion Blur", threadID); rtMotionBlur.Activate(threadID); fx.process.setMotionBlur(true); fx.blendFlag = BLENDMODE_OPAQUE; fx.presentFullScreen = false; wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID); fx.process.clear(); + wiRenderer::GetDevice()->EventEnd(); } + wiRenderer::GetDevice()->EventBegin(L"Tone Mapping", threadID); fx.blendFlag = BLENDMODE_OPAQUE; - rtFinal[0].Activate(threadID); fx.process.setToneMap(true); if (getEyeAdaptionEnabled()) @@ -404,10 +418,12 @@ void Renderable3DComponent::RenderComposition(wiRenderTarget& shadedSceneRT, wiR wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID); } fx.process.clear(); + wiRenderer::GetDevice()->EventEnd(); if (getDepthOfFieldEnabled()) { + wiRenderer::GetDevice()->EventBegin(L"Depth Of Field", threadID); // downsample + blur rtDof[0].Activate(threadID); fx.blur = getDepthOfFieldStrength(); @@ -429,23 +445,28 @@ void Renderable3DComponent::RenderComposition(wiRenderTarget& shadedSceneRT, wiR fx.setMaskMap(nullptr); //fx.setDepthMap(nullptr); fx.process.clear(); + wiRenderer::GetDevice()->EventEnd(); } rtFinal[1].Activate(threadID, mainRT.depth); + wiRenderer::GetDevice()->EventBegin(L"FXAA", threadID); fx.process.setFXAA(getFXAAEnabled()); if (getDepthOfFieldEnabled()) wiImage::Draw(rtDof[2].GetTexture(), fx, threadID); else wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID); fx.process.clear(); + wiRenderer::GetDevice()->EventEnd(); + wiRenderer::GetDevice()->EventBegin(L"Debug Geometry", threadID); wiRenderer::DrawDebugGridHelper(wiRenderer::getCamera(), threadID); wiRenderer::DrawDebugEnvProbes(wiRenderer::getCamera(), threadID); wiRenderer::DrawDebugBoneLines(wiRenderer::getCamera(), threadID); wiRenderer::DrawDebugLines(wiRenderer::getCamera(), threadID); wiRenderer::DrawDebugBoxes(wiRenderer::getCamera(), threadID); wiRenderer::DrawTranslators(wiRenderer::getCamera(), threadID); + wiRenderer::GetDevice()->EventEnd(); } void Renderable3DComponent::RenderColorGradedComposition(){ @@ -455,15 +476,18 @@ void Renderable3DComponent::RenderColorGradedComposition(){ if (getStereogramEnabled()) { + wiRenderer::GetDevice()->EventBegin(L"Stereogram"); fx.presentFullScreen = false; fx.process.clear(); fx.process.setStereogram(true); wiImage::Draw(wiTextureHelper::getInstance()->getRandom64x64(), fx); + wiRenderer::GetDevice()->EventEnd(); return; } if (getColorGradingEnabled()) { + wiRenderer::GetDevice()->EventBegin(L"Color Graded Composition"); fx.quality = QUALITY_BILINEAR; if (wiRenderer::GetColorGrading() != nullptr){ fx.process.setColorGrade(true); @@ -477,10 +501,12 @@ void Renderable3DComponent::RenderColorGradedComposition(){ } else { + wiRenderer::GetDevice()->EventBegin(L"Composition"); fx.presentFullScreen = true; } wiImage::Draw(rtFinal[1].GetTexture(), fx); + wiRenderer::GetDevice()->EventEnd(); } diff --git a/WickedEngine/Resource/directional_light.dds b/WickedEngine/Resource/directional_light.dds index 713f9ceb47474e7be404400d241c04de2fad9474..98af465b454df12d2228e2b12b3249e7a0cb392f 100644 GIT binary patch literal 22000 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 literal 22000 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

y)^mIMz-fIiqbKXl$D1Ps^IG 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 HIPm`fF?ck& literal 22000 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 N$x`w?29q-W{{bmoM^gX* diff --git a/WickedEngine/Resource/spotlight.dds b/WickedEngine/Resource/spotlight.dds index 3c82f09f40a8c2cb158c764efd8e4e17e6755f27..6fa001b4692675f21c11c7e280b05ffc55cc11a2 100644 GIT binary patch literal 22000 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 z zE?pSK4PFBtBxLA;Pt{K)f5^6c{I>lOZ|jPf1-kjJli5#%fH)%Mr_ z`I=vExWl&iN50f@FC4fOy!-Gcu`YeE0*(x7`@rZU$~{f^m=@pnSuYYuf$@PS%0ssLO1AZfTDvWNN=}0dW%Aw^|3FtncfN;w-hk>k!Bxim zkCea>3?-!Vt>1S)1B)Md`Ujg}@p9kH3tit6GUh8GpEV$Q@ca3yVMoGPKjP`l!%`x* z`cgK0`1%vS9uN14?`0Z4LY7Oh*Rh?HA8NijNba{qH>$8i-?!N)vi=f+%Ms3%lNc<@ z=}_++-^~o>*XLm|-UNq>KKbiI+IVGOLlx%hHQ0r0@IHb{FCJeT<{3{g9@GB_O&T2cq-d7FdP+c+M7~5~I>pLL7rk4k5 zFPkquzmiRV2D@Es>XlQ+eCqi20!RFsU=Ogu_()Nbg z+Ww6AMsTJScvApz?2nd}S=qHDvXlmnW#N z)adImwEj0j%dhz3L?5(#??CA@+{fD}J#aD87ZT>QJ=thyu-H@&@u+scf~WUzgKhru z8a+N@yvO&V4nIc>&UfXHb};lgT6$Aalc)S|lNg)D9 zzRA|7^(8z}t%pHA4C7yU)cq29FV^EHmyFco&%dvcjh`5`uQS1y29WhF0z!^t2;#>i zEUJ7BK_MY#CjVAd<#x0AGS&zNsedVd3^SOb2`Qlr{RLkCvAwGRq1Jyg{$S)Z&64KR z_ubu+ zTC3a}kh8^pU`;2bk4pmiQPe>FIn3Zfct3wkw00)N$7;2j9VB0-ysvKs1F#3ptC_rB z!Po7o6voENRsU>(4l=yoG3AwODE-{SkRIkDEk6k8RGmcgTBiJD6!iygmrL41-)DJ) z!WIyK!esOP9qa$nM(E`RgxyelT$r)XgdXl>^SDEQ`tJ(b4)lQe)qEXHKjihN@c1qN zv+R28+hqThpdkGI;r{;(-(~kZ1dFBkZBULaE9m3O!Q_bEW#Siw&+dFc8AMJdF+DpLCYEMR> zei4Q!M&Wny)kgfjmz)Flxs>}9gdYCaS3~`6D~&%0J11j{@15zzLm%WPY?3}{e5=9Voz>MA0iN@8ptTM_l{^?+>f* zX8`%YA0QVg$!6q1DC>?H&L7*A?-OYx?ZjP{d4TxQjaMmf6~f3Yn%cW4J%ONRJUVEC zRjIzfFI3h|=|TPTmq8DVio(TC<$fdRtL53_#`_Cnk8AY@5^TTn1$hQqWy^g~0NfpVz;U3?T%=$t&LAV!!5|zUK z&Jz@d9}3LVD*IeTu0Zhw3NDjN$k;mCdyB+ zM-q?EK;idM-6;DH)=VJlyQIp>ZuCgwt#@uHC9qT}SPK5=t+tm>P~ro@QaW-kv2PnG zy#~X+^`fE;OLg|_Z^#+m`9KTB*J5?MF}iQ%B=a?YRrV*L|DbE%C}?k>^a6pmen#ZS zZ@PoDU(9}{?=jjFjDBvKEKQg}*8_(#`Rx8$cE6LvM+M|Q@AT9@(hlxU>O~{2FK}x9 zQFs&V-E<}1BJ9eQKNvk%^QNH0^PmkvVLSM*hlr9PWCeqc?=jtgOq##B-btMkZ724= z@MP-BUWjf;fAT;+rN#dD0?_hv$AA3(iaz|vccgp?jh{$<0vC~4#3$K&d(V=&OO7%4 zG`u+p&v*uVA#%smk zzeT=(-1g^dcM=%93o@-I`m5aMJy(48YmhIq^EE0za9pr!C82B@i7%A=4umJ}1L)uDx3<4V^^f4!iEventBegin(L"GUI"); for (auto&x : widgets) { x->Render(this); @@ -55,6 +56,7 @@ void wiGUI::Render() scissor[0].right = (LONG)(wiRenderer::GetDevice()->GetScreenWidth()); scissor[0].top = (LONG)(0); wiRenderer::GetDevice()->SetScissorRects(1, scissor, GetGraphicsThread()); + wiRenderer::GetDevice()->EventEnd(); } void wiGUI::AddWidget(wiWidget* widget) diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index d2bd11022..408937590 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -1798,11 +1798,13 @@ void wiRenderer::ManageWaterRipples(){ ) waterRipples.pop_front(); } -void wiRenderer::DrawWaterRipples(GRAPHICSTHREAD threadID){ - //wiImage::BatchBegin(threadID); +void wiRenderer::DrawWaterRipples(GRAPHICSTHREAD threadID) +{ + GetDevice()->EventBegin(L"Water Ripples"); for(wiSprite* i:waterRipples){ i->DrawNormal(threadID); } + GetDevice()->EventEnd(); } void wiRenderer::DrawDebugSpheres(Camera* camera, GRAPHICSTHREAD threadID) diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 3688687e2..cc9c485e5 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -7,7 +7,7 @@ namespace wiVersion // minor features, major updates const int minor = 9; // minor bug fixes, alterations, refactors, updates - const int revision = 23; + const int revision = 24; long GetVersion()