| Index: conformance/glsl/functions/glsl-function-sin.html
 | 
| ===================================================================
 | 
| --- conformance/glsl/functions/glsl-function-sin.html	(revision 0)
 | 
| +++ conformance/glsl/functions/glsl-function-sin.html	(revision 0)
 | 
| @@ -0,0 +1,82 @@
 | 
| +<!--
 | 
| +Copyright (c) 2011 The Chromium Authors. All rights reserved.
 | 
| +Use of this source code is governed by a BSD-style license that can be
 | 
| +found in the LICENSE file.
 | 
| + -->
 | 
| +<!DOCTYPE html>
 | 
| +<html>
 | 
| +<head>
 | 
| +<meta charset="utf-8">
 | 
| +  <title>GLSL sin function test</title>
 | 
| +  <link rel="stylesheet" href="../../../resources/js-test-style.css"/>
 | 
| +  <link rel="stylesheet" href="../../resources/glsl-feature-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="../../resources/glsl-generator.js"> </script>
 | 
| +</head>
 | 
| +<body>
 | 
| +<div id="description"></div>
 | 
| +<div id="console"></div>
 | 
| +<script>
 | 
| +
 | 
| +var piConstants = [
 | 
| +  "const float kPI     = 3.14159265358979323846;",
 | 
| +  "const float kHalfPI = (kPI * 0.5);",
 | 
| +  "const float k2PI    = (kPI * 2.0);"
 | 
| +].join("\n");
 | 
| +
 | 
| +var sinImplementation = [
 | 
| +  "",
 | 
| +  "float sin_impl(float value) {",
 | 
| +  "    value = mod(value + k2PI * 10.0, k2PI);",          // only positive values for now
 | 
| +  "    int quad = int(floor(value / kHalfPI));",          // figure out which quad
 | 
| +  "    float p = mod(value, kHalfPI);",                   // from 0.0 to PI/2
 | 
| +  "    if (quad == 1 || quad == 3) { p = kHalfPI - p; }", // backward in quads 1,3
 | 
| +  "    float c = p - ",
 | 
| +  "              pow(p, 3.0) / (1.0 * 2.0 * 3.0) + ",
 | 
| +  "              pow(p, 5.0) / (1.0 * 2.0 * 3.0 * 4.0 * 5.0) - ",
 | 
| +  "              pow(p, 7.0) / (1.0 * 2.0 * 3.0 * 4.0 * 5.0 * 6.0 * 7.0);",
 | 
| +  "    if (quad == 2 || quad == 3) { c = -c; }",
 | 
| +  "    return c;",
 | 
| +  "}"
 | 
| +].join('\n');
 | 
| +
 | 
| +GLSLGenerator.runFeatureTest({
 | 
| +  feature: "sin",
 | 
| +  args: "$(type) value",
 | 
| +  baseArgs: "value$(field)",
 | 
| +  testFunc: "$(func)($(type))",
 | 
| +  emuFunc: [
 | 
| +    sinImplementation,
 | 
| +    "float $(func)_base(float value) {",
 | 
| +    "  return sin_impl(value);",
 | 
| +    "}"
 | 
| +  ].join("\n"),
 | 
| +  gridRes: 8,
 | 
| +  tolerance: 2,
 | 
| +  extra: piConstants,
 | 
| +  tests: [
 | 
| +    ["$(output) = vec4(",
 | 
| +     "    $(func)($(input).x * kHalfPI + kHalfPI),",
 | 
| +     "    $(func)($(input).y * kHalfPI),",
 | 
| +     "    0,",
 | 
| +     "    1);"].join("\n"),
 | 
| +    ["$(output) = vec4(",
 | 
| +     "    $(func)($(input).xy * vec2(kPI, k2PI)) * 0.5 + vec2(0.5, 0.5),",
 | 
| +     "    0, 1);"].join("\n"),
 | 
| +    ["$(output) = vec4(",
 | 
| +     "    $(func)($(input).xyz * vec3(kPI, k2PI, 4.0)) * ",
 | 
| +     "    0.5 + vec3(0.5, 0.5, 0.5),",
 | 
| +     "    1);"].join("\n"),
 | 
| +    ["$(output) = ",
 | 
| +     "    $(func)($(input) * vec4(k2PI, 4.0, kHalfPI, kPI)) *",
 | 
| +     "    0.5 + vec4(0.5, 0.5, 0.5, 1);",
 | 
| +    ].join("\n")
 | 
| +  ]
 | 
| +});
 | 
| +successfullyParsed = true;
 | 
| +</script>
 | 
| +</body>
 | 
| +</html>
 | 
| +
 | 
| 
 | 
| Property changes on: conformance/glsl/functions/glsl-function-sin.html
 | 
| ___________________________________________________________________
 | 
| Added: svn:executable
 | 
|    + *
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |