<!--Copyright (c) 2019 The Khronos Group Inc.Use of this source code is governed by an MIT-style license that can befound in the LICENSE.txt file.--><!DOCTYPE html><html><head><metacharset="utf-8"><title>Dynamically-indexed row-major matrix test</title><linkrel="stylesheet"href="../../resources/js-test-style.css"/><scriptsrc="../../js/js-test-pre.js"></script><scriptsrc="../../js/webgl-test-utils.js"></script><scriptsrc="../../js/glsl-conformance-test.js"></script></head><body><divid="description"></div><divid="console"></div><scriptid="fshaderIndexRowMajorMatrixArrayInUniformBlock"type="x-shader/x-fragment">#version300esprecisionmediumpfloat;outvec4my_FragColor;uniformintu_zero;layout(row_major)uniforma{mat4u_mats[1];};voidmain(){floatf=u_mats[u_zero+0][2][1];my_FragColor=vec4(1.0-f,f,0.0,1.0);}</script><scriptid="fshaderRowMatrixIndexedByRowMatrixInUniformBlock"type="x-shader/x-fragment">#version300esprecisionmediumpfloat;uniformStuff{layout(row_major)mat4u_mat[3];layout(row_major)mat4u_ndx[3];}stuff;outvec4my_FragColor;voidmain(){vec4row=stuff.u_mat[int(stuff.u_ndx[1][1][3])][2];my_FragColor=row==vec4(9,10,11,12)?vec4(0,1,0,1):vec4(1,0,0,1);}</script><scripttype="application/javascript">"use strict";description("Indexing row-major matrices within a uniform block should work");GLSLConformanceTester.runRenderTests([{fShaderId:'fshaderIndexRowMajorMatrixArrayInUniformBlock',fShaderSuccess:true,linkSuccess:true,passMsg:'',uniformBlocks:[{name:"a",value:newFloat32Array([0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,])}],},{fShaderId:'fshaderRowMatrixIndexedByRowMatrixInUniformBlock',fShaderSuccess:true,linkSuccess:true,passMsg:'',uniformBlocks:[{name:"Stuff",value:newFloat32Array([// mat4 u_mat[3]1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,// +-- we should be pulling out this column// |// V1,5,9,13,2,6,10,14,3,7,11,15,4,8,12,16,2,10,18,22,4,12,20,28,6,14,22,30,8,16,24,32,// mat4 u_ndx[3]0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,// ^// |// +-- we should be reading this value as an index into u_mat0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,])}],}],2);</script></body></html>