Return 0 for dFdx, dFdy and fwidth for discontinuous arguments.

TRAC #20737 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@1124 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent e11100ce
#define MAJOR_VERSION 1 #define MAJOR_VERSION 1
#define MINOR_VERSION 0 #define MINOR_VERSION 0
#define BUILD_VERSION 0 #define BUILD_VERSION 0
#define BUILD_REVISION 1117 #define BUILD_REVISION 1124
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x) #define MACRO_STRINGIFY(x) STRINGIFY(x)
......
...@@ -1215,9 +1215,36 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node) ...@@ -1215,9 +1215,36 @@ bool OutputHLSL::visitUnary(Visit visit, TIntermUnary *node)
case EOpFract: outputTriplet(visit, "frac(", "", ")"); break; case EOpFract: outputTriplet(visit, "frac(", "", ")"); break;
case EOpLength: outputTriplet(visit, "length(", "", ")"); break; case EOpLength: outputTriplet(visit, "length(", "", ")"); break;
case EOpNormalize: outputTriplet(visit, "normalize(", "", ")"); break; case EOpNormalize: outputTriplet(visit, "normalize(", "", ")"); break;
case EOpDFdx: outputTriplet(visit, "ddx(", "", ")"); break; case EOpDFdx:
case EOpDFdy: outputTriplet(visit, "(-ddy(", "", "))"); break; if(mInsideDiscontinuousLoop || mOutputLod0Function)
case EOpFwidth: outputTriplet(visit, "fwidth(", "", ")"); break; {
outputTriplet(visit, "(", "", ", 0.0)");
}
else
{
outputTriplet(visit, "ddx(", "", ")");
}
break;
case EOpDFdy:
if(mInsideDiscontinuousLoop || mOutputLod0Function)
{
outputTriplet(visit, "(", "", ", 0.0)");
}
else
{
outputTriplet(visit, "(-ddy(", "", "))");
}
break;
case EOpFwidth:
if(mInsideDiscontinuousLoop || mOutputLod0Function)
{
outputTriplet(visit, "(", "", ", 0.0)");
}
else
{
outputTriplet(visit, "fwidth(", "", ")");
}
break;
case EOpAny: outputTriplet(visit, "any(", "", ")"); break; case EOpAny: outputTriplet(visit, "any(", "", ")"); break;
case EOpAll: outputTriplet(visit, "all(", "", ")"); break; case EOpAll: outputTriplet(visit, "all(", "", ")"); break;
default: UNREACHABLE(); default: UNREACHABLE();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment