diff options
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices')
4 files changed, 216 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/00_test_list.txt b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/00_test_list.txt new file mode 100644 index 0000000000..74693de0ea --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/00_test_list.txt @@ -0,0 +1,3 @@ +glsl-mat4-to-mat3.html +--min-version 1.0.3 glsl-mat3-construction.html +--min-version 1.0.4 matrix-compound-multiply.html diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/glsl-mat3-construction.html b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/glsl-mat3-construction.html new file mode 100644 index 0000000000..bca1bdb706 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/glsl-mat3-construction.html @@ -0,0 +1,72 @@ +<!-- +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>GLSL mat3 construction test</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-generator.js"> </script> +</head> +<body> +<div id="description"></div> +<div id="console"></div> +<script id="shader_emu" type="something-not-js"> +mat3 mat3_emu(vec3 v3_0, vec3 v3_1, vec3 v3_2) { + mat3 test; + test[0] = v3_0; + test[1] = v3_1; + test[2] = v3_2; + return test; +} +</script> +<script id="shader_test" type="something-not-js"> + vec3 v3 = vec3($(input).xyz); + mat3 m3 = $(conversion)(v3, v3, v3); + vec3 c; + if ($(input).y < 0.33) { + c = m3[0]; + } else if ($(input).y > 0.66) { + c = m3[1]; + } else { + c = m3[2]; + } + $(output) = vec4(c, 1); +</script> +<script> +"use strict"; +// See resources glsl-generator runBasicTest for how this works +var wtu = WebGLTestUtils; +GLSLGenerator.runBasicTest({ + gridRes: 8, + tests: [ + { + name: "vec3 to mat3", + reference: { + shader: wtu.getScript("shader_test"), + subs: { + emu: wtu.getScript("shader_emu"), + conversion: "mat3_emu" + } + }, + test: { + shader: wtu.getScript("shader_test"), + subs: { + conversion: "mat3" + }, + } + } + ] +}); +var successfullyParsed = true; +</script> +</body> +</html> + diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/glsl-mat4-to-mat3.html b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/glsl-mat4-to-mat3.html new file mode 100644 index 0000000000..4716c630cb --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/glsl-mat4-to-mat3.html @@ -0,0 +1,70 @@ +<!-- +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>GLSL mat4 to mat3 test</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-generator.js"> </script> +</head> +<body> +<div id="description"></div> +<div id="console"></div> +<script id="shader_emu" type="something-not-js"> +mat3 mat3_emu(mat4 m4) { + return mat3( + m4[0][0], m4[0][1], m4[0][2], + m4[1][0], m4[1][1], m4[1][2], + m4[2][0], m4[2][1], m4[2][2]); +} +</script> +<script id="shader_test" type="something-not-js"> + mat4 m4 = mat4($(input), $(input).yzwx, $(input).zwxy, $(input).wxyz); + mat3 m3 = $(conversion)(m4); + vec3 c; + if ($(input).y < 0.33) { + c = m3[0]; + } else if ($(input).y > 0.66) { + c = m3[1]; + } else { + c = m3[2]; + } + $(output) = vec4(c, 1); +</script> +<script> +"use strict"; +// See resources glsl-generator runBasicTest for how this works +var wtu = WebGLTestUtils; +GLSLGenerator.runBasicTest({ + gridRes: 8, + tests: [ + { + name: "mat4 to mat3", + reference: { + shader: wtu.getScript("shader_test"), + subs: { + emu: wtu.getScript("shader_emu"), + conversion: "mat3_emu" + } + }, + test: { + shader: wtu.getScript("shader_test"), + subs: { + conversion: "mat3" + }, + } + } + ] +}); +var successfullyParsed = true; +</script> +</body> +</html> diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/matrix-compound-multiply.html b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/matrix-compound-multiply.html new file mode 100644 index 0000000000..a485160c56 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/glsl/matrices/matrix-compound-multiply.html @@ -0,0 +1,71 @@ +<!-- +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>Matrix compound multiplication test</title> +<link rel="stylesheet" href="../../../resources/js-test-style.css"/> +<script src="../../../js/js-test-pre.js"></script> +<script src="../../../js/webgl-test-utils.js"></script> +</head> +<body> +<canvas id="canvas" width="256" height="256"> </canvas> +<div id="description"></div> +<div id="console"></div> +<script id="vshader" type="x-shader/x-vertex"> +attribute vec3 aPosition; + +void main() { + gl_Position = vec4(aPosition, 1); +} +</script> +<script id="fshader" type="x-shader/x-fragment"> +precision mediump float; + +void main() { + $(type) a = $(type)(0.0); + $(type) b = $(type)(0.0); + a[1][1] = 3.0; // 2nd column, 2nd row + b[0][1] = 2.0; // 1st column, 2nd row + $(type) c = a * b; + a *= b; + $(type) diffMat = a - c; + float diff = length(diffMat[0]) + length(diffMat[1]); + gl_FragColor = vec4(0.0, diff < 0.01 ? 1.0 : 0.0, 0.0, 1.0); +} +</script> +<script type="application/javascript"> +"use strict"; +description("Matrix compound multiplication test comparing against normal multiplication."); +debug(""); +var wtu = WebGLTestUtils; +function test() { + var gl = wtu.create3DContext("canvas"); + if (!gl) { + testFailed("context does not exist"); + return; + } + wtu.setupUnitQuad(gl); + var fshaderTemplate = wtu.getScript('fshader'); + + var types = ['mat2', 'mat3', 'mat4']; + for (var i = 0; i < types.length; ++i) { + debug(''); + debug('Testing type ' + types[i]); + var fshaderSource = wtu.replaceParams(fshaderTemplate, {type: types[i]}); + var program = wtu.setupProgram(gl, ['vshader', fshaderSource], ["aPosition"], undefined, true); + wtu.drawUnitQuad(gl); + wtu.checkCanvas(gl, [0, 255, 0, 255], 'should be green'); + } +}; + +test(); +finishTest(); +</script> +</body> +</html> |