diff --git a/WickedEngine/ShaderInterop.h b/WickedEngine/ShaderInterop.h index 4d1f918e7..4faa9aadc 100644 --- a/WickedEngine/ShaderInterop.h +++ b/WickedEngine/ShaderInterop.h @@ -134,8 +134,5 @@ struct ShaderEntityType #define GENERATEMIPCHAIN_2D_BLOCK_SIZE 16 #define GENERATEMIPCHAIN_3D_BLOCK_SIZE 8 -// Skinning compute params: -#define SKINNING_COMPUTE_THREADCOUNT 128 - #endif diff --git a/WickedEngine/ShaderInterop_Skinning.h b/WickedEngine/ShaderInterop_Skinning.h new file mode 100644 index 000000000..512973461 --- /dev/null +++ b/WickedEngine/ShaderInterop_Skinning.h @@ -0,0 +1,10 @@ +#ifndef _SHADERINTEROP_SKINNING_H_ +#define _SHADERINTEROP_SKINNING_H_ +#include "ShaderInterop.h" + + +// Skinning compute params: +#define SKINNING_COMPUTE_THREADCOUNT 128 + + +#endif // _SHADERINTEROP_SKINNING_H_ diff --git a/WickedEngine/WickedEngine_SHARED.vcxitems b/WickedEngine/WickedEngine_SHARED.vcxitems index a4f841fca..c9034bef7 100644 --- a/WickedEngine/WickedEngine_SHARED.vcxitems +++ b/WickedEngine/WickedEngine_SHARED.vcxitems @@ -240,6 +240,7 @@ + diff --git a/WickedEngine/WickedEngine_SHARED.vcxitems.filters b/WickedEngine/WickedEngine_SHARED.vcxitems.filters index 6490683f5..58032cbda 100644 --- a/WickedEngine/WickedEngine_SHARED.vcxitems.filters +++ b/WickedEngine/WickedEngine_SHARED.vcxitems.filters @@ -1143,6 +1143,9 @@ ENGINE\Helpers + + ENGINE\Graphics\GPUMapping + diff --git a/WickedEngine/skinningCS.hlsl b/WickedEngine/skinningCS.hlsl index 92e016a51..e2ef26d25 100644 --- a/WickedEngine/skinningCS.hlsl +++ b/WickedEngine/skinningCS.hlsl @@ -1,5 +1,5 @@ #include "ResourceMapping.h" -#include "ShaderInterop.h" +#include "ShaderInterop_Skinning.h" // This will make use of LDS to preload bones into local memory: // #define USE_LDS diff --git a/WickedEngine/wiLoader.h b/WickedEngine/wiLoader.h index 09116519e..557197189 100644 --- a/WickedEngine/wiLoader.h +++ b/WickedEngine/wiLoader.h @@ -967,7 +967,7 @@ struct WorldInfo{ ambient = XMFLOAT3(0.2f, 0.2f, 0.2f); fogSEH = XMFLOAT3(100, 1000, 0); water = XMFLOAT4(0, 0, 0, 0); - cloudiness = 0.53f; + cloudiness = 0.0f; cloudScale = 0.0003f; cloudSpeed = 0.1f; } diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 3d0ed16b4..731545ae5 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -27,6 +27,7 @@ #include "wiProfiler.h" #include "wiOcean.h" #include "ShaderInterop_CloudGenerator.h" +#include "ShaderInterop_Skinning.h" #include @@ -62,6 +63,7 @@ bool wiRenderer::TRANSPARENTSHADOWSENABLED = true; bool wiRenderer::wireRender = false, wiRenderer::debugSpheres = false, wiRenderer::debugBoneLines = false, wiRenderer::debugPartitionTree = false, wiRenderer::debugEmitters = false, wiRenderer::freezeCullingCamera = false , wiRenderer::debugEnvProbes = false, wiRenderer::debugForceFields = false, wiRenderer::gridHelper = false, wiRenderer::voxelHelper = false, wiRenderer::requestReflectionRendering = false, wiRenderer::advancedLightCulling = true , wiRenderer::advancedRefractions = false; +bool wiRenderer::ldsSkinningEnabled = true; float wiRenderer::SPECULARAA = 0.0f; float wiRenderer::renderTime = 0, wiRenderer::renderTime_Prev = 0, wiRenderer::deltaTime = 0; XMFLOAT2 wiRenderer::temporalAAJitter = XMFLOAT2(0, 0), wiRenderer::temporalAAJitterPrev = XMFLOAT2(0, 0); @@ -3374,7 +3376,7 @@ void wiRenderer::UpdateRenderData(GRAPHICSTHREAD threadID) CSTYPES targetCS = CSTYPE_SKINNING_LDS; - if (armature->boneCollection.size() > SKINNING_COMPUTE_THREADCOUNT) + if (!GetLDSSkinningEnabled() || armature->boneCollection.size() > SKINNING_COMPUTE_THREADCOUNT) { // If we have more bones that can fit into LDS, we switch to a skinning shader which loads from device memory: targetCS = CSTYPE_SKINNING; @@ -3453,7 +3455,7 @@ void wiRenderer::UpdateRenderData(GRAPHICSTHREAD threadID) } // Generate cloud layer: - if(enviroMap == nullptr) // generate only when sky is dynamic + if(enviroMap == nullptr && GetScene().worldInfo.cloudiness > 0) // generate only when sky is dynamic { if (textures[TEXTYPE_2D_CLOUDS] == nullptr) { @@ -5386,7 +5388,14 @@ void wiRenderer::DrawSky(GRAPHICSTHREAD threadID) else { GetDevice()->BindGraphicsPSO(PSO_sky[SKYRENDERING_DYNAMIC], threadID); - GetDevice()->BindResource(PS, textures[TEXTYPE_2D_CLOUDS], TEXSLOT_ONDEMAND0, threadID); + if (GetScene().worldInfo.cloudiness > 0) + { + GetDevice()->BindResource(PS, textures[TEXTYPE_2D_CLOUDS], TEXSLOT_ONDEMAND0, threadID); + } + else + { + GetDevice()->BindResource(PS, wiTextureHelper::getInstance()->getBlack(), TEXSLOT_ONDEMAND0, threadID); + } } GetDevice()->Draw(240, 0, threadID); diff --git a/WickedEngine/wiRenderer.h b/WickedEngine/wiRenderer.h index 22c9c525b..e6545ac0d 100644 --- a/WickedEngine/wiRenderer.h +++ b/WickedEngine/wiRenderer.h @@ -248,6 +248,7 @@ protected: static bool wireRender, debugSpheres, debugBoneLines, debugPartitionTree, debugEnvProbes, debugEmitters, debugForceFields, gridHelper, voxelHelper, advancedLightCulling, advancedRefractions; + static bool ldsSkinningEnabled; static bool requestReflectionRendering; @@ -352,6 +353,8 @@ public: static bool GetAdvancedLightCulling() { return advancedLightCulling; } static void SetOcclusionCullingEnabled(bool enabled); // also inits query pool! static bool GetOcclusionCullingEnabled() { return occlusionCulling; } + static void SetLDSSkinningEnabled(bool enabled) { ldsSkinningEnabled = enabled; } + static bool GetLDSSkinningEnabled() { return ldsSkinningEnabled; } static void SetTemporalAAEnabled(bool enabled) { temporalAA = enabled; } static bool GetTemporalAAEnabled() { return temporalAA; } static void SetTemporalAADebugEnabled(bool enabled) { temporalAADEBUG = enabled; } diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 6216f9183..f097790f3 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates const int minor = 15; // minor bug fixes, alterations, refactors, updates - const int revision = 1; + const int revision = 2; long GetVersion() diff --git a/WickedEngine/wiWidget.cpp b/WickedEngine/wiWidget.cpp index 7afdbc7a4..faa636e49 100644 --- a/WickedEngine/wiWidget.cpp +++ b/WickedEngine/wiWidget.cpp @@ -405,7 +405,7 @@ void wiLabel::Render(wiGUI* gui) scissorRect.right = (LONG)(translation.x + scale.x); scissorRect.top = (LONG)(translation.y); wiRenderer::GetDevice()->SetScissorRects(1, &scissorRect, gui->GetGraphicsThread()); - wiFont(text, wiFontProps((int)translation.x, (int)translation.y, -1, WIFALIGN_LEFT, WIFALIGN_TOP, 2, 1, + wiFont(text, wiFontProps((int)translation.x + 2, (int)translation.y + 2, -1, WIFALIGN_LEFT, WIFALIGN_TOP, 2, 1, textColor, textShadowColor)).Draw(gui->GetGraphicsThread()); } @@ -1037,6 +1037,8 @@ void wiComboBox::Update(wiGUI* gui, float dt ) if (hovered >= 0) { SetSelected(hovered); + gui->DeactivateWidget(this); + combostate = COMBOSTATE_INACTIVE; } } }