SlideShare a Scribd company logo
1 of 48
Download to read offline
I Can’t
Believe It’s
Not Flash!


@thomasfuchs
<omg  code="on  slides"/>
Animating CSS properties
    Timer




JavaScript   Reflow   Rendering   Paint
 sets CSS
Animating CSS properties
    Timer




JavaScript   Reflow   Rendering   Paint
 sets CSS
Performance hit
Performance hit




JavaScript      Reflow   Rendering   Paint
Performance hit




JavaScript      Reflow   Rendering   Paint
Performance hit




JavaScript      Reflow   Rendering   Paint
Performance hit




JavaScript      Reflow   Rendering   Paint
Performance hit




JavaScript      Reflow   Rendering   Paint
Browser CSS animation/
        transitions

  Timer




Browser   Reflow   Rendering   Paint
updates
  CSS
Timer




JavaScript   Reflow   Rendering   Paint
 sets CSS

   Timer




Browser      Reflow   Rendering   Paint
updates
  CSS
Timer




JavaScript   Reflow   Rendering   Paint
 sets CSS

   Timer




Browser      Reflow   Rendering   Paint
updates
  CSS
-webkit-transform




                Paint

JavaScript
or Browser
 sets CSS
<!DOCTYPE  html  PUBLIC  "-­‐//W3C//DTD  XHTML  1.0  Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-­‐transitional.dtd">
<html  xmlns="http://www.w3.org/1999/xhtml"  xml:lang="en"  lang="en">
<head>
    <meta  http-­‐equiv="Content-­‐Type"  content="text/html;  charset=utf-­‐8"/>
    <title>index</title>
    <style  type="text/css"  media="screen">
        div  {
            position:  absolute;
            border:  3px  solid  red;
        }
        #d1  {
            left:  20px;  top:  20px;  width:  400px;  height:  400px;
            -­‐webkit-­‐transform:translateZ(0px);
        }
        #d2  {
            left:  100px;  top:  30px;  width:  150px;  height:  100px;
            -­‐webkit-­‐transform:translateZ(-­‐100px);
        }
        #d3  {
            left:  300px;  top:  40px;  width:  100px;  height:  50px;
            -­‐webkit-­‐transform:translateZ(-­‐200px);
        }
        #d4  {
            left:  320px;  top:  80px;  width:  90px;  height:  50px;
            -­‐webkit-­‐transform:translateZ(-­‐300px);
        }
        #d5  {
            left:  280px;  top:  90px;  width:  90px;  height:  50px;
            -­‐webkit-­‐transform:translateZ(-­‐400px);
        }
        body  {
            -­‐webkit-­‐transform-­‐style:  preserve-­‐3d;
       #d2  {
            left:  100px;  top:  30px;  width:  150px;  height:  100px;
            -­‐webkit-­‐transform:translateZ(-­‐100px);
        }
        #d3  {
            left:  300px;  top:  40px;  width:  100px;  height:  50px;
            -­‐webkit-­‐transform:translateZ(-­‐200px);
        }
        #d4  {
            left:  320px;  top:  80px;  width:  90px;  height:  50px;
            -­‐webkit-­‐transform:translateZ(-­‐300px);
        }
        #d5  {
            left:  280px;  top:  90px;  width:  90px;  height:  50px;
            -­‐webkit-­‐transform:translateZ(-­‐400px);
        }
        body  {
            -­‐webkit-­‐transform-­‐style:  preserve-­‐3d;
            -­‐webkit-­‐transform:rotateX(0deg)  rotateY(0deg)  rotateZ(0deg)  perspective(0);
        }
        body.stage2  {
            -­‐webkit-­‐transition:  -­‐webkit-­‐transform  10s;
            -­‐webkit-­‐transform:rotateX(30deg)  rotateY(-­‐50deg)  rotateZ(10deg)  perspective(0);
        }
    </style>
</head>
<body>
    <div  id="d1"></div>
    <div  id="d2"></div>
    <div  id="d3"></div>
    <div  id="d4"></div>
    <div  id="d5"></div>
</body>
</html>
Safari on Snow Leopard,
or on Windows: Nokia’s Starlight
        browser (alpha)
  http://www.starlight-webkit.org/
http://pepsicozeitgeist.com/
Fullscreen HD Video CPU%

         HTML5: 10%

        FLASH: 100+%
         (and dropped frames)



http://jilion.com/sublime/video
Canvas
    Timer




JavaScript            Paint
   uses
 Canvas
   APIs
Physics engine
           with Canvas
         Timer




  1) clear canvas                    Paint
2) physics iteration
  3) draw shapes
                       Box2D physics engine
function  createBall(world,  x,  y)  {
    var  ballSd  =  new  b2CircleDef();
    ballSd.density  =  0.3;
    ballSd.radius  =  20+Math.random()*20;
    ballSd.restitution  =  0.1;
    ballSd.friction  =  0.2;
    var  ballBd  =  new  b2BodyDef();
    ballBd.rotation  =  0.3;
    ballBd.AddShape(ballSd);
    ballBd.position.Set(x,y);
    return  world.CreateBody(ballBd);
}
                   world.Step(ms,1);
3) draw shapes



 box2d
objects/
positions



                  canvas
http://pepsicozeitgeist.com/
Vector graphics
               SVG + VML




JavaScript    Reflow   Rendering   Paint
  creates
  vector
 graphics
  nodes
http://raphaeljs.com/
<path  fill="none"  stroke="#5cbfff"  
d="M52.2,40.5L47.23,55.5L38.53,70.5L33.88,85.5L36.63,100.5L50.1
,115.5L70.7,130.5L97.85,145.5L123.65,160.5L139.3,175.5L126.2,19
0.5L132.95,205.5L157.58,220.5L143.85,235.5L155.25,250.5L151.43,
265.5L149.05,280.5L104.5,295.5L103.6,310.5L97.85,325.5L94.58,34
0.5L86.7,355.5L78.95,370.5L69.35,385.5M56.4,440.5L42.3,455.5L32
.93,470.5L26.38,485.5L28.23,500.5L28.95,515.5L40.45,530.5L57.55
,545.5L80.18,560.5L123.55,575.5L144.95,590.5L137.33,605.5L134.9
8,620.5L149.7,635.5L162.73,650.5L142.83,665.5L164.2,680.5L106.2
5,695.5L97.28,710.5L88.75,725.5L90.83,740.5L87.15,755.5L85.15,7
70.5L62.55,785.5M52.78,840.5L41.5,855.5L33.1,870.5L22.38,885.5L
25.63,900.5L24.05,915.5L33.05,930.5L48.3,945.5L65.35,960.5L115.
2,975.5L137.7,990.5L136.43,1005.5L102.28,1020.5L132.28,1035.5L1
37.5,1050.5L132.05,1065.5L155.83,1080.5L107.3,1095.5L95.98,1110
.5L94.73,1125.5L94.65,1140.5L86.25,1155.5L83.4,1170.5L70.48,118
5.5M58.6,1240.5L43.38,1255.5L33.35,1270.5L28.43,1285.5L29.05,13
00.5L38.43,1315.5L51.35,1330.5L82.38,1345.5L105.73,1360.5L159.7
8,1375.5L176.05,1390.5L164.13,1405.5L139.48,1420.5L131.53,1435.
5L164.83,1450.5L161.15,1465.5L157.2,1480.5L112.68,1495.5L105.68
,1510.5L103.83,1525.5L104.25,1540.5L92.5,1555.5L91.35,1570.5L70
.48,1585.5M54.05,1640.5L48.6,1655.5L35.02,1670.5L32.8,1685.5L36
.98,1700.5L41.75,1715.5L63.78,1730.5L90.6,1745.5L112.28,1760.5L
161.35,1775.5L171.2,1790.5L180.43,1805.5L171.88,1820.5L168.65,1
835.5L153.88,1850.5L148.35,1865.5L140.28,1880.5L110.2,1895.5L10
4.68,1910.5L101.2,1925.5L96.7,1940.5L96.5,1955.5L80.08,1970.5L6
8.4,1985.5M54.8,2040.5L41.23,2055.5L35.85,2070.5L30.15,2085.5L3
http://pepsicozeitgeist.com/
WebGL


shaders


    Timer




JavaScript           Paint
WebGL
<script  id="vshader"  type="x-­‐shader/x-­‐vertex">
    uniform  mat4  u_modelViewMatrix;
    uniform  mat4  u_modelViewProjMatrix;
    uniform  mat4  u_normalMatrix;
    uniform  vec3  lightDir;

    attribute  vec3  vNormal;
    attribute  vec4  vTexCoord;
    attribute  vec4  vPosition;
                
    varying  float  v_Dot;
    varying  vec2  v_texCoord;
                
    void  main()
    {
        gl_Position  =  u_modelViewProjMatrix  *  vPosition;
        v_texCoord  =  vTexCoord.st;
        vec4  transNormal  =  u_normalMatrix  *  vec4(vNormal,1);
        v_Dot  =  max(dot(transNormal.xyz,  lightDir),  0.0);
    }
</script>
   var  exampleScene  =  scene(
        {},

        /*  A  renderer  node  binds  subnodes  to  a  WebGL  canvas  element
              defined  in  the  HTML  tab  then  clears  the  depth  and  colour  buffers
          */
        renderer({
                                canvasId:  'theCanvas',
                                clear  :  {  depth  :  true,  color  :  true}
                        },
                /*  A  simple  phong  GLSL  shader  to  render  sub-­‐nodes,  with
                      a  single  light  source.  This  shader  type  only  supports
                      a  one  light  source.
                  */
                shader(
                    {  type:  'simple-­‐shader'  },

                    lights(                                        scenejs.org
                        {
                            lights:  [
                                {
                                    pos:  {  x:  -­‐30.0,  y:  30.0,  z:  -­‐30.0  }
                                }
                            ]},

                        /*  Perspective  transformation
                          */
http://github.com/OneGeek/WebGLU
http://learningwebgl.com/
http://ftp.mozilla.org/pub/mozilla.org/
      firefox/nightly/latest-trunk/
JavaScript & CSS
CSS Transforms & Animations
   2D bitmapped graphics
      Physics engines
      Vector graphics
        HTML5 video
           WebGL
THANKS!



@thomasfuchs

More Related Content

What's hot

How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
Bitla Software
 
Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQuery
Remy Sharp
 
CSS3 2D/3D transform
CSS3 2D/3D transformCSS3 2D/3D transform
CSS3 2D/3D transform
Kenny Lee
 

What's hot (20)

How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
Mastering CSS Animations
Mastering CSS AnimationsMastering CSS Animations
Mastering CSS Animations
 
JavaOne 2009 - 2d Vector Graphics in the browser with Canvas and SVG
JavaOne 2009 -  2d Vector Graphics in the browser with Canvas and SVGJavaOne 2009 -  2d Vector Graphics in the browser with Canvas and SVG
JavaOne 2009 - 2d Vector Graphics in the browser with Canvas and SVG
 
CSS3 : Animation ,Transitions, Gradients
CSS3 : Animation ,Transitions, GradientsCSS3 : Animation ,Transitions, Gradients
CSS3 : Animation ,Transitions, Gradients
 
CSS3 Transforms Transitions and Animations
CSS3 Transforms Transitions and AnimationsCSS3 Transforms Transitions and Animations
CSS3 Transforms Transitions and Animations
 
Joan Leon | Houdini, programando en CSS | Codemotion Madrid 2018
Joan Leon | Houdini, programando en CSS | Codemotion Madrid 2018Joan Leon | Houdini, programando en CSS | Codemotion Madrid 2018
Joan Leon | Houdini, programando en CSS | Codemotion Madrid 2018
 
Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQuery
 
Processing and Processing.js
Processing and Processing.jsProcessing and Processing.js
Processing and Processing.js
 
Dynamic CSS: Transforms, Transitions, and Animation Basics
Dynamic CSS: Transforms, Transitions, and Animation BasicsDynamic CSS: Transforms, Transitions, and Animation Basics
Dynamic CSS: Transforms, Transitions, and Animation Basics
 
Shibuya.js Lightning Talks
Shibuya.js Lightning TalksShibuya.js Lightning Talks
Shibuya.js Lightning Talks
 
CSS3 2D/3D transform
CSS3 2D/3D transformCSS3 2D/3D transform
CSS3 2D/3D transform
 
JavaScript 1.5 to 2.0 (TomTom)
JavaScript 1.5 to 2.0 (TomTom)JavaScript 1.5 to 2.0 (TomTom)
JavaScript 1.5 to 2.0 (TomTom)
 
Randomising css animations
Randomising css animationsRandomising css animations
Randomising css animations
 
Only JavaScript, only Meteor.js
Only JavaScript, only Meteor.jsOnly JavaScript, only Meteor.js
Only JavaScript, only Meteor.js
 
Progressive What Apps?
Progressive What Apps?Progressive What Apps?
Progressive What Apps?
 
Vue.js + Django - configuración para desarrollo con webpack y HMR
Vue.js + Django - configuración para desarrollo con webpack y HMRVue.js + Django - configuración para desarrollo con webpack y HMR
Vue.js + Django - configuración para desarrollo con webpack y HMR
 
CSS Grid Layout
CSS Grid LayoutCSS Grid Layout
CSS Grid Layout
 
Canvas
CanvasCanvas
Canvas
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?
 
Server-Side Push: Comet, Web Sockets come of age (OSCON 2013)
Server-Side Push: Comet, Web Sockets come of age (OSCON 2013)Server-Side Push: Comet, Web Sockets come of age (OSCON 2013)
Server-Side Push: Comet, Web Sockets come of age (OSCON 2013)
 

Viewers also liked

Diferencia porno / sensual
Diferencia porno / sensualDiferencia porno / sensual
Diferencia porno / sensual
Fredy Balaguera
 
Misterios Da Vida2
Misterios Da Vida2Misterios Da Vida2
Misterios Da Vida2
dna.blogspot
 
Bikini selfies and suggestive lip dubs: Examining queer women’s performances...
Bikini selfies and suggestive lip dubs: Examining queer women’s performances...Bikini selfies and suggestive lip dubs: Examining queer women’s performances...
Bikini selfies and suggestive lip dubs: Examining queer women’s performances...
Stefanie Duguay
 

Viewers also liked (20)

Yes! I'm Lonesome tonight
Yes! I'm Lonesome tonightYes! I'm Lonesome tonight
Yes! I'm Lonesome tonight
 
Windy day
Windy dayWindy day
Windy day
 
Superacion
SuperacionSuperacion
Superacion
 
Diferencia porno / sensual
Diferencia porno / sensualDiferencia porno / sensual
Diferencia porno / sensual
 
Labellezaazul
LabellezaazulLabellezaazul
Labellezaazul
 
Brutas
BrutasBrutas
Brutas
 
Raquel
RaquelRaquel
Raquel
 
Misterios Da Vida2
Misterios Da Vida2Misterios Da Vida2
Misterios Da Vida2
 
Developers in the New Age of the Web
Developers in the New Age of the WebDevelopers in the New Age of the Web
Developers in the New Age of the Web
 
Twistori Tech
Twistori TechTwistori Tech
Twistori Tech
 
Rich and Snappy Apps (No Scaling Required)
Rich and Snappy Apps (No Scaling Required)Rich and Snappy Apps (No Scaling Required)
Rich and Snappy Apps (No Scaling Required)
 
Bikini selfies and suggestive lip dubs: Examining queer women’s performances...
Bikini selfies and suggestive lip dubs: Examining queer women’s performances...Bikini selfies and suggestive lip dubs: Examining queer women’s performances...
Bikini selfies and suggestive lip dubs: Examining queer women’s performances...
 
Human Trafficking
Human TraffickingHuman Trafficking
Human Trafficking
 
Monjaytaxi
MonjaytaxiMonjaytaxi
Monjaytaxi
 
Juegavivo
JuegavivoJuegavivo
Juegavivo
 
Fotosxxx
FotosxxxFotosxxx
Fotosxxx
 
Zima staf-1 m
Zima staf-1 mZima staf-1 m
Zima staf-1 m
 
Eye catching photos
Eye catching photosEye catching photos
Eye catching photos
 
Holocauto
HolocautoHolocauto
Holocauto
 
Zoe Girl By
Zoe Girl  ByZoe Girl  By
Zoe Girl By
 

Similar to I Can't Believe It's Not Flash

[A5]deview 2012 pt hds webkit_gpu
[A5]deview 2012 pt hds webkit_gpu[A5]deview 2012 pt hds webkit_gpu
[A5]deview 2012 pt hds webkit_gpu
NAVER D2
 
Interface Styling & Scripting on WebKit Mobile
Interface Styling & Scripting on WebKit MobileInterface Styling & Scripting on WebKit Mobile
Interface Styling & Scripting on WebKit Mobile
David Aurelio
 
HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference ZürichHTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Robert Nyman
 

Similar to I Can't Believe It's Not Flash (20)

HTML5 - A Whirlwind tour
HTML5 - A Whirlwind tourHTML5 - A Whirlwind tour
HTML5 - A Whirlwind tour
 
CSS3 Takes on the World
CSS3 Takes on the WorldCSS3 Takes on the World
CSS3 Takes on the World
 
[A5]deview 2012 pt hds webkit_gpu
[A5]deview 2012 pt hds webkit_gpu[A5]deview 2012 pt hds webkit_gpu
[A5]deview 2012 pt hds webkit_gpu
 
PreDevCampSF - CSS3 Tricks
PreDevCampSF - CSS3 TricksPreDevCampSF - CSS3 Tricks
PreDevCampSF - CSS3 Tricks
 
Interface Styling & Scripting on WebKit Mobile
Interface Styling & Scripting on WebKit MobileInterface Styling & Scripting on WebKit Mobile
Interface Styling & Scripting on WebKit Mobile
 
CSS3: Ready for Primetime?
CSS3: Ready for Primetime?CSS3: Ready for Primetime?
CSS3: Ready for Primetime?
 
JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3
 
Implementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 WorkshopImplementing Awesome: An HTML5/CSS3 Workshop
Implementing Awesome: An HTML5/CSS3 Workshop
 
Svcc 2013-d3
Svcc 2013-d3Svcc 2013-d3
Svcc 2013-d3
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
HTML5 تکنولوژی های موجود در
HTML5 تکنولوژی های موجود در HTML5 تکنولوژی های موجود در
HTML5 تکنولوژی های موجود در
 
Css animation
Css animationCss animation
Css animation
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIscodebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIs
 
The CSS of Tomorrow (Front Row 2011)
The CSS of Tomorrow (Front Row 2011)The CSS of Tomorrow (Front Row 2011)
The CSS of Tomorrow (Front Row 2011)
 
HTML5, the new buzzword
HTML5, the new buzzwordHTML5, the new buzzword
HTML5, the new buzzword
 
HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference ZürichHTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
 
Professional reports with SVG
Professional reports with SVGProfessional reports with SVG
Professional reports with SVG
 
CSS3 pronti all'uso
CSS3 pronti all'usoCSS3 pronti all'uso
CSS3 pronti all'uso
 
Accelerated Stylesheets
Accelerated StylesheetsAccelerated Stylesheets
Accelerated Stylesheets
 
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.comA brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
A brief look at CSS3 techniques by Aaron Rodgers, Web Designer @ vzaar.com
 

More from Thomas Fuchs

Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2KZepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Thomas Fuchs
 

More from Thomas Fuchs (7)

Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-Frameworks
 
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2KZepto.js, a jQuery-compatible mobile JavaScript framework in 2K
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
 
Prototype & Scriptaculous
Prototype  & ScriptaculousPrototype  & Scriptaculous
Prototype & Scriptaculous
 
Extreme JavaScript Performance
Extreme JavaScript PerformanceExtreme JavaScript Performance
Extreme JavaScript Performance
 
Textorize
TextorizeTextorize
Textorize
 
Adventures In JavaScript Testing
Adventures In JavaScript TestingAdventures In JavaScript Testing
Adventures In JavaScript Testing
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

I Can't Believe It's Not Flash

  • 1. I Can’t Believe It’s Not Flash! @thomasfuchs
  • 3.
  • 4. Animating CSS properties Timer JavaScript Reflow Rendering Paint sets CSS
  • 5.
  • 6. Animating CSS properties Timer JavaScript Reflow Rendering Paint sets CSS
  • 8. Performance hit JavaScript Reflow Rendering Paint
  • 9. Performance hit JavaScript Reflow Rendering Paint
  • 10. Performance hit JavaScript Reflow Rendering Paint
  • 11. Performance hit JavaScript Reflow Rendering Paint
  • 12. Performance hit JavaScript Reflow Rendering Paint
  • 13. Browser CSS animation/ transitions Timer Browser Reflow Rendering Paint updates CSS
  • 14.
  • 15. Timer JavaScript Reflow Rendering Paint sets CSS Timer Browser Reflow Rendering Paint updates CSS
  • 16. Timer JavaScript Reflow Rendering Paint sets CSS Timer Browser Reflow Rendering Paint updates CSS
  • 17. -webkit-transform Paint JavaScript or Browser sets CSS
  • 18.
  • 19.
  • 20.
  • 21. <!DOCTYPE  html  PUBLIC  "-­‐//W3C//DTD  XHTML  1.0  Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-­‐transitional.dtd"> <html  xmlns="http://www.w3.org/1999/xhtml"  xml:lang="en"  lang="en"> <head>    <meta  http-­‐equiv="Content-­‐Type"  content="text/html;  charset=utf-­‐8"/>    <title>index</title>    <style  type="text/css"  media="screen">        div  {            position:  absolute;            border:  3px  solid  red;        }        #d1  {            left:  20px;  top:  20px;  width:  400px;  height:  400px;            -­‐webkit-­‐transform:translateZ(0px);        }        #d2  {            left:  100px;  top:  30px;  width:  150px;  height:  100px;            -­‐webkit-­‐transform:translateZ(-­‐100px);        }        #d3  {            left:  300px;  top:  40px;  width:  100px;  height:  50px;            -­‐webkit-­‐transform:translateZ(-­‐200px);        }        #d4  {            left:  320px;  top:  80px;  width:  90px;  height:  50px;            -­‐webkit-­‐transform:translateZ(-­‐300px);        }        #d5  {            left:  280px;  top:  90px;  width:  90px;  height:  50px;            -­‐webkit-­‐transform:translateZ(-­‐400px);        }        body  {            -­‐webkit-­‐transform-­‐style:  preserve-­‐3d;
  • 22.        #d2  {            left:  100px;  top:  30px;  width:  150px;  height:  100px;            -­‐webkit-­‐transform:translateZ(-­‐100px);        }        #d3  {            left:  300px;  top:  40px;  width:  100px;  height:  50px;            -­‐webkit-­‐transform:translateZ(-­‐200px);        }        #d4  {            left:  320px;  top:  80px;  width:  90px;  height:  50px;            -­‐webkit-­‐transform:translateZ(-­‐300px);        }        #d5  {            left:  280px;  top:  90px;  width:  90px;  height:  50px;            -­‐webkit-­‐transform:translateZ(-­‐400px);        }        body  {            -­‐webkit-­‐transform-­‐style:  preserve-­‐3d;            -­‐webkit-­‐transform:rotateX(0deg)  rotateY(0deg)  rotateZ(0deg)  perspective(0);        }        body.stage2  {            -­‐webkit-­‐transition:  -­‐webkit-­‐transform  10s;            -­‐webkit-­‐transform:rotateX(30deg)  rotateY(-­‐50deg)  rotateZ(10deg)  perspective(0);        }    </style> </head> <body>    <div  id="d1"></div>    <div  id="d2"></div>    <div  id="d3"></div>    <div  id="d4"></div>    <div  id="d5"></div> </body> </html>
  • 23. Safari on Snow Leopard, or on Windows: Nokia’s Starlight browser (alpha) http://www.starlight-webkit.org/
  • 25.
  • 26. Fullscreen HD Video CPU% HTML5: 10% FLASH: 100+% (and dropped frames) http://jilion.com/sublime/video
  • 27.
  • 28. Canvas Timer JavaScript Paint uses Canvas APIs
  • 29.
  • 30. Physics engine with Canvas Timer 1) clear canvas Paint 2) physics iteration 3) draw shapes Box2D physics engine
  • 31. function  createBall(world,  x,  y)  {    var  ballSd  =  new  b2CircleDef();    ballSd.density  =  0.3;    ballSd.radius  =  20+Math.random()*20;    ballSd.restitution  =  0.1;    ballSd.friction  =  0.2;    var  ballBd  =  new  b2BodyDef();    ballBd.rotation  =  0.3;    ballBd.AddShape(ballSd);    ballBd.position.Set(x,y);    return  world.CreateBody(ballBd); }
  • 32.                    world.Step(ms,1);
  • 33. 3) draw shapes box2d objects/ positions canvas
  • 35. Vector graphics SVG + VML JavaScript Reflow Rendering Paint creates vector graphics nodes
  • 37. <path  fill="none"  stroke="#5cbfff"   d="M52.2,40.5L47.23,55.5L38.53,70.5L33.88,85.5L36.63,100.5L50.1 ,115.5L70.7,130.5L97.85,145.5L123.65,160.5L139.3,175.5L126.2,19 0.5L132.95,205.5L157.58,220.5L143.85,235.5L155.25,250.5L151.43, 265.5L149.05,280.5L104.5,295.5L103.6,310.5L97.85,325.5L94.58,34 0.5L86.7,355.5L78.95,370.5L69.35,385.5M56.4,440.5L42.3,455.5L32 .93,470.5L26.38,485.5L28.23,500.5L28.95,515.5L40.45,530.5L57.55 ,545.5L80.18,560.5L123.55,575.5L144.95,590.5L137.33,605.5L134.9 8,620.5L149.7,635.5L162.73,650.5L142.83,665.5L164.2,680.5L106.2 5,695.5L97.28,710.5L88.75,725.5L90.83,740.5L87.15,755.5L85.15,7 70.5L62.55,785.5M52.78,840.5L41.5,855.5L33.1,870.5L22.38,885.5L 25.63,900.5L24.05,915.5L33.05,930.5L48.3,945.5L65.35,960.5L115. 2,975.5L137.7,990.5L136.43,1005.5L102.28,1020.5L132.28,1035.5L1 37.5,1050.5L132.05,1065.5L155.83,1080.5L107.3,1095.5L95.98,1110 .5L94.73,1125.5L94.65,1140.5L86.25,1155.5L83.4,1170.5L70.48,118 5.5M58.6,1240.5L43.38,1255.5L33.35,1270.5L28.43,1285.5L29.05,13 00.5L38.43,1315.5L51.35,1330.5L82.38,1345.5L105.73,1360.5L159.7 8,1375.5L176.05,1390.5L164.13,1405.5L139.48,1420.5L131.53,1435. 5L164.83,1450.5L161.15,1465.5L157.2,1480.5L112.68,1495.5L105.68 ,1510.5L103.83,1525.5L104.25,1540.5L92.5,1555.5L91.35,1570.5L70 .48,1585.5M54.05,1640.5L48.6,1655.5L35.02,1670.5L32.8,1685.5L36 .98,1700.5L41.75,1715.5L63.78,1730.5L90.6,1745.5L112.28,1760.5L 161.35,1775.5L171.2,1790.5L180.43,1805.5L171.88,1820.5L168.65,1 835.5L153.88,1850.5L148.35,1865.5L140.28,1880.5L110.2,1895.5L10 4.68,1910.5L101.2,1925.5L96.7,1940.5L96.5,1955.5L80.08,1970.5L6 8.4,1985.5M54.8,2040.5L41.23,2055.5L35.85,2070.5L30.15,2085.5L3
  • 39.
  • 40. WebGL shaders Timer JavaScript Paint
  • 41. WebGL <script  id="vshader"  type="x-­‐shader/x-­‐vertex">    uniform  mat4  u_modelViewMatrix;    uniform  mat4  u_modelViewProjMatrix;    uniform  mat4  u_normalMatrix;    uniform  vec3  lightDir;    attribute  vec3  vNormal;    attribute  vec4  vTexCoord;    attribute  vec4  vPosition;                    varying  float  v_Dot;    varying  vec2  v_texCoord;                    void  main()    {        gl_Position  =  u_modelViewProjMatrix  *  vPosition;        v_texCoord  =  vTexCoord.st;        vec4  transNormal  =  u_normalMatrix  *  vec4(vNormal,1);        v_Dot  =  max(dot(transNormal.xyz,  lightDir),  0.0);    } </script>
  • 42.    var  exampleScene  =  scene(        {},        /*  A  renderer  node  binds  subnodes  to  a  WebGL  canvas  element              defined  in  the  HTML  tab  then  clears  the  depth  and  colour  buffers          */        renderer({                                canvasId:  'theCanvas',                                clear  :  {  depth  :  true,  color  :  true}                        },                /*  A  simple  phong  GLSL  shader  to  render  sub-­‐nodes,  with                      a  single  light  source.  This  shader  type  only  supports                      a  one  light  source.                  */                shader(                    {  type:  'simple-­‐shader'  },                    lights( scenejs.org                        {                            lights:  [                                {                                    pos:  {  x:  -­‐30.0,  y:  30.0,  z:  -­‐30.0  }                                }                            ]},                        /*  Perspective  transformation                          */
  • 45. http://ftp.mozilla.org/pub/mozilla.org/ firefox/nightly/latest-trunk/
  • 46.
  • 47. JavaScript & CSS CSS Transforms & Animations 2D bitmapped graphics Physics engines Vector graphics HTML5 video WebGL