| <!-- |
| Copyright (c) 2019 The Khronos Group Inc. |
| Use of this source code is governed by an MIT-style license that can be |
| found in the LICENSE.txt file. |
| --> |
| |
| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>WebGL GLSL Conformance Tests</title> |
| <link rel="stylesheet" href="../../../resources/js-test-style.css"/> |
| <link rel="stylesheet" href="../../../resources/glsl-feature-tests.css"/> |
| <script src="../../../js/js-test-pre.js"></script> |
| <script src="../../../js/webgl-test-utils.js"></script> |
| <script src="../../../js/glsl-conformance-test.js"></script> |
| </head> |
| <body> |
| <div id="description"></div> |
| <div id="console"></div> |
| <script id="fragmentShaderAGreaterThanBCheckR" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 3.0; |
| float b = 2.0; |
| float r = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (r = r0, a) : (r = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((r == r0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderAGreaterThanBCheckAB" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 3.0; |
| float b = 2.0; |
| float r = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (r = r0, a) : (r = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((ab == a) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderAGreaterThanBCheckT0" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 3.0; |
| float b = 2.0; |
| float t0 = 0.0; |
| float t1 = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((t0 == r0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderAGreaterThanBCheckT1" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 3.0; |
| float b = 2.0; |
| float t0 = 0.0; |
| float t1 = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((t1 == 0.0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderBGreaterThanACheckR" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 2.0; |
| float b = 3.0; |
| float r = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (r = r0, a) : (r = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((r == r1) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderBGreaterThanACheckAB" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 2.0; |
| float b = 3.0; |
| float r = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (r = r0, a) : (r = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((ab == b) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderBGreaterThanACheckT0" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 2.0; |
| float b = 3.0; |
| float t0 = 0.0; |
| float t1 = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((t0 == 0.0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script id="fragmentShaderBGreaterThanACheckT1" type="text/something-not-javascript"> |
| // fragment shader with for scoping should succeed |
| precision mediump float; |
| void main() { |
| float a = 2.0; |
| float b = 3.0; |
| float t0 = 0.0; |
| float t1 = 0.0; |
| float r0 = 0.5; |
| float r1 = 1.0; |
| float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); |
| // Output green if successful, red if not. |
| gl_FragColor = ((t1 == r1) ? vec4(0,1,0,1) : vec4(1,0,0,1)); |
| } |
| </script> |
| <script> |
| "use strict"; |
| GLSLConformanceTester.runRenderTests([ |
| { |
| fShaderId: 'fragmentShaderAGreaterThanBCheckR', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderAGreaterThanBCheckAB', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderAGreaterThanBCheckT0', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderAGreaterThanBCheckT1', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderBGreaterThanACheckR', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderBGreaterThanACheckAB', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderBGreaterThanACheckT0', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| }, |
| { |
| fShaderId: 'fragmentShaderBGreaterThanACheckT1', |
| fShaderSuccess: true, |
| linkSuccess: true, |
| passMsg: "comma based conditional assignment works", |
| } |
| ]); |
| var successfullyParsed = true; |
| </script> |
| </body> |
| </html> |