diff --git a/Editor/HairParticleWindow.cpp b/Editor/HairParticleWindow.cpp index 79a3c996d..3e5ce4a2d 100644 --- a/Editor/HairParticleWindow.cpp +++ b/Editor/HairParticleWindow.cpp @@ -138,6 +138,20 @@ HairParticleWindow::HairParticleWindow(wiGUI* gui) : GUI(gui) randomSeedSlider->SetTooltip("Set hair system-wide random seed value. This will affect hair patch placement randomization."); hairWindow->AddWidget(randomSeedSlider); + viewDistanceSlider = new wiSlider(0, 1000, 100, 10000, "View distance: "); + viewDistanceSlider->SetSize(XMFLOAT2(360, 30)); + viewDistanceSlider->SetPos(XMFLOAT2(x, y += step)); + viewDistanceSlider->OnSlide([&](wiEventArgs args) { + auto hair = GetHair(); + if (hair != nullptr) + { + hair->viewDistance = args.fValue; + } + }); + viewDistanceSlider->SetEnabled(false); + viewDistanceSlider->SetTooltip("Set view distance. After this, particles will be faded out."); + hairWindow->AddWidget(viewDistanceSlider); + hairWindow->Translate(XMFLOAT3(200, 50, 0)); hairWindow->SetVisible(false); @@ -166,6 +180,7 @@ void HairParticleWindow::SetEntity(Entity entity) countSlider->SetValue((float)hair->strandCount); segmentcountSlider->SetValue((float)hair->segmentCount); randomSeedSlider->SetValue((float)hair->randomSeed); + viewDistanceSlider->SetValue(hair->viewDistance); } else { diff --git a/Editor/HairParticleWindow.h b/Editor/HairParticleWindow.h index 90f2ae267..384f8de2c 100644 --- a/Editor/HairParticleWindow.h +++ b/Editor/HairParticleWindow.h @@ -36,6 +36,7 @@ public: wiSlider* countSlider; wiSlider* segmentcountSlider; wiSlider* randomSeedSlider; + wiSlider* viewDistanceSlider; }; diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index 69c112fc9..7bb1e24ab 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -76,9 +76,6 @@ void MainComponent::Initialize() wiInitializer::InitializeComponentsAsync(); - - wiLua::GetGlobal()->RegisterObject(MainComponent_BindLua::className, "main", new MainComponent_BindLua(this)); - wiLua::GetGlobal()->RunFile("startup.lua"); } void MainComponent::ActivatePath(RenderPath* component, float fadeSeconds, wiColor fadeColor) @@ -122,6 +119,14 @@ void MainComponent::Run() return; } + static bool startup_script = false; + if (!startup_script) + { + startup_script = true; + wiLua::GetGlobal()->RegisterObject(MainComponent_BindLua::className, "main", new MainComponent_BindLua(this)); + wiLua::GetGlobal()->RunFile("startup.lua"); + } + wiProfiler::BeginFrame(); deltaTime = float(std::max(0.0, timer.elapsed() / 1000.0)); diff --git a/WickedEngine/RenderPath3D_Deferred.cpp b/WickedEngine/RenderPath3D_Deferred.cpp index c1635df40..cee08a621 100644 --- a/WickedEngine/RenderPath3D_Deferred.cpp +++ b/WickedEngine/RenderPath3D_Deferred.cpp @@ -207,6 +207,14 @@ void RenderPath3D_Deferred::Render() const device->RenderPassEnd(cmd); } + }); + + + cmd = device->BeginCommandList(); + wiJobSystem::Execute(ctx, [this, device, cmd] { + + wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), cmd); + wiRenderer::BindCommonResources(cmd); RenderSSS(cmd); @@ -214,8 +222,6 @@ void RenderPath3D_Deferred::Render() const RenderSSR(rtDeferred, rtGBuffer[1], cmd); - wiRenderer::BindCommonResources(cmd); - DownsampleDepthBuffer(cmd); RenderLightShafts(cmd); diff --git a/WickedEngine/RenderPath3D_TiledDeferred.cpp b/WickedEngine/RenderPath3D_TiledDeferred.cpp index 786c4d092..52c98c868 100644 --- a/WickedEngine/RenderPath3D_TiledDeferred.cpp +++ b/WickedEngine/RenderPath3D_TiledDeferred.cpp @@ -70,13 +70,20 @@ void RenderPath3D_TiledDeferred::Render() const wiRenderer::ComputeTiledLightCulling( depthBuffer_Copy, - cmd, + cmd, &rtGBuffer[0], &rtGBuffer[1], &rtGBuffer[2], &lightbuffer_diffuse, &lightbuffer_specular ); + }); + + cmd = device->BeginCommandList(); + wiJobSystem::Execute(ctx, [this, device, cmd] { + + wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), cmd); + wiRenderer::BindCommonResources(cmd); RenderSSS(cmd); diff --git a/WickedEngine/hairparticlePS_alphatestonly.hlsl b/WickedEngine/hairparticlePS_alphatestonly.hlsl index 722906447..68706bf85 100644 --- a/WickedEngine/hairparticlePS_alphatestonly.hlsl +++ b/WickedEngine/hairparticlePS_alphatestonly.hlsl @@ -1,12 +1,10 @@ #include "globals.hlsli" #include "hairparticleHF.hlsli" -void main(VertexToPixel PSIn) +void main(VertexToPixel input) { -#ifdef GRASS_FADE_DITHER - clip(dither(PSIn.pos.xy) - PSIn.fade); -#endif + clip(dither(input.pos.xy) - input.fade); - float4 color = texture_0.Sample(sampler_linear_clamp,PSIn.tex); + float4 color = texture_0.Sample(sampler_linear_clamp,input.tex); ALPHATEST(color.a) } \ No newline at end of file diff --git a/WickedEngine/hairparticlePS_deferred.hlsl b/WickedEngine/hairparticlePS_deferred.hlsl index 6d4f33177..8d88e01b2 100644 --- a/WickedEngine/hairparticlePS_deferred.hlsl +++ b/WickedEngine/hairparticlePS_deferred.hlsl @@ -4,9 +4,7 @@ GBUFFEROutputType main(VertexToPixel input) { -#ifdef GRASS_FADE_DITHER clip(dither(input.pos.xy) - input.fade); -#endif float4 color = texture_0.Sample(sampler_linear_clamp, input.tex); color.rgb = DEGAMMA(color.rgb); diff --git a/WickedEngine/hairparticlePS_forward.hlsl b/WickedEngine/hairparticlePS_forward.hlsl index 8b10dd2d8..c2e10fe8f 100644 --- a/WickedEngine/hairparticlePS_forward.hlsl +++ b/WickedEngine/hairparticlePS_forward.hlsl @@ -4,10 +4,6 @@ GBUFFEROutputType_Thin main(VertexToPixel input) { -#ifdef GRASS_FADE_DITHER - clip(dither(input.pos.xy) - input.fade); -#endif - float4 color = texture_0.Sample(sampler_linear_clamp, input.tex); color.rgb = DEGAMMA(color.rgb); color.rgb *= input.color; diff --git a/WickedEngine/wiHairParticle.cpp b/WickedEngine/wiHairParticle.cpp index 7b18a17f8..f1896402d 100644 --- a/WickedEngine/wiHairParticle.cpp +++ b/WickedEngine/wiHairParticle.cpp @@ -255,6 +255,7 @@ void wiHairParticle::LoadShaders() desc.numRTs = 2; desc.RTFormats[0] = wiRenderer::RTFormat_hdr; desc.RTFormats[1] = wiRenderer::RTFormat_gbuffer_1; + desc.dss = &dss_equal; // opaque break; case RENDERPASS_DEFERRED: desc.numRTs = 5; @@ -267,11 +268,6 @@ void wiHairParticle::LoadShaders() break; } - if (i == RENDERPASS_TILEDFORWARD) - { - desc.dss = &dss_equal; // opaque - } - if (j == 1) { desc.dss = &dss_rejectopaque_keeptransparent; // transparent diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 86f0b467b..90733b0de 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates const int minor = 31; // minor bug fixes, alterations, refactors, updates - const int revision = 8; + const int revision = 9; long GetVersion()