diff options
author | Mika Isojärvi <misojarvi@google.com> | 2016-05-16 11:05:05 -0700 |
---|---|---|
committer | Mika Isojärvi <misojarvi@google.com> | 2016-05-16 12:27:21 -0700 |
commit | 2992eb5165ed88d61466f19d1608f6b4bbd14427 (patch) | |
tree | e5b294beba3ad35e37b7f40746dcc89a957db14b | |
parent | 226a0db84fb22264e27c52ed54d55592baf1693a (diff) | |
download | deqp-2992eb5165ed88d61466f19d1608f6b4bbd14427.tar.gz |
Apply alternatives to vector refract tests
Bug: 28657855
Bug: 27266906
Change-Id: I0ea0211c8292805338d55c1dc01692135761a428
-rw-r--r-- | modules/glshared/glsBuiltinPrecisionTests.cpp | 55 |
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))); } }; |