haikuwebkit/LayoutTests/fast/canvas/webgl/webgl-transformed-varying-n...

93 lines
2.8 KiB
HTML

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<script id='2d-vertex-shader' type='x-shader/x-vertex'>#version 300 es
precision mediump float;
in vec4 a_position;
struct S
{
mat3x4 m;
};
out S matrix;
out vec3 vector;
void main()
{
matrix.m = mat3x4(1.0);
vector = vec3(1.0);
gl_Position = a_position;
}
</script>
<script id='2d-fragment-shader' type='x-shader/x-fragment'>#version 300 es
precision mediump float;
uniform vec3 uCol;
out vec4 col;
void main(){
col = vec4(uCol,1.);
}
</script>
<script>
function createShader(gl, sourceCode, type, type_str) {
var shader = gl.createShader(type);
gl.shaderSource(shader, sourceCode);
gl.compileShader(shader);
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
var info = gl.getShaderInfoLog(shader);
console.log(info);
}
return shader;
}
function createProgram(gl, vertexShader, fragmentShader) {
var program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
transform_outs = ["vector"];
transform_feed = gl.createTransformFeedback();
gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK,transform_feed);
gl.transformFeedbackVaryings(program,transform_outs,gl.INTERLEAVED_ATTRIBS);
gl.linkProgram(program);
active_info = gl.getTransformFeedbackVarying(program,0);
gl.useProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
var info = gl.getProgramInfoLog(program);
console.log(info);
}
return program
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
function runTest() {
var canvas = document.createElement("canvas");
canvas.width = "640";
canvas.height = "480"
canvas.style.border = "thick solid #00FFFF";
var webgl_1 = canvas.getContext("webgl2");
document.body.append(canvas)
var schader_script_3 = document.getElementById('2d-vertex-shader');
var shader_source_3 = schader_script_3.text;
var schader_script_4 = document.getElementById('2d-fragment-shader');
var shader_source_4 = schader_script_4.text;
var vertexShader = createShader(webgl_1, shader_source_3, webgl_1.VERTEX_SHADER,"VERTEX_SHADER")
var fragmentShader = createShader(webgl_1, shader_source_4, webgl_1.FRAGMENT_SHADER,"FRAGMENT_SHADER")
createProgram(webgl_1, vertexShader, fragmentShader)
if (window.testRunner)
testRunner.notifyDone();
}
</script>
</head>
<body onload="runTest()">
<div>PASS. You didn't crash.</div>
</body>
</html>