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

Side by Side Diff: conformance/context/context-attributes-alpha-depth-stencil-antialias.html

Issue 8342021: Add webgl conformance tests r15841. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/webgl/sdk/tests/
Patch Set: Created 9 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
« no previous file with comments | « conformance/context/constants.html ('k') | conformance/context/context-lost.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 <!--
2 Copyright (c) 2011 The Chromium Authors. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file.
5 -->
6 <!DOCTYPE html>
7 <html>
8 <head>
9 <meta charset="utf-8">
10 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
11 <script src="../../resources/js-test-pre.js"></script>
12 <script src="../resources/webgl-test.js"></script>
13 <script id="vshader" type="x-shader/x-vertex">
14 attribute vec3 pos;
15 attribute vec4 colorIn;
16 varying vec4 color;
17
18 void main()
19 {
20 color = colorIn;
21 gl_Position = vec4(pos.xyz, 1.0);
22 }
23 </script>
24
25 <script id="fshader" type="x-shader/x-fragment">
26 precision mediump float;
27
28 varying vec4 color;
29
30 void main()
31 {
32 gl_FragColor = color;
33 }
34 </script>
35
36 <script>
37 var successfullyParsed = false;
38
39 // These four declarations need to be global for "shouldBe" to see them
40 var webGL = null;
41 var contextAttribs = null;
42 var pixel = [0, 0, 0, 1];
43 var correctColor = null;
44 var value;
45
46 function init()
47 {
48 if (window.initNonKhronosFramework) {
49 window.initNonKhronosFramework(true);
50 }
51
52 description('Verify WebGLContextAttributes are working as specified, includi ng alpha, depth, stencil, antialias, but not premultipliedAlpha');
53
54 runTest();
55 }
56
57 function getWebGL(canvasWidth, canvasHeight, contextAttribs, clearColor, clearDe pth, clearStencil)
58 {
59 var canvas = document.createElement("canvas");
60 if (!canvas)
61 return null;
62 canvas.width = canvasWidth;
63 canvas.height = canvasHeight;
64
65 var context = create3DContext(canvas, contextAttribs);
66 if (!context)
67 return null;
68
69 context.program = createProgram(context, "vshader", "fshader", ["pos", "colo rIn"]);
70 if (!context.program)
71 return null;
72
73 context.useProgram(context.program);
74
75 context.enable(context.DEPTH_TEST);
76 context.enable(context.STENCIL_TEST);
77 context.disable(context.BLEND);
78
79 context.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3 ]);
80 context.clearDepth(clearDepth);
81 context.clearStencil(clearStencil);
82 context.clear(context.COLOR_BUFFER_BIT | context.DEPTH_BUFFER_BIT | context. STENCIL_BUFFER_BIT);
83
84 return context;
85 }
86
87 function drawAndReadPixel(gl, vertices, colors, x, y)
88 {
89 var colorOffset = vertices.byteLength;
90
91 var vbo = gl.createBuffer();
92 gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
93 gl.bufferData(gl.ARRAY_BUFFER, colorOffset + colors.byteLength, gl.STATIC_DR AW);
94 gl.bufferSubData(gl.ARRAY_BUFFER, 0, vertices);
95 gl.bufferSubData(gl.ARRAY_BUFFER, colorOffset, colors);
96
97 gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
98 gl.enableVertexAttribArray(0);
99 gl.vertexAttribPointer(1, 4, gl.UNSIGNED_BYTE, true, 0, colorOffset);
100 gl.enableVertexAttribArray(1);
101
102 gl.drawArrays(gl.TRIANGLES, 0, vertices.length / 3);
103
104 var buf = new Uint8Array(1 * 1 * 4);
105 gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf);
106 return buf;
107 }
108
109 function testAlpha(alpha)
110 {
111 debug("Testing alpha = " + alpha);
112 if (alpha)
113 shouldBeNonNull("webGL = getWebGL(1, 1, { alpha: true, depth: false, ste ncil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)");
114 else
115 shouldBeNonNull("webGL = getWebGL(1, 1, { alpha: false, depth: false, st encil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)");
116 shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
117 shouldBeTrue("contextAttribs.alpha == " + alpha);
118
119 var buf = new Uint8Array(1 * 1 * 4);
120 webGL.readPixels(0, 0, 1, 1, webGL.RGBA, webGL.UNSIGNED_BYTE, buf);
121 pixel[0] = buf[0];
122 pixel[1] = buf[1];
123 pixel[2] = buf[2];
124 pixel[3] = buf[3];
125 correctColor = (contextAttribs.alpha ? [0, 0, 0, 0] : [0, 0, 0, 255]);
126 shouldBe("pixel", "correctColor");
127 }
128
129 function testDepth(depth)
130 {
131 debug("Testing depth = " + depth);
132 if (depth)
133 shouldBeNonNull("webGL = getWebGL(1, 1, { stencil: false, antialias: fal se }, [ 0, 0, 0, 1 ], 1, 0)");
134 else
135 shouldBeNonNull("webGL = getWebGL(1, 1, { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
136 shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
137
138 webGL.depthFunc(webGL.NEVER);
139
140 var vertices = new Float32Array([
141 1.0, 1.0, 0.0,
142 -1.0, 1.0, 0.0,
143 -1.0, -1.0, 0.0,
144 1.0, 1.0, 0.0,
145 -1.0, -1.0, 0.0,
146 1.0, -1.0, 0.0]);
147 var colors = new Uint8Array([
148 255, 0, 0, 255,
149 255, 0, 0, 255,
150 255, 0, 0, 255,
151 255, 0, 0, 255,
152 255, 0, 0, 255,
153 255, 0, 0, 255]);
154
155 var buf = drawAndReadPixel(webGL, vertices, colors, 0, 0);
156 pixel[0] = buf[0];
157 pixel[1] = buf[1];
158 pixel[2] = buf[2];
159 pixel[3] = buf[3];
160 correctColor = (contextAttribs.depth ? [0, 0, 0, 255] : [255, 0, 0, 255]);
161 shouldBe("pixel", "correctColor");
162 }
163
164 function testStencil(stencil)
165 {
166 debug("Testing stencil = " + stencil);
167 if (stencil)
168 shouldBeNonNull("webGL = getWebGL(1, 1, { depth: false, stencil: true, a ntialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
169 else
170 shouldBeNonNull("webGL = getWebGL(1, 1, { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
171 shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
172
173 webGL.depthFunc(webGL.ALWAYS);
174
175 webGL.stencilFunc(webGL.NEVER, 1, 1);
176 webGL.stencilOp(webGL.KEEP, webGL.KEEP, webGL.KEEP);
177
178 var vertices = new Float32Array([
179 1.0, 1.0, 0.0,
180 -1.0, 1.0, 0.0,
181 -1.0, -1.0, 0.0,
182 1.0, 1.0, 0.0,
183 -1.0, -1.0, 0.0,
184 1.0, -1.0, 0.0]);
185 var colors = new Uint8Array([
186 255, 0, 0, 255,
187 255, 0, 0, 255,
188 255, 0, 0, 255,
189 255, 0, 0, 255,
190 255, 0, 0, 255,
191 255, 0, 0, 255]);
192
193 var buf = drawAndReadPixel(webGL, vertices, colors, 0, 0);
194 pixel[0] = buf[0];
195 pixel[1] = buf[1];
196 pixel[2] = buf[2];
197 pixel[3] = buf[3];
198 correctColor = (contextAttribs.stencil ? [0, 0, 0, 255] : [255, 0, 0, 255]);
199 shouldBe("pixel", "correctColor");
200 }
201
202 function testAntialias(antialias)
203 {
204 debug("Testing antialias = " + antialias);
205 if (antialias)
206 shouldBeNonNull("webGL = getWebGL(2, 2, { depth: false, stencil: false, alpha: false, antialias: true }, [ 0, 0, 0, 1 ], 1, 0)");
207 else
208 shouldBeNonNull("webGL = getWebGL(2, 2, { depth: false, stencil: false, alpha: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)");
209 shouldBeNonNull("contextAttribs = webGL.getContextAttributes()");
210
211 var vertices = new Float32Array([
212 1.0, 1.0, 0.0,
213 -1.0, 1.0, 0.0,
214 -1.0, -1.0, 0.0]);
215 var colors = new Uint8Array([
216 255, 0, 0, 255,
217 255, 0, 0, 255,
218 255, 0, 0, 255]);
219 var buf = drawAndReadPixel(webGL, vertices, colors, 0, 0);
220 pixel[0] = buf[0];
221 shouldBe("pixel[0] != 255 && pixel[0] != 0", "contextAttribs.antialias");
222 }
223
224 function runTest()
225 {
226
227 testAlpha(true);
228 testAlpha(false);
229 testDepth(true);
230 testDepth(false);
231 testStencil(true);
232 testStencil(false);
233 testAntialias(true);
234 testAntialias(false);
235
236 finishTest()
237 }
238
239 </script>
240 </head>
241 <body onload="init()">
242 <div id="description"></div>
243 <div id="console"></div>
244 </body>
245 </html>
OLDNEW
« no previous file with comments | « conformance/context/constants.html ('k') | conformance/context/context-lost.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698