<!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: faceforward_001_to_006.html</title>
<link rel="stylesheet" href="../../../../resources/js-test-style.css" />
<link rel="stylesheet" href="../../../resources/ogles-tests.css" />
<script src="../../../../resources/js-test-pre.js"></script>
<script src="../../../resources/webgl-test.js"></script>
<script src="../../../resources/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": "faceforward_float_frag_nvaryiconst_ref.frag"
      }, 
      "model": null, 
      "testProgram": {
        "vertexShader": "../default/default.vert", 
        "fragmentShader": "faceforward_float_frag_nvaryiconst.frag"
      }, 
      "name": "faceforward_float_frag_nvaryiconst.test.html", 
      "pattern": "compare"
    }, 
    {
      "referenceProgram": {
        "vertexShader": "faceforward_float_vert_nvaryiconst_ref.vert", 
        "fragmentShader": "../default/default.frag"
      }, 
      "model": "grid", 
      "testProgram": {
        "vertexShader": "faceforward_float_vert_nvaryiconst.vert", 
        "fragmentShader": "../default/default.frag"
      }, 
      "name": "faceforward_float_vert_nvaryiconst.test.html", 
      "pattern": "compare"
    }, 
    {
      "referenceProgram": {
        "vertexShader": "../default/default.vert", 
        "fragmentShader": "faceforward_vec2_frag_nvaryiconst_ref.frag"
      }, 
      "model": null, 
      "testProgram": {
        "vertexShader": "../default/default.vert", 
        "fragmentShader": "faceforward_vec2_frag_nvaryiconst.frag"
      }, 
      "name": "faceforward_vec2_frag_nvaryiconst.test.html", 
      "pattern": "compare"
    }, 
    {
      "referenceProgram": {
        "vertexShader": "faceforward_vec2_vert_nvaryiconst_ref.vert", 
        "fragmentShader": "../default/default.frag"
      }, 
      "model": "grid", 
      "testProgram": {
        "vertexShader": "faceforward_vec2_vert_nvaryiconst.vert", 
        "fragmentShader": "../default/default.frag"
      }, 
      "name": "faceforward_vec2_vert_nvaryiconst.test.html", 
      "pattern": "compare"
    }, 
    {
      "referenceProgram": {
        "vertexShader": "../default/default.vert", 
        "fragmentShader": "faceforward_vec3_frag_nvaryiconst_ref.frag"
      }, 
      "model": null, 
      "testProgram": {
        "vertexShader": "../default/default.vert", 
        "fragmentShader": "faceforward_vec3_frag_nvaryiconst.frag"
      }, 
      "name": "faceforward_vec3_frag_nvaryiconst.test.html", 
      "pattern": "compare"
    }, 
    {
      "referenceProgram": {
        "vertexShader": "faceforward_vec3_vert_nvaryiconst_ref.vert", 
        "fragmentShader": "../default/default.frag"
      }, 
      "model": "grid", 
      "testProgram": {
        "vertexShader": "faceforward_vec3_vert_nvaryiconst.vert", 
        "fragmentShader": "../default/default.frag"
      }, 
      "name": "faceforward_vec3_vert_nvaryiconst.test.html", 
      "pattern": "compare"
    }
  ]
});
var successfullyParsed = true;
</script>
</html>
