| <!-- |
| |
| /* |
| ** Copyright (c) 2012 The Khronos Group Inc. |
| ** |
| ** Permission is hereby granted, free of charge, to any person obtaining a |
| ** copy of this software and/or associated documentation files (the |
| ** "Materials"), to deal in the Materials without restriction, including |
| ** without limitation the rights to use, copy, modify, merge, publish, |
| ** distribute, sublicense, and/or sell copies of the Materials, and to |
| ** permit persons to whom the Materials are furnished to do so, subject to |
| ** the following conditions: |
| ** |
| ** The above copyright notice and this permission notice shall be included |
| ** in all copies or substantial portions of the Materials. |
| ** |
| ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
| ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
| ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
| ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. |
| */ |
| |
| --> |
| |
| <!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> |