tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

array-complex-indexing.html (2356B)


      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>GLSL Indexing complex array expressions</title>
     12 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
     13 <script src="../../js/js-test-pre.js"></script>
     14 <script src="../../js/webgl-test-utils.js"></script>
     15 <script src="../../js/glsl-conformance-test.js"></script>
     16 </head>
     17 <body>
     18 <div id="description"></div>
     19 <div id="console"></div>
     20 <!--
     21 Array indexing is detailed in the ESSL 3.00 spec section 5.9
     22 ESSL 3.00 revisions after 3.00.4 changed the definition from 'subscripted array names' to 'subscripted arrays'
     23 -->
     24 <script id="fshader-assignment" type="x-shader/x-fragment">#version 300 es
     25 precision mediump float;
     26 out vec4 color;
     27 
     28 void main() {
     29  float a[2] = float[2](0.0, 0.0);
     30  float b[2] = float[2](2.0, 1.0);
     31  float c = (a = b)[0];
     32  color = (c == 2.0) ? vec4(0, 1.0, 0, 1.0) : vec4(1.0, 0, 0, 1.0);
     33 }
     34 </script>
     35 <script id="fshader-function" type="x-shader/x-fragment">#version 300 es
     36 precision mediump float;
     37 out vec4 color;
     38 bool hasRan = false;
     39 
     40 float[2] functionReturnArray() {
     41  hasRan = true;
     42  return float[2](2.0, 1.0);
     43 }
     44 
     45 void main() {
     46  float c = (functionReturnArray())[0];
     47  color = ((c == 2.0) && hasRan) ? vec4(0, 1.0, 0, 1.0) : vec4(1.0, 0, 0, 1.0);
     48 }
     49 </script>
     50 <script id="fshader-array-initialization" type="x-shader/x-fragment">#version 300 es
     51 precision mediump float;
     52 out vec4 color;
     53 
     54 void main() {
     55  float a = (float[3](2.0, 1.0, 0.0))[0];
     56  color = (a == 2.0) ? vec4(0, 1.0, 0, 1.0) : vec4(1.0, 0, 0, 1.0);
     57 }
     58 </script>
     59 <script type="application/javascript">
     60 "use strict";
     61 description("Indexing complex array expressions");
     62 debug("");
     63 
     64 GLSLConformanceTester.runRenderTests([
     65 {
     66  fShaderId: 'fshader-assignment',
     67  fShaderSuccess: true,
     68  linkSuccess: true,
     69  passMsg: 'Test indexing a variable assignment: (a = b)[0]'
     70 },
     71 {
     72  fShaderId: 'fshader-function',
     73  fShaderSuccess: true,
     74  linkSuccess: true,
     75  passMsg: 'Test indexing a function return with a side-effect: (functionReturnArray())[0]'
     76 },
     77 {
     78  fShaderId: 'fshader-array-initialization',
     79  fShaderSuccess: true,
     80  linkSuccess: true,
     81  passMsg: 'Test indexing an array initialization: (float[3](2.0, 1.0, 0.0))[0]'
     82 },
     83 ], 2);
     84 
     85 </script>
     86 </body>
     87 </html>