Fixed shadow map scissor getting always disabled.

This commit is contained in:
Lasse Öörni 2011-06-07 06:25:08 +00:00
parent ba48113ccd
commit a66b1fc648
2 changed files with 7 additions and 6 deletions

View File

@ -2110,7 +2110,7 @@ void View::DrawSplitLightToStencil(Camera& camera, Light* light, bool clear)
}
}
void View::RenderBatchQueue(const BatchQueue& queue, bool useScissor, bool useLightBuffer)
void View::RenderBatchQueue(const BatchQueue& queue, bool useScissor, bool useLightBuffer, bool disableScissor)
{
Texture2D* diffBuffer = 0;
VertexBuffer* instancingBuffer = 0;
@ -2119,7 +2119,8 @@ void View::RenderBatchQueue(const BatchQueue& queue, bool useScissor, bool useLi
if (renderer_->GetDynamicInstancing())
instancingBuffer = renderer_->instancingBuffer_;
graphics_->SetScissorTest(false);
if (disableScissor)
graphics_->SetScissorTest(false);
graphics_->SetStencilTest(false);
// Priority instanced
@ -2239,14 +2240,14 @@ void View::RenderShadowMap(const LightBatchQueue& queue)
{
float zoom = Min(queue.light_->GetShadowCamera()->GetZoom(),
(float)(shadowMap->GetWidth() - 2) / (float)shadowMap->GetWidth());
Rect zoorect_(Vector2(-1.0f, -1.0f) * zoom, Vector2(1.0f, 1.0f) * zoom);
graphics_->SetScissorTest(true, zoorect_, false);
Rect zoomRect(Vector2(-1.0f, -1.0f) * zoom, Vector2(1.0f, 1.0f) * zoom);
graphics_->SetScissorTest(true, zoomRect, false);
}
else
graphics_->SetScissorTest(false);
// Draw instanced and non-instanced shadow casters
RenderBatchQueue(queue.shadowBatches_);
RenderBatchQueue(queue.shadowBatches_, false, false, false);
graphics_->SetColorWrite(true);
graphics_->SetDepthBias(0.0f, 0.0f);

View File

@ -159,7 +159,7 @@ private:
/// Draw a split light to stencil buffer
void DrawSplitLightToStencil(Camera& camera, Light* light, bool clear = false);
/// Draw everything in a batch queue, priority batches first
void RenderBatchQueue(const BatchQueue& queue, bool useScissor = false, bool useLightBuffer = false);
void RenderBatchQueue(const BatchQueue& queue, bool useScissor = false, bool useLightBuffer = false, bool disableScissor = true);
/// Draw a forward (shadowed) light batch queue
void RenderForwardLightBatchQueue(const BatchQueue& queue, Light* forwardQueueLight);
/// Render a shadow map