340 likes | 618 Views
Need For Speed. Every car has a lot of speed in it. The trick is getting the speed out of it. – A J Foyt . RocketBoots. Speed. Its Addictive. DISCLAIMER: We acknowledge that wikipedia makes it sound so cool but d on’t try drugs. . Speed is awesome. Apps feel lightweight.
E N D
Need For Speed Every car has a lot of speed in it. The trick is getting the speed out of it. – A J Foyt.
Speed Its Addictive • DISCLAIMER:We acknowledge that wikipedia makes it sound so cool but don’t try drugs.
Speed is awesome • Apps feel lightweight. • Brings the web to awhole new experience. • Faster Pixel Math e.g. Computer Vision.
And it can be deadly too • Premature optimization is the root of all evil - Donald Knuth. • Design first, optimize later.
Sharpening the tools • Faster Algorithms • Code Tricks & Best Practices • Better Compiler Optimisations • Bytecode Manipulation • Thin Runtimes
Why its important to us • The only way of discovering the limits of the possible is to venture a little way past them into the impossible. - Arthur Clarke.
Who can push most pixels ? • JavaScript (HTML5) • Java (Applet) • ActionScript 2.0 • ActionScript 3.0 • Silverlight 3.0 • Alchemy v0.5a / + Pixel Bender • Haxe 2.05 with memory API • Objective-C / + GCD • WebGL • OpenGL Pixel
The rules… No Cheating!! • Create a massive amount of points in 3D Pixel Cloud. • Draw the pixel cloud on the screen every frame. • Reduce/increase particles until frame rate is close to 20 FPS. • Language specific optimisations allowed.
The Creature • Mac Book Pro 15” • 2.66GHz Core 2 Duo • 4GB Ram • GeForce 9400m(256 MB) • Mac OSX (10.6.3)
The Algorithm • initBitmap(); • createParticles(); • //every framerenderParticles(); • Adjust particles until frameRate ~= 20FPS.
Performance Comparisons • Show each demo. (The fun stuff) • Briefly explain code. • Measure number of particles when they become stable. • Plot in Excel Chart.
HTML 5.0 + JavaScript Safari Crashed Internet Explorer 8 Doesn’t support it yet
To Infinity and Beyond • Nightly Builds of May 6 2010 • Chromium – Chrome • Minefield - Firefox • Webkit - Safari
Redemption (Nightly Builds) Internet Explorer 9 preview went blank
The Natives • Thought we’d try to make native apps to see the difference. • Objective C (Cocoa) • Open GL + GLUT
This wouldn’t be possible without //Google http://www.google.com //Fractals http://local.wasp.uwa.edu.au/~pbourke/fractals/ http://local.wasp.uwa.edu.au/~pbourke/fractals/fractalgallery/ http://local.wasp.uwa.edu.au/~pbourke/fractals/peterdejong/ //AVM2 Bytecode http://www.adobe.com/devnet/actionscript/articles/avm2overview.pdf //alchemy http://labs.adobe.com/technologies/alchemy/ http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Getting_Started http://www.unitzeroone.com/blog/2009/03/18/flash-10-massive-amounts-of-3d-particles-with-alchemy-source-included/ http://drawlogic.com/category/alchemy/ http://www.automatastudios.com/2008/11/21/understanding-adobe-alchemy/ http://www.unitzeroone.com/blog/2008/11/28/adobe-alchemy-is-it-actionscript-heresy/ //Experimental Mem API in AS3 http://blog.joa-ebert.com/2009/04/03/massive-amounts-of-3d-particles-without-alchemy-and-pixelbender/ http://blog.joa-ebert.com/2009/08/05/tdsi-examples/ http://blog.joa-ebert.com/2009/12/03/the-scalable-apparat/ //Haxe http://webr3.org/experiments/haxe-particle-pusher/300k/ http://haxe.org/api/flash9/memory http://haxe.org/doc/why http://haxe.org/doc/start/flash/as3migration http://ncannasse.fr/blog/adobe_alchemy http://ncannasse.fr/blog/the_failure_of_as3
There were heaps more, but … No space //Javascript http://mrdoob.com/lab/javascript/strangeattractor/ http://www.leichtgewicht.at/387/pushing-javascript-particles/ http://www.andrew-hoyer.com/experiments/cloth https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas //Java Applet http://java.sun.com/docs/books/tutorial/2d/images/drawimage.html http://blog.debit.nl/?p=79 http://java.sun.com/applets/ http://java.sun.com/docs/books/tutorial/2d/index.html //O3d http://code.google.com/apis/o3d/ //Web GL http://www.taranfx.com/chrome-webgl-graphics-hardware-acceleration http://noscope.com/journal/2010/04/webgl-in-google-chrome https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation http://github.com/gpjt/webgl-lessons/blob/master/lesson07/ //openGL http://cgi.cse.unsw.edu.au/~cs3421/wordpress/ http://nehe.gamedev.net/ http://www.dei.isep.ipp.pt/~matos/cg/docs/manual/ http://glprogramming.com/red/chapter07.html http://www.opengl.org/resources/libraries/glut/ //Silverlight http://blog.efvincent.com/concurrency-optimization-silverlight/ http://blog.joa-ebert.com/2009/08/10/flirting-with-silverlight/ http://www.silverlight.net/getstarted/ //Skyrails - This is an example of an interface that could take advantage of GPU http://www.youtube.com/watch?v=I2d312_dXEs&feature=related <- One of my Uni tutors PHD project
Questions “ When people stop asking good questions, bad things seem to happen ” – Robin Hilliard
Feel the Speed “Speed, it seems to me, provides the one genuinely modern pleasure. ” – Aldous Huxley TRAC - http://trac.rocketboots.com/os/browser/webdu2010_need_for_speed/trunk SVN - http://svn.rocketboots.com/os/webdu2010_need_for_speed/trunk
Say ‘Hi’ to us ManojVekaria @nojified www.codeexplode.com noj@rocketboots.com SushantVerma @sushified www.trynull.com sushant@rocketboots.com