431 lines
19 KiB
C++
431 lines
19 KiB
C++
#include "stdafx.h"
|
|
#include "PostprocessWindow.h"
|
|
#include "Editor.h"
|
|
|
|
#include <thread>
|
|
|
|
using namespace std;
|
|
using namespace wiGraphics;
|
|
|
|
|
|
void PostprocessWindow::Create(EditorComponent* editor)
|
|
{
|
|
wiWindow::Create("PostProcess Window");
|
|
SetSize(XMFLOAT2(420, 520));
|
|
|
|
float x = 150;
|
|
float y = 10;
|
|
float hei = 18;
|
|
float step = hei + 2;
|
|
|
|
exposureSlider.Create(0.0f, 3.0f, 1, 10000, "Exposure: ");
|
|
exposureSlider.SetTooltip("Set the tonemap exposure value");
|
|
exposureSlider.SetScriptTip("RenderPath3D::SetExposure(float value)");
|
|
exposureSlider.SetSize(XMFLOAT2(100, hei));
|
|
exposureSlider.SetPos(XMFLOAT2(x, y += step));
|
|
exposureSlider.SetValue(editor->renderPath->getExposure());
|
|
exposureSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setExposure(args.fValue);
|
|
});
|
|
AddWidget(&exposureSlider);
|
|
|
|
lensFlareCheckBox.Create("LensFlare: ");
|
|
lensFlareCheckBox.SetTooltip("Toggle visibility of light source flares. Additional setup needed per light for a lensflare to be visible.");
|
|
lensFlareCheckBox.SetScriptTip("RenderPath3D::SetLensFlareEnabled(bool value)");
|
|
lensFlareCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
lensFlareCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
lensFlareCheckBox.SetCheck(editor->renderPath->getLensFlareEnabled());
|
|
lensFlareCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setLensFlareEnabled(args.bValue);
|
|
});
|
|
AddWidget(&lensFlareCheckBox);
|
|
|
|
lightShaftsCheckBox.Create("LightShafts: ");
|
|
lightShaftsCheckBox.SetTooltip("Enable light shaft for directional light sources.");
|
|
lightShaftsCheckBox.SetScriptTip("RenderPath3D::SetLightShaftsEnabled(bool value)");
|
|
lightShaftsCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
lightShaftsCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
lightShaftsCheckBox.SetCheck(editor->renderPath->getLightShaftsEnabled());
|
|
lightShaftsCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setLightShaftsEnabled(args.bValue);
|
|
});
|
|
AddWidget(&lightShaftsCheckBox);
|
|
|
|
volumetricCloudsCheckBox.Create("Volumetric clouds: ");
|
|
volumetricCloudsCheckBox.SetTooltip("Enable volumetric cloud rendering.");
|
|
volumetricCloudsCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
volumetricCloudsCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
volumetricCloudsCheckBox.SetCheck(editor->renderPath->getVolumetricCloudsEnabled());
|
|
volumetricCloudsCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setVolumetricCloudsEnabled(args.bValue);
|
|
});
|
|
AddWidget(&volumetricCloudsCheckBox);
|
|
|
|
aoComboBox.Create("AO: ");
|
|
aoComboBox.SetTooltip("Choose Ambient Occlusion type. RTAO is only available if hardware supports ray tracing");
|
|
aoComboBox.SetScriptTip("RenderPath3D::SetAO(int value)");
|
|
aoComboBox.SetSize(XMFLOAT2(150, hei));
|
|
aoComboBox.SetPos(XMFLOAT2(x, y += step));
|
|
aoComboBox.AddItem("Disabled");
|
|
aoComboBox.AddItem("SSAO");
|
|
aoComboBox.AddItem("HBAO");
|
|
aoComboBox.AddItem("MSAO");
|
|
if (wiRenderer::GetDevice()->CheckCapability(GRAPHICSDEVICE_CAPABILITY_RAYTRACING))
|
|
{
|
|
aoComboBox.AddItem("RTAO");
|
|
}
|
|
aoComboBox.SetSelected(editor->renderPath->getAO());
|
|
aoComboBox.OnSelect([=](wiEventArgs args) {
|
|
editor->renderPath->setAO((RenderPath3D::AO)args.iValue);
|
|
|
|
switch (editor->renderPath->getAO())
|
|
{
|
|
case RenderPath3D::AO_SSAO:
|
|
aoRangeSlider.SetEnabled(true);
|
|
aoRangeSlider.SetValue(2.0f);
|
|
aoSampleCountSlider.SetEnabled(true);
|
|
aoSampleCountSlider.SetValue(9.0f);
|
|
break;
|
|
case RenderPath3D::AO_RTAO:
|
|
aoRangeSlider.SetEnabled(true);
|
|
aoRangeSlider.SetValue(10.0f);
|
|
aoSampleCountSlider.SetEnabled(true);
|
|
aoSampleCountSlider.SetValue(2.0f);
|
|
break;
|
|
default:
|
|
aoRangeSlider.SetEnabled(false);
|
|
aoSampleCountSlider.SetEnabled(false);
|
|
break;
|
|
}
|
|
|
|
editor->renderPath->setAORange(aoRangeSlider.GetValue());
|
|
editor->renderPath->setAOSampleCount((uint32_t)aoSampleCountSlider.GetValue());
|
|
});
|
|
AddWidget(&aoComboBox);
|
|
|
|
aoPowerSlider.Create(0.25f, 8.0f, 2, 1000, "Power: ");
|
|
aoPowerSlider.SetTooltip("Set SSAO Power. Higher values produce darker, more pronounced effect");
|
|
aoPowerSlider.SetSize(XMFLOAT2(100, hei));
|
|
aoPowerSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
aoPowerSlider.SetValue((float)editor->renderPath->getAOPower());
|
|
aoPowerSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setAOPower(args.fValue);
|
|
});
|
|
AddWidget(&aoPowerSlider);
|
|
|
|
aoRangeSlider.Create(1.0f, 100.0f, 1, 1000, "Range: ");
|
|
aoRangeSlider.SetTooltip("Set AO ray length. Only for SSAO and RTAO");
|
|
aoRangeSlider.SetSize(XMFLOAT2(100, hei));
|
|
aoRangeSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
aoRangeSlider.SetValue((float)editor->renderPath->getAOPower());
|
|
aoRangeSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setAORange(args.fValue);
|
|
});
|
|
AddWidget(&aoRangeSlider);
|
|
|
|
aoSampleCountSlider.Create(1, 16, 9, 15, "Sample Count: ");
|
|
aoSampleCountSlider.SetTooltip("Set AO ray count. Only for SSAO and RTAO");
|
|
aoSampleCountSlider.SetSize(XMFLOAT2(100, hei));
|
|
aoSampleCountSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
aoSampleCountSlider.SetValue((float)editor->renderPath->getAOPower());
|
|
aoSampleCountSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setAOSampleCount(args.iValue);
|
|
});
|
|
AddWidget(&aoSampleCountSlider);
|
|
|
|
ssrCheckBox.Create("SSR: ");
|
|
ssrCheckBox.SetTooltip("Enable Screen Space Reflections.");
|
|
ssrCheckBox.SetScriptTip("RenderPath3D::SetSSREnabled(bool value)");
|
|
ssrCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
ssrCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
ssrCheckBox.SetCheck(editor->renderPath->getSSREnabled());
|
|
ssrCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setSSREnabled(args.bValue);
|
|
});
|
|
AddWidget(&ssrCheckBox);
|
|
|
|
raytracedReflectionsCheckBox.Create("Ray Traced Reflections: ");
|
|
raytracedReflectionsCheckBox.SetTooltip("Enable Ray Traced Reflections. Only if GPU supports raytracing.");
|
|
raytracedReflectionsCheckBox.SetScriptTip("RenderPath3D::SetRaytracedReflectionsEnabled(bool value)");
|
|
raytracedReflectionsCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
raytracedReflectionsCheckBox.SetPos(XMFLOAT2(x + 200, y));
|
|
raytracedReflectionsCheckBox.SetCheck(editor->renderPath->getRaytracedReflectionEnabled());
|
|
raytracedReflectionsCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setRaytracedReflectionsEnabled(args.bValue);
|
|
});
|
|
AddWidget(&raytracedReflectionsCheckBox);
|
|
raytracedReflectionsCheckBox.SetEnabled(wiRenderer::GetDevice()->CheckCapability(GRAPHICSDEVICE_CAPABILITY_RAYTRACING));
|
|
|
|
screenSpaceShadowsCheckBox.Create("SS Shadows: ");
|
|
screenSpaceShadowsCheckBox.SetTooltip("Enable screen space contact shadows. This can add small shadows details to shadow maps in screen space.");
|
|
screenSpaceShadowsCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
screenSpaceShadowsCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
screenSpaceShadowsCheckBox.SetCheck(wiRenderer::GetScreenSpaceShadowsEnabled());
|
|
screenSpaceShadowsCheckBox.OnClick([=](wiEventArgs args) {
|
|
wiRenderer::SetScreenSpaceShadowsEnabled(args.bValue);
|
|
});
|
|
AddWidget(&screenSpaceShadowsCheckBox);
|
|
|
|
screenSpaceShadowsRangeSlider.Create(0.1f, 10.0f, 1, 1000, "Range: ");
|
|
screenSpaceShadowsRangeSlider.SetTooltip("Range of contact shadows");
|
|
screenSpaceShadowsRangeSlider.SetSize(XMFLOAT2(100, hei));
|
|
screenSpaceShadowsRangeSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
screenSpaceShadowsRangeSlider.SetValue((float)editor->renderPath->getScreenSpaceShadowRange());
|
|
screenSpaceShadowsRangeSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setScreenSpaceShadowRange(args.fValue);
|
|
});
|
|
AddWidget(&screenSpaceShadowsRangeSlider);
|
|
|
|
screenSpaceShadowsStepCountSlider.Create(4, 128, 16, 128 - 4, "Sample Count: ");
|
|
screenSpaceShadowsStepCountSlider.SetTooltip("Sample count of contact shadows. Higher values are better quality but slower.");
|
|
screenSpaceShadowsStepCountSlider.SetSize(XMFLOAT2(100, hei));
|
|
screenSpaceShadowsStepCountSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
screenSpaceShadowsStepCountSlider.SetValue((float)editor->renderPath->getScreenSpaceShadowSampleCount());
|
|
screenSpaceShadowsStepCountSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setScreenSpaceShadowSampleCount(args.iValue);
|
|
});
|
|
AddWidget(&screenSpaceShadowsStepCountSlider);
|
|
|
|
eyeAdaptionCheckBox.Create("EyeAdaption: ");
|
|
eyeAdaptionCheckBox.SetTooltip("Enable eye adaption for the overall screen luminance");
|
|
eyeAdaptionCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
eyeAdaptionCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
eyeAdaptionCheckBox.SetCheck(editor->renderPath->getEyeAdaptionEnabled());
|
|
eyeAdaptionCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setEyeAdaptionEnabled(args.bValue);
|
|
});
|
|
AddWidget(&eyeAdaptionCheckBox);
|
|
|
|
motionBlurCheckBox.Create("MotionBlur: ");
|
|
motionBlurCheckBox.SetTooltip("Enable motion blur for camera movement and animated meshes.");
|
|
motionBlurCheckBox.SetScriptTip("RenderPath3D::SetMotionBlurEnabled(bool value)");
|
|
motionBlurCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
motionBlurCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
motionBlurCheckBox.SetCheck(editor->renderPath->getMotionBlurEnabled());
|
|
motionBlurCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setMotionBlurEnabled(args.bValue);
|
|
});
|
|
AddWidget(&motionBlurCheckBox);
|
|
|
|
motionBlurStrengthSlider.Create(0.1f, 400, 100, 10000, "Strength: ");
|
|
motionBlurStrengthSlider.SetTooltip("Set the camera shutter speed for motion blur (higher value means stronger blur).");
|
|
motionBlurStrengthSlider.SetScriptTip("RenderPath3D::SetMotionBlurStrength(float value)");
|
|
motionBlurStrengthSlider.SetSize(XMFLOAT2(100, hei));
|
|
motionBlurStrengthSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
motionBlurStrengthSlider.SetValue(editor->renderPath->getMotionBlurStrength());
|
|
motionBlurStrengthSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setMotionBlurStrength(args.fValue);
|
|
});
|
|
AddWidget(&motionBlurStrengthSlider);
|
|
|
|
depthOfFieldCheckBox.Create("DepthOfField: ");
|
|
depthOfFieldCheckBox.SetTooltip("Enable Depth of field effect. Additional focus and strength setup required.");
|
|
depthOfFieldCheckBox.SetScriptTip("RenderPath3D::SetDepthOfFieldEnabled(bool value)");
|
|
depthOfFieldCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
depthOfFieldCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
depthOfFieldCheckBox.SetCheck(editor->renderPath->getDepthOfFieldEnabled());
|
|
depthOfFieldCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setDepthOfFieldEnabled(args.bValue);
|
|
});
|
|
AddWidget(&depthOfFieldCheckBox);
|
|
|
|
depthOfFieldFocusSlider.Create(1.0f, 100, 10, 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("RenderPath3D::SetDepthOfFieldFocus(float value)");
|
|
depthOfFieldFocusSlider.SetSize(XMFLOAT2(100, hei));
|
|
depthOfFieldFocusSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
depthOfFieldFocusSlider.SetValue(editor->renderPath->getDepthOfFieldFocus());
|
|
depthOfFieldFocusSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setDepthOfFieldFocus(args.fValue);
|
|
});
|
|
AddWidget(&depthOfFieldFocusSlider);
|
|
|
|
depthOfFieldScaleSlider.Create(1.0f, 20, 100, 1000, "Scale: ");
|
|
depthOfFieldScaleSlider.SetTooltip("Set depth of field scale/falloff.");
|
|
depthOfFieldScaleSlider.SetScriptTip("RenderPath3D::SetDepthOfFieldStrength(float value)");
|
|
depthOfFieldScaleSlider.SetSize(XMFLOAT2(100, hei));
|
|
depthOfFieldScaleSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
depthOfFieldScaleSlider.SetValue(editor->renderPath->getDepthOfFieldStrength());
|
|
depthOfFieldScaleSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setDepthOfFieldStrength(args.fValue);
|
|
});
|
|
AddWidget(&depthOfFieldScaleSlider);
|
|
|
|
depthOfFieldAspectSlider.Create(0.01f, 2, 1, 1000, "Aspect: ");
|
|
depthOfFieldAspectSlider.SetTooltip("Set depth of field bokeh aspect ratio (width/height).");
|
|
depthOfFieldAspectSlider.SetScriptTip("RenderPath3D::SetDepthOfFieldAspect(float value)");
|
|
depthOfFieldAspectSlider.SetSize(XMFLOAT2(100, hei));
|
|
depthOfFieldAspectSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
depthOfFieldAspectSlider.SetValue(editor->renderPath->getDepthOfFieldAspect());
|
|
depthOfFieldAspectSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setDepthOfFieldAspect(args.fValue);
|
|
});
|
|
AddWidget(&depthOfFieldAspectSlider);
|
|
|
|
bloomCheckBox.Create("Bloom: ");
|
|
bloomCheckBox.SetTooltip("Enable bloom. The effect adds color bleeding to the brightest parts of the scene.");
|
|
bloomCheckBox.SetScriptTip("RenderPath3D::SetBloomEnabled(bool value)");
|
|
bloomCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
bloomCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
bloomCheckBox.SetCheck(editor->renderPath->getBloomEnabled());
|
|
bloomCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setBloomEnabled(args.bValue);
|
|
});
|
|
AddWidget(&bloomCheckBox);
|
|
|
|
bloomStrengthSlider.Create(0.0f, 10, 1, 1000, "Threshold: ");
|
|
bloomStrengthSlider.SetTooltip("Set bloom threshold. The values below this will not glow on the screen.");
|
|
bloomStrengthSlider.SetSize(XMFLOAT2(100, hei));
|
|
bloomStrengthSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
bloomStrengthSlider.SetValue(editor->renderPath->getBloomThreshold());
|
|
bloomStrengthSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setBloomThreshold(args.fValue);
|
|
});
|
|
AddWidget(&bloomStrengthSlider);
|
|
|
|
fxaaCheckBox.Create("FXAA: ");
|
|
fxaaCheckBox.SetTooltip("Fast Approximate Anti Aliasing. A fast antialiasing method, but can be a bit too blurry.");
|
|
fxaaCheckBox.SetScriptTip("RenderPath3D::SetFXAAEnabled(bool value)");
|
|
fxaaCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
fxaaCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
fxaaCheckBox.SetCheck(editor->renderPath->getFXAAEnabled());
|
|
fxaaCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setFXAAEnabled(args.bValue);
|
|
});
|
|
AddWidget(&fxaaCheckBox);
|
|
|
|
colorGradingCheckBox.Create("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("RenderPath3D::SetColorGradingEnabled(bool value)");
|
|
colorGradingCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
colorGradingCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
colorGradingCheckBox.SetCheck(editor->renderPath->getColorGradingEnabled());
|
|
colorGradingCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setColorGradingEnabled(args.bValue);
|
|
});
|
|
AddWidget(&colorGradingCheckBox);
|
|
|
|
colorGradingButton.Create("Load Color Grading LUT...");
|
|
colorGradingButton.SetTooltip("Load a color grading lookup texture...");
|
|
colorGradingButton.SetPos(XMFLOAT2(x + 35, y));
|
|
colorGradingButton.SetSize(XMFLOAT2(200, hei));
|
|
colorGradingButton.OnClick([=](wiEventArgs args) {
|
|
auto x = editor->renderPath->getColorGradingTexture();
|
|
|
|
if (x == nullptr)
|
|
{
|
|
wiHelper::FileDialogParams params;
|
|
params.type = wiHelper::FileDialogParams::OPEN;
|
|
params.description = "Texture";
|
|
params.extensions.push_back("dds");
|
|
params.extensions.push_back("png");
|
|
params.extensions.push_back("jpg");
|
|
params.extensions.push_back("jpeg");
|
|
params.extensions.push_back("tga");
|
|
wiHelper::FileDialog(params, [=](std::string fileName) {
|
|
wiEvent::Subscribe_Once(SYSTEM_EVENT_THREAD_SAFE_POINT, [=](uint64_t userdata) {
|
|
editor->renderPath->setColorGradingTexture(wiResourceManager::Load(fileName));
|
|
if (editor->renderPath->getColorGradingTexture() != nullptr)
|
|
{
|
|
colorGradingButton.SetText(fileName);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
else
|
|
{
|
|
editor->renderPath->setColorGradingTexture(nullptr);
|
|
colorGradingButton.SetText("Load Color Grading LUT...");
|
|
}
|
|
|
|
});
|
|
AddWidget(&colorGradingButton);
|
|
|
|
ditherCheckBox.Create("Dithering: ");
|
|
ditherCheckBox.SetTooltip("Toggle the full screen dithering effect. This helps to reduce color banding.");
|
|
ditherCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
ditherCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
ditherCheckBox.SetCheck(editor->renderPath->getDitherEnabled());
|
|
ditherCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setDitherEnabled(args.bValue);
|
|
});
|
|
AddWidget(&ditherCheckBox);
|
|
|
|
sharpenFilterCheckBox.Create("Sharpen Filter: ");
|
|
sharpenFilterCheckBox.SetTooltip("Toggle sharpening post process of the final image.");
|
|
sharpenFilterCheckBox.SetScriptTip("RenderPath3D::SetSharpenFilterEnabled(bool value)");
|
|
sharpenFilterCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
sharpenFilterCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
sharpenFilterCheckBox.SetCheck(editor->renderPath->getSharpenFilterEnabled());
|
|
sharpenFilterCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setSharpenFilterEnabled(args.bValue);
|
|
});
|
|
AddWidget(&sharpenFilterCheckBox);
|
|
|
|
sharpenFilterAmountSlider.Create(0, 4, 1, 1000, "Amount: ");
|
|
sharpenFilterAmountSlider.SetTooltip("Set sharpness filter strength.");
|
|
sharpenFilterAmountSlider.SetScriptTip("RenderPath3D::SetSharpenFilterAmount(float value)");
|
|
sharpenFilterAmountSlider.SetSize(XMFLOAT2(100, hei));
|
|
sharpenFilterAmountSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
sharpenFilterAmountSlider.SetValue(editor->renderPath->getSharpenFilterAmount());
|
|
sharpenFilterAmountSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setSharpenFilterAmount(args.fValue);
|
|
});
|
|
AddWidget(&sharpenFilterAmountSlider);
|
|
|
|
outlineCheckBox.Create("Cartoon Outline: ");
|
|
outlineCheckBox.SetTooltip("Toggle the full screen cartoon outline effect.");
|
|
outlineCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
outlineCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
outlineCheckBox.SetCheck(editor->renderPath->getOutlineEnabled());
|
|
outlineCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setOutlineEnabled(args.bValue);
|
|
});
|
|
AddWidget(&outlineCheckBox);
|
|
|
|
outlineThresholdSlider.Create(0, 1, 0.1f, 1000, "Threshold: ");
|
|
outlineThresholdSlider.SetTooltip("Outline edge detection threshold. Increase if not enough otlines are detected, decrease if too many outlines are detected.");
|
|
outlineThresholdSlider.SetSize(XMFLOAT2(100, hei));
|
|
outlineThresholdSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
outlineThresholdSlider.SetValue(editor->renderPath->getOutlineThreshold());
|
|
outlineThresholdSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setOutlineThreshold(args.fValue);
|
|
});
|
|
AddWidget(&outlineThresholdSlider);
|
|
|
|
outlineThicknessSlider.Create(0, 4, 1, 1000, "Thickness: ");
|
|
outlineThicknessSlider.SetTooltip("Set outline thickness.");
|
|
outlineThicknessSlider.SetSize(XMFLOAT2(100, hei));
|
|
outlineThicknessSlider.SetPos(XMFLOAT2(x + 100, y += step));
|
|
outlineThicknessSlider.SetValue(editor->renderPath->getOutlineThickness());
|
|
outlineThicknessSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setOutlineThickness(args.fValue);
|
|
});
|
|
AddWidget(&outlineThicknessSlider);
|
|
|
|
chromaticaberrationCheckBox.Create("Chromatic Aberration: ");
|
|
chromaticaberrationCheckBox.SetTooltip("Toggle the full screen chromatic aberration effect. This simulates lens distortion at screen edges.");
|
|
chromaticaberrationCheckBox.SetSize(XMFLOAT2(hei, hei));
|
|
chromaticaberrationCheckBox.SetPos(XMFLOAT2(x, y += step));
|
|
chromaticaberrationCheckBox.SetCheck(editor->renderPath->getOutlineEnabled());
|
|
chromaticaberrationCheckBox.OnClick([=](wiEventArgs args) {
|
|
editor->renderPath->setChromaticAberrationEnabled(args.bValue);
|
|
});
|
|
AddWidget(&chromaticaberrationCheckBox);
|
|
|
|
chromaticaberrationSlider.Create(0, 4, 1.0f, 1000, "Amount: ");
|
|
chromaticaberrationSlider.SetTooltip("The lens distortion amount.");
|
|
chromaticaberrationSlider.SetSize(XMFLOAT2(100, hei));
|
|
chromaticaberrationSlider.SetPos(XMFLOAT2(x + 100, y));
|
|
chromaticaberrationSlider.SetValue(editor->renderPath->getChromaticAberrationAmount());
|
|
chromaticaberrationSlider.OnSlide([=](wiEventArgs args) {
|
|
editor->renderPath->setChromaticAberrationAmount(args.fValue);
|
|
});
|
|
AddWidget(&chromaticaberrationSlider);
|
|
|
|
|
|
Translate(XMFLOAT3((float)wiRenderer::GetDevice()->GetScreenWidth() - 500, 80, 0));
|
|
SetVisible(false);
|
|
|
|
}
|