shader-with-comma-conditional-assignment.html (5528B)
1 <!-- 2 Copyright (c) 2019 The Khronos Group Inc. 3 Use of this source code is governed by an MIT-style license that can be 4 found in the LICENSE.txt file. 5 --> 6 7 <!DOCTYPE html> 8 <html> 9 <head> 10 <meta charset="utf-8"> 11 <title>WebGL GLSL Conformance Tests</title> 12 <link rel="stylesheet" href="../../../resources/js-test-style.css"/> 13 <link rel="stylesheet" href="../../../resources/glsl-feature-tests.css"/> 14 <script src="../../../js/js-test-pre.js"></script> 15 <script src="../../../js/webgl-test-utils.js"></script> 16 <script src="../../../js/glsl-conformance-test.js"></script> 17 </head> 18 <body> 19 <div id="description"></div> 20 <div id="console"></div> 21 <script id="fragmentShaderAGreaterThanBCheckR" type="text/something-not-javascript"> 22 // fragment shader with for scoping should succeed 23 precision mediump float; 24 void main() { 25 float a = 3.0; 26 float b = 2.0; 27 float r = 0.0; 28 float r0 = 0.5; 29 float r1 = 1.0; 30 float ab = a > b ? (r = r0, a) : (r = r1, b); 31 // Output green if successful, red if not. 32 gl_FragColor = ((r == r0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 33 } 34 </script> 35 <script id="fragmentShaderAGreaterThanBCheckAB" type="text/something-not-javascript"> 36 // fragment shader with for scoping should succeed 37 precision mediump float; 38 void main() { 39 float a = 3.0; 40 float b = 2.0; 41 float r = 0.0; 42 float r0 = 0.5; 43 float r1 = 1.0; 44 float ab = a > b ? (r = r0, a) : (r = r1, b); 45 // Output green if successful, red if not. 46 gl_FragColor = ((ab == a) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 47 } 48 </script> 49 <script id="fragmentShaderAGreaterThanBCheckT0" type="text/something-not-javascript"> 50 // fragment shader with for scoping should succeed 51 precision mediump float; 52 void main() { 53 float a = 3.0; 54 float b = 2.0; 55 float t0 = 0.0; 56 float t1 = 0.0; 57 float r0 = 0.5; 58 float r1 = 1.0; 59 float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); 60 // Output green if successful, red if not. 61 gl_FragColor = ((t0 == r0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 62 } 63 </script> 64 <script id="fragmentShaderAGreaterThanBCheckT1" type="text/something-not-javascript"> 65 // fragment shader with for scoping should succeed 66 precision mediump float; 67 void main() { 68 float a = 3.0; 69 float b = 2.0; 70 float t0 = 0.0; 71 float t1 = 0.0; 72 float r0 = 0.5; 73 float r1 = 1.0; 74 float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); 75 // Output green if successful, red if not. 76 gl_FragColor = ((t1 == 0.0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 77 } 78 </script> 79 <script id="fragmentShaderBGreaterThanACheckR" type="text/something-not-javascript"> 80 // fragment shader with for scoping should succeed 81 precision mediump float; 82 void main() { 83 float a = 2.0; 84 float b = 3.0; 85 float r = 0.0; 86 float r0 = 0.5; 87 float r1 = 1.0; 88 float ab = a > b ? (r = r0, a) : (r = r1, b); 89 // Output green if successful, red if not. 90 gl_FragColor = ((r == r1) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 91 } 92 </script> 93 <script id="fragmentShaderBGreaterThanACheckAB" type="text/something-not-javascript"> 94 // fragment shader with for scoping should succeed 95 precision mediump float; 96 void main() { 97 float a = 2.0; 98 float b = 3.0; 99 float r = 0.0; 100 float r0 = 0.5; 101 float r1 = 1.0; 102 float ab = a > b ? (r = r0, a) : (r = r1, b); 103 // Output green if successful, red if not. 104 gl_FragColor = ((ab == b) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 105 } 106 </script> 107 <script id="fragmentShaderBGreaterThanACheckT0" type="text/something-not-javascript"> 108 // fragment shader with for scoping should succeed 109 precision mediump float; 110 void main() { 111 float a = 2.0; 112 float b = 3.0; 113 float t0 = 0.0; 114 float t1 = 0.0; 115 float r0 = 0.5; 116 float r1 = 1.0; 117 float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); 118 // Output green if successful, red if not. 119 gl_FragColor = ((t0 == 0.0) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 120 } 121 </script> 122 <script id="fragmentShaderBGreaterThanACheckT1" type="text/something-not-javascript"> 123 // fragment shader with for scoping should succeed 124 precision mediump float; 125 void main() { 126 float a = 2.0; 127 float b = 3.0; 128 float t0 = 0.0; 129 float t1 = 0.0; 130 float r0 = 0.5; 131 float r1 = 1.0; 132 float ab = a > b ? (t0 = r0, a) : (t1 = r1, b); 133 // Output green if successful, red if not. 134 gl_FragColor = ((t1 == r1) ? vec4(0,1,0,1) : vec4(1,0,0,1)); 135 } 136 </script> 137 <script> 138 "use strict"; 139 GLSLConformanceTester.runRenderTests([ 140 { 141 fShaderId: 'fragmentShaderAGreaterThanBCheckR', 142 fShaderSuccess: true, 143 linkSuccess: true, 144 passMsg: "comma based conditional assignment works", 145 }, 146 { 147 fShaderId: 'fragmentShaderAGreaterThanBCheckAB', 148 fShaderSuccess: true, 149 linkSuccess: true, 150 passMsg: "comma based conditional assignment works", 151 }, 152 { 153 fShaderId: 'fragmentShaderAGreaterThanBCheckT0', 154 fShaderSuccess: true, 155 linkSuccess: true, 156 passMsg: "comma based conditional assignment works", 157 }, 158 { 159 fShaderId: 'fragmentShaderAGreaterThanBCheckT1', 160 fShaderSuccess: true, 161 linkSuccess: true, 162 passMsg: "comma based conditional assignment works", 163 }, 164 { 165 fShaderId: 'fragmentShaderBGreaterThanACheckR', 166 fShaderSuccess: true, 167 linkSuccess: true, 168 passMsg: "comma based conditional assignment works", 169 }, 170 { 171 fShaderId: 'fragmentShaderBGreaterThanACheckAB', 172 fShaderSuccess: true, 173 linkSuccess: true, 174 passMsg: "comma based conditional assignment works", 175 }, 176 { 177 fShaderId: 'fragmentShaderBGreaterThanACheckT0', 178 fShaderSuccess: true, 179 linkSuccess: true, 180 passMsg: "comma based conditional assignment works", 181 }, 182 { 183 fShaderId: 'fragmentShaderBGreaterThanACheckT1', 184 fShaderSuccess: true, 185 linkSuccess: true, 186 passMsg: "comma based conditional assignment works", 187 } 188 ]); 189 var successfullyParsed = true; 190 </script> 191 </body> 192 </html>