<!DOCTYPE html>
<!-- this file is auto-generated. DO NOT EDIT.

/*
** Copyright (c) 2012 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/

-->
<html>
<head>
<meta charset="utf-8">
<title>WebGL GLSL conformance test: dot_001_to_006.html</title>
<link rel="stylesheet" href="../../../../resources/js-test-style.css" />
<link rel="stylesheet" href="../../../../resources/ogles-tests.css" />
<script src="../../../../js/js-test-pre.js"></script>
<script src="../../../../js/webgl-test-utils.js"></script>
<script src="../../ogles-utils.js"></script>
</head>
<body>
<canvas id="example" width="500" height="500" style="width: 16px; height: 16px;"></canvas>
<div id="description"></div>
<div id="console"></div>
</body>
<script>
"use strict";
OpenGLESTestRunner.run({
  "tests": [
    {
      "referenceProgram": {
        "vertexShader": "../default/default.vert",
        "fragmentShader": "dot_float_frag_xvaryyone_ref.frag"
      },
      "model": null,
      "testProgram": {
        "vertexShader": "../default/default.vert",
        "fragmentShader": "dot_float_frag_xvaryyone.frag"
      },
      "name": "dot_float_frag_xvaryyone.test.html",
      "pattern": "compare"
    },
    {
      "referenceProgram": {
        "vertexShader": "../default/default.vert",
        "fragmentShader": "dot_vec2_frag_xvaryyhalf_ref.frag"
      },
      "model": null,
      "testProgram": {
        "vertexShader": "../default/default.vert",
        "fragmentShader": "dot_vec2_frag_xvaryyhalf.frag"
      },
      "name": "dot_vec2_frag_xvaryyhalf.test.html",
      "pattern": "compare"
    },
    {
      "referenceProgram": {
        "vertexShader": "../default/default.vert",
        "fragmentShader": "dot_vec3_frag_xvaryythird_ref.frag"
      },
      "model": null,
      "testProgram": {
        "vertexShader": "../default/default.vert",
        "fragmentShader": "dot_vec3_frag_xvaryythird.frag"
      },
      "name": "dot_vec3_frag_xvaryythird.test.html",
      "pattern": "compare"
    },
    {
      "referenceProgram": {
        "vertexShader": "dot_float_vert_xvaryyone_ref.vert",
        "fragmentShader": "../default/default.frag"
      },
      "model": "grid",
      "testProgram": {
        "vertexShader": "dot_float_vert_xvaryyone.vert",
        "fragmentShader": "../default/default.frag"
      },
      "name": "dot_float_vert_xvaryyone.test.html",
      "pattern": "compare"
    },
    {
      "referenceProgram": {
        "vertexShader": "dot_vec2_vert_xvaryyhalf_ref.vert",
        "fragmentShader": "../default/default.frag"
      },
      "model": "grid",
      "testProgram": {
        "vertexShader": "dot_vec2_vert_xvaryyhalf.vert",
        "fragmentShader": "../default/default.frag"
      },
      "name": "dot_vec2_vert_xvaryyhalf.test.html",
      "pattern": "compare"
    },
    {
      "referenceProgram": {
        "vertexShader": "dot_vec3_vert_xvaryythird_ref.vert",
        "fragmentShader": "../default/default.frag"
      },
      "model": "grid",
      "testProgram": {
        "vertexShader": "dot_vec3_vert_xvaryythird.vert",
        "fragmentShader": "../default/default.frag"
      },
      "name": "dot_vec3_vert_xvaryythird.test.html",
      "pattern": "compare"
    }
  ]
});
var successfullyParsed = true;
</script>
</html>
