moved stereogram from common renderpath to its own

This commit is contained in:
turanszkij
2019-03-10 11:27:41 +00:00
parent 4b7813edd6
commit 7c1c98a1d2
23 changed files with 235 additions and 247 deletions
@@ -432,7 +432,6 @@ It inherits functions from RenderPath2D, so it can render a 2D overlay.
- SetDepthOfFieldStrength(float value)
- SetTessellationEnabled(bool value)
- SetMSAASampleCount(int count)
- SetStereogramEnabled(bool value)
- SetSharpenFilterEnabled(bool value)
- SetSharpenFilterAmount(float value)
- SetExposure(float value)
+7
View File
@@ -118,6 +118,9 @@ void EditorComponent::ChangeRenderPath(RENDERPATH path)
case EditorComponent::RENDERPATH_PATHTRACING:
renderPath = new RenderPath3D_PathTracing;
break;
case EditorComponent::RENDERPATH_STEREOGRAM:
renderPath = new RenderPath3D_Stereogram;
break;
default:
assert(0);
break;
@@ -649,6 +652,7 @@ void EditorComponent::Load()
renderPathComboBox->AddItem("Tiled Forward");
renderPathComboBox->AddItem("Tiled Deferred");
renderPathComboBox->AddItem("Path Tracing");
renderPathComboBox->AddItem("Stereogram");
renderPathComboBox->OnSelect([&](wiEventArgs args) {
switch (args.iValue)
{
@@ -667,6 +671,9 @@ void EditorComponent::Load()
case 4:
ChangeRenderPath(RENDERPATH_PATHTRACING);
break;
case 5:
ChangeRenderPath(RENDERPATH_STEREOGRAM);
break;
default:
break;
}
+1
View File
@@ -64,6 +64,7 @@ public:
RENDERPATH_TILEDFORWARD,
RENDERPATH_TILEDDEFERRED,
RENDERPATH_PATHTRACING,
RENDERPATH_STEREOGRAM,
};
void ChangeRenderPath(RENDERPATH path);
-10
View File
@@ -245,16 +245,6 @@ PostprocessWindow::PostprocessWindow(wiGUI* gui, RenderPath3D* comp) : GUI(gui),
});
ppWindow->AddWidget(colorGradingButton);
stereogramCheckBox = new wiCheckBox("Stereogram: ");
stereogramCheckBox->SetTooltip("Compute a stereogram from the depth buffer. It produces a 3D silhouette image when viewed cross eyed.");
stereogramCheckBox->SetScriptTip("RenderPath3D::SetStereogramEnabled(bool value)");
stereogramCheckBox->SetPos(XMFLOAT2(x, y += 35));
stereogramCheckBox->SetCheck(component->getStereogramEnabled());
stereogramCheckBox->OnClick([&](wiEventArgs args) {
component->setStereogramEnabled(args.bValue);
});
ppWindow->AddWidget(stereogramCheckBox);
sharpenFilterCheckBox = new wiCheckBox("Sharpen Filter: ");
sharpenFilterCheckBox->SetTooltip("Toggle sharpening post process of the final image.");
sharpenFilterCheckBox->SetScriptTip("RenderPath3D::SetSharpenFilterEnabled(bool value)");
-1
View File
@@ -35,7 +35,6 @@ public:
wiCheckBox* bloomCheckBox;
wiSlider* bloomStrengthSlider;
wiCheckBox* fxaaCheckBox;
wiCheckBox* stereogramCheckBox;
wiCheckBox* colorGradingCheckBox;
wiButton* colorGradingButton;
wiCheckBox* sharpenFilterCheckBox;
-27
View File
@@ -210,17 +210,6 @@ void RenderPath3D::Compose() const
fx.blendFlag = BLENDMODE_PREMULTIPLIED;
fx.quality = QUALITY_LINEAR;
if (getStereogramEnabled())
{
device->EventBegin("Stereogram", GRAPHICSTHREAD_IMMEDIATE);
fx.disableFullScreen();
fx.process.clear();
fx.process.setStereogram();
wiImage::Draw(wiTextureHelper::getRandom64x64(), fx, GRAPHICSTHREAD_IMMEDIATE);
device->EventEnd(GRAPHICSTHREAD_IMMEDIATE);
return;
}
if (getColorGradingEnabled())
{
device->EventBegin("Color Graded Composition", GRAPHICSTHREAD_IMMEDIATE);
@@ -278,16 +267,6 @@ void RenderPath3D::RenderFrameSetUp(GRAPHICSTHREAD threadID) const
}
void RenderPath3D::RenderReflections(GRAPHICSTHREAD threadID) const
{
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
if (!getReflectionsEnabled() || getReflectionQuality() < 0.01f)
{
return;
}
wiProfiler::BeginRange("Reflection rendering", wiProfiler::DOMAIN_GPU, threadID);
if (wiRenderer::IsRequestedReflectionRendering())
@@ -331,12 +310,6 @@ void RenderPath3D::RenderReflections(GRAPHICSTHREAD threadID) const
}
void RenderPath3D::RenderShadows(GRAPHICSTHREAD threadID) const
{
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
if (getShadowsEnabled())
{
wiRenderer::DrawForShadowMap(wiRenderer::GetCamera(), threadID, getLayerMask());
-3
View File
@@ -39,7 +39,6 @@ private:
bool motionBlurEnabled = false;
bool sssEnabled = true;
bool depthOfFieldEnabled = false;
bool stereogramEnabled = false;
bool eyeAdaptionEnabled = false;
bool tessellationEnabled = false;
bool sharpenFilterEnabled = false;
@@ -131,7 +130,6 @@ public:
inline bool getMotionBlurEnabled() const { return motionBlurEnabled; }
inline bool getSSSEnabled() const { return sssEnabled; }
inline bool getDepthOfFieldEnabled() const { return depthOfFieldEnabled; }
inline bool getStereogramEnabled() const { return stereogramEnabled; }
inline bool getEyeAdaptionEnabled() const { return eyeAdaptionEnabled; }
inline bool getTessellationEnabled() const { return tessellationEnabled && wiRenderer::GetDevice()->CheckCapability(wiGraphics::GraphicsDevice::GRAPHICSDEVICE_CAPABILITY_TESSELLATION); }
inline bool getSharpenFilterEnabled() const { return sharpenFilterEnabled && getSharpenFilterAmount() > 0; }
@@ -173,7 +171,6 @@ public:
inline void setMotionBlurEnabled(bool value){ motionBlurEnabled = value; }
inline void setSSSEnabled(bool value){ sssEnabled = value; }
inline void setDepthOfFieldEnabled(bool value){ depthOfFieldEnabled = value; }
inline void setStereogramEnabled(bool value) { stereogramEnabled = value; }
inline void setEyeAdaptionEnabled(bool value) { eyeAdaptionEnabled = value; }
inline void setTessellationEnabled(bool value) { tessellationEnabled = value; }
inline void setSharpenFilterEnabled(bool value) { sharpenFilterEnabled = value; }
-16
View File
@@ -52,7 +52,6 @@ Luna<RenderPath3D_BindLua>::FunctionType RenderPath3D_BindLua::methods[] = {
lunamethod(RenderPath3D_BindLua, SetMotionBlurEnabled),
lunamethod(RenderPath3D_BindLua, SetSSSEnabled),
lunamethod(RenderPath3D_BindLua, SetDepthOfFieldEnabled),
lunamethod(RenderPath3D_BindLua, SetStereogramEnabled),
lunamethod(RenderPath3D_BindLua, SetEyeAdaptionEnabled),
lunamethod(RenderPath3D_BindLua, SetTessellationEnabled),
lunamethod(RenderPath3D_BindLua, SetMSAASampleCount),
@@ -311,21 +310,6 @@ int RenderPath3D_BindLua::SetDepthOfFieldEnabled(lua_State* L)
wiLua::SError(L, "SetDepthOfFieldEnabled(bool value) not enough arguments!");
return 0;
}
int RenderPath3D_BindLua::SetStereogramEnabled(lua_State* L)
{
if (component == nullptr)
{
wiLua::SError(L, "SetStereogramEnabled(bool value) component is null!");
return 0;
}
if (wiLua::SGetArgCount(L) > 0)
{
((RenderPath3D*)component)->setStereogramEnabled(wiLua::SGetBool(L, 1));
}
else
wiLua::SError(L, "SetStereogramEnabled(bool value) not enough arguments!");
return 0;
}
int RenderPath3D_BindLua::SetEyeAdaptionEnabled(lua_State* L)
{
if (component == nullptr)
-1
View File
@@ -32,7 +32,6 @@ public:
int SetMotionBlurEnabled(lua_State* L);
int SetSSSEnabled(lua_State* L);
int SetDepthOfFieldEnabled(lua_State* L);
int SetStereogramEnabled(lua_State* L);
int SetEyeAdaptionEnabled(lua_State* L);
int SetTessellationEnabled(lua_State* L);
int SetMSAASampleCount(lua_State* L);
+35 -46
View File
@@ -74,8 +74,6 @@ void RenderPath3D_Deferred::Render() const
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), threadID);
wiImageParams fx((float)wiRenderer::GetInternalResolution().x, (float)wiRenderer::GetInternalResolution().y);
const GPUResource* dsv[] = { &depthBuffer };
device->TransitionBarrier(dsv, ARRAYSIZE(dsv), RESOURCE_STATE_DEPTH_READ, RESOURCE_STATE_DEPTH_WRITE, threadID);
@@ -115,12 +113,6 @@ void RenderPath3D_Deferred::Render() const
wiRenderer::BindDepthTextures(&depthCopy, &rtLinearDepth, threadID);
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
RenderDecals(threadID);
wiRenderer::BindGBufferTextures(&rtGBuffer[0], &rtGBuffer[1], &rtGBuffer[2], threadID);
@@ -155,47 +147,44 @@ void RenderPath3D_Deferred::Render() const
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), GRAPHICSTHREAD_IMMEDIATE);
if (!getStereogramEnabled())
RenderOutline(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtDeferred, RENDERPASS_FORWARD, GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
RenderOutline(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtDeferred, RENDERPASS_FORWARD, GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderPath2D::Render();
}
@@ -50,7 +50,6 @@ Luna<RenderPath3D_Deferred_BindLua>::FunctionType RenderPath3D_Deferred_BindLua:
lunamethod(RenderPath3D_BindLua, SetMotionBlurEnabled),
lunamethod(RenderPath3D_BindLua, SetSSSEnabled),
lunamethod(RenderPath3D_BindLua, SetDepthOfFieldEnabled),
lunamethod(RenderPath3D_BindLua, SetStereogramEnabled),
lunamethod(RenderPath3D_BindLua, SetEyeAdaptionEnabled),
lunamethod(RenderPath3D_BindLua, SetTessellationEnabled),
lunamethod(RenderPath3D_BindLua, SetSharpenFilterEnabled),
+40 -46
View File
@@ -65,8 +65,6 @@ void RenderPath3D_Forward::Render() const
const GPUResource* dsv[] = { &depthBuffer };
device->TransitionBarrier(dsv, ARRAYSIZE(dsv), RESOURCE_STATE_DEPTH_READ, RESOURCE_STATE_DEPTH_WRITE, threadID);
wiImageParams fx((float)wiRenderer::GetInternalResolution().x, (float)wiRenderer::GetInternalResolution().y);
// Opaque Scene:
{
wiProfiler::BeginRange("Opaque Scene", wiProfiler::DOMAIN_GPU, threadID);
@@ -127,52 +125,48 @@ void RenderPath3D_Forward::Render() const
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), GRAPHICSTHREAD_IMMEDIATE);
if (!getStereogramEnabled())
RenderOutline(rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtMain[0], RENDERPASS_FORWARD, GRAPHICSTHREAD_IMMEDIATE);
if (getMSAASampleCount() > 1)
{
RenderOutline(rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtMain[0], RENDERPASS_FORWARD, GRAPHICSTHREAD_IMMEDIATE);
if (getMSAASampleCount() > 1)
{
device->MSAAResolve(scene_read[0], &rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
}
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
device->MSAAResolve(scene_read[0], &rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
}
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderPath2D::Render();
}
@@ -50,7 +50,6 @@ Luna<RenderPath3D_Forward_BindLua>::FunctionType RenderPath3D_Forward_BindLua::m
lunamethod(RenderPath3D_BindLua, SetMotionBlurEnabled),
lunamethod(RenderPath3D_BindLua, SetSSSEnabled),
lunamethod(RenderPath3D_BindLua, SetDepthOfFieldEnabled),
lunamethod(RenderPath3D_BindLua, SetStereogramEnabled),
lunamethod(RenderPath3D_BindLua, SetEyeAdaptionEnabled),
lunamethod(RenderPath3D_BindLua, SetTessellationEnabled),
lunamethod(RenderPath3D_BindLua, SetMSAASampleCount),
+53
View File
@@ -0,0 +1,53 @@
#include "RenderPath3D_Stereogram.h"
#include "wiRenderer.h"
#include "wiImage.h"
#include "wiTextureHelper.h"
using namespace wiGraphics;
void RenderPath3D_Stereogram::Render() const
{
GraphicsDevice* device = wiRenderer::GetDevice();
RenderFrameSetUp(GRAPHICSTHREAD_IMMEDIATE);
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), GRAPHICSTHREAD_IMMEDIATE);
const GPUResource* dsv[] = { &depthBuffer };
device->TransitionBarrier(dsv, ARRAYSIZE(dsv), RESOURCE_STATE_DEPTH_READ, RESOURCE_STATE_DEPTH_WRITE, GRAPHICSTHREAD_IMMEDIATE);
// Render depth only buffer:
device->BindRenderTargets(0, nullptr, &depthBuffer, GRAPHICSTHREAD_IMMEDIATE);
device->ClearDepthStencil(&depthBuffer, CLEAR_DEPTH | CLEAR_STENCIL, 0, 0, GRAPHICSTHREAD_IMMEDIATE);
ViewPort vp;
vp.Width = (float)depthBuffer.GetDesc().Width;
vp.Height = (float)depthBuffer.GetDesc().Height;
device->BindViewports(1, &vp, GRAPHICSTHREAD_IMMEDIATE);
wiRenderer::DrawScene(wiRenderer::GetCamera(), getTessellationEnabled(), GRAPHICSTHREAD_IMMEDIATE, RENDERPASS_DEPTHONLY, getHairParticlesEnabled(), true, getLayerMask());
device->TransitionBarrier(dsv, ARRAYSIZE(dsv), RESOURCE_STATE_DEPTH_WRITE, RESOURCE_STATE_COPY_SOURCE, GRAPHICSTHREAD_IMMEDIATE);
device->CopyTexture2D(&depthCopy, &depthBuffer, GRAPHICSTHREAD_IMMEDIATE);
RenderLinearDepth(GRAPHICSTHREAD_IMMEDIATE);
wiRenderer::BindDepthTextures(&depthCopy, &rtLinearDepth, GRAPHICSTHREAD_IMMEDIATE);
}
void RenderPath3D_Stereogram::Compose() const
{
GraphicsDevice* device = wiRenderer::GetDevice();
wiImageParams fx((float)device->GetScreenWidth(), (float)device->GetScreenHeight());
fx.blendFlag = BLENDMODE_PREMULTIPLIED;
fx.quality = QUALITY_LINEAR;
device->EventBegin("Stereogram", GRAPHICSTHREAD_IMMEDIATE);
fx.disableFullScreen();
fx.process.clear();
fx.process.setStereogram();
wiImage::Draw(wiTextureHelper::getRandom64x64(), fx, GRAPHICSTHREAD_IMMEDIATE);
device->EventEnd(GRAPHICSTHREAD_IMMEDIATE);
}
+14
View File
@@ -0,0 +1,14 @@
#pragma once
#include "RenderPath3D.h"
class RenderPath3D_Stereogram :
public RenderPath3D
{
public:
void setMSAASampleCount(UINT value) override { /*disable MSAA*/ }
void Render() const override;
void Compose() const override;
};
+35 -46
View File
@@ -22,8 +22,6 @@ void RenderPath3D_TiledDeferred::Render() const
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), threadID);
wiImageParams fx((float)wiRenderer::GetInternalResolution().x, (float)wiRenderer::GetInternalResolution().y);
const GPUResource* dsv[] = { &depthBuffer };
device->TransitionBarrier(dsv, ARRAYSIZE(dsv), RESOURCE_STATE_DEPTH_READ, RESOURCE_STATE_DEPTH_WRITE, threadID);
@@ -63,12 +61,6 @@ void RenderPath3D_TiledDeferred::Render() const
wiRenderer::BindDepthTextures(&depthCopy, &rtLinearDepth, threadID);
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
RenderDecals(threadID);
wiRenderer::BindGBufferTextures(&rtGBuffer[0], &rtGBuffer[1], &rtGBuffer[2], threadID);
@@ -91,46 +83,43 @@ void RenderPath3D_TiledDeferred::Render() const
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), GRAPHICSTHREAD_IMMEDIATE);
if (!getStereogramEnabled())
RenderOutline(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtDeferred, RENDERPASS_TILEDFORWARD, GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
RenderOutline(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtDeferred, RENDERPASS_TILEDFORWARD, GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(rtDeferred, rtGBuffer[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(rtDeferred, GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderPath2D::Render();
}
@@ -50,7 +50,6 @@ Luna<RenderPath3D_TiledDeferred_BindLua>::FunctionType RenderPath3D_TiledDeferre
lunamethod(RenderPath3D_BindLua, SetMotionBlurEnabled),
lunamethod(RenderPath3D_BindLua, SetSSSEnabled),
lunamethod(RenderPath3D_BindLua, SetDepthOfFieldEnabled),
lunamethod(RenderPath3D_BindLua, SetStereogramEnabled),
lunamethod(RenderPath3D_BindLua, SetEyeAdaptionEnabled),
lunamethod(RenderPath3D_BindLua, SetTessellationEnabled),
lunamethod(RenderPath3D_BindLua, SetSharpenFilterEnabled),
+40 -45
View File
@@ -30,8 +30,6 @@ void RenderPath3D_TiledForward::Render() const
const GPUResource* dsv[] = { &depthBuffer };
device->TransitionBarrier(dsv, ARRAYSIZE(dsv), RESOURCE_STATE_DEPTH_READ, RESOURCE_STATE_DEPTH_WRITE, threadID);
wiImageParams fx((float)wiRenderer::GetInternalResolution().x, (float)wiRenderer::GetInternalResolution().y);
// depth prepass
{
wiProfiler::BeginRange("Z-Prepass", wiProfiler::DOMAIN_GPU, threadID);
@@ -116,51 +114,48 @@ void RenderPath3D_TiledForward::Render() const
wiRenderer::UpdateCameraCB(wiRenderer::GetCamera(), GRAPHICSTHREAD_IMMEDIATE);
if (!getStereogramEnabled())
RenderOutline(rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtMain[0], RENDERPASS_TILEDFORWARD, GRAPHICSTHREAD_IMMEDIATE);
if (getMSAASampleCount() > 1)
{
RenderOutline(rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
RenderLightShafts(GRAPHICSTHREAD_IMMEDIATE);
RenderVolumetrics(GRAPHICSTHREAD_IMMEDIATE);
RenderParticles(false, GRAPHICSTHREAD_IMMEDIATE);
RenderWaterRipples(GRAPHICSTHREAD_IMMEDIATE);
RenderRefractionSource(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderTransparents(rtMain[0], RENDERPASS_TILEDFORWARD, GRAPHICSTHREAD_IMMEDIATE);
if (getMSAASampleCount() > 1)
{
device->MSAAResolve(scene_read[0], &rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
}
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
device->MSAAResolve(scene_read[0], &rtMain[0], GRAPHICSTHREAD_IMMEDIATE);
}
RenderParticles(true, GRAPHICSTHREAD_IMMEDIATE);
TemporalAAResolve(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
RenderBloom(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
RenderMotionBlur(*scene_read[0], *scene_read[1], GRAPHICSTHREAD_IMMEDIATE);
ToneMapping(*scene_read[0], GRAPHICSTHREAD_IMMEDIATE);
const Texture2D* rt0 = &rtFinal[0];
const Texture2D* rt1 = &rtFinal[1];
SharpenFilter(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
if (getSharpenFilterEnabled())
{
SwapPtr(rt0, rt1);
}
RenderDepthOfField(*rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderFXAA(*rt1, *rt0, GRAPHICSTHREAD_IMMEDIATE);
RenderPath2D::Render();
}
@@ -50,7 +50,6 @@ Luna<RenderPath3D_TiledForward_BindLua>::FunctionType RenderPath3D_TiledForward_
lunamethod(RenderPath3D_BindLua, SetMotionBlurEnabled),
lunamethod(RenderPath3D_BindLua, SetSSSEnabled),
lunamethod(RenderPath3D_BindLua, SetDepthOfFieldEnabled),
lunamethod(RenderPath3D_BindLua, SetStereogramEnabled),
lunamethod(RenderPath3D_BindLua, SetEyeAdaptionEnabled),
lunamethod(RenderPath3D_BindLua, SetTessellationEnabled),
lunamethod(RenderPath3D_BindLua, SetSharpenFilterEnabled),
+1
View File
@@ -17,6 +17,7 @@
#include "RenderPath3D_TiledForward.h"
#include "RenderPath3D_TiledDeferred.h"
#include "RenderPath3D_PathTracing.h"
#include "RenderPath3D_Stereogram.h"
#include "LoadingScreen.h"
#include "MainComponent.h"
@@ -233,6 +233,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)RenderPath3D_Deferred_BindLua.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)RenderPath3D_Forward.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)RenderPath3D_Forward_BindLua.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)RenderPath3D_Stereogram.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)ShaderInterop_BVH.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)ShaderInterop_Font.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)ShaderInterop_HairParticle.h" />
@@ -517,6 +518,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_Forward.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_Forward_BindLua.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_PathTracing.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_Stereogram.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_TiledDeferred.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_TiledDeferred_BindLua.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_TiledForward.cpp" />
@@ -1134,6 +1134,9 @@
<ClInclude Include="$(MSBuildThisFileDirectory)wiIntersect_BindLua.h">
<Filter>ENGINE\Scripting\LuaBindings</Filter>
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)RenderPath3D_Stereogram.h">
<Filter>ENGINE\High level interface</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(MSBuildThisFileDirectory)LUA\lapi.c">
@@ -1910,6 +1913,9 @@
<ClCompile Include="$(MSBuildThisFileDirectory)wiIntersect_BindLua.cpp">
<Filter>ENGINE\Scripting\LuaBindings</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)RenderPath3D_Stereogram.cpp">
<Filter>ENGINE\High level interface</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Image Include="$(MSBuildThisFileDirectory)fonts\default_font.dds">
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wiVersion
// minor features, major updates
const int minor = 25;
// minor bug fixes, alterations, refactors, updates
const int revision = 1;
const int revision = 2;
long GetVersion()