aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMika Isojärvi <misojarvi@google.com>2016-05-16 11:05:05 -0700
committerMika Isojärvi <misojarvi@google.com>2016-05-16 12:27:21 -0700
commit2992eb5165ed88d61466f19d1608f6b4bbd14427 (patch)
treee5b294beba3ad35e37b7f40746dcc89a957db14b
parent226a0db84fb22264e27c52ed54d55592baf1693a (diff)
downloaddeqp-2992eb5165ed88d61466f19d1608f6b4bbd14427.tar.gz
Apply alternatives to vector refract tests
Bug: 28657855 Bug: 27266906 Change-Id: I0ea0211c8292805338d55c1dc01692135761a428
-rw-r--r--modules/glshared/glsBuiltinPrecisionTests.cpp55
1 files changed, 11 insertions, 44 deletions
diff --git a/modules/glshared/glsBuiltinPrecisionTests.cpp b/modules/glshared/glsBuiltinPrecisionTests.cpp
index fee0c5366..198e1add9 100644
--- a/modules/glshared/glsBuiltinPrecisionTests.cpp
+++ b/modules/glshared/glsBuiltinPrecisionTests.cpp
@@ -3127,49 +3127,6 @@ protected:
}
};
-template<int Size, typename Ret, typename Arg0, typename Arg1>
-struct ApplyRefract
-{
- static ExprP<Ret> apply (ExpandContext& ctx,
- const ExprP<Arg0>& i,
- const ExprP<Arg1>& n,
- const ExprP<float>& eta)
- {
- const ExprP<float> dotNI = bindExpression("dotNI", ctx, dot(n, i));
- const ExprP<float> k = bindExpression("k", ctx, constant(1.0f) - eta * eta *
- (constant(1.0f) - dotNI * dotNI));
-
- return cond(k < constant(0.0f),
- genXType<float, Size>(constant(0.0f)),
- i * eta - n * (eta * dotNI + sqrt(k)));
- };
-};
-
-template<typename Ret, typename Arg0, typename Arg1>
-struct ApplyRefract<1, Ret, Arg0, Arg1>
-{
- static ExprP<Ret> apply (ExpandContext& ctx,
- const ExprP<Arg0>& i,
- const ExprP<Arg1>& n,
- const ExprP<float>& eta)
- {
- const ExprP<float> dotNI = bindExpression("dotNI", ctx, dot(n, i));
- const ExprP<float> k1 = bindExpression("k1", ctx, constant(1.0f) - eta * eta *
- (constant(1.0f) - dotNI * dotNI));
-
- const ExprP<float> k2 = bindExpression("k2", ctx,
- (((dotNI * (-dotNI)) + constant(1.0f)) * eta)
- * (-eta) + constant(1.0f));
-
- return alternatives(cond(k1 < constant(0.0f),
- genXType<float, 1>(constant(0.0f)),
- i * eta - n * (eta * dotNI + sqrt(k1))),
- cond(k2 < constant(0.0f),
- genXType<float, 1>(constant(0.0f)),
- i * eta - n * (eta * dotNI + sqrt(k2))));
- };
-};
-
template <int Size>
class Refract : public DerivedFunc<
Signature<typename ContainerOf<float, Size>::Container,
@@ -3194,8 +3151,18 @@ protected:
const ExprP<Arg0>& i = args.a;
const ExprP<Arg1>& n = args.b;
const ExprP<float>& eta = args.c;
+ const ExprP<float> dotNI = bindExpression("dotNI", ctx, dot(n, i));
+ const ExprP<float> k1 = bindExpression("k1", ctx, constant(1.0f) - eta * eta *
+ (constant(1.0f) - dotNI * dotNI));
+
+ const ExprP<float> k2 = bindExpression("k2", ctx,
+ (((dotNI * (-dotNI)) + constant(1.0f)) * eta)
+ * (-eta) + constant(1.0f));
+ const ExprP<float> k = bindExpression("k", ctx, alternatives(k1, k2));
- return ApplyRefract<Size, Ret, Arg0, Arg1>::apply(ctx, i, n, eta);
+ return cond(k < constant(0.0f),
+ genXType<float, Size>(constant(0.0f)),
+ i * eta - n * (eta * dotNI + sqrt(k)));
}
};