Changeset 52056 in webkit
- Timestamp:
- Dec 12, 2009 3:12:31 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r52055 r52056 1 2009-12-12 Kenneth Russell <kbr@google.com> 2 3 Reviewed by Oliver Hunt. 4 5 Update WebGL tests to released versions 6 https://bugs.webkit.org/show_bug.cgi?id=32457 7 8 * fast/canvas/webgl/resources/utils3d.js: 9 (initWebGL.gl.console.window.console.log): 10 (initWebGL): 11 (loadShader): 12 (makeBox): 13 (makeSphere): 14 (processLoadObj): 15 (doLoadObj): 16 (doLoadImageTexture): 17 1 18 2009-12-12 Eric Carlson <eric.carlson@apple.com> 2 19 -
trunk/LayoutTests/fast/canvas/webgl/resources/utils3d.js
r51535 r52056 14 14 // Enable depth testing and blending with a blend func of (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) 15 15 // 16 // A console function is added to the context: console(string). This can be replaced 17 // by the caller. By default, it maps to the window.console() function on WebKit and to 18 // an empty function on other browsers. 19 // 16 20 function initWebGL(canvasName, vshader, fshader, attribs, clearColor, clearDepth) 17 21 { 18 22 var canvas = document.getElementById(canvasName); 19 var gl; 20 21 try {gl = canvas.getContext("experimental-webgl") } catch(e) { } 22 if (!gl) 23 try {gl = canvas.getContext("moz-webgl") } catch(e) { } 23 var gl = canvas.getContext("experimental-webgl"); 24 24 if (!gl) { 25 25 alert("No WebGL context found"); 26 26 return null; 27 27 } 28 29 // Add a console 30 gl.console = ("console" in window) ? window.console : { log: function() { } }; 28 31 29 32 // create our shaders … … 56 59 // something went wrong with the link 57 60 var error = gl.getProgramInfoLog (gl.program); 58 console.log("Error in program linking:"+error);61 gl.console.log("Error in program linking:"+error); 59 62 60 63 gl.deleteProgram(gl.program); … … 87 90 var shaderScript = document.getElementById(shaderId); 88 91 if (!shaderScript) { 89 c onsole.log("*** Error: shader script '"+shaderId+"' not found");92 ctx.console.log("*** Error: shader script '"+shaderId+"' not found"); 90 93 return null; 91 94 } … … 96 99 var shaderType = ctx.FRAGMENT_SHADER; 97 100 else { 98 c onsole.log("*** Error: shader script '"+shaderId+"' of undefined type '"+shaderScript.type+"'");101 ctx.console.log("*** Error: shader script '"+shaderId+"' of undefined type '"+shaderScript.type+"'"); 99 102 return null; 100 103 } … … 103 106 var shader = ctx.createShader(shaderType); 104 107 if (shader == null) { 105 c onsole.log("*** Error: unable to create shader '"+shaderId+"'");108 ctx.console.log("*** Error: unable to create shader '"+shaderId+"'"); 106 109 return null; 107 110 } … … 118 121 // Something went wrong during compilation; get the error 119 122 var error = ctx.getShaderInfoLog(shader); 120 c onsole.log("*** Error compiling shader '"+shaderId+"':"+error);123 ctx.console.log("*** Error compiling shader '"+shaderId+"':"+error); 121 124 ctx.deleteShader(shader); 122 125 return null; … … 204 207 ctx.bufferData(ctx.ARRAY_BUFFER, vertices, ctx.STATIC_DRAW); 205 208 206 ctx.bindBuffer(ctx.ARRAY_BUFFER, 0);209 ctx.bindBuffer(ctx.ARRAY_BUFFER, null); 207 210 208 211 retval.indexObject = ctx.createBuffer(); 209 212 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, retval.indexObject); 210 213 ctx.bufferData(ctx.ELEMENT_ARRAY_BUFFER, indices, ctx.STATIC_DRAW); 211 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, 0);214 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, null); 212 215 213 216 retval.numIndices = indices.length; … … 262 265 } 263 266 264 longs += 1;265 267 for (var latNumber = 0; latNumber < lats; ++latNumber) { 266 268 for (var longNumber = 0; longNumber < longs; ++longNumber) { 267 var first = (latNumber * longs) + (longNumber % longs);268 var second = first + longs ;269 var first = (latNumber * (longs+1)) + longNumber; 270 var second = first + longs + 1; 269 271 indexData.push(first); 270 272 indexData.push(second); … … 326 328 function processLoadObj(req) 327 329 { 328 console.log("req="+req)330 req.obj.ctx.console.log("req="+req) 329 331 // only if req shows "complete" 330 332 if (req.readyState == 4) { … … 375 377 // face 376 378 if (array.length != 4) { 377 console.log("*** Error: face '"+line+"' not handled");379 obj.ctx.console.log("*** Error: face '"+line+"' not handled"); 378 380 continue; 379 381 } … … 396 398 } 397 399 else { 398 console.log("*** Error: did not understand face '"+array[i]+"'");400 obj.ctx.console.log("*** Error: did not understand face '"+array[i]+"'"); 399 401 return null; 400 402 } … … 489 491 ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.CLAMP_TO_EDGE); 490 492 ctx.generateMipmap(ctx.TEXTURE_2D) 491 ctx.bindTexture(ctx.TEXTURE_2D, 0);493 ctx.bindTexture(ctx.TEXTURE_2D, null); 492 494 } 493 495 -
trunk/WebCore/ChangeLog
r52054 r52056 1 2009-12-12 Kenneth Russell <kbr@google.com> 2 3 Reviewed by Oliver Hunt. 4 5 Update WebGL tests to released versions 6 https://bugs.webkit.org/show_bug.cgi?id=32457 7 8 * manual-tests/webgl/Earth.html: 9 * manual-tests/webgl/ManyPlanetsDeep.html: 10 * manual-tests/webgl/SpinningBox.html: 11 * manual-tests/webgl/TeapotPerPixel.html: 12 * manual-tests/webgl/TeapotPerVertex.html: 13 * manual-tests/webgl/resources/CanvasMatrix.js: 14 (CanvasMatrix4.prototype.getAsWebGLFloatArray): 15 * manual-tests/webgl/resources/utils3d.js: 16 (initWebGL.gl.console.window.console.log): 17 (initWebGL): 18 (loadShader): 19 (makeBox): 20 (makeSphere): 21 (processLoadObj): 22 (doLoadObj): 23 (doLoadImageTexture): 24 1 25 2009-12-12 Christian Dywan <christian@twotoasts.de> 2 26 -
trunk/WebCore/manual-tests/webgl/Earth.html
r48330 r52056 2 2 <html> 3 3 <head> 4 <title> Canvas3d example</title>4 <title>Earth and Mars</title> 5 5 <script src="resources/CanvasMatrix.js"> </script> 6 6 <script src="resources/utils3d.js"> </script> … … 106 106 mvMatrix.rotate(30, 1,0,0); 107 107 mvMatrix.translate(x,y,z); 108 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAs CanvasFloatArray());108 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAsWebGLFloatArray()); 109 109 110 110 // construct the normal matrix from the model-view matrix … … 112 112 normalMatrix.invert(); 113 113 normalMatrix.transpose(); 114 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAs CanvasFloatArray());114 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray()); 115 115 116 116 // construct the model-view * projection matrix 117 117 var mvpMatrix = new CanvasMatrix4(mvMatrix); 118 118 mvpMatrix.multRight(ctx.perspectiveMatrix); 119 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAs CanvasFloatArray());119 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAsWebGLFloatArray()); 120 120 121 121 ctx.bindTexture(ctx.TEXTURE_2D, texture); … … 141 141 function start() 142 142 { 143 var c = document.getElementById("example"); 144 var w = Math.floor(window.innerWidth * 0.9); 145 var h = Math.floor(window.innerHeight * 0.9); 146 147 c.width = w; 148 c.height = h; 149 143 150 var ctx = init(); 144 151 currentAngle = 0; … … 152 159 canvas { 153 160 border: 2px solid black; 154 width:90%;155 height:90%;156 161 } 157 162 </style> -
trunk/WebCore/manual-tests/webgl/ManyPlanetsDeep.html
r48330 r52056 2 2 <html> 3 3 <head> 4 <title> Canvas3d example</title>4 <title>Many Planets Deep</title> 5 5 <script src="resources/CanvasMatrix.js"> </script> 6 6 <script src="resources/utils3d.js"> </script> … … 114 114 mvMatrix.rotate(30, 1,0,0); 115 115 mvMatrix.translate(x,y,z); 116 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAs CanvasFloatArray());116 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAsWebGLFloatArray()); 117 117 118 118 // construct the normal matrix from the model-view matrix … … 120 120 normalMatrix.invert(); 121 121 normalMatrix.transpose(); 122 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAs CanvasFloatArray());122 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray()); 123 123 124 124 // construct the model-view * projection matrix 125 125 var mvpMatrix = new CanvasMatrix4(mvMatrix); 126 126 mvpMatrix.multRight(ctx.perspectiveMatrix); 127 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAs CanvasFloatArray());127 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAsWebGLFloatArray()); 128 128 129 129 ctx.bindTexture(ctx.TEXTURE_2D, texture); … … 169 169 function start() 170 170 { 171 var c = document.getElementById("example"); 172 var w = Math.floor(window.innerWidth * 0.9); 173 var h = Math.floor(window.innerHeight * 0.9); 174 175 c.width = w; 176 c.height = h; 177 171 178 var ctx = init(); 172 179 currentAngles = [ ]; … … 189 196 canvas { 190 197 border: 2px solid black; 191 width:90%;192 height:90%;193 198 } 194 199 </style> -
trunk/WebCore/manual-tests/webgl/SpinningBox.html
r50725 r52056 1 1 <!DOCTYPE html> 2 2 <html> 3 <head> 4 <title>Canvas3d example</title> 5 <script src="resources/CanvasMatrix.js"> </script> 6 <script src="resources/utils3d.js"> </script> 7 <script id="vshader" type="x-shader/x-vertex"> 8 uniform mat4 pMatrix; 9 uniform mat4 mvMatrix; 10 uniform vec3 lightDir; 11 12 attribute vec3 vNormal; 13 attribute vec4 vColor; 14 attribute vec4 vPosition; 15 16 varying float v_Dot; 17 18 void main() 19 { 20 gl_FrontColor = vColor; 21 vec4 transNormal = mvMatrix * vec4(vNormal,1); 22 v_Dot = max(dot(transNormal.xyz, lightDir), 0.0); 23 gl_Position = pMatrix * mvMatrix * vPosition; 24 } 25 </script> 26 27 <script id="fshader" type="x-shader/x-fragment"> 28 varying float v_Dot; 29 30 void main() 31 { 32 gl_FragColor = vec4(gl_Color.xyz * v_Dot, gl_Color.a); 33 } 34 </script> 35 36 <script> 37 function init() 38 { 39 var gl = initWebGL("example", "vshader", "fshader", 40 [ "vNormal", "vColor", "vPosition"], 41 [ 0, 0, 0, 1 ], 10000); 42 43 gl.uniform3f(gl.getUniformLocation(gl.program, "lightDir"), 0, 0, 1); 44 45 gl.box = makeBox(gl); 46 47 // color array 48 var colors = new WebGLUnsignedByteArray( 49 [ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, // v0-v1-v2-v3 front 50 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, // v0-v3-v4-v5 right 51 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, // v0-v5-v6-v1 top 52 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, // v1-v6-v7-v2 left 53 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, // v7-v4-v3-v2 bottom 54 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1 ] // v4-v7-v6-v5 back 55 ); 56 57 gl.box.colorObject = gl.createBuffer(); 58 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.colorObject); 59 gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); 60 61 return gl; 62 } 63 64 width = -1; 65 height = -1; 66 67 function reshape(gl) 68 { 69 var canvas = document.getElementById('example'); 70 if (canvas.clientWidth == width && canvas.clientHeight == height) 71 return; 72 73 width = canvas.clientWidth; 74 height = canvas.clientHeight; 75 76 gl.viewport(0, 0, width, height); 77 var pMatrix = new CanvasMatrix4(); 78 pMatrix.lookat(0,0,10, 0, 0, 0, 0, 1, 0); 79 pMatrix.perspective(30, width/height, 1, 10000); 80 gl.uniformMatrix4fv(gl.getUniformLocation(gl.program, "pMatrix"), false, pMatrix.getAsCanvasFloatArray()); 81 } 82 83 function drawPicture(gl) 84 { 85 reshape(gl); 86 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 87 88 var mvMatrix = new CanvasMatrix4(); 89 mvMatrix.rotate(currentAngle, 0,1,0); 90 mvMatrix.rotate(20, 1,0,0); 91 gl.uniformMatrix4fv(gl.getUniformLocation(gl.program, "mvMatrix"), false, mvMatrix.getAsCanvasFloatArray()); 92 93 gl.enableVertexAttribArray(0); 94 gl.enableVertexAttribArray(1); 95 gl.enableVertexAttribArray(2); 96 97 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.vertexObject); 98 gl.vertexAttribPointer(2, 3, gl.FLOAT, false, 0, 0); 99 100 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.normalObject); 101 gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0); 102 103 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.colorObject); 104 gl.vertexAttribPointer(1, 4, gl.UNSIGNED_BYTE, false, 0, 0); 105 106 gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.box.indexObject); 107 gl.drawElements(gl.TRIANGLES, gl.box.numIndices, gl.UNSIGNED_BYTE, 0); 108 109 gl.flush(); 110 111 framerate.snapshot(); 112 113 currentAngle += incAngle; 114 if (currentAngle > 360) 115 currentAngle -= 360; 116 } 117 118 function start() 119 { 120 var gl = init(); 121 currentAngle = 0; 122 incAngle = 0.5; 123 framerate = new Framerate("framerate"); 124 setInterval(function() { drawPicture(gl) }, 10); 125 } 126 </script> 127 <style type="text/css"> 128 canvas { 129 border: 2px solid black; 130 width:90%; 131 height:90%; 132 } 133 .text { 134 position:absolute; 135 top:100px; 136 left:20px; 137 font-size:2em; 138 color: blue; 139 } 140 </style> 141 </head> 142 <body onload="start()"> 143 <canvas id="example"> 144 There is supposed to be an example drawing here, but it's not important. 145 </canvas> 146 <div class="text">This is some text under the canvas</div> 147 <div id="framerate"></div> 148 </body> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>Spinning WebGL Box</title> 6 7 <script src="resources/CanvasMatrix.js" type="text/javascript"> </script> 8 <script src="resources/utils3d.js" type="text/javascript"> </script> 9 <script id="vshader" type="x-shader/x-vertex"> 10 uniform mat4 u_modelViewProjMatrix; 11 uniform mat4 u_normalMatrix; 12 uniform vec3 lightDir; 13 14 attribute vec3 vNormal; 15 attribute vec4 vColor; 16 attribute vec4 vPosition; 17 18 varying float v_Dot; 19 varying vec4 v_Color; 20 21 void main() 22 { 23 gl_Position = u_modelViewProjMatrix * vPosition; 24 v_Color = vColor; 25 vec4 transNormal = u_normalMatrix * vec4(vNormal, 1); 26 v_Dot = max(dot(transNormal.xyz, lightDir), 0.0); 27 } 28 </script> 29 30 <script id="fshader" type="x-shader/x-fragment"> 31 varying float v_Dot; 32 varying vec4 v_Color; 33 34 void main() 35 { 36 gl_FragColor = vec4(v_Color.xyz * v_Dot, v_Color.a); 37 } 38 </script> 39 40 <script> 41 function init() 42 { 43 // Initialize 44 var gl = initWebGL( 45 // The id of the Canvas Element 46 "example", 47 // The ids of the vertex and fragment shaders 48 "vshader", "fshader", 49 // The vertex attribute names used by the shaders. 50 // The order they appear here corresponds to their index 51 // used later. 52 [ "vNormal", "vColor", "vPosition"], 53 // The clear color and depth values 54 [ 0, 0, 0, 1 ], 10000); 55 56 // Set up a uniform variable for the shaders 57 gl.uniform3f(gl.getUniformLocation(gl.program, "lightDir"), 0, 0, 1); 58 59 // Create a box. On return 'gl' contains a 'box' property with 60 // the BufferObjects containing the arrays for vertices, 61 // normals, texture coords, and indices. 62 gl.box = makeBox(gl); 63 64 // Set up the array of colors for the cube's faces 65 var colors = new WebGLUnsignedByteArray( 66 [ 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, // v0-v1-v2-v3 front 67 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, // v0-v3-v4-v5 right 68 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, // v0-v5-v6-v1 top 69 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, // v1-v6-v7-v2 left 70 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, // v7-v4-v3-v2 bottom 71 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1 ] // v4-v7-v6-v5 back 72 ); 73 74 // Set up the vertex buffer for the colors 75 gl.box.colorObject = gl.createBuffer(); 76 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.colorObject); 77 gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); 78 79 // Create some matrices to use later and save their locations in the shaders 80 gl.mvMatrix = new CanvasMatrix4(); 81 gl.u_normalMatrixLoc = gl.getUniformLocation(gl.program, "u_normalMatrix"); 82 gl.normalMatrix = new CanvasMatrix4(); 83 gl.u_modelViewProjMatrixLoc = 84 gl.getUniformLocation(gl.program, "u_modelViewProjMatrix"); 85 gl.mvpMatrix = new CanvasMatrix4(); 86 87 // Enable all of the vertex attribute arrays. 88 gl.enableVertexAttribArray(0); 89 gl.enableVertexAttribArray(1); 90 gl.enableVertexAttribArray(2); 91 92 // Set up all the vertex attributes for vertices, normals and colors 93 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.vertexObject); 94 gl.vertexAttribPointer(2, 3, gl.FLOAT, false, 0, 0); 95 96 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.normalObject); 97 gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0); 98 99 gl.bindBuffer(gl.ARRAY_BUFFER, gl.box.colorObject); 100 gl.vertexAttribPointer(1, 4, gl.UNSIGNED_BYTE, false, 0, 0); 101 102 // Bind the index array 103 gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.box.indexObject); 104 105 return gl; 106 } 107 108 width = -1; 109 height = -1; 110 111 function reshape(gl) 112 { 113 var canvas = document.getElementById('example'); 114 if (canvas.clientWidth == width && canvas.clientHeight == height) 115 return; 116 117 width = canvas.clientWidth; 118 height = canvas.clientHeight; 119 120 // Set the viewport and projection matrix for the scene 121 gl.viewport(0, 0, width, height); 122 gl.perspectiveMatrix = new CanvasMatrix4(); 123 gl.perspectiveMatrix.lookat(0, 0, 7, 0, 0, 0, 0, 1, 0); 124 gl.perspectiveMatrix.perspective(30, width/height, 1, 10000); 125 } 126 127 function drawPicture(gl) 128 { 129 // Make sure the canvas is sized correctly. 130 reshape(gl); 131 132 // Clear the canvas 133 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 134 135 // Make a model/view matrix. 136 gl.mvMatrix.makeIdentity(); 137 gl.mvMatrix.rotate(currentAngle, 0,1,0); 138 gl.mvMatrix.rotate(20, 1,0,0); 139 140 // Construct the normal matrix from the model-view matrix and pass it in 141 gl.normalMatrix.load(gl.mvMatrix); 142 gl.normalMatrix.invert(); 143 gl.normalMatrix.transpose(); 144 gl.uniformMatrix4fv(gl.u_normalMatrixLoc, false, 145 gl.normalMatrix.getAsWebGLFloatArray()); 146 147 // Construct the model-view * projection matrix and pass it in 148 gl.mvpMatrix.load(gl.mvMatrix); 149 gl.mvpMatrix.multRight(gl.perspectiveMatrix); 150 gl.uniformMatrix4fv(gl.u_modelViewProjMatrixLoc, false, 151 gl.mvpMatrix.getAsWebGLFloatArray()); 152 153 // Draw the cube 154 gl.drawElements(gl.TRIANGLES, gl.box.numIndices, gl.UNSIGNED_BYTE, 0); 155 156 // Finish up. 157 gl.flush(); 158 159 // Show the framerate 160 framerate.snapshot(); 161 162 currentAngle += incAngle; 163 if (currentAngle > 360) 164 currentAngle -= 360; 165 } 166 167 function start() 168 { 169 var c = document.getElementById("example"); 170 var w = Math.floor(window.innerWidth * 0.9); 171 var h = Math.floor(window.innerHeight * 0.9); 172 173 c.width = w; 174 c.height = h; 175 176 var gl = init(); 177 currentAngle = 0; 178 incAngle = 0.5; 179 framerate = new Framerate("framerate"); 180 setInterval(function() { drawPicture(gl) }, 10); 181 } 182 </script> 183 <style type="text/css"> 184 canvas { 185 border: 2px solid black; 186 } 187 .text { 188 position:absolute; 189 top:100px; 190 left:20px; 191 font-size:2em; 192 color: blue; 193 } 194 </style> 195 </head> 196 197 <body onload="start()"> 198 <canvas id="example"> 199 If you're seeing this your web browser doesn't support the <canvas>> element. Ouch! 200 </canvas> 201 <div class="text">This is some text over the canvas</div> 202 <div id="framerate"></div> 203 </body> 204 149 205 </html> -
trunk/WebCore/manual-tests/webgl/TeapotPerPixel.html
r48330 r52056 2 2 <html> 3 3 <head> 4 <title> Canvas3d example</title>4 <title>Teapot (per-pixel)</title> 5 5 <script src="resources/CanvasMatrix.js"> </script> 6 6 <script src="resources/utils3d.js"> </script> … … 155 155 156 156 <script> 157 console.log("Hello");158 157 function setDirectionalLight(ctx, program, eyeVector, direction, ambient, diffuse, specular) 159 158 { … … 284 283 mvMatrix.rotate(currentAngle, 0, 1, 0); 285 284 mvMatrix.rotate(10, 1,0,0); 286 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAs CanvasFloatArray());285 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAsWebGLFloatArray()); 287 286 288 287 // construct the normal matrix from the model-view matrix … … 290 289 normalMatrix.invert(); 291 290 normalMatrix.transpose(); 292 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAs CanvasFloatArray());291 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray()); 293 292 294 293 mvMatrix.multRight(ctx.perspectiveMatrix); 295 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvMatrix.getAs CanvasFloatArray());294 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvMatrix.getAsWebGLFloatArray()); 296 295 297 296 ctx.drawElements(ctx.TRIANGLES, obj.numIndices, ctx.UNSIGNED_SHORT, 0); … … 308 307 function start() 309 308 { 309 var c = document.getElementById("example"); 310 var w = Math.floor(window.innerWidth * 0.9); 311 var h = Math.floor(window.innerHeight * 0.9); 312 313 c.width = w; 314 c.height = h; 315 310 316 var ctx = init(); 311 317 currentAngle = 0; … … 319 325 canvas { 320 326 border: 2px solid black; 321 width:90%;322 height:90%;323 327 } 324 328 </style> -
trunk/WebCore/manual-tests/webgl/TeapotPerVertex.html
r48330 r52056 2 2 <html> 3 3 <head> 4 <title> Canvas3d example</title>4 <title>Teapot (per-vertex)</title> 5 5 <script src="resources/CanvasMatrix.js"> </script> 6 6 <script src="resources/utils3d.js"> </script> … … 257 257 mvMatrix.rotate(currentAngle, 0, 1, 0); 258 258 mvMatrix.rotate(10, 1,0,0); 259 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAs CanvasFloatArray());259 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewMatrix"), false, mvMatrix.getAsWebGLFloatArray()); 260 260 261 261 // construct the normal matrix from the model-view matrix … … 263 263 normalMatrix.invert(); 264 264 normalMatrix.transpose(); 265 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAs CanvasFloatArray());265 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray()); 266 266 267 267 mvMatrix.multRight(ctx.perspectiveMatrix); 268 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvMatrix.getAs CanvasFloatArray());268 ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvMatrix.getAsWebGLFloatArray()); 269 269 270 270 ctx.drawElements(ctx.TRIANGLES, obj.numIndices, ctx.UNSIGNED_SHORT, 0); … … 281 281 function start() 282 282 { 283 var c = document.getElementById("example"); 284 var w = Math.floor(window.innerWidth * 0.9); 285 var h = Math.floor(window.innerHeight * 0.9); 286 287 c.width = w; 288 c.height = h; 289 283 290 var ctx = init(); 284 291 currentAngle = 0; … … 292 299 canvas { 293 300 border: 2px solid black; 294 width:90%;295 height:90%;296 301 } 297 302 </style> -
trunk/WebCore/manual-tests/webgl/resources/CanvasMatrix.js
r50725 r52056 140 140 } 141 141 142 CanvasMatrix4.prototype.getAs CanvasFloatArray = function()142 CanvasMatrix4.prototype.getAsWebGLFloatArray = function() 143 143 { 144 144 return new WebGLFloatArray(this.getAsArray()); -
trunk/WebCore/manual-tests/webgl/resources/utils3d.js
r51348 r52056 14 14 // Enable depth testing and blending with a blend func of (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) 15 15 // 16 // A console function is added to the context: console(string). This can be replaced 17 // by the caller. By default, it maps to the window.console() function on WebKit and to 18 // an empty function on other browsers. 19 // 16 20 function initWebGL(canvasName, vshader, fshader, attribs, clearColor, clearDepth) 17 21 { 18 22 var canvas = document.getElementById(canvasName); 19 var gl = canvas.getContext("webkit-3d"); 23 var gl = canvas.getContext("experimental-webgl"); 24 if (!gl) { 25 alert("No WebGL context found"); 26 return null; 27 } 28 29 // Add a console 30 gl.console = ("console" in window) ? window.console : { log: function() { } }; 20 31 21 32 // create our shaders … … 48 59 // something went wrong with the link 49 60 var error = gl.getProgramInfoLog (gl.program); 50 console.log("Error in program linking:"+error);61 gl.console.log("Error in program linking:"+error); 51 62 52 63 gl.deleteProgram(gl.program); … … 59 70 gl.useProgram(gl.program); 60 71 61 gl.clearColor 62 gl.clearDepth 72 gl.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]); 73 gl.clearDepth(clearDepth); 63 74 64 75 gl.enable(gl.DEPTH_TEST); … … 79 90 var shaderScript = document.getElementById(shaderId); 80 91 if (!shaderScript) { 81 c onsole.log("*** Error: shader script '"+shaderId+"' not found");92 ctx.console.log("*** Error: shader script '"+shaderId+"' not found"); 82 93 return null; 83 94 } … … 88 99 var shaderType = ctx.FRAGMENT_SHADER; 89 100 else { 90 c onsole.log("*** Error: shader script '"+shaderId+"' of undefined type '"+shaderScript.type+"'");101 ctx.console.log("*** Error: shader script '"+shaderId+"' of undefined type '"+shaderScript.type+"'"); 91 102 return null; 92 103 } … … 95 106 var shader = ctx.createShader(shaderType); 96 107 if (shader == null) { 97 c onsole.log("*** Error: unable to create shader '"+shaderId+"'");108 ctx.console.log("*** Error: unable to create shader '"+shaderId+"'"); 98 109 return null; 99 110 } … … 110 121 // Something went wrong during compilation; get the error 111 122 var error = ctx.getShaderInfoLog(shader); 112 c onsole.log("*** Error compiling shader '"+shaderId+"':"+error);123 ctx.console.log("*** Error compiling shader '"+shaderId+"':"+error); 113 124 ctx.deleteShader(shader); 114 125 return null; … … 196 207 ctx.bufferData(ctx.ARRAY_BUFFER, vertices, ctx.STATIC_DRAW); 197 208 198 ctx.bindBuffer(ctx.ARRAY_BUFFER, 0);209 ctx.bindBuffer(ctx.ARRAY_BUFFER, null); 199 210 200 211 retval.indexObject = ctx.createBuffer(); 201 212 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, retval.indexObject); 202 213 ctx.bufferData(ctx.ELEMENT_ARRAY_BUFFER, indices, ctx.STATIC_DRAW); 203 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, 0);214 ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, null); 204 215 205 216 retval.numIndices = indices.length; … … 254 265 } 255 266 256 longs += 1;257 267 for (var latNumber = 0; latNumber < lats; ++latNumber) { 258 268 for (var longNumber = 0; longNumber < longs; ++longNumber) { 259 var first = (latNumber * longs) + (longNumber % longs);260 var second = first + longs ;269 var first = (latNumber * (longs+1)) + longNumber; 270 var second = first + longs + 1; 261 271 indexData.push(first); 262 272 indexData.push(second); … … 318 328 function processLoadObj(req) 319 329 { 320 console.log("req="+req)330 req.obj.ctx.console.log("req="+req) 321 331 // only if req shows "complete" 322 332 if (req.readyState == 4) { … … 367 377 // face 368 378 if (array.length != 4) { 369 console.log("*** Error: face '"+line+"' not handled");379 obj.ctx.console.log("*** Error: face '"+line+"' not handled"); 370 380 continue; 371 381 } … … 388 398 } 389 399 else { 390 console.log("*** Error: did not understand face '"+array[i]+"'");400 obj.ctx.console.log("*** Error: did not understand face '"+array[i]+"'"); 391 401 return null; 392 402 } … … 481 491 ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.CLAMP_TO_EDGE); 482 492 ctx.generateMipmap(ctx.TEXTURE_2D) 483 ctx.bindTexture(ctx.TEXTURE_2D, 0);493 ctx.bindTexture(ctx.TEXTURE_2D, null); 484 494 } 485 495
Note: See TracChangeset
for help on using the changeset viewer.