From 05b2bd5343385ba49a5e921337ac10fece2d87ef Mon Sep 17 00:00:00 2001 From: turanszkij Date: Tue, 5 Dec 2017 10:26:14 +0000 Subject: [PATCH] dx12 updates, removed warnings --- Editor/config.ini | 4 +-- WickedEngine/DeferredRenderableComponent.cpp | 6 ++--- WickedEngine/ForwardRenderableComponent.cpp | 2 +- WickedEngine/Renderable3DComponent.cpp | 17 +++++++----- WickedEngine/wiEmittedParticle.cpp | 4 +-- WickedEngine/wiGraphicsDevice_DX12.cpp | 13 +++++++++ WickedEngine/wiHairParticle.cpp | 4 +-- WickedEngine/wiImage.cpp | 28 +++++++++++++++----- WickedEngine/wiImage.h | 8 +++++- WickedEngine/wiImageEffects.h | 2 ++ WickedEngine/wiLensFlare.cpp | 2 +- WickedEngine/wiOcean.cpp | 2 +- WickedEngine/wiRenderer.cpp | 26 +++++++++--------- WickedEngine/wiRenderer.h | 3 +-- 14 files changed, 79 insertions(+), 42 deletions(-) diff --git a/Editor/config.ini b/Editor/config.ini index db7591a73..fcbe7ab01 100644 --- a/Editor/config.ini +++ b/Editor/config.ini @@ -1,7 +1,7 @@ enabled 1 x 0 y 0 -w 1920 -h 1080 +w 3840 +h 2160 fullscreen 0 borderless 1 \ No newline at end of file diff --git a/WickedEngine/DeferredRenderableComponent.cpp b/WickedEngine/DeferredRenderableComponent.cpp index 7d5c06438..a6a4cac8f 100644 --- a/WickedEngine/DeferredRenderableComponent.cpp +++ b/WickedEngine/DeferredRenderableComponent.cpp @@ -59,7 +59,7 @@ void DeferredRenderableComponent::ResizeBuffers() rtDeferred.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); rtLight.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y , false, wiRenderer::RTFormat_deferred_lightbuffer); // diffuse @@ -67,10 +67,10 @@ void DeferredRenderableComponent::ResizeBuffers() rtSSS[0].Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); rtSSS[1].Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); } void DeferredRenderableComponent::Initialize() diff --git a/WickedEngine/ForwardRenderableComponent.cpp b/WickedEngine/ForwardRenderableComponent.cpp index 6a658737b..d49a90caf 100644 --- a/WickedEngine/ForwardRenderableComponent.cpp +++ b/WickedEngine/ForwardRenderableComponent.cpp @@ -46,7 +46,7 @@ void ForwardRenderableComponent::ResizeBuffers() lastBufferFormat = defaultTextureFormat; } - rtMain.Initialize(wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y, true, wiRenderer::RTFormat_forward, 1, getMSAASampleCount(), false); + rtMain.Initialize(wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y, true, wiRenderer::RTFormat_hdr, 1, getMSAASampleCount(), false); rtMain.Add(wiRenderer::RTFormat_gbuffer_1); // thin gbuffer } diff --git a/WickedEngine/Renderable3DComponent.cpp b/WickedEngine/Renderable3DComponent.cpp index 71705019d..a3685053b 100644 --- a/WickedEngine/Renderable3DComponent.cpp +++ b/WickedEngine/Renderable3DComponent.cpp @@ -62,26 +62,26 @@ void Renderable3DComponent::ResizeBuffers() rtSSR.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); rtMotionBlur.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); rtLinearDepth.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y , false, wiRenderer::RTFormat_lineardepth); rtParticle.Initialize( (UINT)(wiRenderer::GetInternalResolution().x*getAlphaParticleDownSample()), (UINT)(wiRenderer::GetInternalResolution().y*getAlphaParticleDownSample()) - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); rtWaterRipple.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y , false, wiRenderer::RTFormat_waterripple); rtSceneCopy.Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr, 8); + , false, wiRenderer::RTFormat_hdr, 8); rtReflection.Initialize( (UINT)(wiRenderer::GetInternalResolution().x * getReflectionQuality()) , (UINT)(wiRenderer::GetInternalResolution().y * getReflectionQuality()) - , true, wiRenderer::RTFormat_temp_hdr); + , true, wiRenderer::RTFormat_hdr); rtFinal[0].Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y , false, defaultTextureFormat); @@ -132,10 +132,10 @@ void Renderable3DComponent::ResizeBuffers() rtTemporalAA[0].Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); rtTemporalAA[1].Initialize( wiRenderer::GetInternalResolution().x, wiRenderer::GetInternalResolution().y - , false, wiRenderer::RTFormat_temp_hdr); + , false, wiRenderer::RTFormat_hdr); SAFE_DELETE(smallDepth); @@ -315,6 +315,7 @@ void Renderable3DComponent::RenderShadows(GRAPHICSTHREAD threadID) void Renderable3DComponent::RenderSecondaryScene(wiRenderTarget& mainRT, wiRenderTarget& shadedSceneRT, GRAPHICSTHREAD threadID) { wiImageEffects fx((float)wiRenderer::GetInternalResolution().x, (float)wiRenderer::GetInternalResolution().y); + fx.hdr = true; wiRenderer::GetDevice()->EventBegin("Downsample Depth Buffer", threadID); { @@ -490,6 +491,7 @@ void Renderable3DComponent::RenderComposition(wiRenderTarget& shadedSceneRT, wiR wiProfiler::GetInstance().BeginRange("Post Processing", wiProfiler::DOMAIN_GPU, threadID); wiImageEffects fx((float)wiRenderer::GetInternalResolution().x, (float)wiRenderer::GetInternalResolution().y); + fx.hdr = true; if (getBloomEnabled()) { @@ -547,6 +549,7 @@ void Renderable3DComponent::RenderComposition(wiRenderTarget& shadedSceneRT, wiR wiRenderer::GetDevice()->EventEnd(threadID); } + fx.hdr = false; wiRenderer::GetDevice()->EventBegin("Tone Mapping", threadID); fx.blendFlag = BLENDMODE_OPAQUE; diff --git a/WickedEngine/wiEmittedParticle.cpp b/WickedEngine/wiEmittedParticle.cpp index 569a15d4f..7802191b7 100644 --- a/WickedEngine/wiEmittedParticle.cpp +++ b/WickedEngine/wiEmittedParticle.cpp @@ -552,7 +552,7 @@ void wiEmittedParticle::LoadShaders() desc.rs = &rasterizerState; desc.dss = &depthStencilState; desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_temp_hdr; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; device->CreateGraphicsPSO(&desc, &PSO[i]); } @@ -565,7 +565,7 @@ void wiEmittedParticle::LoadShaders() desc.rs = &wireFrameRS; desc.dss = &depthStencilState; desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_temp_hdr; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; device->CreateGraphicsPSO(&desc, &PSO_wire); } diff --git a/WickedEngine/wiGraphicsDevice_DX12.cpp b/WickedEngine/wiGraphicsDevice_DX12.cpp index e05122013..5f11ff3d4 100644 --- a/WickedEngine/wiGraphicsDevice_DX12.cpp +++ b/WickedEngine/wiGraphicsDevice_DX12.cpp @@ -1613,6 +1613,19 @@ namespace wiGraphicsTypes } + static_cast(commandLists[GRAPHICSTHREAD_IMMEDIATE])->SetGraphicsRootSignature(graphicsRootSig); + static_cast(commandLists[GRAPHICSTHREAD_IMMEDIATE])->SetComputeRootSignature(computeRootSig); + + + D3D12_RECT pRects[8]; + for (UINT i = 0; i < 8; ++i) + { + pRects[i].bottom = INT32_MAX; + pRects[i].left = INT32_MIN; + pRects[i].right = INT32_MAX; + pRects[i].top = INT32_MIN; + } + static_cast(commandLists[GRAPHICSTHREAD_IMMEDIATE])->RSSetScissorRects(8, pRects); } GraphicsDevice_DX12::~GraphicsDevice_DX12() { diff --git a/WickedEngine/wiHairParticle.cpp b/WickedEngine/wiHairParticle.cpp index 454936df3..44188b5f7 100644 --- a/WickedEngine/wiHairParticle.cpp +++ b/WickedEngine/wiHairParticle.cpp @@ -165,12 +165,12 @@ void wiHairParticle::LoadShaders() { case SHADERTYPE_TEXTURE: desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_forward; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; break; case SHADERTYPE_FORWARD: case SHADERTYPE_TILEDFORWARD: desc.numRTs = 2; - desc.RTFormats[0] = wiRenderer::RTFormat_forward; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; desc.RTFormats[1] = wiRenderer::RTFormat_gbuffer_1; break; case SHADERTYPE_DEFERRED: diff --git a/WickedEngine/wiImage.cpp b/WickedEngine/wiImage.cpp index 4826d24d9..723bdde25 100644 --- a/WickedEngine/wiImage.cpp +++ b/WickedEngine/wiImage.cpp @@ -25,7 +25,7 @@ DepthStencilState wiImage::depthStencilStates[STENCILMODE_COUNT]; BlendState wiImage::blendStateDisableColor; DepthStencilState wiImage::depthStencilStateDepthWrite; -GraphicsPSO wiImage::imagePSO[IMAGE_SHADER_COUNT][BLENDMODE_COUNT][STENCILMODE_COUNT]; +GraphicsPSO wiImage::imagePSO[IMAGE_SHADER_COUNT][BLENDMODE_COUNT][STENCILMODE_COUNT][IMAGE_HDR_COUNT]; GraphicsPSO wiImage::postprocessPSO[POSTPROCESS_COUNT]; GraphicsPSO wiImage::deferredPSO; @@ -122,9 +122,12 @@ void wiImage::LoadShaders() } desc.numRTs = 1; - desc.RTFormats[0] = GraphicsDevice::GetBackBufferFormat(); - device->CreateGraphicsPSO(&desc, &imagePSO[i][j][k]); + desc.RTFormats[0] = GraphicsDevice::GetBackBufferFormat(); + device->CreateGraphicsPSO(&desc, &imagePSO[i][j][k][0]); + + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; + device->CreateGraphicsPSO(&desc, &imagePSO[i][j][k][1]); } } } @@ -160,10 +163,21 @@ void wiImage::LoadShaders() desc.numRTs = 1; desc.RTFormats[0] = wiRenderer::RTFormat_lineardepth; } + else if (i == POSTPROCESS_TONEMAP) + { + desc.numRTs = 1; + desc.RTFormats[0] = GraphicsDevice::GetBackBufferFormat(); + } + else if (i == POSTPROCESS_BLOOMSEPARATE || i == POSTPROCESS_BLUR_H || POSTPROCESS_BLUR_V) + { + // todo: bloom and DoF blur should really be HDR lol... + desc.numRTs = 1; + desc.RTFormats[0] = GraphicsDevice::GetBackBufferFormat(); + } else { desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_temp_hdr; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; } device->CreateGraphicsPSO(&desc, &postprocessPSO[i]); @@ -176,7 +190,7 @@ void wiImage::LoadShaders() desc.dss = &depthStencilStates[STENCILMODE_LESS]; desc.rs = &rasterizerState; desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_temp_hdr; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; desc.DSFormat = wiRenderer::DSFormat_full; device->CreateGraphicsPSO(&desc, &deferredPSO); @@ -352,7 +366,7 @@ void wiImage::Draw(Texture2D* texture, const wiImageEffects& effects,GRAPHICSTHR if (effects.presentFullScreen) { - device->BindGraphicsPSO(&imagePSO[IMAGE_SHADER_FULLSCREEN][effects.blendFlag][effects.stencilComp], threadID); + device->BindGraphicsPSO(&imagePSO[IMAGE_SHADER_FULLSCREEN][effects.blendFlag][effects.stencilComp][effects.hdr], threadID); device->Draw(3, 0, threadID); device->EventEnd(threadID); return; @@ -451,7 +465,7 @@ void wiImage::Draw(Texture2D* texture, const wiImageEffects& effects,GRAPHICSTHR } } - device->BindGraphicsPSO(&imagePSO[targetShader][effects.blendFlag][effects.stencilComp], threadID); + device->BindGraphicsPSO(&imagePSO[targetShader][effects.blendFlag][effects.stencilComp][effects.hdr], threadID); fullScreenEffect = false; } diff --git a/WickedEngine/wiImage.h b/WickedEngine/wiImage.h index 1424160e5..30be1d13f 100644 --- a/WickedEngine/wiImage.h +++ b/WickedEngine/wiImage.h @@ -74,7 +74,13 @@ protected: static wiGraphicsTypes::DepthStencilState depthStencilStates[STENCILMODE_COUNT]; static wiGraphicsTypes::DepthStencilState depthStencilStateDepthWrite; - static wiGraphicsTypes::GraphicsPSO imagePSO[IMAGE_SHADER_COUNT][BLENDMODE_COUNT][STENCILMODE_COUNT]; + enum IMAGE_HDR + { + IMAGE_HDR_DISABLED, + IMAGE_HDR_ENABLED, + IMAGE_HDR_COUNT + }; + static wiGraphicsTypes::GraphicsPSO imagePSO[IMAGE_SHADER_COUNT][BLENDMODE_COUNT][STENCILMODE_COUNT][IMAGE_HDR_COUNT]; static wiGraphicsTypes::GraphicsPSO postprocessPSO[POSTPROCESS_COUNT]; static wiGraphicsTypes::GraphicsPSO deferredPSO; diff --git a/WickedEngine/wiImageEffects.h b/WickedEngine/wiImageEffects.h index 8d2019ee9..b84e836a9 100644 --- a/WickedEngine/wiImageEffects.h +++ b/WickedEngine/wiImageEffects.h @@ -59,6 +59,7 @@ public: float rotation; bool extractNormalMap; float mipLevel; + bool hdr; UINT stencilRef; STENCILMODE stencilComp; @@ -143,6 +144,7 @@ public: blur = blurDir = fade = rotation = 0.0f; opacity = 1.0f; extractNormalMap = false; + hdr = false; mipLevel = 0.f; stencilRef = 0; stencilComp = STENCILMODE_DISABLED; diff --git a/WickedEngine/wiLensFlare.cpp b/WickedEngine/wiLensFlare.cpp index c89c0c156..6e4396e26 100644 --- a/WickedEngine/wiLensFlare.cpp +++ b/WickedEngine/wiLensFlare.cpp @@ -97,7 +97,7 @@ void wiLensFlare::LoadShaders(){ desc.dss = &depthStencilState; desc.ptt = PRIMITIVE_TOPOLOGY_TYPE_POINT; desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_temp_hdr; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; device->CreateGraphicsPSO(&desc, &PSO); } void wiLensFlare::SetUpCB() diff --git a/WickedEngine/wiOcean.cpp b/WickedEngine/wiOcean.cpp index f8cbaacb1..01b9b27a9 100644 --- a/WickedEngine/wiOcean.cpp +++ b/WickedEngine/wiOcean.cpp @@ -403,7 +403,7 @@ void wiOcean::LoadShaders() desc.rs = &rasterizerState; desc.dss = &depthStencilState; desc.numRTs = 1; - desc.RTFormats[0] = wiRenderer::RTFormat_forward; + desc.RTFormats[0] = wiRenderer::RTFormat_hdr; desc.DSFormat = wiRenderer::DSFormat_full; device->CreateGraphicsPSO(&desc, &PSO); diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 870509a20..aa7c062ca 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -1556,7 +1556,7 @@ void wiRenderer::LoadShaders() { case SHADERTYPE_TEXTURE: desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.DSFormat = DSFormat_full; break; case SHADERTYPE_DEFERRED: @@ -1569,13 +1569,13 @@ void wiRenderer::LoadShaders() break; case SHADERTYPE_FORWARD: desc.numRTs = 2; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.RTFormats[1] = RTFormat_gbuffer_1; desc.DSFormat = DSFormat_full; break; case SHADERTYPE_TILEDFORWARD: desc.numRTs = 2; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.RTFormats[1] = RTFormat_gbuffer_1; desc.DSFormat = DSFormat_full; break; @@ -1630,7 +1630,7 @@ void wiRenderer::LoadShaders() desc.il = vertexLayouts[VLTYPE_OBJECT_POS_TEX]; desc.numRTs = 2; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.RTFormats[1] = RTFormat_gbuffer_1; desc.DSFormat = DSFormat_full; @@ -1652,7 +1652,7 @@ void wiRenderer::LoadShaders() desc.il = vertexLayouts[VLTYPE_OBJECT_POS_TEX]; desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.DSFormat = DSFormat_full; PSO_object_wire = new GraphicsPSO; @@ -1718,13 +1718,13 @@ void wiRenderer::LoadShaders() case SHADERTYPE_FORWARD: realPS = PSTYPE_OBJECT_FORWARD_DIRLIGHT_NORMALMAP; desc.numRTs = 2; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.RTFormats[1] = RTFormat_gbuffer_1; break; case SHADERTYPE_TILEDFORWARD: realPS = PSTYPE_OBJECT_TILEDFORWARD_NORMALMAP; desc.numRTs = 2; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.RTFormats[1] = RTFormat_gbuffer_1; break; case SHADERTYPE_DEPTHONLY: @@ -1733,7 +1733,7 @@ void wiRenderer::LoadShaders() default: realPS = PSTYPE_OBJECT_TEXTUREONLY; desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; break; } desc.DSFormat = DSFormat_full; @@ -1868,7 +1868,7 @@ void wiRenderer::LoadShaders() } desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_temp_hdr; + desc.RTFormats[0] = RTFormat_hdr; desc.DSFormat = DSFormat_full; PSO_volumelight[type] = new GraphicsPSO; @@ -1903,7 +1903,7 @@ void wiRenderer::LoadShaders() desc.vs = vertexShaders[VSTYPE_SKY]; desc.ps = pixelShaders[PSTYPE_SKY]; desc.numRTs = 2; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.RTFormats[0] = RTFormat_gbuffer_1; desc.DSFormat = DSFormat_full; break; @@ -1912,7 +1912,7 @@ void wiRenderer::LoadShaders() desc.vs = vertexShaders[VSTYPE_SKY]; desc.ps = pixelShaders[PSTYPE_SUN]; desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.DSFormat = DSFormat_full; break; case SKYRENDERING_ENVMAPCAPTURE: @@ -1921,7 +1921,7 @@ void wiRenderer::LoadShaders() desc.ps = pixelShaders[PSTYPE_ENVMAP_SKY]; desc.gs = geometryShaders[GSTYPE_ENVMAP_SKY]; desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_forward; + desc.RTFormats[0] = RTFormat_hdr; desc.DSFormat = DSFormat_small; break; } @@ -2029,7 +2029,7 @@ void wiRenderer::LoadShaders() } desc.numRTs = 1; - desc.RTFormats[0] = RTFormat_temp_hdr; + desc.RTFormats[0] = RTFormat_hdr; desc.DSFormat = DSFormat_full; PSO_debug[debug] = new GraphicsPSO; diff --git a/WickedEngine/wiRenderer.h b/WickedEngine/wiRenderer.h index 17512c11b..a20a0ffba 100644 --- a/WickedEngine/wiRenderer.h +++ b/WickedEngine/wiRenderer.h @@ -78,12 +78,11 @@ public: static wiGraphicsTypes::GPURingBuffer *dynamicVertexBufferPool; - static const wiGraphicsTypes::FORMAT RTFormat_forward = wiGraphicsTypes::FORMAT_R16G16B16A16_FLOAT; + static const wiGraphicsTypes::FORMAT RTFormat_hdr = wiGraphicsTypes::FORMAT_R16G16B16A16_FLOAT; static const wiGraphicsTypes::FORMAT RTFormat_gbuffer_0 = wiGraphicsTypes::FORMAT_R8G8B8A8_UNORM; static const wiGraphicsTypes::FORMAT RTFormat_gbuffer_1 = wiGraphicsTypes::FORMAT_R16G16B16A16_FLOAT; static const wiGraphicsTypes::FORMAT RTFormat_gbuffer_2 = wiGraphicsTypes::FORMAT_R8G8B8A8_UNORM; static const wiGraphicsTypes::FORMAT RTFormat_gbuffer_3 = wiGraphicsTypes::FORMAT_R8G8B8A8_UNORM; - static const wiGraphicsTypes::FORMAT RTFormat_temp_hdr = wiGraphicsTypes::FORMAT_R16G16B16A16_FLOAT; // NOTE: Light buffer precision seems OK when using FORMAT_R11G11B10_FLOAT format // But the environmental light now also writes the AO to ALPHA so it has been changed to FORMAT_R16G16B16A16_FLOAT static const wiGraphicsTypes::FORMAT RTFormat_deferred_lightbuffer = wiGraphicsTypes::FORMAT_R16G16B16A16_FLOAT;