<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mozilla Hacks - the Web developer blog &#187; WebGL</title>
	<atom:link href="http://hacks.mozilla.org/category/webgl/feed/" rel="self" type="application/rss+xml" />
	<link>http://hacks.mozilla.org</link>
	<description>hacks.mozilla.org</description>
	<lastBuildDate>Wed, 08 Feb 2012 22:52:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Announcing Firefox Aurora 10</title>
		<link>http://hacks.mozilla.org/2011/11/announcing-firefox-aurora-10/</link>
		<comments>http://hacks.mozilla.org/2011/11/announcing-firefox-aurora-10/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 22:34:00 +0000</pubDate>
		<dc:creator>Joe Stagner</dc:creator>
				<category><![CDATA[Aurora]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Feature]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[IndexedDB]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10176</guid>
		<description><![CDATA[We&#8217;re happy to announce the availability of Aurora 10. (Download and Test Aurora 10) In additional to the normal improvements that you&#8217;ve come to expect like performance, security and bug fixes, Aurora 10 focuses in HTML5 enhancements. New additions HTML5 Visibility API createProcessingInstruction WebGL antialiasing 3D Transforms Visibility API Document.mozFullScreenEnabled\ Developer Tools Code Editor CSS [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re happy to announce the availability of Aurora 10. <br/>(<a href="http://www.mozilla.org/en-US/firefox/channel/">Download and Test Aurora 10</a>)</p>
<p>In additional to the normal improvements that you&#8217;ve come to expect like performance, security and bug fixes, Aurora 10 focuses in HTML5 enhancements. </p>
<h2>New additions</h2>
<ul>
<li><a href="https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API">HTML5 Visibility API </a></li>
<li><a href="https://developer.mozilla.org/en/DOM/document.createProcessingInstruction">createProcessingInstruction</a></li>
<li>WebGL antialiasing</li>
<li>3D Transforms</li>
<li>Visibility API</li>
<li>Document.mozFullScreenEnabled\</li>
</ul>
<h2>Developer Tools</h2>
<ul>
<li><a title="DevTools/Features/CodeEditor" href="https://wiki.mozilla.org/DevTools/Features/CodeEditor">Code Editor</a></li>
<li><a title="DevTools/Features/RulesView" href="https://wiki.mozilla.org/DevTools/Features/RulesView">CSS Rules View</a></li>
<li><a title="DevTools/Features/Highlighter" href="https://wiki.mozilla.org/DevTools/Features/Highlighter">Page Inspector/Highlighter</a></li>
<li><a title="DevTools/Features/ConsoleObjectCompletion" href="https://wiki.mozilla.org/DevTools/Features/ConsoleObjectCompletion">Console Object Completion</a></li>
<li><a title="DevTools/Features/StyleInspector" href="https://wiki.mozilla.org/DevTools/Features/StyleInspector">Style Inspector</a></li>
</ul>
<p>Aurora 10 also implements incremental enhancements like IndexedDB setVersion API changes. Ongoing detailed attention to evolving specifications help to keep Firefox at the front of the Web revolution. (Read more about <a href="https://developer.mozilla.org/en/IndexedDB/IndexedDB_primer">IndexedDB on MDN</a>.)</p>
<h2>DOM</h2>
<ul>
<li>We now fire a &#8220;load&#8221; event on stylesheet linking when the sheet load finishes or &#8220;error&#8221; if the load fails.</li>
<li>We turn the POSTDATA prompt into an information page (when navigating in session history).</li>
<li>We only forward event attributes on body/frameset to the window if we also forward the corresponding on* property.</li>
<li>We no longer allow more than one call to window.open() when we allow popups.</li>
<li>We fixed a bug where a success callback never fired when a position update is triggered after getCurrentPosition().</li>
<li>We removed replaceWholeText().</li>
<li>We fixed an error with createPattern(zero-size canvas).</li>
<li>We now handle putImageData(nonfinite) correctly.</li>
<li>We now throw INVALID_STATE_ERR when dispatching uninitialized events.</li>
<li>We&#8217;ve made Document.documentURI readonly.</li>
<li>We fixed document.importNode to comply with optional argument omitted.</li>
</ul>
<h2>Web workers</h2>
<ul>
<li>We now allow data URLs.</li>
<li>We implemented event.stopImmediatePropagation in workers.</li>
<li>We made XHR2 response/responseType work in Web Workers.</li>
</ul>
<h2>Graphics</h2>
<ul>
<li>We implement the WebGL OES_standard_derivatives extension.</li>
<li>We implement minimal-capabilities WebGL mode.</li>
</ul>
<h2>JavaScript</h2>
<ul>
<li>The function caller property no longer skips over eval frames.</li>
<li>We fixed E4X syntax so that it is not accepted in ES5 strict mode.</li>
<li>weakmap.set no longer returns itself instead of undefined.</li>
<li>We implemented the battery API.</li>
</ul>
<h2>Offline: IndexedDB enhancements</h2>
<ul>
<li>IndexedDB setVersion API changes</li>
<li>Added support for IDBObjectStore/IDBIndex.count</li>
<li>Various methods accept both keys and KeyRanges.</li>
<li>Added support for IDBCursor.advance.</li>
<li>Implemented deleteDatabase.</li>
<li> objectStoreNames are no longer updated on closed databases when another connection adds or removes object stores</li>
<li>IDBObjectStore.delete and IDBCursor.delete now return undefined.</li>
<li>No longer throws an error if there are unknown properties in the options objects to createObjectStore/createIndex.</li>
<li>We now the errorCode to &#8220;ABORT_ERR&#8221; for all pending requests when IDBTransaction.abort() is called.</li>
<li>Fixed the sort order for indexes.</li>
</ul>
<h2>Layout</h2>
<ul>
<li>We have updated the current rule for handling malformed media queries.</li>
<li>We now support the HTML5 &lt;bdi&gt; element and CSS property unicode-bidi: isolate.</li>
<li>The CSS3 implementation now supports unicode-bidi: plaintext.</li>
</ul>
<h2>Media</h2>
<ul>
<li>Implemented Document.mozFullScreenEnabled.</li>
<li>Enabled the DOM full-screen API on desktop Firefox by default.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/11/announcing-firefox-aurora-10/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Using CORS to load WebGL textures from cross-domain images</title>
		<link>http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/</link>
		<comments>http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 15:43:17 +0000</pubDate>
		<dc:creator>Benoit Jacob</dc:creator>
				<category><![CDATA[Firefox 8]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10079</guid>
		<description><![CDATA[In Firefox, as well as in Chrome, it is now possible to load cross-domain images into WebGL textures, if they have been approved by CORS. Most prominently, this feature allows for impressive 3D mapping applications such as Google MapsGL and Nokia Maps 3D. What happened Earlier this year, the Editor&#8217;s Draft WebGL specification got updated [...]]]></description>
			<content:encoded><![CDATA[<p>In Firefox, as well as in Chrome, it is now possible to load cross-domain images into WebGL textures, if they have been approved by <a href="http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing">CORS</a>.</p>
<p>Most prominently, this feature allows for impressive 3D mapping applications such as <a href="http://maps.google.com/mapsgl">Google MapsGL</a> and <a href="http://maps3d.svc.nokia.com/webgl/">Nokia Maps 3D</a>.</p>
<h3>What happened</h3>
<p>Earlier this year, the<a href="http://www.khronos.org/registry/webgl/specs/latest/"> Editor&#8217;s Draft WebGL specification</a> got <a href="http://hacks.mozilla.org/2011/06/cross-domain-webgl-textures-disabled-in-firefox-5/">updated</a> in response to a security concern. The <a href="http://www.khronos.org/registry/webgl/specs/latest/#4.2">additions</a> were:</p>
<ol>
<li>A mandatory clause disallowing usage of cross-domain elements as WebGL textures in the general case.</li>
<li>A non-normative clause specifically allowing cross-domain elements that have CORS approval. For that occasion, the HTML specification on the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#the-img-element">&lt;img&gt; element</a> got updated to add a <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#attr-img-crossorigin">new crossorigin attribute</a>.</li>
</ol>
<p>The first got implemented in Firefox 5, the second is now in Firefox 8.</p>
<h3>How to use this feature</h3>
<p>There are <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/fetching-resources.html#cors-settings-attribute">two CORS modes</a>: &#8220;anonymous&#8221; and &#8220;use-credentials&#8221;. We&#8217;ll focus on &#8220;anonymous&#8221; as it&#8217;s the common case. A great example of images served with anonymous CORS is Google Maps imagery, such as:</p>
<p><a href="http://khm0.googleapis.com/kh?v=95&amp;x=0&amp;y=0&amp;z=0">http://khm0.googleapis.com/kh?v=95&amp;x=0&amp;y=0&amp;z=0</a></p>
<p>In order to load it with CORS as a WebGL texture, we set the crossOrigin attribute on it:</p>
<pre style="padding-left: 30px">var earthImage = new Image();
earthImage.crossOrigin = "anonymous";</pre>
<p>Now we load it as usual:</p>
<pre>    earthImage.onload = function() {
      // whatever you usually to do load WebGL textures
    };
    earthImage.src = "http://khm0.googleapis.com/kh?v=95&amp;x=0&amp;y=0&amp;z=0";</pre>
<p>That&#8217;s it! Aside from setting the crossOrigin attribute, we didn&#8217;t have to do anything. Here is the <strong><a href="http://people.mozilla.org/~bjacob/webgltexture-cors-js.html">full self-contained example</a></strong>.</p>
<h3>The HTTP headers</h3>
<p>If we study the HTTP headers for this image (using, for example, Firefox&#8217;s Web Console), we find that the <em>Request Headers</em> contain</p>
<pre style="padding-left: 30px">Origin: null</pre>
<p>which is the effect of having set this crossOrigin attribute on the img element. And the <em>Response Headers</em> contain</p>
<pre style="padding-left: 30px">Access-Control-Allow-Origin: null</pre>
<p>which is the effect of the server supporting CORS for this file.</p>
<h3>Doing this in HTML</h3>
<p>Of course, one could also set this attribute in HTML, in which case it&#8217;s case-insensitive:</p>
<pre style="padding-left: 30px">&lt;img src="http://khm0.googleapis.com/kh?v=95&amp;x=0&amp;y=0&amp;z=0" crossorigin="anonymous"&gt;</pre>
<p>And since &#8220;anonymous&#8221; is both the missing-value-default and the invalid-value-default for the crossorigin attribute, we can pass any invalid value for it, or even just omit its value:</p>
<pre style="padding-left: 30px">&lt;img src="http://khm0.googleapis.com/kh?v=95&amp;x=0&amp;y=0&amp;z=0" crossorigin&gt;</pre>
<h3>Coming soon: CORS approval for Canvas 2D drawImage</h3>
<p>What if you first draw a CORS-approved cross-domain image onto a 2D<br />
canvas, and then use that canvas as the source of a WebGL texture? The<br />
good news is that this <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=685518">will work</a> in Firefox 9, which is hitting the Beta<br />
channel soon. This fix means that demos like <a href="http://www.clicktorelease.com/code/weather/">this</a> will work really<br />
nicely in Firefox 9.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Beam me up, Scotty &#8211; bringing HTML5 to the enterprise</title>
		<link>http://hacks.mozilla.org/2011/10/beam-me-up-scotty-bringing-html5-to-the-enterprise/</link>
		<comments>http://hacks.mozilla.org/2011/10/beam-me-up-scotty-bringing-html5-to-the-enterprise/#comments</comments>
		<pubDate>Fri, 28 Oct 2011 13:08:56 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[B2G]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=10046</guid>
		<description><![CDATA[The last few days I was busy talking to in-house developers at two large enterprise companies, Sabre in Poland and SAP in Germany. Both these companies approached us asking for a talk about HTML5 as the topic gets a lot of interest in the upper echelons and there is a lot of confusion about it. [...]]]></description>
			<content:encoded><![CDATA[<p>The last few days I was busy talking to in-house developers at two large enterprise companies, Sabre in Poland and SAP in Germany. Both these companies approached us asking for a talk about HTML5 as the topic gets a lot of interest in the upper echelons and there is a lot of confusion about it. </p>
<p>As we were in Poland anyways to attend <a href="http://frontrowconf.com/">Frontrow</a> it was easy to visit Sabre and give a one hour presentation on the ins and outs of HTML5 and where the web might go. The day after the same talk was repeated over Skype for the German office of SAP. </p>
<p>In the one hour presentation we covered:</p>
<ul>
<li>the basics of HTML5</li>
<li>what it meant as an evolution of markup</li>
<li>what HTML5 is not</li>
<li>common HTML5 myths</li>
<li>&#8220;Friends of HTML5&#8243; &#8211; related technologies and</li>
<li>what the future of web technologies could look like</li>
</ul>
<p>The slides are <a href="http://icant.co.uk/talks/what-is-html5">available online</a> or embedded below (cursor keys to navigate, press N to show and hide notes and cursor down to proceed on slides with bullet points):</p>
<p><iframe style="border:none;width:100%;height:400px;" src="http://icant.co.uk/talks/what-is-html5/#1"></iframe></p>
<p>The <a href="http://www.archive.org/details/Html5101-WhatItIsWhatItIsntAndWhereItMightGo">audio recording of the talk</a> is available on archive.org. </p>
<p><audio style="display:block;margin:1em;" controls preload="metadata"><source type="audio/mp3" src="http://www.archive.org/download/Html5101-WhatItIsWhatItIsntAndWhereItMightGo/WhatIsHtml5.mp3"></source><source type="audio/ogg" src="http://www.archive.org/download/Html5101-WhatItIsWhatItIsntAndWhereItMightGo/WhatIsHtml5.ogg"></source></audio></p>
<p>The slides and the audio is licensed with Creative Commons, so feel free to re-use and distribute them. </p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/10/beam-me-up-scotty-bringing-html5-to-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.archive.org/download/Html5101-WhatItIsWhatItIsntAndWhereItMightGo/WhatIsHtml5.mp3" length="0" type="audio/mpeg" />
<enclosure url="http://www.archive.org/download/Html5101-WhatItIsWhatItIsntAndWhereItMightGo/WhatIsHtml5.ogg" length="0" type="audio/ogg" />
		</item>
		<item>
		<title>Debugging and editing webpages in 3D</title>
		<link>http://hacks.mozilla.org/2011/10/debugging-and-editing-webpages-in-3d/</link>
		<comments>http://hacks.mozilla.org/2011/10/debugging-and-editing-webpages-in-3d/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 14:47:09 +0000</pubDate>
		<dc:creator>victor</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9896</guid>
		<description><![CDATA[Tilt is a Firefox addon that lets you visualize any web page in 3D. A new update is available, coming with more developer-oriented features. Try the addon. Since the first alpha version of Tilt was announced (a Firefox extension focused on creating a 3D visualization of a webpage), a lot of work has been done [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Tilt</strong> is a Firefox addon that lets you visualize any web page in 3D. A new update is available, coming with more developer-oriented features. Try the <a href="#availableasanaddon">addon</a>.</em></p>
<p><object width="500" height="375"><param name="movie" value="http://www.youtube.com/v/_7eG_PONHRw?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_7eG_PONHRw?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="375" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Since the <a href="http://hacks.mozilla.org/2011/07/tilt-visualize-your-web-page-in-3d/">first alpha version of Tilt was announced</a> (a Firefox extension focused on creating a 3D visualization of a webpage), a lot of work has been done to add a great number of developer-oriented features. These focus on debugging the structure of a webpage, inspecting styling and attributes for each node and seamlessly refreshing the visualization when the DOM structure changes or after contents of document are repainted.</p>
<h2>Solve nesting problems</h2>
<p>Tilt is useful when searching problems in the HTML structure (like finding unclosed DIV elements for example) by providing the extra third dimension, layering each node based on nesting in the DOM tree. Stacks of elements visually represent branches in the DOM, and each node can be inspected for the inner HTML contents, its computed CSS style and the attributes.</p>
<p>Clicking anywhere on the visualization highlights a color-coded rectangle surrounding the corresponding node. Double click shows up the source preview for that node. Tilt also tries to show the most relevant information when needed (one is most likely to inspect the attributes of an input, button or image element, for example, but can easily switch between HTML, CSS and attributes view at any time).</p>
<p><a href="http://hacks.mozilla.org/wp-content/uploads/2011/10/tilt3d2.png"><img class="aligncenter size-full wp-image-9911" src="http://hacks.mozilla.org/wp-content/uploads/2011/10/tilt3d2.png" alt="" width="500" height="312" /></a></p>
<h2>Minidom map</h2>
<p>The “minidom” is a tree view representation showing a minimalistic snapshot of the document object model. Each node is assigned a color associated by tag name (blue for div, green for span etc.) and represented as a strip, along with visual markers for the id and/or class if available. Each one of these strips also has a width relative to the type, id and class name length for the respective element, and the corresponding 3D stack in the visualization has color-coded margins. The coloring for individual elements is easily changeable using the color picker near to the minidom legend.</p>
<p>Clicking a strip in the tree view (or directly a stack on the 3D document visualization mesh) also highlights the node with a colored quad. This behavior is a good way to relate with the Style Inspector, and a more unified interaction between Tilt and other Developer Tools is planned in the future. All of these additions make it easier to analyze the bounds of each node, along with the HTML, computed CSS and attributes.</p>
<h2>Realtime editing</h2>
<p>Because Tilt is able to detect when a webpage’s DOM structure changes or when a repaint is necessary, integration is seamless with existing Developer Tools. Using Tilt and Firebug or Style Editor at the same time is easy. One can enable or disable CSS properties, changing the style of a node, and the visualization changes accordingly.</p>
<p><object width="500" height="375"><param name="movie" value="http://www.youtube.com/v/ae1p5W20Ug8?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ae1p5W20Ug8?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="375" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><em>To enable realtime updates for the 3D webpage, go to the Options menu and check “Refresh visualization”.</em></p>
<h2>Useful for learning</h2>
<p>Developer tools such as &#8220;view source&#8221; have always been used to help people learn about web development. The 3D view highlights the structure of a page better than a flat view, thus anyone can immediately understand the parent-child relationship between nodes in a webpage, their positioning and how the layout is influenced.</p>
<p>One use case for this is the Hackasaurus mashup. The <a href="http://hackasaurus.org/goggles/" target="_blank">X-Ray Goggles</a> is a nice and fun tool designed to make it easier to learn about the different document node types, the “building blocks” which create a webpage.</p>
<h2>Export</h2>
<p>A requested feature was the ability to export the visualization as a 3D mesh, to be used in games or other 3D editors. Tilt adds the ability to export to <em>.obj</em>, along with a material <em>.mtl</em> file and a <em>.png</em> texture (a screenshot of the entire webpage). The open <em>.obj</em> format ensures the fact that the mesh can be opened with almost any editor. Here’s a ray-traced rendering of <a href="http://hacks.mozilla.org/2011/07/tilt-visualize-your-web-page-in-3d/" target="_blank">hacks.mozilla.org</a> in <a href="http://www.blender.org/" target="_blank">Blender</a>:</p>
<p style="text-align: center"><a href="http://hacks.mozilla.org/wp-content/uploads/2011/10/tilt3d3.png"><img class="aligncenter size-full wp-image-9927" src="http://hacks.mozilla.org/wp-content/uploads/2011/10/tilt3d3.png" alt="" width="500" height="305" /></a></p>
<h2>Fun with experiments</h2>
<p>As soon as it was released, many people found clever and interesting alternative ways to interact with Tilt. One experiment was creating a 3D visualization of an image, by exporting chunks of pixels to a HTML representation. The result was a voxel-like representation, with node blocks and stacks instead of pixels. A simple <a href="http://tinyurl.com/Img2Tilt" target="_blank">Image2Tilt converter</a> was written in JavaScript, and you can try it directly in the browser.</p>
<p><object width="500" height="375"><param name="movie" value="http://www.youtube.com/v/7YXq4gylERE?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7YXq4gylERE?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="375" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Accelerometer support was another addition based on community request. This shows how easy it is to add functionality that wasn’t originally planned.</p>
<p><object width="500" height="281"><param name="movie" value="http://www.youtube.com/v/rbTLwVEfPn0?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/rbTLwVEfPn0?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="500" height="281" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>You can view the source code, fork it and also contribute to the addon with ideas or feature requests on Github, at <a href="https://github.com/victorporof/Tilt" target="_blank">github.com/victorporof/Tilt</a>.</p>
<h2><a name="availableasanaddon"></a>Available as an addon</h2>
<p>The latest version of <a href="https://github.com/victorporof/Tilt/raw/master/bin/Tilt.xpi" target="_blank">Tilt</a> can be found on <a href="https://github.com/victorporof/Tilt/raw/master/bin/Tilt.xpi" target="_blank">Github</a>, but you can also download Tilt as an <a href="https://addons.mozilla.org/en-US/firefox/addon/tilt/" target="_blank">addon from addons.mozilla.org</a>.</p>
<p>For compatibility, Tilt requires WebGL capabilities. Go to <a href="http://get.webgl.org/" target="_blank">get.webgl.org</a> to check availability and troubleshoot any issues. The current version works with Firefox 6.0 to latest <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/" target="_blank">10.0 Nightly releases</a> (latest Nightly builds now also support WebGL anti-aliasing, working great with Tilt).</p>
<p>To start Tilt, hit <em>Control+Shift+M</em> (or <em>Command+Shift+M</em> if you&#8217;re on Mac OS), or go to <strong>Web Developer -&gt; Tilt</strong>, available in the Firefox application menu (or the Tools menu on Mac OS). You can modify this hotkey (and other properties) from the Options menu after starting Tilt.</p>
<p>More information about Tilt, the development process and milestone updates can be found on <a href="http://blog.mozilla.com/tilt">blog.mozilla.com/tilt</a>.</p>
<h2>Future</h2>
<p>Tilt has become an active Developer Tools project, and an ongoing effort is made to integrate it with other existing tools like Style Inspector and Style Editor (<a href="https://github.com/neonux/StyleEditor" target="_blank">source code</a> and <a href="http://neonux.com/StyleEditor/builds/" target="_blank">latest builds</a>). As the 3D view of a webpage has proven to be useful for debugging, this main functionality will gradually become part of Firefox in future releases.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/10/debugging-and-editing-webpages-in-3d/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mozilla demoparty winners announced</title>
		<link>http://hacks.mozilla.org/2011/09/mozilla-demoparty-winners-announced/</link>
		<comments>http://hacks.mozilla.org/2011/09/mozilla-demoparty-winners-announced/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 16:42:19 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9448</guid>
		<description><![CDATA[The Demoparty Online Competition 2011 is part of the Mozilla Labs Demoparty Project, an initiative to foster artful exploration of open web technologies. We asked people from the demo scene to have a go at web technologies and (with WebGL being the absolute winner of course) managed to collect over 100 submissions. Now the judges [...]]]></description>
			<content:encoded><![CDATA[<p>The Demoparty Online Competition 2011 is part of the <a href="https://demoparty.mozillalabs.com/">Mozilla Labs Demoparty Project</a>, an initiative to foster artful exploration of open web technologies.</p>
<p>We asked people from the demo scene to have a go at web technologies and (with WebGL being the absolute winner of course) managed to <a href="https://demoparty.mozillalabs.com/gallery/">collect over 100 submissions</a>. Now the judges have spoken and we <a href="http://mozillalabs.com/blog/2011/09/we-got-the-winners">picked the winners</a> in the categories of Main Demo, Single Effect, Audio Demo, Animated GIF and pure CSS demo.</p>
<p>Amongst other great examples of using technology in a purely creative way unhindered by real life application needs here are the winners of Demo and Single Effect:</p>
<p>Main Demo: Akemi</p>
<p><a href="https://demoparty.mozillalabs.com/gallery/51/akemi"><img class="alignnone size-full wp-image-7220" style="margin-left: 0px!important" src="http://mozillalabs.com/files/2011/09/akemi_main_demo_winner.jpg" alt="" width="602" height="360" /></a></p>
<p>Single Effect: WebGL Water Simulation </p>
<p><a href="https://demoparty.mozillalabs.com/gallery/81/webgl-water">Demo Link</a> or screen capture:<br />
<iframe width="480" height="390" src="http://www.youtube.com/embed/R0O_9bp3EKQ?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>We congratulate all the winners and thank all those who contributed. Playing with technology is a big part of making it interesting for everyone to use.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/09/mozilla-demoparty-winners-announced/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mozilla Hacks Weekly, August 18th 2011</title>
		<link>http://hacks.mozilla.org/2011/08/mozilla-hacks-weekly-august-18th-2011/</link>
		<comments>http://hacks.mozilla.org/2011/08/mozilla-hacks-weekly-august-18th-2011/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 13:42:33 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Identity]]></category>
		<category><![CDATA[Mozilla Hacks Weekly]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=9229</guid>
		<description><![CDATA[It&#8217;s Thursday, folks, and you know what that means, right? It&#8217;s time for Mozilla Hacks Weekly, with recommended reading from the Mozilla Developer Engagement Team! Weekly links August 18th 2011 As usual, anything you think we should read or be aware of, don&#8217;t hesitate to post a comment, contact us on Twitter or through any [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s Thursday, folks, and you know what that means, right? It&#8217;s time for Mozilla Hacks Weekly, with recommended reading from the Mozilla Developer Engagement Team!</p>
<p><span id="more-9229"></span></p>
<h2>Weekly links August 18th 2011</h2>
<p>As usual, anything you think we should read or be aware of, don&#8217;t hesitate to post a comment, contact us on Twitter or through any other mean.<br />
Here comes this week&#8217;s treats!</p>
<h3>Christian Heilmann</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/chris-heilmann.jpg" alt="A picture of Christian Heilmann" style="float:left; margin: 0 20px 10px 0"> This <a href="http://madebyevan.com/webgl-water/">water implementation in WebGL</a> is incredibly impressive. Turn the box and also don’t forget to drag the ball around. Beautifully done and it shows that interactive WebGL experiences are very engaging. Imagine this paired with touch interfaces and you have the introductory screen Microsoft’s Surface table had.</p>
<p>    If you want to read more tips or discuss the web with Christian, he&#8217;s available on Twitter as <a href="http://twitter.com/codepo8">@codepo8</a>.
</div>
<h3>Janet Swisher</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/janet-swisher.jpeg" alt="A picture of Janet Swisher" style="float:left; margin: 0 20px 10px 0"> <a href="http://coding.smashingmagazine.com/2011/08/16/html5-and-the-document-outlining-algorithm/">HTML5 and the document outlining algorithm</a>. As dear as this topic is to my tech writer heart, it’s also important for anybody creating content for the web.</p>
<p>    If you want to read more tips or discuss the web with Janet, she&#8217;s available on Twitter as <a href="http://twitter.com/jmswisher">@jmswisher</a>.
</div>
<h3>Jay Patel</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/jay-patel.jpg" alt="A picture of Jay Patel" style="float:left; margin: 0 20px 10px 0"> <a href="http://pinchzoom.com/posts/anatomy-of-a-html5-mobile-app/">Anatomy of a HTML5 Mobile App</a> Tries to answer the question: “We all agree HTML5 can get the job, but can it DO the job?” A interesting look at all the pieces to developing an HTML5 mobile app vs going native. </p>
<p>    Jay can be found on Twitter as <a href="http://twitter.com/jaybhai">@jaybhai</a>
</div>
<h3>Jeff Griffiths</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/jeff-griffiths.png" alt="A picture of Jeff Griffiths" style="float:left; margin: 0 20px 10px 0"> <a href="http://timtaubert.de/2011/08/firefox-electrolysis-101-part-1/">Firefox Electrolysis 101 (part 1)</a> Tim Taubert started an excellent series of posts on Electrolysis, Firefox’s upcoming multi-process architectural shift. Highly recommended for add-on developers or people interested in the future of Firefox development.</p>
<p>    If you want to read more tips or discuss the web with Jeff, he&#8217;s available on Twitter as <a href="http://twitter.com/canuckistani">@canuckistani</a>.
</div>
<h3>Louis-Rémi Babe</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/louis-remi-babe.jpg" alt="A picture of Louis-Rémi Babe" style="float:left; margin: 0 56px 10px 0"> Andrea Giammarchi compares the different ways of <a href="http://webreflection.blogspot.com/2011/08/once-again-on-script-loaders.html">loading javascript in a Web page</a> and introduces a new minimalistic loader: <a href="http://code.google.com/p/yal/">yal.js</a>. Andrea is a javascript ninja and you can trust him to produce state of the art solutions when tackling such problems.</p>
<p>    If you want to read more tips or discuss the web with Louis-Rémi, he&#8217;s available on Twitter as <a href="http://twitter.com/Louis_Remi">@Louis_Remi</a>.
</div>
<h3>Rob Hawkes</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/rob-hawkes.jpg" alt="A picture of Rob Hawkes" style="float:left; margin: 0 20px 10px 0"> <a href="https://github.com/indexzero/forever">Forever</a> is a command line interface that lets you keep your Node apps running for, well, ever! Never again do you have to worry about a random crash taking your app down until you next check on it.</p>
<p>    If you want to read more tips or discuss the web with Rob, he&#8217;s available on Twitter as <a href="http://twitter.com/robhawkes">@robhawkes</a>.
</div>
<h3>Robert Nyman</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/robert-nyman.jpg" alt="A picture of Robert Nyman" style="float:left; margin: 0 20px 10px 0"> <a href="http://www.sencha.com/blog/understanding-hardware-acceleration-on-mobile-browsers/">Understanding Hardware Acceleration on Mobile Browsers</a> &#8211; Explaining hardware acceleration and how web browsers are affected by it.</p>
<p>    If you want to read more tips or discuss the web with Robert, he&#8217;s available on Twitter as <a href="http://twitter.com/robertnyman">@robertnyman</a>.
</div>
<h3>Stormy Peters</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/stormy-peters.jpg" alt="A picture of Stormy Peters" style="float:left; margin: 0 10px 10px 0"> <a href="https://firstpersoncookie.wordpress.com/2011/08/11/mozilla-brown-bag-on-browserid-privacy-081711-12noon-pacific/">Mozilla Brown Bag on BrowserID &amp; Privacy</a> &#8211; It really worries me when people login to sites with their Facebook identity. They are giving control over their identity on the web to a non neutral third party. Mozilla is trying to fix this problem with BrowserID. It will let you login to websites with one ID &#8211; in ways that preserve your privacy.</p>
<p>    Stormy can be found on Twitter as <a href="http://twitter.com/storming">@storming</a>
</div>
<h3>Tristan Nitot</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/08/tristan-nitot.jpg" alt="A picture of Tristan Nitot" style="float:left; margin: 0 20px 10px 0"> The new release of Firefox has brought us ScratchPad, a very cool new tool for Web devs, a bit like the Web Console on steroids. Kevin Dangoor has a great post on this: <a href="http://blog.mozilla.com/devtools/2011/08/15/introducing-scratchpad/">Introducing ScratchPad</a>. Web devs who want to know what is coming in this department with future Firefox versions should follow the <a href="http://blog.mozilla.com/devtools/">Devtools blog</a>!</p>
<p>    If you want to read more tips or discuss the web with Tristan, he&#8217;s available on Twitter as <a href="http://twitter.com/nitot">@nitot</a>.
</div>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/08/mozilla-hacks-weekly-august-18th-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing Mozilla Hacks Weekly</title>
		<link>http://hacks.mozilla.org/2011/07/introducing-mozilla-hacks-weekly/</link>
		<comments>http://hacks.mozilla.org/2011/07/introducing-mozilla-hacks-weekly/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 13:11:28 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mozilla Hacks Weekly]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8883</guid>
		<description><![CDATA[We in the Developer Engagement Team at Mozilla &#8211; who write this blog, give presentations, work on the MDN documentation, meet the community and many other things &#8211; always try to stay on top what is happening on the Internet. And now we want to share our reading with you! Introducing Mozilla Hacks Weekly The [...]]]></description>
			<content:encoded><![CDATA[<p>We in the Developer Engagement Team at Mozilla &#8211; who write this blog, give presentations, work on the <a href="https://developer.mozilla.org/en-US/">MDN</a> documentation, meet the community and many other things &#8211; always try to stay on top what is happening on the Internet. And now we want to share our reading with you!</p>
<p><span id="more-8883"></span></p>
<h2>Introducing Mozilla Hacks Weekly</h2>
<p>The idea behind Mozilla Hacks Weekly is to each Thursday present you with a link from each of our team members. It could be something news-worthy, or an article, resource or blog post that really helped us out recently. It is also our way of giving the proper credits to people who share such important and helpful information, and additionally, a way for you to getting to know us and our interests.</p>
<h2>Weekly links July 28th 2011</h2>
<p>Here are the picks for this week from the team members:</p>
<h3>Christian Heilmann</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/chris-heilmann.jpg" alt="A picture of Christian Heilmann" style="float:left; margin: 0 10px 10px 0"> In <a href="http://www.brucelawson.co.uk/2011/html5-notes-for-analysts-and-journalists/">HTML5 notes for analysts and journalists</a> Bruce Lawson cuts through some of the misinformation that is being spread about HTML5 and asks for clearer reporting on the subject.</p>
<p>    Christian can be found on Twitter as <a href="http://twitter.com/codepo8">@codepo8</a>
</div>
<h3>Havi Hoffman</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/havi-hoffman.jpg" alt="A picture of Havi Hoffman" style="float:left; margin: 0 10px 10px 0"> <a href="http://www.aminutewithbrendan.com/pages/20110721">We (Mozilla) Fight For the User</a> &#8211; In this 12 minute podcast, Mozilla CTO Brendan Eich goes deep on the future of Mozilla and the Web, including thoughts on what’s ahead for open web app stores, mobile interface/devices, and technology change in support of user sovereignty.</p>
<p>    Havi can be found on Twitter as <a href="http://twitter.com/freshelectrons">@freshelectrons</a>
</div>
<h3>Janet Swisher</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/janet-swisher.jpg" alt="A picture of Janet Swisher" style="float:left; margin: 0 54px 50px 0"><a href="http://cacm.acm.org/magazines/2011/5/107701-weapons-of-mass-assignment/fulltext">Weapons of Mass Assignment</a>: A high-profile Ruby on Rails app highlights some serious, yet easily avoided, security vulnerabilities. The <a href="http://guides.rubyonrails.org/security.html">official Rails security guide</a> and the <a href="https://www.owasp.org/index.php/Top_10_2007">Open Web Application Security Project (OWASP) list of Web application vulnerabilities</a> would have helped catch all of the issues discussed in this article.</p>
<p>    Janet can be found on Twitter as <a href="http://twitter.com/jmswisher">@jmswisher</a>
</div>
<h3>Jay Patel</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/jay-patel.jpg" alt="A picture of Jay Patel" style="float:left; margin: 0 10px 10px 0"><a href="http://www.underworldmagazines.com/11-html5-video-players-you-should-try/">11 HTML5 Video Players You Should Try</a></p>
<p>    Jay can be found on Twitter as <a href="http://twitter.com/jaybhai">@jaybhai</a>
</div>
<h3>John Karahalis</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/john-karahalis.jpg" alt="A picture of John Karahalis" style="float:left; margin: 0 10px 10px 0"><a href="http://diveintohtml5.org/">Dive into HTML5</a>, a freely available book on HTML5 web development</p>
<p>    John can be found on Twitter as <a href="http://twitter.com/openjck">@openjck</a>
</div>
<h3>Louis-Rémi Babe</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/louis-remi-babe.jpg" alt="A picture of Louis-Rémi Babe" style="float:left; margin: 0 46px 10px 0"><br />
    <a href="https://labs.ericsson.com/apis/web-real-time-communication/">Ericson’s take on Web Real-Time Communication</a></p>
<p>    Louis-Rémi can be found on Twitter as <a href="http://twitter.com/Louis_Remi">@Louis_Remi</a>
</div>
<h3>Rob Hawkes</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/rob-hawkes.jpg" alt="A picture of Rob Hawkes" style="float:left; margin: 0 10px 10px 0"> <a href="http://www.glge.org/vehicle-physics-in-webgl-using-glge-and-jiglibjs/">Car physics demo in WebGL</a>: It’s not perfect, but this is a great demo of vehicle physics using 3D models in WebGL.</p>
<p>    Rob can be found on Twitter as <a href="http://twitter.com/robhawkes">@robhawkes</a>
</div>
<h3>Robert Nyman</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/robert-nyman.jpg" alt="A picture of Robert Nyman" style="float:left; margin: 0 10px 10px 0"><a href="http://www.scirra.com/blog/44/on-html5-audio-formats-aac-and-ogg">HTML5 Audio support in web browsers</a> &#8211; A walk-through of HTML5 codecs and their support in different web browsers, with a compatibility table.</p>
<p>    Robert can be found on Twitter as <a href="http://twitter.com/robertnyman">@robertnyman</a>
</div>
<h3>Stormy Peters</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/stormy-peters.jpg" alt="A picture of Stormy Peters" style="float:left; margin: 0 10px 10px 0"><a href="http://slides.netfools.com/">Simple HTML slides</a>. It’s really easy to create full feature slides in HTML these days. You can even have people follow along real time on the web.</p>
<p>    Stormy can be found on Twitter as <a href="http://twitter.com/storming">@storming</a>
</div>
<h3>Will Bamberg</h3>
<div style="overflow: hidden; margin-bottom: 15px">
    <img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/will-bamberg.jpg" alt="A picture of Will Bamberg" style="float:left; margin: 0 10px 10px 0"><a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-185.html">Protecting Browsers from Extension Vulnerabilities</a>: the design here formed the basis of Chrome&#8217;s extension system and influenced that of Mozilla&#8217;s Add-on SDK.
</div>
<h2>What did you read?</h2>
<p>If you have any thoughts about the above links, or anything else you would want to share with us, feel more than free to do that in a comment below!</p>
<p>We would love to hear your takes and get tips on what to read and pay notice to.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/07/introducing-mozilla-hacks-weekly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tilt: Visualize your Web page in 3D</title>
		<link>http://hacks.mozilla.org/2011/07/tilt-visualize-your-web-page-in-3d/</link>
		<comments>http://hacks.mozilla.org/2011/07/tilt-visualize-your-web-page-in-3d/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 15:18:33 +0000</pubDate>
		<dc:creator>Paul Rouget</dc:creator>
				<category><![CDATA[Add-ons]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Developer Tools]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8762</guid>
		<description><![CDATA[Tilt is a Firefox extension that lets you visualize any web page DOM tree in 3D. It is being developed by Victor Porof (3D developer responsible with the Firefox extension itself), along with Cedric Vivier (creating a WebGL optimized equivalent to the privileged canvas.drawWindow, see #653656) and Rob Campbell (who first thought about creating a [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Tilt</strong> is a Firefox extension that lets you visualize any web page DOM tree in 3D. It is being developed by <a href="http://twitter.com/victorporof">Victor Porof</a> (3D developer responsible with the Firefox extension itself), along with <a href="http://twitter.com/#%21/neonux">Cedric Vivier</a> (creating a WebGL optimized equivalent to the privileged canvas.drawWindow, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=653656">#653656</a>) and <a href="http://twitter.com/robcee">Rob Campbell</a> (who first thought about creating a 3D visualization of a webpage). Everything started initially as a Google Summer of Code project, but now, with an enthusiastic team behind it and so many new features and ideas, it has become an active Developer Tools project.</em></p>
<p><iframe type="text/html" width="500" height="360" src="http://www.youtube.com/embed/dW2eAbr5FBw" frameborder="0"></iframe></p>
<p>Tilt is a fun new Firefox extension focused on creating a 3D visualization of a webpage.</p>
<p>Since the DOM is essentially a tree-like representation of a document, this tool layers each node based on the nesting in the tree, creating stacks of elements, each having a corresponding depth and being textured according to the webpage rendering itself.</p>
<p>Unlike other developer tools or inspectors, Tilt allows for instant analysis of the relationship between various parts of a webpage in a graphical way, but also making it easy for someone to see obscured or out-of-page elements. Moreover, besides the 3D stacks, various information is available on request, regarding each node’s type, id, class, or other attributes if available, providing a way to inspect (and edit) the inner HTML and other properties.</p>
<h2>Based on WebGL</h2>
<p>The visualization is drawn using WebGL, for dynamic, fast, in-browser rendering. At initialization, Tilt creates individual 3D objects (structures describing how the webpage geometry looks like) using the DOM, with the BODY as the lowest layer and the base of the document upon which descendant nodes are layered. For each successive level, another platform is built, adding depth to the 3D webpage mesh. For example, stacks are built from DIVs, ULs, or any containing node with children.</p>
<h2>Controls</h2>
<p>Controlling the visualization is achieved using a virtual trackball (arcball), which rotates around the X and Y axes. Other mouse events exist to control yaw, pitch, roll, pan, zoom, as well as various additional keyboard shortcuts. The controller is not tied to these peripherals only however, making it accessible and easily scalable for other input methods or devices. Double clicking a node brings up the Ace Cloud9 IDE editor, showing more useful information about the node and the inner HTML.</p>
<h2>Try it</h2>
<p>You can find the Tilt source code and the latest extension builds <a href="https://github.com/victorporof/Tilt">on Github</a>, and a development blog with milestone updates on <a href="http://blog.mozilla.com/tilt">blog.mozilla.com/tilt</a>.</p>
<p>For now, to test the extension, just download the latest stable build (<a href="https://github.com/victorporof/Tilt/raw/master/bin/Tilt.xpi">tilt.xpi</a>: <em>download the file, then open it with Firefox or drag&#8217;n drop it on Firefox</em>), install it and search for Tilt inside the Tools menu. Or, you can use Ctrl+Shift+L (or Cmd+Shift+L if you’re on a Mac) to start the visualization. Close it at any time with the Esc key. Tilt works with any webpage, so you can even inspect this blog to see how it looks in 3D.</p>
<p><a href="http://hacks.mozilla.org/wp-content/uploads/2011/07/screenshot.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/07/screenshot-500x310.png" alt="" title="Tilt" width="500" height="310" class="aligncenter size-large wp-image-8766" /></a></p>
<h2>Future</h2>
<p>More features are soon to be added, some of which include: modifying and updating the 3D webpage mesh on the fly (as the webpage changes, exposing CSS transforms for each node, plus customizing stack spacing, thickness, transparency etc.), rendering elements with absolute position or floats differently (e.g., hovering above the webpage based on their z-index), creating a more developer-friendly environment and better integration with the Ace editor and the Firefox Developer Tools. (highlighting the currently selected node, instant 3D preview), exporting the visualization to other browsers or applications (as a 3D object file, probably .obj and/or COLLADA).</p>
<p>The greatest milestone will be achieving seamless 3D navigation between webpages,  as in a normal 2D environment.</p>
<p>For more information about upcoming tasks visit the <a href="https://github.com/victorporof/Tilt/blob/master/TODO.md">TODO.md</a> list.</p>
<style>
em, p {
text-align:justify;
}
</style>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/07/tilt-visualize-your-web-page-in-3d/feed/</wfw:commentRss>
		<slash:comments>101</slash:comments>
		</item>
		<item>
		<title>HTML5 APIs &#8211; Where No Man Has Gone Before! &#8211; Presentation at Gotham JS</title>
		<link>http://hacks.mozilla.org/2011/07/html5-apis-where-no-man-has-gone-before-presentation-at-gotham-js/</link>
		<comments>http://hacks.mozilla.org/2011/07/html5-apis-where-no-man-has-gone-before-presentation-at-gotham-js/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 13:21:04 +0000</pubDate>
		<dc:creator>Robert Nyman</dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[FileAPI]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8758</guid>
		<description><![CDATA[Last weekend I was in New York City to speak at the GothamJS conference and Mozilla also sponsored it. It was a nice event with about 200 attendees, taking place in the NYIT Auditorium on Broadway. The event was one-track with 8 speakers, and personally I always prefer when it&#8217;s just one track for follow-up [...]]]></description>
			<content:encoded><![CDATA[<p>Last weekend I was in New York City to speak at the <a href="http://www.gothamjs.com/">GothamJS conference</a> and Mozilla also sponsored it. It was a nice event with about 200 attendees, taking place in the <a href="http://www.nyit.edu/aob/">NYIT Auditorium on Broadway</a>. </p>
<p>The event was one-track with 8 speakers, and personally I always prefer when it&#8217;s just one track for follow-up discussions and that everyone have seen and heard the same thing. The topics were ranging broadly between script loaders and HTML5 in one end, and voice-controlled telephony applications in the other.</p>
<h3>My presentation</h3>
<p>My talk was about HTML5 APIs in general, to give an introduction to them but also to inspire people to try things out and also give feedback to both working groups and web browser vendors about current implementations.</p>
<p><iframe style="border:none;width:510px;height:425px;" src="http://icant.co.uk/slidesharehtml/embed.php?url=http://www.slideshare.net/robnyman/html5-apis-where-no-man-has-gone-before-gothamjs&amp;width=460&amp;current=1"></iframe></p>
<p><a href="http://www.slideshare.net/robnyman/html5-apis-where-no-man-has-gone-before-gothamjs">Slides can also be downloaded at SlideShare</a>.</p>
<p>Additionally to the APIs covered in my <a href="http://hacks.mozilla.org/2011/07/html5-and-css3-exploring-mobile-possibilities-presentation-at-london-ajax-mobile-event/">London Ajax Mobile Event presentation</a>, I went through <a href="https://developer.mozilla.org/en/WebSockets">Web Sockets</a>, <a href="https://developer.mozilla.org/en/Using_files_from_web_applications">File API</a>, <a href="https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox">HTML5 video</a>, <a href="https://developer.mozilla.org/en/HTML/canvas">canvas</a> and <a href="https://developer.mozilla.org/en/WebGL">WebGL</a>. Also, if you are more interested in the &lt;canvas&gt; element, my colleague Rob Hawkes recently released the <a href="http://rawkes.com/foundationcanvas">Foundation HTML5 Canvas book</a>.</p>
<p>What I especially liked talking about is services like <a href="http://vid.ly/">vid.ly</a> which helps you take control over the problem of different video codec support in different web browsers, by storing various formats and then deliver the most suitable one depending on the web browser/device accessing it. </p>
<p>Another favorite is <a href="http://www.universalsubtitles.org/en/">Universal Subtitles</a>, which is an excellent tool for everyone to be able to add subtitles to a video clip, empowering users with varying language skills to take part of a video and its content and sharing it with the world.</p>
<p>An option to make the content of a web site richer, there is <a href="http://popcornjs.org/">Popcorn.js</a> to sync key events in the video playing to what kind of text or other information you want to present to go with that. To complement that, the <a href="http://butterapp.org/">Butterapp</a> is an editor to create that kind of content syncing, currently in alpha.</p>
<p>I also mentioned <a href="https://developer.mozilla.org/en-US/demos/detail/videograbber/launch">videograbber</a> for taking easy video screenshots in the web browser. </p>
<h3>Dev Derby &lt;video&gt; challenge</h3>
<p>I also want to take the opportunity to remind you that <a href="https://developer.mozilla.org/en-US/demos/devderby">Mozilla Dev Derby</a> has a challenge for what you can accomplish with the &lt;video&gt; that goes till the end of July, so please submit anything if you have a good idea!</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/07/html5-apis-where-no-man-has-gone-before-presentation-at-gotham-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-domain WebGL textures disabled in Firefox 5</title>
		<link>http://hacks.mozilla.org/2011/06/cross-domain-webgl-textures-disabled-in-firefox-5/</link>
		<comments>http://hacks.mozilla.org/2011/06/cross-domain-webgl-textures-disabled-in-firefox-5/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 19:32:50 +0000</pubDate>
		<dc:creator>Benoit Jacob</dc:creator>
				<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=8303</guid>
		<description><![CDATA[In Firefox 5, it is no longer possible to use cross-domain elements as the source for WebGL textures. We made this change in response to security concerns around the possibility of cross domain information leakage. Unfortunately, that means that some WebGL-using pages are no longer working. We are working with the WebGL WG on a [...]]]></description>
			<content:encoded><![CDATA[<p>In Firefox 5, it is no longer possible to use cross-domain elements as the source for WebGL textures. We made this change in response to security concerns around the possibility of cross domain information leakage. Unfortunately, that means that some WebGL-using pages are no longer working. We are working with the WebGL WG on a solution to allow such pages to resume working as soon as possible &#8212; read on for details.</p>
<h3>The security rules about cross-domain images</h3>
<p>A cross-domain image is an image coming from a different domain than the canvas. A basic rule of Web security is that scripts must not be able to read pixel data from cross-domain images &#8212; they can only &#8220;blindly&#8221; display them. In more concrete terms, imagine that you currently have a session open on your bank&#8217;s website, allowing you to download scanned copies of cheques you&#8217;ve written. You don&#8217;t want scripts loaded in other tabs, from other websites, to be able to read your scanned cheques! Similarly,  when you draw a cross-domain image onto a 2D canvas, using drawImage(),  the canvas becomes “tainted” so that it’s no longer possible for  scripts to read its pixels. This prevents a loophole whereby a canvas  would be used as a proxy to read cross-domain images.</p>
<h3>The problem with cross-domain images as WebGL textures</h3>
<p>When a cross-domain image was used as a WebGL texture, the WebGL canvas was &#8220;tainted&#8221; so that reading from it was no longer possible. Theoretically, that eliminated the concern. But a while ago, a researcher wrote to the public WebGL list with a <a href="http://www.khronos.org/webgl/public-mailing-list/archives/1010/msg00034.html">possible attack</a> that could still allow reading pixels from WebGL textures. The idea was to paint the texture one pixel at a time with a WebGL fragment shader crafted to take an amount of time proportional to its brightness, and then time how long it takes: that would conceivably allow to get an approximation of the original image. Initially this attack seemed difficult to execute practically, but since then further research, including a <a href="http://www.contextis.co.uk/resources/blog/webgl/poc/index.html">proof-of-concept</a> has been published which shows the attack to be more realistic than initially expected.</p>
<h3>The response</h3>
<p>The WebGL spec has been <a href="http://www.khronos.org/registry/webgl/specs/latest/#4.2">updated</a> to disallow using cross-domain images as WebGL textures, and Mozilla&#8217;s implementation in Firefox 5 has been <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=656277">updated</a> accordingly. A non-normative section has also been added allowing cross-domain images that have <a href="http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing">CORS</a> approval. Using CORS in this case is a way for servers to explicitly say when an image is OK to be read by cross-domain scripts. CORS support for WebGL is a high priority for us and will be <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=662599">implemented</a> very soon.</p>
<p>A <a href="https://developer.mozilla.org/en/WebGL/Cross-Domain_Textures">wiki page</a> explains some more details. Affected scripts will generate a DOM_SECURITY_ERR exception and, just before that, a JS warning explaining what happened and linking to that wiki page.</p>
<div id="magicdomid16">Having to make this change is unfortunate, as it breaks <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=662570">some existing Web content</a>. We initially wanted to wait for the CORS approach to be implemented before we blocked cross-domain textures. Our primary priority has always been the safety of our users, though, and so we decided to fix the security issue immediately in Firefox 5. This timing also accounts for the fact that CORS handling will become increasingly useful only as online content providers roll out support.</div>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/06/cross-domain-webgl-textures-disabled-in-firefox-5/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>The story of an Audio &amp; WebGL Demo: No Comply</title>
		<link>http://hacks.mozilla.org/2011/03/nocomply/</link>
		<comments>http://hacks.mozilla.org/2011/03/nocomply/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 16:49:27 +0000</pubDate>
		<dc:creator>Paul Rouget</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Firefox 4]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=7727</guid>
		<description><![CDATA[The audio team is made up of a group Mozilla volunteers who developed the Audio API and, most recently,  a new generation of WebGL demos. This is the story of the development of the No Comply demo. In the fall, after finishing Flight of the Navigator, our team of audio and WebGL hackers was looking [...]]]></description>
			<content:encoded><![CDATA[<p><em><br />
The audio team is made up of a group Mozilla volunteers who developed the <a href="https://developer.mozilla.org/en/Introducing_the_Audio_API_Extension">Audio API</a> and, most recently,  a new generation of WebGL demos. This is the story of the development of the <a href="http://webofwonder.org/en-US/#nocomply">No Comply</a> demo.<br />
</em></p>
<p><a href="http://hacks.mozilla.org/wp-content/uploads/2011/03/nocomply.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/03/nocomply-500x293.png" alt="" title="nocomply" width="500" height="293" class="aligncenter size-large wp-image-7738" /></a></p>
<p>In the fall, after finishing <a href="https://demos.mozilla.org/en-US/#fotn">Flight of the Navigator</a>, our team of audio and WebGL hackers was looking for a new challenge.  We&#8217;d finished the new Audio API in time for Firefox 4, and were each maintaining various open web libraries, exploiting the new features of HTML5, Audio, JavaScript, and WebGL. We wanted to take another shot at testing the limits of Firefox 4 &#8211; then, still in beta.</p>
<p><a href="http://kraddyodaddy.com"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/03/kraddy-logo-220x125.png" alt="" title="kraddy-logo" width="220" height="125" style="background-color: black; float: right; padding: 10px; margin: 10px;" /></a></p>
<p><a href="http://twitter.com/binder">Seth Bindernagel</a> had the answer.  He&#8217;d been in contact with a DJ and producer friend named <a href="http://kraddyodaddy.com/">Kraddy</a>, who had just finished an amazing new album.  &#8220;What if we tried to do something with his sound?&#8221;  The idea was too good to pass up, and with Kraddy&#8217;s support, we dove into the tracks and started imagining what these songs might look like, when interpreted through the medium of the web.</p>
<p><q style="font-style: italic; font-size: 1.5em; text-align: left; ">«The web that Firefox 4 makes possible is a web ready for artists, developers, filmmakers, and musicians alike»</q></p>
<p>Kraddy&#8217;s music was easy to demo because of its complex nature, with plenty of emphatic transitions and cue points&#8211;this music wants to be visualized!  The music for No Comply also provided a dark and introspective sound on which to build a narrative.  On <a href="http://kraddyodaddy.com/the-meaning-of-labyrinth/">his blog</a>, Kraddy had already written about how he understood the album&#8217;s meaning:</p>
<blockquote><p>This EP is about Theseus&#8217; decision to be a hero and his decent into the Labyrinth to kill the Minotaur. In a broader sense the EP is about the battle we all face when we challenge ourselves as people.  We must enter the Labyrinth of our minds and at the center we find our  greatest fears.  To defeat those fears we must kill a part of ourselves. And in killing a part of ourselves we create the potential to grow into a more developed person.</p></blockquote>
<p>Kraddy&#8217;s vision informed our early outlines and <a href="http://audioscene.org/scene-files/humph/boards.pdf">storyboards</a>.  We knew that we wanted to play on the story of the Minotaur and the Maze, and the idea of facing down ones&#8217; own fears.  Together we came up with the idea of re-telling the story using a mixture of real-life video and 8-bit video game styling.  Because the album was deeply personal to Kraddy, we decided to feature him in the demo.  Kraddy agreed to be filmed, and <a href="http://twitter.com/remixmanifesto">Brett Gaylor</a> used the footage to create the opening and closing video sequences.  We also used Kraddy as the inspiration for the demo&#8217;s main video game character.</p>
<p><a href="http://audioscene.org/scene-files/humph/boards.pdf"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/03/sb-250x387.png" alt="" title="sb" width="210" style="float: right;  margin: 10px;" /></a></p>
<p>The launch of Firefox 4 brings a lot to the web, not least WebGL.  As the web shifts from a 2D-only to a 2D and 3D space, we wanted to explore the intersection of these two familiar graphical paradigms.  Rather than picking just one, we chose to create a hybrid, dream world, composed of 3D and 2D elements.  Many people will recognize in our 2D characters and graphics an homage to much earlier video games, like Double Dragon.  We wanted to celebrate the fact that these two paradigms can now exist together in a simple web page&#8211;everything we do in the demo is one web page, whether audio, video, 2D, 3D, or text.</p>
<p>Like the <a href="https://demos.mozilla.org/en-US/#fotn">Flight of the Navigator(FOTN)</a> demo before it, we chose the <a href="https://github.com/cjcliffe/CubicVR.js">CubicVR.js</a> engine to drive all the 3D graphics. Over the months leading up to the demo, <a href="http://twitter.com/ccliffe">Charles J. Cliffe</a> had begun the painstaking process of porting features from his C++ engine over to JavaScript.  The simple environment of WebGL and JavaScript allowed for features that even his C++ version did not yet posses to be quickly prototyped.  Many bottlenecks had to be overcome during iterations of the demo, as we wanted to push the limits further than before. The biggest hurdle was visibility and lighting.  Luckily, <a href="http://twitter.com/secretrobotron">Bobby Richter</a> came to the rescue.  Using his experience with Octrees, he was able to work with Charles to produce a visibility and lighting pipeline which provides impressive performance for the task. In contrast, FOTN has no visibility system and was shaded by a single global directional light and ambient surface textures (for window lights, etc.) to simulate the rest.  In No Comply we were able to push the limits with high poly counts and many overlapping point lights and were still able to reach the framerate cap.</p>
<p><a href="http://hacks.mozilla.org/wp-content/uploads/2011/03/nocomply2.png"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/03/nocomply2-500x293.png" alt="" title="nocomply2" width="500" height="293" class="aligncenter size-large wp-image-7739" /></a></p>
<p>Creating a 3D world like the one in this demo requires a lot of original content creation, which in turn requires some sophisticated tools. Instead of developing our own, and in the open-nature of our group, we decided to use existing technology like <a href="http://www.blender.org/">Blender</a>. The community that develops Blender and creates content with it is rich and diverse, and because it&#8217;s an open tool, we could add the features we needed when they weren&#8217;t already present.</p>
<p>Our preference for open technologies also meant that the <a href="https://collada.org/mediawiki/index.php/COLLADA_-_Digital_Asset_and_FX_Exchange_Schema">COLLADA</a> scene format was an obvious choice. Unfortunately, as of version 2.49, Blender exports an Autodesk-inspired format of COLLADA, which isn&#8217;t quite up to the official standard, missing many important bits of information. Fixing this directly in Blender (with a little bit of Python hacking) let CubicVR stay standards-compliant, and let us milk Blender for all of the scene information we could think of using.</p>
<p>The demo&#8217;s 3D modelling, while important, comprises perhaps only half of No Comply&#8217;s original content. An incredible undertaking on the part of <a href="http://twitter.com/thesearethings">Omar Noory</a> provided the textures for the rich environment through which Kraddy rumbles and tumbles. Frequently, spontaneous requests for &#8220;an 8 bit trash can,&#8221; &#8220;a cool sign with our names on it,&#8221; or, &#8220;some beefy bad lookin&#8217; dudes&#8221; were answered almost instantly by Omar&#8217;s gracious and masterful digital pen.  You may have recognized Omar&#8217;s name from his claim to meme-fame with <a href="http://knowyourmeme.com/memes/haters-gonna-hate">&#8220;Haters Gonna Hate&#8221;</a>.</p>
<p>Adding the perfect amount of flare to the graphics pipeline is <a href="http://twitter.com/F1LT3R">Al MacDonald&#8217;s</a> <a href="https://github.com/F1LT3R/burst-core">Burst animation engine</a>. Al not only wrote our sprite animation engine, but also the <a href="https://github.com/F1LT3R/sprite-viking">web-based toolset</a> we used to create the animations.  The 8-bit Kraddy and all of No Comply&#8217;s 8-bit baddies are driven by animation paths prepared with Burst, and engineered with a set of tools that work right inside the browser.</p>
<p><a href="http://hacks.mozilla.org/wp-content/uploads/2011/03/screenshot2.jpg"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/03/screenshot2.jpg" alt="" title="nocomply" width="458" height="230" class="aligncenter size-full wp-image-7743" /></a></p>
<p>In addition to cutting edge graphics with WebGL and &lt;canvas&gt;, we also wanted to explore how far we could push the new <a href="https://wiki.mozilla.org/Audio_Data_API">Firefox 4 Audio API</a> we&#8217;d developed.  The Audio Data API allows us to do many new things with the HTML5 &lt;audio&gt; and &lt;video&gt; tags, such as outputting generated audio and revealing realtime audio data to JavaScript. Libraries like <a href="http://twitter.com/corban">Corban Brook&#8217;s</a> <a href="https://github.com/corbanbrook/dsp.js">DSP.js</a> and and Charles&#8217; <a href="http://sourceforge.net/projects/beatdetektor/">BeatDetektor.js</a> were used to analyze the audio in realtime and trigger various effects and animation sequences. Tracks of audio triggers were also recorded for tighter sequencing of key elements in the song we wanted to emphasize. One of the really new techniques we played with a lot in the demo was controlling GLSL shaders and lighting directly with audio, punching in and out with every beat and clap.  Unlike most treatments of audio on the web, in this demo the song isn&#8217;t a background element, but is woven into the fabric of all the visuals and effects.</p>
<p>Getting  a demo of this scale to work in the browser means figuring out how to make every bit of it work fast, and keep framerates high.  Everything we do in the demo, from loading and parsing massive COLLADA models, to controlling 3D scene graphs, to analyzing real-time audio data, is done with JavaScript.  We think it&#8217;s important to point this out because so many people begin with the assumption that JavaScript isn&#8217;t fast enough for the kind of work we&#8217;re presenting.  The truth is that modern JavaScript, like that in Firefox 4, has been so heavily optimized that we all need to rethink what is and isn&#8217;t possible on the web.</p>
<p>We&#8217;ve taken advantage of a bunch of Firefox 4&#8242;s new performance features, as well as new HTML5 goodies, in order to make this all possible.  For example <a href="https://developer.mozilla.org/en/using_web_workers">Web Workers</a> let us move heavy resource parsing off the main thread, freeing it for audio analysis and 3D effects. While a large portion of each second is consumed by simply pushing information to the video card, it isn&#8217;t necessary for the browser to wait for that to happen. In the background, we can use other threads to load and parse data, so that it&#8217;s ready to draw when the main thread needs it. Of course, a host of problems arise immediately whenever concurrency is involved, but we managed to draw a large performance and overall stability increase by utilizing Web Workers.</p>
<p>Another performance trick was using JavaScript <a href="https://developer.mozilla.org/en/JavaScript_typed_arrays">Typed Arrays</a>, which give us a tremendous speed boost when working with audio and pixel data. When you&#8217;re analyzing slices of audio data hundreds of bytes wide as fast as possible, your Fourier Transform code needs to be blazingly quick. Thanks to Corban&#8217;s highly optimized dsp.js library, this was hardly on our minds.</p>
<p>Next, we spent a lot of time optimizing our JavaScript so that it could take advantage of Firefox&#8217;s <a href="https://developer.mozilla.org/En/SpiderMonkey/Internals/Tracing_JIT">Tracing</a> and Method JIT. Writing code that can be easily byte-compiled by the browser makes sure that anything we write runs as fast as possible. This is a fairly new and surprising concept, especially to those who remember the JavaScript of yesterday.
<p>Part of what appealed to us about writing this demo was that it let those of us who are browser developers, and those of us who are web developers, work together on a single project.  Most of the technology showcased in this demo was made on bleeding edge Firefox nightlies and our development process involved lots of feedback about performance or stability issues in the browser.  <a href="http://twitter.com/humphd">Dave Humphrey</a> focused on the internals of the Audio API, instrumenting and profiling our JavaScript, and helped us work closely with Mozilla&#8217;s JavaScript, graphics, and WebGL engineers.  People like Benoit Jacob and Boris Zbarsky, among others, were indispensable as we worked to fix various bottlenecks.  Part of what makes Mozilla such a successful project is that their engineers are not locked away, unable to work with web developers.  Having engineers at our beck and call was essential to our success with such a demanding schedule, and we were proud to be able to help Mozilla test and improve Firefox 4 along the way.</p>
<p>Beyond the technical aspects of the demo, it also points to the spirit of how these technologies are meant to be used.  We worked as a distributed team during evenings and on weekends, to plan and code and create everything, from the tools we needed to the graphical resources to the demo&#8217;s final code.  Some of our team are browser developers, some web and audio hackers, others are graphic designers or filmmakers, still others storytellers and writers&#8211;everyone had a place around the table, and a role to play.  We think this is part of what makes the web such a powerful platform for creative and collaborative work: there isn&#8217;t one right way to be, no single technology you need to know, and the techniques and tools are democratized and open to anyone willing to pick them up.  <strong>The web that Firefox 4 makes possible is a web ready for artists, developers, filmmakers, and musicians alike</strong>.</p>
<style>
p {text-align: justify}
</style>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/03/nocomply/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Firefox 4 Demos: More 3D!</title>
		<link>http://hacks.mozilla.org/2011/03/webowonder-3d/</link>
		<comments>http://hacks.mozilla.org/2011/03/webowonder-3d/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 16:47:28 +0000</pubDate>
		<dc:creator>Paul Rouget</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Featured Article]]></category>
		<category><![CDATA[Featured Demo]]></category>
		<category><![CDATA[Firefox 4]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=7679</guid>
		<description><![CDATA[Firefox 4 is here! Yeah! And to celebrate the launch, we have released another round of demos on Web O&#8217; Wonder, with 3 awesome WebGL demos! (This new round also introduces mobile-specific demos, see this dedicated blog post). WebGL: It&#8217;s 3D and Web Content together. Demo by Cédric Pinson and Guillaume Lecollinet. GlobeTweeter is a [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox 4 is <a href="http://blog.mozilla.com/blog/2011/03/22/mozilla-launches-firefox-4-and-delivers-a-fast-sleek-and-customizable-browsing-experience-to-more-than-400-million-users-worldwide-2/">here</a>! Yeah!</p>
<p><a href="https://developer.mozilla.org/en/WebGL"><img src="http://hacks.mozilla.org/wp-content/uploads/2011/03/webgl_200px.gif" alt="webgl logo" title="webgl logo" width="163" height="75" class="alignright size-full wp-image-7722" /></a>And to celebrate the launch, we have released another round of demos on <a href="http://webofwonder.org/">Web O&#8217; Wonder</a>, with 3 awesome WebGL demos! (<em>This new round also introduces mobile-specific demos, see this <a href="http://hacks.mozilla.org/2011/03/webowonder-mobile/">dedicated blog post</a></em>).</p>
<p><strong>WebGL: It&#8217;s 3D and Web Content together.</strong></p>
<p><em>Demo by <a href="http://twitter.com/trigrou">Cédric Pinson</a> and <a href="http://twitter.com/glecollinet">Guillaume Lecollinet</a>.</em></p>
<p><a href="http://webofwonder.org/#globetweeter">GlobeTweeter</a> is a perfect example of how you can mix 3D and Web Content. In this page, you can see real-time geo-located twitter activity represented on the planet earth.</p>
<p><iframe width="480" height="330" src="http://www.youtube.com/embed/fWuPWaBbS_o" frameborder="0" allowfullscreen></iframe></p>
<p><strong>WebGL animations</strong></p>
<p><em>Demo by <a href="http://audioscene.org/">The Audio Team</a>.</em></p>
<p><a href="http://webofwonder.org/#nocomply">No-Comply</a> is a WebGL animation. With <a href="https://hacks.mozilla.org/category/jagermonkey/">JägerMonkey</a> (Firefox&#8217;s new JavaScript engine) and the experimental animation scheduler (<a href="https://hacks.mozilla.org/2010/08/more-efficient-javascript-animations-with-mozrequestanimationframe/">mozRequestAnimationFrame</a>), we can now create complex WebGL animations.</p>
<p><a href="http://hacks.mozilla.org/2011/03/nocomply">Learn more about the no comply demo</a>.</p>
<p><iframe width="480" height="330" src="http://www.youtube.com/embed/FsTXlcENeVo" frameborder="0" allowfullscreen></iframe></p>
<p>This demo has been developed by the <a href="http://audioscene.org">audio team</a> who has also created the <a href="http://webofwonder.org/#fotn">Flight Of The Navigator</a> demo, where you can find Videos and live Flickr and Twitter content in a 3D city, all build with WebGL:</p>
<p><iframe width="480" height="330" src="http://www.youtube.com/embed/gYbmtd5O3Q0" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/03/webowonder-3d/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Upgrade your graphics drivers for best results with Firefox 4</title>
		<link>http://hacks.mozilla.org/2011/03/upgrade-your-graphics-drivers-for-best-results-with-firefox-4/</link>
		<comments>http://hacks.mozilla.org/2011/03/upgrade-your-graphics-drivers-for-best-results-with-firefox-4/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 18:04:13 +0000</pubDate>
		<dc:creator>Janet Swisher</dc:creator>
				<category><![CDATA[Firefox 4]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=7401</guid>
		<description><![CDATA[Benoit Jacob from the platform engineering team has a blog post on how to best take advantage of hardware acceleration and WebGL in Firefox 4, namely: Upgrade your graphics drivers! Firefox 4 automatically disables the hardware acceleration and WebGL features if the graphics driver on your system has bugs that cause Firefox to crash. You [...]]]></description>
			<content:encoded><![CDATA[<p>Benoit Jacob from the platform engineering team has a blog post on how to best take advantage of hardware acceleration and WebGL in Firefox 4, namely: <a href="http://blog.mozilla.com/bjacob/2011/03/04/upgrade-your-graphics-drivers/">Upgrade your graphics drivers!</a></p>
<p>Firefox 4 automatically disables the hardware acceleration and WebGL features if the graphics driver on your system has bugs that cause Firefox to crash. You still get all the other benefits of Firefox 4, of course, just not the newest graphics features. But for best results, you need an up-to-date graphics driver that fixes those bugs.</p>
<ul>
<li>Windows users with Intel cards: you need a <a href="https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#Intel_cards">very recent driver</a>.</li>
<li>Windows users with NVIDIA cards: you need <a href="https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#NVIDIA_cards">driver version 257.21 or newer</a>.</li>
<li>Windows users with ATI cards: you need <a href="https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#AMD.2FATI_cards">driver version 10.6 or newer</a>.</li>
<li>Instructions are also given for <a href="https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#On_Mac">Mac</a> and <a href="https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#On_X11">X11 (Linux/Unix)</a>.</li>
</ul>
<p>If you&#8217;re planning to develop using WebGL, you need to also spread this message to your users, so they will be able to experience the awesome results of your hard work.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2011/03/upgrade-your-graphics-drivers-for-best-results-with-firefox-4/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Firefox 4 Beta: Latest Update is Here, with WebGL</title>
		<link>http://hacks.mozilla.org/2010/12/firefox4b8/</link>
		<comments>http://hacks.mozilla.org/2010/12/firefox4b8/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 19:41:09 +0000</pubDate>
		<dc:creator>Paul Rouget</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Featured Demo]]></category>
		<category><![CDATA[Firefox 4]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=6892</guid>
		<description><![CDATA[The new Firefox 4 Beta is here, and comes with WebGL activated by default. You can download this new beta here: http://firefox.com/beta. Flight of the Navigator is a WebGL + Audio API demo developed by a team of Mozilla volunteers. You can see the demo online here (you need a WebGL compatible browser). More information [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The new Firefox 4 Beta is here, and comes with WebGL activated by default.</strong> You can download this new beta here: <a href="http://firefox.com/beta">http://firefox.com/beta</a>.</p>
<p><em>Flight of the Navigator</em> is a WebGL + Audio API demo developed by a team of Mozilla volunteers.</p>
<p>You can see the <a href="http://videos.mozilla.org/serv/mozhacks/flight-of-the-navigator/">demo online here</a> (you need a WebGL compatible browser).</p>
<p>More information about this demo on <a href="http://vocamus.net/dave/?p=1233">David Humphrey&#8217;s blog</a> (one of the developer of this demo) and more <a href="http://blog.vlad1.com/2010/12/21/webgl-in-firefox-4-beta-8/">about WebGL in Firefox Beta8 on Vlad&#8217;s blog</a>.</p>
<p>The screencast:</p>
<p><video controls width="500" preload="auto" poster="http://hacks.mozilla.org/wp-content/uploads/2010/12/fotn.jpg"><br />
	<source src="http://videos-cdn.mozilla.net/serv/firefox4beta/ants/FlightDemo.mp4" type="video/mp4" /><br />
	<source src="http://videos-cdn.mozilla.net/serv/firefox4beta/ants/FlightDemo.theora.ogv" type="video/ogg" /><br />
	<source src="http://videos-cdn.mozilla.net/serv/firefox4beta/ants/FlightDemo.webm" type="video/webm" /><br />
</video></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2010/12/firefox4b8/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
<enclosure url="http://videos-cdn.mozilla.net/serv/firefox4beta/ants/FlightDemo.mp4" length="31660810" type="video/mp4" />
<enclosure url="http://videos-cdn.mozilla.net/serv/firefox4beta/ants/FlightDemo.theora.ogv" length="84597450" type="video/ogg" />
<enclosure url="http://videos-cdn.mozilla.net/serv/firefox4beta/ants/FlightDemo.webm" length="36557464" type="video/webm" />
		</item>
		<item>
		<title>Beyond HTML5: experiments with interactive audio</title>
		<link>http://hacks.mozilla.org/2010/04/beyond-html5-experiments-with-interactive-audio/</link>
		<comments>http://hacks.mozilla.org/2010/04/beyond-html5-experiments-with-interactive-audio/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 18:57:33 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Audio]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Device APIs]]></category>
		<category><![CDATA[Featured Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Multi-touch]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=4659</guid>
		<description><![CDATA[This is a re-post of an important post from David Humphrey who has been doing a lot of experiments on top of Mozilla&#8217;s extensible platform and doing experiments with multi-touch, sound, video, WebGL and all sorts of other goodies. It&#8217;s worth going through all of the demos below. You&#8217;ll find some stuff that will amaze [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a <a href="http://vocamus.net/dave/?p=1074">re-post of an important post from David Humphrey</a> who has been doing a lot of experiments on top of Mozilla&#8217;s extensible platform and doing experiments with multi-touch, sound, video, WebGL and all sorts of other goodies.  It&#8217;s worth going through all of the demos below.  You&#8217;ll find some stuff that will amaze and inspire you.</em></p>
<p><em>David&#8217;s work is important because it&#8217;s showing where the web is going, and where Mozilla is helping to take it.  It&#8217;s not enough that we&#8217;re working on HTML5, which we&#8217;re about finished with, but we&#8217;re trying to figure out what&#8217;s next.  Mozilla&#8217;s platform, Gecko, is a huge part of why we&#8217;re able to experiment and learn as fast as we can.  And that&#8217;s reflected with what&#8217;s possible here.  It&#8217;s a web you can see, touch and interact with in new ways.</em></p>
<p><em>David&#8217;s post follows:</em></p>
<p>I’m working with an ever growing group of web, audio, and Mozilla  developers on <a href="http://vocamus.net/dave/?p=974">a project</a> to expose audio  spectrum data to JavaScript from Firefox’s audio and video elements.  Today we show what we did at www2010.</p>
<p>I&#8217;m in Raleigh, North Carolina, with <a href="https://twitter.com/F1LT3R/">Al MacDonald</a> for the <a href="http://www2010.org/www/">www2010</a> conference.  We&#8217;re here to present our work on exposing audio data in the browser.  Over the past month <a href="https://twitter.com/corban">Corban</a>, <a href="https://twitter.com/ccliffe">Charles</a>, and a bunch of other friends have been working with us to refine the API and get new types of demos ready.  We ended-up with 11 demos, some of which I&#8217;ve shown here before.  Here are the others.</p>
<p>The first was done by <a href="http://twitter.com/jseidelin">Jacob Seidelin</a>, and shows many cool 2D visualizations of audio using our API.  You can see the <a href="http://blog.nihilogic.dk/2010/04/html5-audio-visualizations.html">live version</a> on his site, or check out <a href="http://vimeo.com/11355121">this video</a>:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11355121&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11355121&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The second and third demos where done by <a href="https://twitter.com/ccliffe">Charles Cliffe</a>, and show 3D visualizations using WebGL and his <a href="http://www.cubicvr.org/">CubicVR engine</a>.  These also show off his JavaScript beat detection code.  Is JavaScript fast enough to do real-time analysis of audio and synchronized 3D graphics?  Yes, yes it is.  The live versions are <a href="http://cubicvr.org/CubicVR.js/BeatDetektor2HD.html">here</a> and <a href="http://cubicvr.org/CubicVR.js/BeatDetektor1HD.html">here</a>, and here are <a href="http://vimeo.com/11345262">some</a> <a href="http://vimeo.com/11345685">videos</a>:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11345262&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11345262&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11345685&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11345685&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The fourth demo was done by <a href="https://twitter.com/corban">Corban Brook</a> and shows how audio data can be mixed live using script.  Here he mutes the main audio, plays it, passes the data through a low pass filter written in JavaScript, then dumps the modified frames into a second audio element to be played.  It&#8217;s a technique we need to apply more widely, as it holds a lot of potential.  Here&#8217;s the <a href="http://weare.buildingsky.net/processing/dsp.js/examples/filter.html">live version</a>, and here&#8217;s a <a href="http://vimeo.com/11335434">video</a> (check out his updated <a href="http://weare.buildingsky.net/processing/dsp.js/examples/synthesizer.html">JavaScript synthesizer</a>, which we also presented):</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11335434&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11335434&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The fifth and sixth demos were done by Al (with the help of many).  When I was last in Boston, for the Processing.js meetup at Bocoup, we met with <a href="http://twitter.com/shepazu">Doug Schepers</a> from the W3C.  He loved our stuff, and was talking to us about ideas that would be cool to build.  He pulled out his iPhone and showed us <a href="http://vimeo.com/2184392">Brian Eno&#8217;s Bloom</a> audio app.  &#8220;It would be cool to do this in the browser.&#8221;  Yeah, it is cool, and here it is, written in a <a href="http://code.bocoup.com/bloop/color/bloop.html">few hundred lines of JavaScript and Processing.js</a> (<a href="http://vimeo.com/11346141">video 1</a>, <a href="http://vimeo.com/11345133">video 2</a>):</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11346141&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11346141&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11345133&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11345133&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>This demo also showcases the awesome work of <a href="http://felipe.wordpress.com/">Felipe Gomes</a>, who has a patch to add <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=508906">multi-touch DOM events to Firefox</a>.  The method we&#8217;ve used here can be taken a lot further.  Imagine being able to connect multiple browsers together for collaborative music creation, layering other audio underneath, mixing fragments vs. just oscillators, etc.  We built this one in a week, and the web is capable of a lot more.</p>
<p>One of the main points of our talk was to emphasize that what we&#8217;re talking about here isn&#8217;t just a concept, and it isn&#8217;t some far away future.  This is real code, running in a real browser, and it&#8217;s all being done in HTML5 and JavaScript.  The web is fast enough to do real-time audio processing now, powerful enough and expressive enough to create music.  And the community of digital music and audio hackers, visualizers, etc. are hungry for it.  So hungry that they are seeking us out, downloading our hacked builds and creating gorgeous web audio applications.</p>
<p>We want to keep going, and we need help.  We need help from those within Mozilla, the W3C, and other browsers to get this stuff into shipping browsers.  We need the audio, digital music, accessibility, and web communities to come together in order to help us build js audio libraries and more sample applications.  Yesterday <a href="http://twitter.com/joehewitt/status/13090747143">Joe Hewitt was talking on twitter</a> about how web browser vendors need to experiment more with non-standard APIs.  I couldn&#8217;t agree more, and here&#8217;s a chance for people to put their money where their mouth is.  Let&#8217;s make audio a scriptable part of the open web.</p>
<p>I&#8217;m currently creating new builds of our updated patch for Firefox, and will post links to them here when I&#8217;m done.  You can read more about the technical details of our work <a href="https://wiki.mozilla.org/Audio_Data_API">here</a>, and get involved in the bug <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490705">here</a>.  You can talk more with me on irc in the <a href="irc://irc.mozilla.org/processing.js">processing.js channel</a> (I&#8217;m <em>humph</em> on moznet), or talk to me on twitter (<a href="http://twitter.com/humphd">@humphd</a>) or by <a href="mailto:david.humphrey@senecac.on.ca">email</a>.  One way or another, get in touch so you can help us push this forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2010/04/beyond-html5-experiments-with-interactive-audio/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Mozilla developer preview (Gecko 1.9.3a1) available for download</title>
		<link>http://hacks.mozilla.org/2010/02/mozilla-developer-preview-gecko-1-9-3a1-available-for-download/</link>
		<comments>http://hacks.mozilla.org/2010/02/mozilla-developer-preview-gecko-1-9-3a1-available-for-download/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 22:01:32 +0000</pubDate>
		<dc:creator>Alix Franquet</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=3956</guid>
		<description><![CDATA[Editor’s note: Today, Mozilla released a preview of the Gecko 1.9.3 platform for developers and testers. Check out the Mozilla Developer News announcement reposted below. A Mozilla Developer Preview of improvements in the Gecko layout engine is now available for download. This is a pre-release version of the Gecko 1.9.3 platform, which forms the core [...]]]></description>
			<content:encoded><![CDATA[<p><em>Editor’s note: Today, Mozilla released a preview of the Gecko 1.9.3 platform for developers and testers. Check out the <a href="http://bit.ly/bayY7k">Mozilla Developer News</a> announcement reposted below.</em></p>
<p>A Mozilla Developer Preview of improvements in the Gecko layout engine is now available for download. This is a pre-release version of the Gecko 1.9.3 platform, which forms the core of rich Internet applications such as Firefox. <strong>Please note that this release is intended for developers and testers only.</strong> As always, we appreciate any <a href="http://hendrix.mozilla.org/">feedback</a> you may have and encourage users to help us by <a href="http://developer.mozilla.org/en/docs/Bug_writing_guidelines">filing bugs</a>.</p>
<p>This developer preview introduces several new features, including:</p>
<ul>
<li>Support for <a href="http://www.w3.org/TR/css3-transitions/">CSS Transitions</a>. This support is not quite complete: support for animation of transforms and gradients has not yet been implemented.</li>
<li>Support for SMIL Animation in SVG. Support for animating some SVG attributes is still under development and the <code>animateMotion</code> element isn&#8217;t supported yet.</li>
<li>Support for <a href="https://developer.mozilla.org/en/WebGL">WebGL</a>, which is disabled by default but can be enabled by changing a preference. See <a href="http://hacks.mozilla.org/2009/09/webgl-for-firefox/">this blog post</a> and <a href="http://hacks.mozilla.org/2009/12/webgl-draft-released-today/">this blog post</a> for more details.</li>
<li>Support for the <code>getClientRects</code> and <code>getBoundingClientRect</code> methods on <code>Range</code> objects.  See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=396392">bug 396392</a> for details.</li>
<li>Support for the <code>setCapture</code> and <code>releaseCapture</code> methods on DOM elements. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=503943">bug 503943</a> for details.</li>
<li>Support for the <a href="https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries">HTML5 <code>History.pushState()</code> and <code>History.replaceState()</code> methods and the <code>popstate</code> event</a>. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=500328">bug 500328</a> for details.</li>
<li>Support for the <code>-moz-image-rect()</code> value for <code><a href="https://developer.mozilla.org/en/CSS/background-image">background-image</a></code>. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=113577">bug 113577</a> for more details.</li>
</ul>
<p>and several other significant changes, including:</p>
<ul>
<li>On Mac OS X, we render text using Core Text rather than ATSUI.</li>
<li>We rewrote major parts of the code for handling scrolling. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=526394">bug 526394</a> for details.</li>
<li>We rewrote the way a snapshot of a document is taken in order to print or print preview.  See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=487667">bug 487667</a> for details.</li>
<li>We made significant changes to table border handling. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=452319">bug 452319</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=43178">bug 43178</a> for details.</li>
<li>We made various architectural changes to improve Web page        performance.</li>
</ul>
<p>More information on these changes is in the <a href="http://www.mozilla.org/projects/firefox/3.7a1/releasenotes/">release notes</a>, as well as the <a href="https://developer.mozilla.org/en/Upcoming_Firefox_features_for_developers">Upcoming Firefox features for developers</a> article on the <a href="https://developer.mozilla.org/">Mozilla Developer Center</a>.</p>
<p>Please use the following links when downloading this Mozilla Developer Preview:</p>
<ul>
<li><a href="http://download.mozilla.org/?product=devpreview-1.9.3a1&amp;os=win&amp;lang=en-US">Installer for Windows</a></li>
<li><a href="http://download.mozilla.org/?product=devpreview-1.9.3a1&amp;os=osx&amp;lang=en-US">DMG for Mac OS X (10.5 or better required)</a></li>
<li><a href="http://download.mozilla.org/?product=devpreview-1.9.3a1&amp;os=linux&amp;lang=en-US">Archive for Linux</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2010/02/mozilla-developer-preview-gecko-1-9-3a1-available-for-download/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WebGL Draft Released Today</title>
		<link>http://hacks.mozilla.org/2009/12/webgl-draft-released-today/</link>
		<comments>http://hacks.mozilla.org/2009/12/webgl-draft-released-today/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 22:06:05 +0000</pubDate>
		<dc:creator>Arun Ranganathan</dc:creator>
				<category><![CDATA[Standards]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2940</guid>
		<description><![CDATA[Even without a draft specification of WebGL in circulation, we&#8217;ve seen some promising 3D content using WebGL appear on the web, put together mainly through developer ingenuity and the fact that Firefox, Chromium, and WebKit are open source projects with early support for the technology. Today, the WebGL Working Group at Khronos released a provisional [...]]]></description>
			<content:encoded><![CDATA[<p>Even without a draft specification of WebGL in circulation, we&#8217;ve seen some <a href="http://hacks.mozilla.org/2009/12/webgl-goes-mobile/">promising</a> <a href="http://hacks.mozilla.org/2009/09/three-more-webgl-demos/">3D</a> <a href="http://hacks.mozilla.org/2009/10/webgl-in-the-wild/">content</a> using WebGL appear on the web, put together mainly through developer ingenuity and the fact that Firefox, Chromium, and WebKit are open source projects with early support for the technology.  Today, the <a href="http://khronos.org/webgl">WebGL Working Group at Khronos</a> released a <a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">provisional public draft of the WebGL specification</a>, and we are very excited for what this means for the web.</p>
<p>For one thing, it means more developers can get involved in the evolution of <a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">WebGL</a>.  There&#8217;s a <a href="https://www.khronos.org/webgl/public-mailing-list/">public mailing</a> list set up, so that you can engage directly with members of the <a href="http://khronos.org/webgl">WebGL Working Group</a>, as well as a <a href="http://www.khronos.org/message_boards/viewforum.php?f=35">web forum</a>.  It&#8217;s important to note that the specification is not yet finalized.  Participation from the web community is essential towards finalizing the specification, which we hope to do in the first quarter of 2010.</p>
<p>It also means that there are implementations of the draft specification that you can begin to test.  You can obtain a <a href="http://nightly.mozilla.org/">Firefox nightly</a> that implements the <a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">WebGL draft specification</a>, and can turn on WebGL support in that build by following these steps:</p>
<ul>
<li>Type &#8220;<code>about:config</code>&#8221; in your browser&#8217;s URL bar</li>
<li>Do a search for &#8220;webgl&#8221; in the <em>Filter</em> field</li>
<li>Double-click the &#8220;<code>enabled_for_all_sites</code>&#8221; preference to change it to &#8220;<code>true</code>&#8221; </li>
</ul>
<p>Other browsers that support the draft <a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">WebGL specification</a> are listed on the <a href="http://khronos.org/webgl/wiki/">WebGL Wiki</a>.</p>
<p>Now of course, this is hardware-accelerated 3D graphics in an early beta, and for now requires an OpenGL 2.0-capable GPU and drivers. In particular, most flavors of Intel&#8217;s integrated GPUs will not work straight out of the box (such as the GMA900/GMA950 often found in laptops).  Developers who build nightly builds of the browser can induce <em>software rendering</em> using <a href="http://www.mesa3d.org/">Mesa</a>, and should check out Vlad&#8217;s <a href="http://blog.vlad1.com/2009/09/21/webgl-samples/">blog post</a> for doing this on Windows.  <strong>Caveat emptor:</strong> building software rendering using Mesa into a Firefox nightly is likely to yield slower performance, and is only for the intrepid. </p>
<p><a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">WebGL</a> is a royalty-free, cross-platform API that brings <a href="http://www.khronos.org/opengles/">OpenGL ES 2.0</a> to the web as a 3D drawing context within <a href="https://developer.mozilla.org/en/HTML/Canvas">HTML5&#8242;s Canvas element</a>, exposed as low-level interfaces within the Document Object Model.  </p>
<p>Developers familiar with the <a href="https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas">Canvas 2D context</a> will recognize that WebGL is another context for Canvas:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// get the canvas element in the DOM</span>
<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;canvas3D&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> gl <span style="color: #339933;">=</span> canvas.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;experimental-webgl&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Note</strong> that till the <a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">specification</a> is finalized, the context is called <code>experimental-webgl</code>.</p>
<p>WebGL uses the OpenGL shading language, GLSL ES, and can be cleanly combined with other web content that is layered on top or underneath the 3D content.  It is an <em>emerging web standard</em>, and is designed to be used with other parts of the web platform.  The release of<a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html"> the draft specification</a> is one step in bringing about a <em>plugin free</em> 3D API to the web, usable straight out of the box.  People have already begun using it to create compelling libraries.  Check out <a href="http://www.x3dom.org/">X3DOM</a>, which is a JavaScript library using WebGL that allows users to author content in <a href="http://www.web3d.org/x3d/">X3D</a>.  We expect developer ingenuity to surprise and awe us, as it always has.</p>
<p><strong>References</strong></p>
<ul>
<li>Review the <a href="https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html">WebGL draft specification</a></li>
<li>Get involved!  <a href="http://khronos.org/webgl">WebGL Homepage on Khronos</a></li>
<li>Read articles and contribute on the <a href="http://khronos.org/webgl/wiki">WebGL Wiki</a></li>
<li>A blog about <a href="http://learningwebgl.com/blog/">learning WebGL</a></li>
<li>Find 3D recipes in the <a href="http://learningwebgl.com/cookbook/index.php/Main_Page">learning WebGL Cookbook</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/12/webgl-draft-released-today/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>WebGL goes mobile</title>
		<link>http://hacks.mozilla.org/2009/12/webgl-goes-mobile/</link>
		<comments>http://hacks.mozilla.org/2009/12/webgl-goes-mobile/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 18:33:14 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Featured Demo]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=2757</guid>
		<description><![CDATA[Vlad was nice enough to put together a video of his recent work to bring WebGL to mobile phones. This demo was done on the first phone that supports Firefox, the Nokia N900. For more information about WebGL check back here or follow planet WebGL.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.vlad1.com/2009/12/01/webgl-goes-mobile/">Vlad</a> was nice enough to put together a video of his recent work to bring WebGL to mobile phones.  This demo was done on the first phone that supports <a href="http://www.mozilla.com/mobile/">Firefox</a>, the <a href="http://maemo.nokia.com/n900/">Nokia N900</a>.</p>
<p>For more information about WebGL check back here or follow <a href="http://planet-webgl.org">planet WebGL</a>.</p>
<p><video width="500" controls><br />
<source src="http://videos.mozilla.org/serv/blizzard/webgl-n900/webgl-n900-200kb.ogv" type="video/ogg"/><br />
<source src="http://videos.mozilla.org/serv/blizzard/webgl-n900/webgl-n900-200kb.mp4" type="video/mp4"/><br />
<embed type="application/x-shockwave-flash" width="500" height="303" src="http://www.youtube.com/v/OoXK8cNdY2Q&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed><br />
</video></p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/12/webgl-goes-mobile/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
<enclosure url="http://videos.mozilla.org/serv/blizzard/webgl-n900/webgl-n900-200kb.ogv" length="2840237" type="video/ogg" />
		</item>
		<item>
		<title>WebGL in the wild</title>
		<link>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/</link>
		<comments>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 04:53:55 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1798</guid>
		<description><![CDATA[This is a guest post by David Humphrey and was originally posted in his weblog. David is a professor at Seneca College in Toronto where he teaches and researches open source development and leads Mozilla&#8217;s education project. David&#8217;s been involved with WebGL well before it became WebGL and was just a Firefox extension. It&#8217;s nice [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post by David Humphrey and was <a href="http://vocamus.net/dave/?p=771">originally posted in his weblog</a>.  David is a professor at <a href="http://senecac.on.ca/">Seneca College</a> in Toronto where he <a href="http://zenit.senecac.on.ca/wiki">teaches and researches</a> open source development and leads <a href="http://education.mozilla.org/">Mozilla&#8217;s education project</a>.  David&#8217;s been involved with WebGL well before it became WebGL and was just a Firefox extension.  It&#8217;s nice to see that work making its way out of the experimental stage and already being used to solve real-world problems even before it&#8217;s officially shipped anywhere.</em></p>
<p>I&#8217;ve been spending a lot of time lately thinking about 3D in the browser.  It&#8217;s to the point that I have to blog about it, and try to get it out of my head and onto the web where it belongs.  Part of the reason I&#8217;m writing this tonight is that my colleague, <a href="http://cleung.wordpress.com/">Cathy Leung</a>, has just put up a demo so awesome I&#8217;m compelled to share it (<a href="http://www.youtube.com/watch?v=n3tQd7UT09k">video here</a>):</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/n3tQd7UT09k&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/n3tQd7UT09k&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>She put the video together after <a href="http://www.itbusiness.ca/it/client/en/home/DetailNewsPrint.asp?id=54713">this article</a> was written about her work to make 3D accessible to web developers via <a href="http://c3dl.org">C3DL</a>.  Cathy has been working with a team of students at <a href="http://senecacollege.ca/">Seneca College</a> for the past few years, focused on an <a href="https://addons.mozilla.org/en-US/firefox/addon/7171">experimental 3D technology</a> created by  Mozilla.  Her work proves how valuable 3D in the browser can be.  I think a lot of people misunderstand its significance: &#8220;Doom in the browser?&#8221;  Sure, but it&#8217;s way more than that.  There is  no shortage of tea pots on the web these days, as various browser vendors start to show-off early releases of <a href="http://arstechnica.com/open-source/news/2009/08/webgl-standard-to-bring-3d-web-without-browser-plugins.ars">WebGL</a> enabled builds.  However, Mozilla has been at this game a long time.  I know because we&#8217;ve been using their stuff as long as they&#8217;ve been building it.  And it&#8217;s really reached a <a href="http://blog.vlad1.com/2009/09/21/webgl-samples/">new level now</a>.</p>
<p>As <a href="http://readysetstop.blogspot.com/">Mozilla pushes WebGL</a> further, and <a href="http://www.c3dl.org/index.php/c3dl-news/release-1-1-and-beyond/">Cathy continues</a> her work on C3DL, I&#8217;m focused on another project to harness the power of  3D in the browser.  Together with <a href="http://hyper-metrix.com/">Al MacDonald</a>, I&#8217;m leading a <a href="https://wiki.mozilla.org/Education/Projects/ProcessingForTheWeb">Mozilla Foundation project</a> to complete the work begun by <a href="http://ejohn.org/">John Resig</a> to port the <a href="http://processing.org/">Processing language</a> to JavaScript (aka <a href="http://processingjs.org/">processing.js</a>).  The processing.js port, while unfinished, <a href="http://9elements.com/io/projects/html5/canvas/">is already amazing</a>.  Imagine if <a href="http://zenit.senecac.on.ca/wiki/index.php?title=Processing.js">we took eight students</a>, finished it, and added 3D support from C3DL?  I know, exactly.</p>
<p>Part of what makes me so excited about all this work is the deep intersection of things I love.  I&#8217;ve long been a fan of the work of Processing creators, <a href="http://benfry.com/">Ben Fry</a> and <a href="http://reas.com/">Casey Reas</a>, every since they were part of the <a href="http://acg.media.mit.edu/">Aesthetics and Computation Group</a>.  I&#8217;ve always thought that their work belonged on the web instead of on the desktop.  At the same time, my own work with Mozilla and the open web has proven to me the need for richer ways of working with things like <a href="http://vocamus.net/dave/?page_id=741">open data</a>.  The web is at an interesting point in its evolution.  We now take for granted that it can do what was once only possible via  desktop apps.  Looking forward I can already see a time when the web will also be the proper medium of artists, designers, data visualizers, and others pushing the limits of the second and third dimensions.  I&#8217;m thrilled to be a small part of this effort now.</p>
<p>If you&#8217;d like to get involved with any of the work discussed above, please do <a href="mailto:david.humphrey@senecac.on.ca">get in touch with me</a>.  The most exciting aspect of everything I&#8217;ve told you remains that it&#8217;s all community developed, from Mozilla to C3DL to processing to processing.js.  That&#8217;s how you build the software stack of the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/10/webgl-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>three more WebGL demos</title>
		<link>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/</link>
		<comments>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 04:12:52 +0000</pubDate>
		<dc:creator>Christopher Blizzard</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Featured Demo]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://hacks.mozilla.org/?p=1745</guid>
		<description><![CDATA[If you see other cool WebGL demos post them in the comments here or let us know at @mozhacks. We&#8217;ll keep posting them as we find them. A port of Puls to WebGL: Escher-Droste effect in WebGL: Metatunnel by FRequency: (via Mark Steele)]]></description>
			<content:encoded><![CDATA[<p>If you see other cool WebGL demos post them in the comments here or let us know at <a href="http://twitter.com/mozhacks"><b>@mozhacks</b></a>.  We&#8217;ll keep posting them as we find them.</p>
<p>A port of <a href="http://wakaba.c3.cx/w/puls.html">Puls to WebGL</a>:</p>
<p><a href="http://wakaba.c3.cx/w/puls.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/puls.png"/></a></p>
<p><a href="http://wakaba.c3.cx/w/escher_droste.html">Escher-Droste effect in WebGL</a>:</p>
<p><a href="http://wakaba.c3.cx/w/escher_droste.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/escher.png"/></a></p>
<p><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html">Metatunnel by FRequency</a>:</p>
<p><a href="http://cs.helsinki.fi/u/ilmarihe/metatunnel.html"><img src="http://hacks.mozilla.org/wp-content/uploads/2009/09/glowing-tunnel.png"/></a></p>
<p>(via <a href="http://readysetstop.blogspot.com/2009/09/webgl-demos.html">Mark Steele</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://hacks.mozilla.org/2009/09/three-more-webgl-demos/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
	</channel>
</rss>

