clamp result.depth to [0,1] if written to
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 25 Aug 2006 19:45:31 +0000 (19:45 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 25 Aug 2006 19:45:31 +0000 (19:45 +0000)
src/mesa/swrast/s_nvfragprog.c

index 826e71d45c996a77ccf2ece5748b1606e405cf19..97dbed04a897bf9aa8df9856b23e36664775092a 100644 (file)
@@ -1491,7 +1491,12 @@ _swrast_exec_fragment_program( GLcontext *ctx, struct sw_span *span )
          if (program->Base.OutputsWritten & (1 << FRAG_RESULT_DEPR)) {
             const GLfloat depth
                = ctx->FragmentProgram.Machine.Outputs[FRAG_RESULT_DEPR][2];
-            span->array->z[i] = IROUND(depth * ctx->DrawBuffer->_DepthMaxF);
+            if (depth <= 0.0)
+               span->array->z[i] = 0;
+            else if (depth >= 1.0)
+               span->array->z[i] = ctx->DrawBuffer->_DepthMax;
+            else
+               span->array->z[i] = IROUND(depth * ctx->DrawBuffer->_DepthMaxF);
          }
       }
    }