Procházet zdrojové kódy

Fixed SM2 fallback mode light pre-pass rendering.

Lasse Öörni před 14 roky
rodič
revize
2d8e33949a
2 změnil soubory, kde provedl 12 přidání a 7 odebrání
  1. 11 6
      Engine/Graphics/Renderer.cpp
  2. 1 1
      Engine/Graphics/View.cpp

+ 11 - 6
Engine/Graphics/Renderer.cpp

@@ -351,16 +351,21 @@ void Renderer::SetLightPrepass(bool enable)
                 normalBuffer_->SetSize(0, 0, Graphics::GetRGBAFormat(), TEXTURE_RENDERTARGET);
             }
             
-            if (!depthBuffer_)
+            if (!graphics_->GetFallback())
             {
-                if (!graphics_->GetHardwareDepthSupport())
+                if (!depthBuffer_)
                 {
-                    depthBuffer_ = new Texture2D(context_);
-                    depthBuffer_->SetSize(0, 0, Graphics::GetDepthFormat(), TEXTURE_RENDERTARGET);
+                    if (!graphics_->GetHardwareDepthSupport())
+                    {
+                        depthBuffer_ = new Texture2D(context_);
+                        depthBuffer_->SetSize(0, 0, Graphics::GetDepthFormat(), TEXTURE_RENDERTARGET);
+                    }
+                    else
+                        depthBuffer_ = graphics_->GetDepthTexture();
                 }
-                else
-                    depthBuffer_ = graphics_->GetDepthTexture();
             }
+            else
+                depthBuffer_.Reset();
             
             if (!lightBuffer_)
             {

+ 1 - 1
Engine/Graphics/View.cpp

@@ -1038,7 +1038,7 @@ void View::RenderBatchesLightPrepass()
         graphics_->SetViewport(screenRect_);
         graphics_->Clear(CLEAR_COLOR | CLEAR_DEPTH | CLEAR_STENCIL, Color(0.5f, 0.5f, 1.0f, 1.0f));
     }
-    if (graphics_->GetHardwareDepthSupport())
+    else if (graphics_->GetHardwareDepthSupport())
     {
         depthStencil = depthBuffer->GetRenderSurface();