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

Side by Side Diff: conformance/ogles/GL/atan/atan_vec3_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, 2 months 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 vec3 x = 2.0 * (gtf_Color.ggg - 0.5);
35 vec3 y = 2.0 * (gtf_Color.bbb - 0.5);
36 vec3 c;
37 vec3 atan_c = vec3(0.0);
38 vec3 scale = vec3(1.0);
39 vec3 sign = vec3(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 if(x[2] > epsilon || abs(y[2]) > epsilon)
149 {
150 if(x[2] < 0.0 ^^ y[2] < 0.0)
151 {
152 sign[2] = -1.0;
153 }
154
155 if(abs(y[2]) <= abs(x[2]))
156 {
157 c[2] = abs(y[2] / x[2]);
158 // Taylors series expansion for atan
159 atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1);
160 scale[2] *= -1.0;
161 atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3);
162 scale[2] *= -1.0;
163 atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5);
164 scale[2] *= -1.0;
165 atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7);
166 scale[2] *= -1.0;
167 atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9);
168 scale[2] *= -1.0;
169 atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11) ;
170 scale[2] *= -1.0;
171
172 result[2] = sign[2] * atan_c[2] / (2.0 * M_PI) + 0.5;
173 }
174 else
175 {
176 c[2] = abs(x[2] / y[2]);
177
178 // Taylors series expansion for atan
179 atan_c[2] += scale[2] * pow(c[2], float(1)) / float(1);
180 scale[2] *= -1.0;
181 atan_c[2] += scale[2] * pow(c[2], float(3)) / float(3);
182 scale[2] *= -1.0;
183 atan_c[2] += scale[2] * pow(c[2], float(5)) / float(5);
184 scale[2] *= -1.0;
185 atan_c[2] += scale[2] * pow(c[2], float(7)) / float(7);
186 scale[2] *= -1.0;
187 atan_c[2] += scale[2] * pow(c[2], float(9)) / float(9);
188 scale[2] *= -1.0;
189 atan_c[2] += scale[2] * pow(c[2], float(11)) / float(11) ;
190 scale[2] *= -1.0;
191
192 result[2] = sign[2] * (M_PI / 2.0 - atan_c[2]) / (2.0 * M_PI) + 0.5;
193 }
194
195 if(x[2] < 0.0)
196 if(y[2] < 0.0) result[2] -= 0.5;
197 else if(y[2] > 0.0) result[2] += 0.5;
198 }
199
200 color = result;
201 gl_Position = gtf_ModelViewProjectionMatrix * gtf_Vertex;
202 }
OLDNEW
« no previous file with comments | « conformance/ogles/GL/atan/atan_vec3_vert_xvaryyvary.vert ('k') | conformance/ogles/GL/atan/input.run.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698