Further refactor of render pipeline

This commit is contained in:
turanszkij
2016-10-20 00:26:05 +02:00
parent 89c66cd133
commit 172b6e3b92
7 changed files with 107 additions and 178 deletions
+5 -17
View File
@@ -35,7 +35,7 @@ void DeferredRenderableComponent::Initialize()
rtDeferred.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false, FORMAT_R16G16B16A16_FLOAT, 0);
, false, FORMAT_R16G16B16A16_FLOAT);
rtLight.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false, FORMAT_R11G11B10_FLOAT); // diffuse
@@ -83,10 +83,7 @@ void DeferredRenderableComponent::Render()
RenderReflections();
RenderScene();
RenderSecondaryScene(rtGBuffer, GetFinalRT());
RenderLightShafts(rtGBuffer);
RenderComposition1(GetFinalRT());
RenderBloom();
RenderComposition2(rtGBuffer);
RenderComposition(GetFinalRT(), rtGBuffer);
}
Renderable2DComponent::Render();
@@ -275,10 +272,7 @@ void DeferredRenderableComponent::setPreferredThreadingCount(unsigned short valu
RenderShadows(GRAPHICSTHREAD_SCENE);
RenderScene(GRAPHICSTHREAD_SCENE);
RenderSecondaryScene(rtGBuffer, GetFinalRT(), GRAPHICSTHREAD_SCENE);
RenderLightShafts(rtGBuffer, GRAPHICSTHREAD_SCENE);
RenderComposition1(GetFinalRT(), GRAPHICSTHREAD_SCENE);
RenderBloom(GRAPHICSTHREAD_SCENE);
RenderComposition2(rtGBuffer, GRAPHICSTHREAD_SCENE);
RenderComposition(GetFinalRT(), rtGBuffer, GRAPHICSTHREAD_SCENE);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_SCENE);
}));
@@ -306,10 +300,7 @@ void DeferredRenderableComponent::setPreferredThreadingCount(unsigned short valu
wiRenderer::UpdateDepthBuffer(dtDepthCopy.GetTexture(), rtLinearDepth.GetTexture(), GRAPHICSTHREAD_MISC1);
wiRenderer::UpdateGBuffer(rtGBuffer.GetTexture(0), rtGBuffer.GetTexture(1), rtGBuffer.GetTexture(2), nullptr, nullptr, GRAPHICSTHREAD_MISC1);
RenderSecondaryScene(rtGBuffer, GetFinalRT(), GRAPHICSTHREAD_MISC1);
RenderLightShafts(rtGBuffer, GRAPHICSTHREAD_MISC1);
RenderComposition1(GetFinalRT(), GRAPHICSTHREAD_MISC1);
RenderBloom(GRAPHICSTHREAD_MISC1);
RenderComposition2(rtGBuffer, GRAPHICSTHREAD_MISC1);
RenderComposition(GetFinalRT(), rtGBuffer, GRAPHICSTHREAD_MISC1);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_MISC1);
}));
@@ -340,16 +331,13 @@ void DeferredRenderableComponent::setPreferredThreadingCount(unsigned short valu
wiRenderer::UpdateDepthBuffer(dtDepthCopy.GetTexture(), rtLinearDepth.GetTexture(), GRAPHICSTHREAD_MISC1);
wiRenderer::UpdateGBuffer(rtGBuffer.GetTexture(0), rtGBuffer.GetTexture(1), rtGBuffer.GetTexture(2), nullptr, nullptr, GRAPHICSTHREAD_MISC1);
RenderSecondaryScene(rtGBuffer, GetFinalRT(), GRAPHICSTHREAD_MISC1);
RenderLightShafts(rtGBuffer, GRAPHICSTHREAD_MISC1);
RenderComposition1(GetFinalRT(), GRAPHICSTHREAD_MISC1);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_MISC1);
}));
workerThreads.push_back(new wiTaskThread([&]
{
wiRenderer::UpdateDepthBuffer(dtDepthCopy.GetTexture(), rtLinearDepth.GetTexture(), GRAPHICSTHREAD_MISC2);
wiRenderer::UpdateGBuffer(rtGBuffer.GetTexture(0), rtGBuffer.GetTexture(1), rtGBuffer.GetTexture(2), nullptr, nullptr, GRAPHICSTHREAD_MISC2);
RenderBloom(GRAPHICSTHREAD_MISC2);
RenderComposition2(rtGBuffer, GRAPHICSTHREAD_MISC2);
RenderComposition(GetFinalRT(), rtGBuffer, GRAPHICSTHREAD_MISC2);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_MISC2);
}));
+4 -16
View File
@@ -62,10 +62,7 @@ void ForwardRenderableComponent::Render()
RenderReflections();
RenderScene();
RenderSecondaryScene(rtMain, rtMain);
RenderLightShafts(rtMain);
RenderComposition1(rtMain);
RenderBloom();
RenderComposition2(rtMain);
RenderComposition(rtMain, rtMain);
}
Renderable2DComponent::Render();
@@ -126,10 +123,7 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
RenderShadows(GRAPHICSTHREAD_SCENE);
RenderScene(GRAPHICSTHREAD_SCENE);
RenderSecondaryScene(rtMain, rtMain, GRAPHICSTHREAD_SCENE);
RenderLightShafts(rtMain, GRAPHICSTHREAD_SCENE);
RenderComposition1(rtMain, GRAPHICSTHREAD_SCENE);
RenderBloom(GRAPHICSTHREAD_SCENE);
RenderComposition2(rtMain, GRAPHICSTHREAD_SCENE);
RenderComposition(rtMain, rtMain, GRAPHICSTHREAD_SCENE);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_SCENE);
}));
@@ -156,10 +150,7 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
{
wiRenderer::UpdateDepthBuffer(dtDepthCopy.GetTexture(), rtLinearDepth.GetTexture(), GRAPHICSTHREAD_MISC1);
RenderSecondaryScene(rtMain, rtMain, GRAPHICSTHREAD_MISC1);
RenderLightShafts(rtMain, GRAPHICSTHREAD_MISC1);
RenderComposition1(rtMain, GRAPHICSTHREAD_MISC1);
RenderBloom(GRAPHICSTHREAD_MISC1);
RenderComposition2(rtMain, GRAPHICSTHREAD_MISC1);
RenderComposition(rtMain, rtMain, GRAPHICSTHREAD_MISC1);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_MISC1);
}));
@@ -189,15 +180,12 @@ void ForwardRenderableComponent::setPreferredThreadingCount(unsigned short value
{
wiRenderer::UpdateDepthBuffer(dtDepthCopy.GetTexture(), rtLinearDepth.GetTexture(), GRAPHICSTHREAD_MISC1);
RenderSecondaryScene(rtMain, rtMain, GRAPHICSTHREAD_MISC1);
RenderLightShafts(rtMain, GRAPHICSTHREAD_MISC1);
RenderComposition1(rtMain, GRAPHICSTHREAD_MISC1);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_MISC1);
}));
workerThreads.push_back(new wiTaskThread([&]
{
wiRenderer::UpdateDepthBuffer(dtDepthCopy.GetTexture(), rtLinearDepth.GetTexture(), GRAPHICSTHREAD_MISC2);
RenderBloom(GRAPHICSTHREAD_MISC2);
RenderComposition2(rtMain, GRAPHICSTHREAD_MISC2);
RenderComposition(rtMain, rtMain, GRAPHICSTHREAD_MISC2);
wiRenderer::GetDevice()->FinishCommandList(GRAPHICSTHREAD_MISC2);
}));
+93 -135
View File
@@ -87,20 +87,14 @@ void Renderable3DComponent::Initialize()
rtSceneCopy.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false, FORMAT_R16G16B16A16_FLOAT,1,getMSAASampleCount());
rtVolumeLight.Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false, FORMAT_R8G8B8A8_UNORM, 1, getMSAASampleCount());
rtReflection.Initialize(
(UINT)(wiRenderer::GetDevice()->GetScreenWidth() * getReflectionQuality())
, (UINT)(wiRenderer::GetDevice()->GetScreenHeight() * getReflectionQuality())
, true, FORMAT_R16G16B16A16_FLOAT);
rtFinal[0].Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false, FORMAT_R16G16B16A16_FLOAT);
rtFinal[1].Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false);
rtFinal[2].Initialize(
rtFinal[1].Initialize(
wiRenderer::GetDevice()->GetScreenWidth(), wiRenderer::GetDevice()->GetScreenHeight()
, false,FORMAT_R8G8B8A8_UNORM,1,getMSAASampleCount());
@@ -249,6 +243,24 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende
return;
}
if (getLightShaftsEnabled() && XMVectorGetX(XMVector3Dot(wiRenderer::GetSunPosition(), wiRenderer::getCamera()->GetAt())) > 0)
{
wiRenderer::GetDevice()->UnBindResources(TEXSLOT_ONDEMAND0, TEXSLOT_ONDEMAND_COUNT, threadID);
rtSun[0].Activate(threadID, mainRT.depth); {
wiRenderer::DrawSun(threadID);
}
rtSun[1].Activate(threadID); {
wiImageEffects fxs = fx;
fxs.blendFlag = BLENDMODE_ADDITIVE;
XMVECTOR sunPos = XMVector3Project(wiRenderer::GetSunPosition() * 100000, 0, 0, (float)wiRenderer::GetDevice()->GetScreenWidth(), (float)wiRenderer::GetDevice()->GetScreenHeight(), 0.1f, 1.0f, wiRenderer::getCamera()->GetProjection(), wiRenderer::getCamera()->GetView(), XMMatrixIdentity());
{
XMStoreFloat2(&fxs.sunPos, sunPos);
wiImage::Draw(rtSun[0].GetTexture(), fxs, threadID);
}
}
}
if (getLensFlareEnabled())
{
rtLensFlare.Activate(threadID);
@@ -256,13 +268,6 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende
wiRenderer::DrawLensFlares(threadID);
}
if (getVolumeLightsEnabled())
{
wiRenderer::GetDevice()->UnBindResources(TEXSLOT_ONDEMAND0, TEXSLOT_ONDEMAND_COUNT, threadID);
rtVolumeLight.Activate(threadID, mainRT.depth);
wiRenderer::DrawVolumeLights(wiRenderer::getCamera(), threadID);
}
if (getEmittedParticlesEnabled())
{
rtParticle.Activate(threadID, 0, 0, 0, 0); //OFFSCREEN RENDER ALPHAPARTICLES
@@ -280,12 +285,38 @@ void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRende
fx.blendFlag = BLENDMODE_OPAQUE;
fx.presentFullScreen = true;
wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID);
if (getVolumeLightsEnabled())
{
// first draw light volumes to refraction target
wiRenderer::DrawVolumeLights(wiRenderer::getCamera(), threadID);
}
}
wiRenderer::GetDevice()->UnBindResources(TEXSLOT_ONDEMAND0, TEXSLOT_ONDEMAND_COUNT, threadID);
shadedSceneRT.Set(threadID, mainRT.depth); {
RenderTransparentScene(rtSceneCopy, threadID);
wiRenderer::DrawTrails(threadID, rtSceneCopy.GetTexture());
if (getVolumeLightsEnabled())
{
// second draw volume lights on top of transparent scene
wiRenderer::DrawVolumeLights(wiRenderer::getCamera(), threadID);
}
fx.presentFullScreen = true;
fx.blendFlag = BLENDMODE_ALPHA;
if (getEmittedParticlesEnabled()) {
wiImage::Draw(rtParticle.GetTexture(), fx, threadID);
}
fx.blendFlag = BLENDMODE_ADDITIVE;
if (getEmittedParticlesEnabled()) {
wiImage::Draw(rtParticleAdditive.GetTexture(), fx, threadID);
}
if (getLightShaftsEnabled()) {
wiImage::Draw(rtSun.back().GetTexture(), fx, threadID);
}
if (getLensFlareEnabled()) {
wiImage::Draw(rtLensFlare.GetTexture(), fx, threadID);
}
}
}
void Renderable3DComponent::RenderTransparentScene(wiRenderTarget& refractionRT, GRAPHICSTHREAD threadID)
@@ -293,7 +324,7 @@ void Renderable3DComponent::RenderTransparentScene(wiRenderTarget& refractionRT,
wiRenderer::DrawWorldTransparent(wiRenderer::getCamera(), SHADERTYPE_FORWARD, refractionRT.GetTexture(), rtReflection.GetTexture()
, rtWaterRipple.GetTexture(), threadID, false);
}
void Renderable3DComponent::RenderBloom(GRAPHICSTHREAD threadID)
void Renderable3DComponent::RenderComposition(wiRenderTarget& shadedSceneRT, wiRenderTarget& mainRT, GRAPHICSTHREAD threadID)
{
if (getStereogramEnabled())
{
@@ -301,136 +332,70 @@ void Renderable3DComponent::RenderBloom(GRAPHICSTHREAD threadID)
return;
}
wiImageEffects fx((float)wiRenderer::GetDevice()->GetScreenWidth(), (float)wiRenderer::GetDevice()->GetScreenHeight());
rtBloom[0].Activate(threadID);
if (getBloomEnabled())
{
fx.bloom.separate = true;
fx.bloom.saturation = getBloomSaturation();
fx.bloom.threshold = getBloomThreshold();
fx.blendFlag = BLENDMODE_OPAQUE;
fx.sampleFlag = SAMPLEMODE_CLAMP;
wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID);
}
rtBloom[1].Activate(threadID); //horizontal
{
wiRenderer::GetDevice()->GenerateMips(rtBloom[0].GetTexture(), threadID);
//wiRenderer::GetDevice()->GenerateMips(rtBloom[0].shaderResource[0], threadID);
fx.mipLevel = 5.32f;
fx.blur = getBloomStrength();
fx.blurDir = 0;
fx.blendFlag = BLENDMODE_OPAQUE;
wiImage::Draw(rtBloom[0].GetTexture(), fx, threadID);
}
rtBloom[2].Activate(threadID); //vertical
{
fx.blur = getBloomStrength();
fx.blurDir = 1;
fx.blendFlag = BLENDMODE_OPAQUE;
wiImage::Draw(rtBloom[1].GetTexture(), fx, threadID);
}
}
void Renderable3DComponent::RenderLightShafts(wiRenderTarget& mainRT, GRAPHICSTHREAD threadID)
{
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
if (!getLightShaftsEnabled())
{
return;
}
if (XMVectorGetX(XMVector3Dot(wiRenderer::GetSunPosition(), wiRenderer::getCamera()->GetAt())) < 0)
{
return;
}
wiImageEffects fx((float)wiRenderer::GetDevice()->GetScreenWidth(), (float)wiRenderer::GetDevice()->GetScreenHeight());
wiRenderer::GetDevice()->UnBindResources(TEXSLOT_ONDEMAND0, TEXSLOT_ONDEMAND_COUNT, threadID);
rtSun[0].Activate(threadID, mainRT.depth); {
wiRenderer::DrawSun(threadID);
}
rtSun[1].Activate(threadID); {
wiImageEffects fxs = fx;
fxs.blendFlag = BLENDMODE_ADDITIVE;
XMVECTOR sunPos = XMVector3Project(wiRenderer::GetSunPosition() * 100000, 0, 0, (float)wiRenderer::GetDevice()->GetScreenWidth(), (float)wiRenderer::GetDevice()->GetScreenHeight(), 0.1f, 1.0f, wiRenderer::getCamera()->GetProjection(), wiRenderer::getCamera()->GetView(), XMMatrixIdentity());
wiRenderer::GetDevice()->EventBegin(L"Bloom", threadID);
fx.process.clear();
fx.presentFullScreen = false;
rtBloom[0].Activate(threadID); // separate bright parts
{
XMStoreFloat2(&fxs.sunPos, sunPos);
wiImage::Draw(rtSun[0].GetTexture(), fxs, threadID);
fx.bloom.separate = true;
fx.bloom.saturation = getBloomSaturation();
fx.bloom.threshold = getBloomThreshold();
fx.blendFlag = BLENDMODE_OPAQUE;
fx.sampleFlag = SAMPLEMODE_CLAMP;
wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID);
}
}
}
void Renderable3DComponent::RenderComposition1(wiRenderTarget& shadedSceneRT, GRAPHICSTHREAD threadID)
{
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
wiImageEffects fx((float)wiRenderer::GetDevice()->GetScreenWidth(), (float)wiRenderer::GetDevice()->GetScreenHeight());
fx.presentFullScreen = true;
rtBloom[1].Activate(threadID); //horizontal
{
wiRenderer::GetDevice()->GenerateMips(rtBloom[0].GetTexture(), threadID);
fx.mipLevel = 5.32f;
fx.blur = getBloomStrength();
fx.blurDir = 0;
fx.blendFlag = BLENDMODE_OPAQUE;
wiImage::Draw(rtBloom[0].GetTexture(), fx, threadID);
}
rtBloom[2].Activate(threadID); //vertical
{
fx.blur = getBloomStrength();
fx.blurDir = 1;
fx.blendFlag = BLENDMODE_OPAQUE;
wiImage::Draw(rtBloom[1].GetTexture(), fx, threadID);
}
fx.bloom.clear();
fx.blur = 0;
fx.blurDir = 0;
rtFinal[0].Activate(threadID);
fx.blendFlag = BLENDMODE_OPAQUE;
wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID);
fx.blendFlag = BLENDMODE_ALPHA;
if (getEmittedParticlesEnabled()){
wiImage::Draw(rtParticle.GetTexture(), fx, threadID);
shadedSceneRT.Set(threadID); { // add to the scene
fx.blendFlag = BLENDMODE_ADDITIVE;
fx.presentFullScreen = true;
fx.process.clear();
wiImage::Draw(rtBloom.back().GetTexture(), fx, threadID);
fx.presentFullScreen = false;
}
wiRenderer::GetDevice()->EventEnd();
}
fx.blendFlag = BLENDMODE_ADDITIVE;
if (getVolumeLightsEnabled()){
wiImage::Draw(rtVolumeLight.GetTexture(), fx, threadID);
}
if (getEmittedParticlesEnabled()){
wiImage::Draw(rtParticleAdditive.GetTexture(), fx, threadID);
}
if (getLightShaftsEnabled()){
wiImage::Draw(rtSun.back().GetTexture(), fx, threadID);
}
if (getLensFlareEnabled()){
wiImage::Draw(rtLensFlare.GetTexture(), fx, threadID);
}
}
void Renderable3DComponent::RenderComposition2(wiRenderTarget& mainRT, GRAPHICSTHREAD threadID)
{
if (getStereogramEnabled())
{
// We don't need the following for stereograms...
return;
}
wiImageEffects fx((float)wiRenderer::GetDevice()->GetScreenWidth(), (float)wiRenderer::GetDevice()->GetScreenHeight());
if (getMotionBlurEnabled()) {
rtMotionBlur.Activate(threadID);
fx.process.setMotionBlur(true);
fx.blendFlag = BLENDMODE_OPAQUE;
fx.presentFullScreen = false;
wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID);
wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID);
fx.process.clear();
}
fx.blendFlag = BLENDMODE_OPAQUE;
rtFinal[1].Activate(threadID);
rtFinal[0].Activate(threadID);
fx.process.setToneMap(true);
if (getEyeAdaptionEnabled())
{
fx.setMaskMap(wiRenderer::GetLuminance(rtFinal[0].GetTexture(), threadID));
fx.setMaskMap(wiRenderer::GetLuminance(shadedSceneRT.GetTexture(), threadID));
}
else
{
@@ -442,7 +407,7 @@ void Renderable3DComponent::RenderComposition2(wiRenderTarget& mainRT, GRAPHICST
}
else
{
wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID);
wiImage::Draw(shadedSceneRT.GetTexture(), fx, threadID);
}
fx.process.clear();
@@ -453,7 +418,7 @@ void Renderable3DComponent::RenderComposition2(wiRenderTarget& mainRT, GRAPHICST
rtDof[0].Activate(threadID);
fx.blur = getDepthOfFieldStrength();
fx.blurDir = 0;
wiImage::Draw(rtFinal[1].GetTexture(), fx, threadID);
wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID);
rtDof[1].Activate(threadID);
fx.blurDir = 1;
@@ -466,28 +431,21 @@ void Renderable3DComponent::RenderComposition2(wiRenderTarget& mainRT, GRAPHICST
fx.process.setDOF(getDepthOfFieldFocus());
fx.setMaskMap(rtDof[1].GetTexture());
//fx.setDepthMap(rtLinearDepth.shaderResource.back());
wiImage::Draw(rtFinal[1].GetTexture(), fx, threadID);
wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID);
fx.setMaskMap(nullptr);
//fx.setDepthMap(nullptr);
fx.process.clear();
}
rtFinal[2].Activate(threadID, mainRT.depth);
rtFinal[1].Activate(threadID, mainRT.depth);
fx.process.setFXAA(getFXAAEnabled());
if (getDepthOfFieldEnabled())
wiImage::Draw(rtDof[2].GetTexture(), fx, threadID);
else
wiImage::Draw(rtFinal[1].GetTexture(), fx, threadID);
wiImage::Draw(rtFinal[0].GetTexture(), fx, threadID);
fx.process.clear();
if (getBloomEnabled())
{
fx.blendFlag = BLENDMODE_ADDITIVE;
fx.presentFullScreen = true;
wiImage::Draw(rtBloom.back().GetTexture(), fx, threadID);
}
wiRenderer::DrawDebugGridHelper(wiRenderer::getCamera(), threadID);
wiRenderer::DrawDebugEnvProbes(wiRenderer::getCamera(), threadID);
wiRenderer::DrawDebugBoneLines(wiRenderer::getCamera(), threadID);
@@ -528,7 +486,7 @@ void Renderable3DComponent::RenderColorGradedComposition(){
fx.presentFullScreen = true;
}
wiImage::Draw(rtFinal[2].GetTexture(), fx);
wiImage::Draw(rtFinal[1].GetTexture(), fx);
}
+2 -7
View File
@@ -51,15 +51,13 @@ protected:
rtReflection
, rtSSR
, rtMotionBlur
, rtVolumeLight
, rtSceneCopy
, rtTransparent
, rtWaterRipple
, rtLinearDepth
, rtParticle
, rtParticleAdditive
, rtLensFlare
, rtFinal[3]
, rtFinal[2]
, rtDof[3]
;
vector<wiRenderTarget> rtSun, rtBloom, rtSSAO;
@@ -73,10 +71,7 @@ protected:
virtual void RenderScene(GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void RenderSecondaryScene(wiRenderTarget& mainRT, wiRenderTarget& shadedSceneRT, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderTransparentScene(wiRenderTarget& refractionRT, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderBloom(GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderLightShafts(wiRenderTarget& mainRT, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderComposition1(wiRenderTarget& shadedSceneRT, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderComposition2(wiRenderTarget& mainRT, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderComposition(wiRenderTarget& shadedSceneRT, wiRenderTarget& mainRT, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE);
virtual void RenderColorGradedComposition();
public:
inline float getLightShaftQuality(){ return lightShaftQuality; }
+1 -1
View File
@@ -3,5 +3,5 @@
float4 main(VertexToPixelPostProcess PSIn) : SV_TARGET
{
return max(float4(xTexture.SampleLevel(Sampler,PSIn.tex,6).rgb-1,1), 0);
return max(float4(xTexture.SampleLevel(Sampler,PSIn.tex,0).rgb - 1,1), 0);
}
+1 -1
View File
@@ -7,5 +7,5 @@ float4 main(VertexToPixel PSIn) : SV_TARGET
{
//float4 color = PSIn.col;
//color.rgb = applyFog(color.rgb,xHorizon,getFog(getLinearDepth(PSIn.pos2D.z/PSIn.pos2D.w),xFogSEH));
return PSIn.col;
return max(PSIn.col,0);
}
+1 -1
View File
@@ -7,7 +7,7 @@ namespace wiVersion
// minor features, major updates
const int minor = 9;
// minor bug fixes, alterations, refactors, updates
const int revision = 21;
const int revision = 22;
long GetVersion()