Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1201)

Side by Side Diff: conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary_ref.vert

Issue 41993002: Add ToT WebGL conformance tests : part 9 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/webgl/sdk/tests/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1
2 /*
3 ** Copyright (c) 2012 The Khronos Group Inc.
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a
6 ** copy of this software and/or associated documentation files (the
7 ** "Materials"), to deal in the Materials without restriction, including
8 ** without limitation the rights to use, copy, modify, merge, publish,
9 ** distribute, sublicense, and/or sell copies of the Materials, and to
10 ** permit persons to whom the Materials are furnished to do so, subject to
11 ** the following conditions:
12 **
13 ** The above copyright notice and this permission notice shall be included
14 ** in all copies or substantial portions of the Materials.
15 **
16 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
23 */
24
25
26 attribute vec4 gtf_Vertex;
27 attribute vec4 gtf_Color;
28 uniform mat4 gtf_ModelViewProjectionMatrix;
29 varying vec4 color;
30
31 void main (void)
32 {
33 const float M_PI = 3.14159265358979323846;
34 vec2 x = 2.0 * (gtf_Color.gg - 0.5);
35 vec2 y = 2.0 * (gtf_Color.bb - 0.5);
36 vec2 c;
37 vec2 atan_c = vec2(0.0);
38 vec2 scale = vec2(1.0);
39 vec2 sign = vec2(1.0);
40 vec4 result = vec4(0.0, 0.0, 0.0, 1.0);
41 const float epsilon = 1.0e-4;
42
43 // Avoid evaluating atan(0, x) for x < epsilon because it's implementati on-dependent
44 if(x[0] > epsilon || abs(y[0]) > epsilon)
45 {
46 if(x[0] < 0.0 ^^ y[0] < 0.0)
47 {
48 sign[0] = -1.0;
49 }
50
51 if(abs(y[0]) <= abs(x[0]))
52 {
53 c[0] = abs(y[0] / x[0]);
54 // Taylors series expansion for atan
55 atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1);
56 scale[0] *= -1.0;
57 atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3);
58 scale[0] *= -1.0;
59 atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5);
60 scale[0] *= -1.0;
61 atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7);
62 scale[0] *= -1.0;
63 atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9);
64 scale[0] *= -1.0;
65 atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11) ;
66 scale[0] *= -1.0;
67
68 result[0] = sign[0] * atan_c[0] / (2.0 * M_PI) + 0.5;
69 }
70 else
71 {
72 c[0] = abs(x[0] / y[0]);
73
74 // Taylors series expansion for atan
75 atan_c[0] += scale[0] * pow(c[0], float(1)) / float(1);
76 scale[0] *= -1.0;
77 atan_c[0] += scale[0] * pow(c[0], float(3)) / float(3);
78 scale[0] *= -1.0;
79 atan_c[0] += scale[0] * pow(c[0], float(5)) / float(5);
80 scale[0] *= -1.0;
81 atan_c[0] += scale[0] * pow(c[0], float(7)) / float(7);
82 scale[0] *= -1.0;
83 atan_c[0] += scale[0] * pow(c[0], float(9)) / float(9);
84 scale[0] *= -1.0;
85 atan_c[0] += scale[0] * pow(c[0], float(11)) / float(11) ;
86 scale[0] *= -1.0;
87
88 result[0] = sign[0] * (M_PI / 2.0 - atan_c[0]) / (2.0 * M_PI) + 0.5;
89 }
90
91 if(x[0] < 0.0)
92 if(y[0] < 0.0) result[0] -= 0.5;
93 else if(y[0] > 0.0) result[0] += 0.5;
94 }
95
96 if(x[1] > epsilon || abs(y[1]) > epsilon)
97 {
98 if(x[1] < 0.0 ^^ y[1] < 0.0)
99 {
100 sign[1] = -1.0;
101 }
102
103 if(abs(y[1]) <= abs(x[1]))
104 {
105 c[1] = abs(y[1] / x[1]);
106 // Taylors series expansion for atan
107 atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1);
108 scale[1] *= -1.0;
109 atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3);
110 scale[1] *= -1.0;
111 atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5);
112 scale[1] *= -1.0;
113 atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7);
114 scale[1] *= -1.0;
115 atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9);
116 scale[1] *= -1.0;
117 atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11) ;
118 scale[1] *= -1.0;
119
120 result[1] = sign[1] * atan_c[1] / (2.0 * M_PI) + 0.5;
121 }
122 else
123 {
124 c[1] = abs(x[1] / y[1]);
125
126 // Taylors series expansion for atan
127 atan_c[1] += scale[1] * pow(c[1], float(1)) / float(1);
128 scale[1] *= -1.0;
129 atan_c[1] += scale[1] * pow(c[1], float(3)) / float(3);
130 scale[1] *= -1.0;
131 atan_c[1] += scale[1] * pow(c[1], float(5)) / float(5);
132 scale[1] *= -1.0;
133 atan_c[1] += scale[1] * pow(c[1], float(7)) / float(7);
134 scale[1] *= -1.0;
135 atan_c[1] += scale[1] * pow(c[1], float(9)) / float(9);
136 scale[1] *= -1.0;
137 atan_c[1] += scale[1] * pow(c[1], float(11)) / float(11) ;
138 scale[1] *= -1.0;
139
140 result[1] = sign[1] * (M_PI / 2.0 - atan_c[1]) / (2.0 * M_PI) + 0.5;
141 }
142
143 if(x[1] < 0.0)
144 if(y[1] < 0.0) result[1] -= 0.5;
145 else if(y[1] > 0.0) result[1] += 0.5;
146 }
147
148 color = result;
149 gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex;
150 }
OLDNEW
« no previous file with comments | « conformance/ogles/GL/atan/atan_vec2_vert_xvaryyvary.vert ('k') | conformance/ogles/GL/atan/atan_vec3_frag_xvary.frag » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698