diff --git a/ScriptingAPI-Documentation.md b/ScriptingAPI-Documentation.md index 833e734cc..ea798e44d 100644 --- a/ScriptingAPI-Documentation.md +++ b/ScriptingAPI-Documentation.md @@ -495,6 +495,9 @@ It inherits functions from Renderable2DComponent, so it can render a 2D overlay. - SetTessellationEnabled(bool value) - SetMSAASampleCount(int count) - SetHairParticleAlphaCompositionEnabled(bool value) +- SetStereogramEnabled(bool value) +- SetSharpenFilterEnabled(bool value) +- SetSharpenFilterAmount(bool value) ##### ForwardRenderableComponent It renders the scene contained by the Renderer in a forward render path. The component does not hold the scene information, diff --git a/WickedEngine/DeferredRenderableComponent_BindLua.cpp b/WickedEngine/DeferredRenderableComponent_BindLua.cpp index fba7f2c53..1d6042b03 100644 --- a/WickedEngine/DeferredRenderableComponent_BindLua.cpp +++ b/WickedEngine/DeferredRenderableComponent_BindLua.cpp @@ -51,6 +51,8 @@ Luna::FunctionType DeferredRenderableCompon lunamethod(Renderable3DComponent_BindLua, SetEyeAdaptionEnabled), lunamethod(Renderable3DComponent_BindLua, SetTessellationEnabled), lunamethod(Renderable3DComponent_BindLua, SetHairParticleAlphaCompositionEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterAmount), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength), diff --git a/WickedEngine/ForwardRenderableComponent_BindLua.cpp b/WickedEngine/ForwardRenderableComponent_BindLua.cpp index 7646031de..a79b41d6c 100644 --- a/WickedEngine/ForwardRenderableComponent_BindLua.cpp +++ b/WickedEngine/ForwardRenderableComponent_BindLua.cpp @@ -52,6 +52,8 @@ Luna::FunctionType ForwardRenderableComponen lunamethod(Renderable3DComponent_BindLua, SetTessellationEnabled), lunamethod(Renderable3DComponent_BindLua, SetMSAASampleCount), lunamethod(Renderable3DComponent_BindLua, SetHairParticleAlphaCompositionEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterAmount), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength), diff --git a/WickedEngine/PostprocessWindow.cpp b/WickedEngine/PostprocessWindow.cpp index 2737b754e..ecb7f81a5 100644 --- a/WickedEngine/PostprocessWindow.cpp +++ b/WickedEngine/PostprocessWindow.cpp @@ -22,6 +22,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co lensFlareCheckBox = new wiCheckBox("LensFlare: "); lensFlareCheckBox->SetTooltip("Toggle visibility of light source flares. Additional setup needed per light for a lensflare to be visible."); + lensFlareCheckBox->SetScriptTip("Renderable3DComponent::SetLensFlareEnabled(bool value)"); lensFlareCheckBox->SetPos(XMFLOAT2(x, y += 35)); lensFlareCheckBox->SetCheck(component->getLensFlareEnabled()); lensFlareCheckBox->OnClick([&](wiEventArgs args) { @@ -31,6 +32,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co lightShaftsCheckBox = new wiCheckBox("LightShafts: "); lightShaftsCheckBox->SetTooltip("Enable light shaft for directional light sources."); + lightShaftsCheckBox->SetScriptTip("Renderable3DComponent::SetLightShaftsEnabled(bool value)"); lightShaftsCheckBox->SetPos(XMFLOAT2(x, y += 35)); lightShaftsCheckBox->SetCheck(component->getLightShaftsEnabled()); lightShaftsCheckBox->OnClick([&](wiEventArgs args) { @@ -40,6 +42,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co ssaoCheckBox = new wiCheckBox("SSAO: "); ssaoCheckBox->SetTooltip("Enable Screen Space Ambient Occlusion. (Deferred only for now)"); + ssaoCheckBox->SetScriptTip("Renderable3DComponent::SetSSAOEnabled(bool value)"); ssaoCheckBox->SetPos(XMFLOAT2(x, y += 35)); ssaoCheckBox->SetCheck(component->getSSAOEnabled()); ssaoCheckBox->OnClick([&](wiEventArgs args) { @@ -49,6 +52,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co ssrCheckBox = new wiCheckBox("SSR: "); ssrCheckBox->SetTooltip("Enable Screen Space Reflections. (Deferred only for now)"); + ssrCheckBox->SetScriptTip("Renderable3DComponent::SetSSREnabled(bool value)"); ssrCheckBox->SetPos(XMFLOAT2(x, y += 35)); ssrCheckBox->SetCheck(component->getSSREnabled()); ssrCheckBox->OnClick([&](wiEventArgs args) { @@ -58,6 +62,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co sssCheckBox = new wiCheckBox("SSS: "); sssCheckBox->SetTooltip("Enable Subsurface Scattering. (Deferred only for now)"); + sssCheckBox->SetScriptTip("Renderable3DComponent::SetSSSEnabled(bool value)"); sssCheckBox->SetPos(XMFLOAT2(x, y += 35)); sssCheckBox->SetCheck(component->getSSSEnabled()); sssCheckBox->OnClick([&](wiEventArgs args) { @@ -76,6 +81,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co motionBlurCheckBox = new wiCheckBox("MotionBlur: "); motionBlurCheckBox->SetTooltip("Enable motion blur for camera movement and animated meshes."); + motionBlurCheckBox->SetScriptTip("Renderable3DComponent::SetMotionBlurEnabled(bool value)"); motionBlurCheckBox->SetPos(XMFLOAT2(x, y += 35)); motionBlurCheckBox->SetCheck(component->getMotionBlurEnabled()); motionBlurCheckBox->OnClick([&](wiEventArgs args) { @@ -85,6 +91,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co depthOfFieldCheckBox = new wiCheckBox("DepthOfField: "); depthOfFieldCheckBox->SetTooltip("Enable Depth of field effect. Additional focus and strength setup required."); + depthOfFieldCheckBox->SetScriptTip("Renderable3DComponent::SetDepthOfFieldEnabled(bool value)"); depthOfFieldCheckBox->SetPos(XMFLOAT2(x, y += 35)); depthOfFieldCheckBox->SetCheck(component->getDepthOfFieldEnabled()); depthOfFieldCheckBox->OnClick([&](wiEventArgs args) { @@ -94,6 +101,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co depthOfFieldFocusSlider = new wiSlider(0.01f, 600, 100, 10000, "Focus: "); depthOfFieldFocusSlider->SetTooltip("Set the focus distance from the camera. The picture will be sharper near the focus, and blurrier further from it."); + depthOfFieldFocusSlider->SetScriptTip("Renderable3DComponent::SetDepthOfFieldFocus(float value)"); depthOfFieldFocusSlider->SetSize(XMFLOAT2(100, 20)); depthOfFieldFocusSlider->SetPos(XMFLOAT2(x + 100, y)); depthOfFieldFocusSlider->SetValue(component->getDepthOfFieldFocus()); @@ -104,6 +112,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co depthOfFieldStrengthSlider = new wiSlider(0.01f, 4, 100, 1000, "Strength: "); depthOfFieldStrengthSlider->SetTooltip("Set depth of field blur strength."); + depthOfFieldStrengthSlider->SetScriptTip("Renderable3DComponent::SetDepthOfFieldStrength(float value)"); depthOfFieldStrengthSlider->SetSize(XMFLOAT2(100, 20)); depthOfFieldStrengthSlider->SetPos(XMFLOAT2(x + 100, y += 35)); depthOfFieldStrengthSlider->SetValue(component->getDepthOfFieldStrength()); @@ -114,6 +123,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co bloomCheckBox = new wiCheckBox("Bloom: "); bloomCheckBox->SetTooltip("Enable bloom. The effect adds color bleeding to the brightest parts of the scene."); + bloomCheckBox->SetScriptTip("Renderable3DComponent::SetBloomEnabled(bool value)"); bloomCheckBox->SetPos(XMFLOAT2(x, y += 35)); bloomCheckBox->SetCheck(component->getBloomEnabled()); bloomCheckBox->OnClick([&](wiEventArgs args) { @@ -123,6 +133,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co fxaaCheckBox = new wiCheckBox("FXAA: "); fxaaCheckBox->SetTooltip("Fast Approximate Anti Aliasing. A fast antialiasing method, but can be a bit too blurry."); + fxaaCheckBox->SetScriptTip("Renderable3DComponent::SetFXAAEnabled(bool value)"); fxaaCheckBox->SetPos(XMFLOAT2(x, y += 35)); fxaaCheckBox->SetCheck(component->getFXAAEnabled()); fxaaCheckBox->OnClick([&](wiEventArgs args) { @@ -132,6 +143,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co colorGradingCheckBox = new wiCheckBox("Color Grading: "); colorGradingCheckBox->SetTooltip("Enable color grading of the final render. An additional lookup texture must be set for it to take effect."); + colorGradingCheckBox->SetScriptTip("Renderable3DComponent::SetColorGradingEnabled(bool value)"); colorGradingCheckBox->SetPos(XMFLOAT2(x, y += 35)); colorGradingCheckBox->SetCheck(component->getColorGradingEnabled()); colorGradingCheckBox->OnClick([&](wiEventArgs args) { @@ -141,6 +153,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co stereogramCheckBox = new wiCheckBox("Stereogram: "); stereogramCheckBox->SetTooltip("Compute a stereogram from the depth buffer. It produces a 3D sihouette image when viewed cross eyed."); + stereogramCheckBox->SetScriptTip("Renderable3DComponent::SetStereogramEnabled(bool value)"); stereogramCheckBox->SetPos(XMFLOAT2(x, y += 35)); stereogramCheckBox->SetCheck(component->getStereogramEnabled()); stereogramCheckBox->OnClick([&](wiEventArgs args) { @@ -150,6 +163,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co sharpenFilterCheckBox = new wiCheckBox("Sharpen Filter: "); sharpenFilterCheckBox->SetTooltip("Toggle sharpening post process of the final image."); + sharpenFilterCheckBox->SetScriptTip("Renderable3DComponent::SetSharpenFilterEnabled(bool value)"); sharpenFilterCheckBox->SetPos(XMFLOAT2(x, y += 35)); sharpenFilterCheckBox->SetCheck(component->getSharpenFilterEnabled()); sharpenFilterCheckBox->OnClick([&](wiEventArgs args) { @@ -159,6 +173,7 @@ PostprocessWindow::PostprocessWindow(Renderable3DComponent* comp) : component(co sharpenFilterAmountSlider = new wiSlider(0, 4, 1, 1000, "Amount: "); sharpenFilterAmountSlider->SetTooltip("Set sharpness filter strength."); + sharpenFilterAmountSlider->SetScriptTip("Renderable3DComponent::SetSharpenFilterAmount(float value)"); sharpenFilterAmountSlider->SetSize(XMFLOAT2(100, 20)); sharpenFilterAmountSlider->SetPos(XMFLOAT2(x + 100, y)); sharpenFilterAmountSlider->SetValue(component->getSharpenFilterAmount()); diff --git a/WickedEngine/Renderable3DComponent_BindLua.cpp b/WickedEngine/Renderable3DComponent_BindLua.cpp index 4558d5c2b..871e92d0b 100644 --- a/WickedEngine/Renderable3DComponent_BindLua.cpp +++ b/WickedEngine/Renderable3DComponent_BindLua.cpp @@ -53,6 +53,8 @@ Luna::FunctionType Renderable3DComponent_BindLua: lunamethod(Renderable3DComponent_BindLua, SetTessellationEnabled), lunamethod(Renderable3DComponent_BindLua, SetMSAASampleCount), lunamethod(Renderable3DComponent_BindLua, SetHairParticleAlphaCompositionEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterAmount), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength), @@ -364,6 +366,36 @@ int Renderable3DComponent_BindLua::SetHairParticleAlphaCompositionEnabled(lua_St wiLua::SError(L, "SetHairParticleAlphaCompositionEnabled(bool value) not enough arguments!"); return 0; } +int Renderable3DComponent_BindLua::SetSharpenFilterEnabled(lua_State* L) +{ + if (component == nullptr) + { + wiLua::SError(L, "SetSharpenFilterEnabled(bool value) component is null!"); + return 0; + } + if (wiLua::SGetArgCount(L) > 0) + { + ((Renderable3DComponent*)component)->setSharpenFilterEnabled(wiLua::SGetBool(L, 1)); + } + else + wiLua::SError(L, "SetSharpenFilterEnabled(bool value) not enough arguments!"); + return 0; +} +int Renderable3DComponent_BindLua::SetSharpenFilterAmount(lua_State* L) +{ + if (component == nullptr) + { + wiLua::SError(L, "SetSharpenFilterAmount(bool value) component is null!"); + return 0; + } + if (wiLua::SGetArgCount(L) > 0) + { + ((Renderable3DComponent*)component)->setSharpenFilterAmount(wiLua::SGetFloat(L, 1)); + } + else + wiLua::SError(L, "SetSharpenFilterAmount(bool value) not enough arguments!"); + return 0; +} int Renderable3DComponent_BindLua::SetDepthOfFieldFocus(lua_State* L) diff --git a/WickedEngine/Renderable3DComponent_BindLua.h b/WickedEngine/Renderable3DComponent_BindLua.h index dd558f2ff..22af84da6 100644 --- a/WickedEngine/Renderable3DComponent_BindLua.h +++ b/WickedEngine/Renderable3DComponent_BindLua.h @@ -36,6 +36,8 @@ public: int SetTessellationEnabled(lua_State* L); int SetMSAASampleCount(lua_State* L); int SetHairParticleAlphaCompositionEnabled(lua_State* L); + int SetSharpenFilterEnabled(lua_State* L); + int SetSharpenFilterAmount(lua_State* L); int SetDepthOfFieldFocus(lua_State* L); int SetDepthOfFieldStrength(lua_State* L); diff --git a/WickedEngine/TiledForwardRenderableComponent_BindLua.cpp b/WickedEngine/TiledForwardRenderableComponent_BindLua.cpp index fccc6636b..8a7abacb2 100644 --- a/WickedEngine/TiledForwardRenderableComponent_BindLua.cpp +++ b/WickedEngine/TiledForwardRenderableComponent_BindLua.cpp @@ -51,6 +51,8 @@ Luna::FunctionType TiledForwardRenderab lunamethod(Renderable3DComponent_BindLua, SetTessellationEnabled), lunamethod(Renderable3DComponent_BindLua, SetMSAASampleCount), lunamethod(Renderable3DComponent_BindLua, SetHairParticleAlphaCompositionEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterEnabled), + lunamethod(Renderable3DComponent_BindLua, SetSharpenFilterAmount), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldFocus), lunamethod(Renderable3DComponent_BindLua, SetDepthOfFieldStrength), diff --git a/WickedEngine/wiFont.h b/WickedEngine/wiFont.h index 2247a1d18..d13feb1a7 100644 --- a/WickedEngine/wiFont.h +++ b/WickedEngine/wiFont.h @@ -30,7 +30,7 @@ public: wiColor shadowColor; wiFontProps(int posX = 0, int posY = 0, int size = -1, wiFontAlign h_align = WIFALIGN_LEFT, wiFontAlign v_align = WIFALIGN_TOP - , int spacingX = 2, int spacingY = 1, const wiColor& color = wiColor(255, 255, 255, 255), const wiColor& shadowColor = wiColor(0,0,0,255)) + , int spacingX = 2, int spacingY = 1, const wiColor& color = wiColor(255, 255, 255, 255), const wiColor& shadowColor = wiColor(0,0,0,0)) :posX(posX), posY(posY), size(size), h_align(h_align), v_align(v_align), spacingX(spacingX), spacingY(spacingY), color(color), shadowColor(shadowColor) {} }; diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 1f80e7b1b..a3cb306e1 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -7,7 +7,7 @@ namespace wiVersion // minor features, major updates const int minor = 11; // minor bug fixes, alterations, refactors, updates - const int revision = 21; + const int revision = 22; long GetVersion() diff --git a/WickedEngine/wiWidget.cpp b/WickedEngine/wiWidget.cpp index b197ad5a4..0089b950a 100644 --- a/WickedEngine/wiWidget.cpp +++ b/WickedEngine/wiWidget.cpp @@ -66,13 +66,26 @@ void wiWidget::RenderTooltip(wiGUI* gui) { tooltipPos.y += 40; } - wiFontProps fontProps = wiFontProps((int)tooltipPos.x, (int)tooltipPos.y, -1, WIFALIGN_CENTER, WIFALIGN_CENTER); - fontProps.color = wiColor(25, 25, 25, 1); + wiFontProps fontProps = wiFontProps((int)tooltipPos.x, (int)tooltipPos.y, -1, WIFALIGN_LEFT, WIFALIGN_TOP); + fontProps.color = wiColor(25, 25, 25, 255); wiFont tooltipFont = wiFont(tooltip, fontProps); - float fontWidth = (float)tooltipFont.textWidth() + 4; - float fontHeight = (float)tooltipFont.textHeight() + 4; - wiImage::Draw(wiTextureHelper::getInstance()->getColor(wiColor(255,234,165)), wiImageEffects(tooltipPos.x - fontWidth*0.5f, tooltipPos.y - fontHeight*0.5f, fontWidth, fontHeight), gui->GetGraphicsThread()); + if (!scriptTip.empty()) + { + tooltipFont.SetText(tooltip + "\n" + scriptTip); + } + static const float _border = 2; + float fontWidth = (float)tooltipFont.textWidth() + _border* 2; + float fontHeight = (float)tooltipFont.textHeight() + _border * 2; + wiImage::Draw(wiTextureHelper::getInstance()->getColor(wiColor(255, 234, 165)), wiImageEffects(tooltipPos.x - _border, tooltipPos.y - _border, fontWidth, fontHeight), gui->GetGraphicsThread()); + tooltipFont.SetText(tooltip); tooltipFont.Draw(gui->GetGraphicsThread()); + if (!scriptTip.empty()) + { + tooltipFont.SetText(scriptTip); + tooltipFont.props.posY += (int)(fontHeight / 2); + tooltipFont.props.color = wiColor(25, 25, 25, 110); + tooltipFont.Draw(gui->GetGraphicsThread()); + } } } wiHashString wiWidget::GetName() @@ -105,6 +118,10 @@ void wiWidget::SetTooltip(const string& value) { tooltip = value; } +void wiWidget::SetScriptTip(const string& value) +{ + scriptTip = value; +} void wiWidget::SetPos(const XMFLOAT2& value) { Transform::translation_rest.x = value.x; diff --git a/WickedEngine/wiWidget.h b/WickedEngine/wiWidget.h index ea21c0e93..b5952f836 100644 --- a/WickedEngine/wiWidget.h +++ b/WickedEngine/wiWidget.h @@ -44,6 +44,7 @@ protected: wiHashString fastName; string text; string tooltip; + string scriptTip; bool enabled; bool visible; @@ -64,6 +65,7 @@ public: string GetText(); void SetText(const string& value); void SetTooltip(const string& value); + void SetScriptTip(const string& value); void SetPos(const XMFLOAT2& value); void SetSize(const XMFLOAT2& value); WIDGETSTATE GetState();