|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 /** |
|
5 * Tests that the rendering is updated when a varying variable is |
|
6 * changed in one shader. |
|
7 */ |
|
8 |
|
9 function ifWebGLSupported() { |
|
10 let [target, debuggee, front] = yield initBackend(SIMPLE_CANVAS_URL); |
|
11 front.setup({ reload: true }); |
|
12 |
|
13 let programActor = yield once(front, "program-linked"); |
|
14 let vertexShader = yield programActor.getVertexShader(); |
|
15 let fragmentShader = yield programActor.getFragmentShader(); |
|
16 |
|
17 let oldVertSource = yield vertexShader.getText(); |
|
18 let newVertSource = oldVertSource.replace("= aVertexColor", "= vec3(0, 0, 1)"); |
|
19 let status = yield vertexShader.compile(newVertSource); |
|
20 ok(!status, |
|
21 "The new vertex shader source was compiled without errors."); |
|
22 |
|
23 yield waitForFrame(debuggee); |
|
24 yield ensurePixelIs(debuggee, { x: 0, y: 0 }, { r: 0, g: 0, b: 255, a: 255 }, true); |
|
25 yield ensurePixelIs(debuggee, { x: 128, y: 128 }, { r: 0, g: 0, b: 255, a: 255 }, true); |
|
26 yield ensurePixelIs(debuggee, { x: 511, y: 511 }, { r: 0, g: 0, b: 255, a: 255 }, true); |
|
27 |
|
28 let vertSource = yield vertexShader.getText(); |
|
29 let fragSource = yield fragmentShader.getText(); |
|
30 ok(vertSource.contains("vFragmentColor = vec3(0, 0, 1);"), |
|
31 "The vertex shader source is correct after changing it."); |
|
32 ok(fragSource.contains("gl_FragColor = vec4(vFragmentColor, 1.0);"), |
|
33 "The fragment shader source is correct after changing the vertex shader."); |
|
34 |
|
35 yield removeTab(target.tab); |
|
36 finish(); |
|
37 } |