| Index: third_party/webgl/sdk/tests/conformance/glsl/misc/shader-with-for-loop.html
|
| ===================================================================
|
| --- third_party/webgl/sdk/tests/conformance/glsl/misc/shader-with-for-loop.html (revision 0)
|
| +++ third_party/webgl/sdk/tests/conformance/glsl/misc/shader-with-for-loop.html (revision 0)
|
| @@ -0,0 +1,81 @@
|
| +<!--
|
| +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>WebGL GLSL Conformance Tests</title>
|
| +<link rel="stylesheet" href="../../../resources/js-test-style.css"/>
|
| +<script src="../../../resources/js-test-pre.js"></script>
|
| +<script src="../../resources/webgl-test-utils.js"></script>
|
| +<script src="../../resources/glsl-conformance-test.js"></script>
|
| +</head>
|
| +<body>
|
| +<div id="description"></div>
|
| +<div id="console"></div>
|
| +<script id="fragmentShader" type="text/something-not-javascript">
|
| +// fragment shader with for loop should succeed
|
| +
|
| +// TODO(gman): trim to min size to test bug.
|
| +precision highp float;
|
| +uniform float time;
|
| +uniform vec2 resolution;
|
| +
|
| +// Saw-tooth function that is synced with the demo music (128bpm)
|
| +float gBeat=fract(time*3.2/3.);
|
| +
|
| +// Calculate the surface color
|
| +vec3 surfColor(vec2 p)
|
| +{
|
| + vec2 q=vec2(sin(.08*p.x),4.*p.y);
|
| + vec3 c=vec3(0);
|
| + for(float i=0.;i<15.;i++)
|
| + c+=(1.+sin(i*sin(time)+vec3(0.,1.3,2.2)))*.2/length(q-vec2(sin(i),12.*sin(.3*time+i)));
|
| + return c+vec3(mix(mod(floor(p.x*.2)+floor(p.y*2.2),2.),.2,gBeat));
|
| +}
|
| +
|
| +// Ray trace (cylinder)
|
| +vec3 trace(vec3 o,vec3 d)
|
| +{
|
| + d.y*=.65+.1*sin(.5*time);
|
| + float D=1./(d.y*d.y+d.z*d.z),
|
| + a=(o.y*d.y+o.z*d.z)*D,
|
| + b=(o.y*o.y+o.z*o.z-36.)*D,
|
| + t=-a-sqrt(a*a-b);
|
| + o+=t*d;
|
| + return surfColor(vec2(o.x,atan(o.y,o.z)))*(1.+.01*t);
|
| +}
|
| +
|
| +void main()
|
| +{
|
| + // Screen setup
|
| + vec2 p=(2.*gl_FragCoord.xy-resolution)/resolution.y,
|
| + q=2.*gl_FragCoord.xy/resolution-1.;
|
| +
|
| + // Camera setup
|
| + vec3 cp=vec3(-time*20.+1.,1.6*sin(time*1.2),2.+2.*cos(time*.3)),
|
| + ct=cp+vec3(1.,.3*cos(time),-.2),
|
| + cd=normalize(ct-cp),
|
| + cr=normalize(cross(cd,vec3(.5*cos(.3*time),0.,1.))),
|
| + cu=cross(cr,cd),
|
| + rd=normalize(2.*cd+cr*p.x+cu*p.y);
|
| +
|
| + // Trace! (+some funky lens/raster effects)
|
| + vec3 c=trace(cp,rd)*
|
| + min(1.,1.8-dot(q,q))*
|
| + (.9+.1*sin(3.*sin(gBeat)*gl_FragCoord.y));
|
| +
|
| + gl_FragColor=vec4(c,1);
|
| +}
|
| +</script>
|
| +<script>
|
| +GLSLConformanceTester.runTest();
|
| +successfullyParsed = true;
|
| +</script>
|
| +</body>
|
| +</html>
|
| +
|
| +
|
|
|
| Property changes on: third_party/webgl/sdk/tests/conformance/glsl/misc/shader-with-for-loop.html
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|