SlideShare a Scribd company logo
3D Graphics with CSS3, jQuery,
   CSS Shaders, and WebGL
          OWC at PayPal
           July 14, 2012
        Oswald Campesato
Demo-Oriented Presentation
• Mobile devices:
Asus Prime Android Tablet (ICS)
Sprint Nexus S 4G (ICS)
iPad3
• Hybrid Mobile Apps:
CSS3, jQuery, and jQuery Mobile
Simple JavaScript
PhoneGap (for iPad3)
CSS3 Flying Borg Cube (Demo #1)
• CSS3 skew (for the three cube faces)

• CSS3 3D linear/radial gradients

• CSS3 3D transforms

• CSS3 3D animation effects (keyframes)
CSS3 Flying Borg Cube (Demo #1)
• No toolkit for desktop version

• No toolkit for Android ICS Tablet

• PhoneGap/Cordova for iPad3
CSS3 Matrix (1)
• CSS3 matrix(a1,a2,a3,a4,a5,a6):

 a1    a3   a5
 a2    a4   a6
 0     0    1
CSS3 Matrix (2)
• CSS3 Identity matrix(1, 0, 0, 1, 0, 0):

 1     0      0
 0     1      0
 0     0      1
CSS3 Matrix (3)
• CSS3 “scale” matrix(s1, 0, 0, s4, 0, 0):

  s1 0       0
  0    s4 0
  0     0    1
• “shrink” if s1 or s4 is < 1
• “expand” if s1 or s4 is > 1
CSS3 Matrix (4)
• CSS3 “skew” matrix(a1, sy, sx, a4, 0, 0):

  a1 sx       0
  sy a4      0
  0    0      1
• “skew X”   if sx != 0
• “skew Y”   if sy != 0
CSS3 Matrix (5)
• CSS3 “translate” matrix(a1, 0, 0, a4, tx, ty):

  a1 0       tx
  0    a4 ty
  0     0     1
• “translate X” if tx != 0
• “translate Y” if ty != 0
CSS3 Matrix (6)
• CSS3 “rotate” matrix(ct, st, -st, ct, 0, 0):

 ct    -st    0
 st     ct    0
 0       0    1

• ct = cosine (t) and st = sine(t)
CSS3 Bouncing Balls (Demo #2)
• jQuery css() function

• Simple JavaScript

• setTimeout() function
CSS3 Bouncing Cubes (Demo #3)
• jQuery css() function

• jQuery clone() function

• setTimeout() function
CSS3 Basic Pong Game (Demo #4)
• jQuery css() function

• jQuery clone() function

• setTimeout() function

• jQuery Mobile vmousemouse event
CSS3 Archimedean Spiral (Demo #5)
• jQuery css() function

• Simple JavaScript

• CSS3 radial gradients

• CSS3 animation effects (keyframes)
CSS3 3D Animation (Demo #6)
• CSS3 3D rotate() function

• CSS3 3D scale() function

• CSS3 skew() function

• CSS3 matrix() function
CSS Shaders
• CSS Shaders (“WebGL for CSS3”) use:
 + Vertex shaders (project points from 3D to 2D)
 + Fragment shaders (pixel coloring)

• Shaders use a C-like language (GLSL)

• W3C specification (early stage):
https://dvcs.w3.org/hg/FXTF/raw-file/tip/custom/in
CSS Shaders in CSS selectors
• #1: use the filter property in CSS Selectors
 and reference a Vertex Shader file:

• -webkit-filter: custom(
            url(shaders/frequency1.vs),
           10 10, phase 50.0, frequency -2.0,
           amplitude 10, txf rotateX(30deg));
CSS Shaders (GLSL code)
• #2: define variables (matching the CSS names)
  in the shaders/frequency1.vs file:
• uniform mat4 txf;
• uniform float phase;
• uniform float amplitude;
• uniform float frequency;
• const float PI        = 3.1415;
• const float degToRad = PI/180.0;
CSS Shaders (GLSL Code)
• #3: GLSL transformation code:
• void main() {
• v_texCoord = a_texCoord;
• vec4 pos = vec4(a_position, 1.0);
• float phi = degToRad * phase;
• pos.z = cos(pos.x * PI * 1.0 + phi);
• gl_Position = u_projectionMatrix * txf * pos;
• }
OpenGL (in brief)
•   + created in 1992
•   + a cross-platform 3D drawing standard
•   + widely used in gaming
•   + computer-aided design apps
•   + counterpart to Microsoft’s Direct3D
•   + currently at specification version 4.0
WebGL (in brief)
•   "JavaScript meets OpenGL”
•   an API for 3D graphics
•   standardization: Khronos Group
•   a binding for OpenGL ES 2 in JavaScript
•   uses the programmable graphics pipeline
•   getContext("moz-webgl") on a canvas
    element
WebGL (when/why?)
•   highly flexible rendering effects
•   applied to 3D scenes
•   increases the realism of displays
•   less complex than OpenGL
•   security issues (according to Microsoft)
WebGL Shaders (2 Types)
• WebGL vertex shaders:
  + perform transforms and
  + calculate 3D->2D projection

• WebGL fragment shaders:
  + use linear interpolation to compute colors
    and apply them to pixels
HTML5 Apps with WebGL
•   + HTML for structure
•   + CSS for style
•   + JavaScript for logic
•   + GLSL for shaders
CSS Shaders and WebGL
• CSS Vertex Shaders = WebGL Vertex Shaders
• CSS Fragment Shaders != WebGL Fragment Shaders
• Read the W3C CSS Shaders Specification for details

• Adobe CSS Shaders examples:
http://adobe.github.com/web-platform/samples/css-
  shaders/
Toolkits for WebGL
• Three.js (a JS layer on top of WebGL)

• tQuery.js (a layer on top of Three.js)

• Other toolkits
Three.js (“Mr Doob”)
• A JS layer of abstraction over WebGL

• Download link (and code samples):
  https://github.com/mrdoob/three.js/

• Code stability between versions

• Code sample: README file
How to Use Three.js
• You need to do 3 things:
+ 1) create a scene (things people will see)

+ 2) create a camera (which can be moved)

+ 3) create a renderer (Canvas/WebGL/SVG)

• Simple example (README file):
https://github.com/mrdoob/three.js/
What is tQuery.js?
• A jQuery plugin and layer over Three.js

• tQuery = Three.js + jQuery

• Simpler than Three.js

• Download page (and code samples):
  http://jeromeetienne.github.com/tquery/
A Torus in 2 Lines with tQuery.js
<script>
 var world =
     tQuery.createWorld().boilerplate().start();

  var object =
    tQuery.createTorus().addTo(world);
</script>
Multi-Media Fusion (Demo)
• http://www.technitone.com/

•   Uses the following 7 technologies:
•   WebGL and Web Sockets
•   Canvas, CSS3, and Javascript
•   Flash, and Web Audio API
WebGL Demos and Samples
• Kaazing (multiple demos) racing car:
+ http://kaazing.com/demo

• Tony Parisi (code samples):
https://github.com/tparisi/WebGLBook
Open Source Projects
• Projects on http://code.google.com/p:
+ css3-graphics and html5-canvas-graphics

+ css-shaders-graphics and css3-jQuery-graphics

+ svg-graphics and svg-filters-graphics

+ D3, jQuery, Raphael, Google Go

+ Dart, Easel.js, JavaFX 2.0
Books and Meetup
• Upcoming Books (Q4/2012):
1) HTML5 Canvas and CSS3 Graphics Primer
2) jQuery, CSS3, and HTML5 for Mobile

• WebGL meetup SF (Tony Parisi):
http
  ://www.meetup.com/WebGL-Developers-Me
  /
• “WebGL: Up and Running” (Tony Parisi)

More Related Content

PPTX
3D Design with OpenSCAD
PPTX
HTML5 Animation in Mobile Web Games
PDF
SVG - Scalable Vector Graphics
PDF
ENEI16 - WebGL with Three.js
PDF
Html5 em 30 minutos
PDF
Having fun with graphs, a short introduction to D3.js
KEY
Cocos2dを使ったゲーム作成の事例
PPTX
The Great and Mighty C++
3D Design with OpenSCAD
HTML5 Animation in Mobile Web Games
SVG - Scalable Vector Graphics
ENEI16 - WebGL with Three.js
Html5 em 30 minutos
Having fun with graphs, a short introduction to D3.js
Cocos2dを使ったゲーム作成の事例
The Great and Mighty C++

What's hot (7)

PDF
D3 data visualization
PDF
D3 js
KEY
Interactive Graphics
PPTX
WebGL and three.js - Web 3D Graphics
PPTX
Trident International Graphics Workshop 2014 1/5
PDF
Sceneform SDK на практиці - UA Mobile 2019
PDF
The Ring programming language version 1.9 book - Part 46 of 210
D3 data visualization
D3 js
Interactive Graphics
WebGL and three.js - Web 3D Graphics
Trident International Graphics Workshop 2014 1/5
Sceneform SDK на практиці - UA Mobile 2019
The Ring programming language version 1.9 book - Part 46 of 210
Ad

Similar to OWC 2012 (Open Web Camp) (20)

PPTX
Svcc 2013-css3-and-mobile
PDF
Intro to CSS3
PPTX
Hardboiled Web Design
PPTX
SVGD3Angular2React
PDF
CSS3: Ripe and Ready to Respond
PDF
Simply Responsive CSS3
PPTX
Html5 more than just html5 v final
PDF
CSS3: Ripe and Ready
PPTX
Svcc 2013-d3
PPTX
SVCC 2013 D3.js Presentation (10/05/2013)
PPTX
HTML5 for ASP.NET Developers
PDF
Designing Your Next Generation Web Pages with CSS3
PDF
JavaONE 2012 Using Java with HTML5 and CSS3
KEY
KEY
Trendsetting: Web Design and Beyond
KEY
Thats Not Flash?
PDF
How to build a html5 websites.v1
PPTX
About Best friends - HTML, CSS and JS
PDF
Mongo db washington dc 2014
KEY
Rockstar Graphics with HTML5
Svcc 2013-css3-and-mobile
Intro to CSS3
Hardboiled Web Design
SVGD3Angular2React
CSS3: Ripe and Ready to Respond
Simply Responsive CSS3
Html5 more than just html5 v final
CSS3: Ripe and Ready
Svcc 2013-d3
SVCC 2013 D3.js Presentation (10/05/2013)
HTML5 for ASP.NET Developers
Designing Your Next Generation Web Pages with CSS3
JavaONE 2012 Using Java with HTML5 and CSS3
Trendsetting: Web Design and Beyond
Thats Not Flash?
How to build a html5 websites.v1
About Best friends - HTML, CSS and JS
Mongo db washington dc 2014
Rockstar Graphics with HTML5
Ad

More from Oswald Campesato (20)

PPTX
Working with tf.data (TF 2)
PPTX
Introduction to TensorFlow 2 and Keras
PPTX
Introduction to Deep Learning
PPTX
Introduction to TensorFlow 2
PPTX
Introduction to TensorFlow 2
PPTX
"An Introduction to AI and Deep Learning"
PPTX
H2 o berkeleydltf
PPTX
Introduction to Deep Learning, Keras, and Tensorflow
PPTX
Introduction to Deep Learning for Non-Programmers
PPTX
TensorFlow in Your Browser
PPTX
Deep Learning in Your Browser
PPTX
Deep Learning and TensorFlow
PPTX
Introduction to Deep Learning and TensorFlow
PPTX
Intro to Deep Learning, TensorFlow, and tensorflow.js
PPTX
Deep Learning and TensorFlow
PPTX
Introduction to Deep Learning and Tensorflow
PPTX
Deep Learning, Scala, and Spark
PPTX
Deep Learning in your Browser: powered by WebGL
PPTX
Deep Learning, Keras, and TensorFlow
PPTX
C++ and Deep Learning
Working with tf.data (TF 2)
Introduction to TensorFlow 2 and Keras
Introduction to Deep Learning
Introduction to TensorFlow 2
Introduction to TensorFlow 2
"An Introduction to AI and Deep Learning"
H2 o berkeleydltf
Introduction to Deep Learning, Keras, and Tensorflow
Introduction to Deep Learning for Non-Programmers
TensorFlow in Your Browser
Deep Learning in Your Browser
Deep Learning and TensorFlow
Introduction to Deep Learning and TensorFlow
Intro to Deep Learning, TensorFlow, and tensorflow.js
Deep Learning and TensorFlow
Introduction to Deep Learning and Tensorflow
Deep Learning, Scala, and Spark
Deep Learning in your Browser: powered by WebGL
Deep Learning, Keras, and TensorFlow
C++ and Deep Learning

Recently uploaded (20)

PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Machine learning based COVID-19 study performance prediction
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
cuic standard and advanced reporting.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Chapter 3 Spatial Domain Image Processing.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation_ Review paper, used for researhc scholars
Review of recent advances in non-invasive hemoglobin estimation
Machine learning based COVID-19 study performance prediction
Unlocking AI with Model Context Protocol (MCP)
sap open course for s4hana steps from ECC to s4
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Big Data Technologies - Introduction.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Per capita expenditure prediction using model stacking based on satellite ima...
Understanding_Digital_Forensics_Presentation.pptx
Spectral efficient network and resource selection model in 5G networks
cuic standard and advanced reporting.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Mobile App Security Testing_ A Comprehensive Guide.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Chapter 3 Spatial Domain Image Processing.pdf

OWC 2012 (Open Web Camp)

  • 1. 3D Graphics with CSS3, jQuery, CSS Shaders, and WebGL OWC at PayPal July 14, 2012 Oswald Campesato
  • 2. Demo-Oriented Presentation • Mobile devices: Asus Prime Android Tablet (ICS) Sprint Nexus S 4G (ICS) iPad3 • Hybrid Mobile Apps: CSS3, jQuery, and jQuery Mobile Simple JavaScript PhoneGap (for iPad3)
  • 3. CSS3 Flying Borg Cube (Demo #1) • CSS3 skew (for the three cube faces) • CSS3 3D linear/radial gradients • CSS3 3D transforms • CSS3 3D animation effects (keyframes)
  • 4. CSS3 Flying Borg Cube (Demo #1) • No toolkit for desktop version • No toolkit for Android ICS Tablet • PhoneGap/Cordova for iPad3
  • 5. CSS3 Matrix (1) • CSS3 matrix(a1,a2,a3,a4,a5,a6): a1 a3 a5 a2 a4 a6 0 0 1
  • 6. CSS3 Matrix (2) • CSS3 Identity matrix(1, 0, 0, 1, 0, 0): 1 0 0 0 1 0 0 0 1
  • 7. CSS3 Matrix (3) • CSS3 “scale” matrix(s1, 0, 0, s4, 0, 0): s1 0 0 0 s4 0 0 0 1 • “shrink” if s1 or s4 is < 1 • “expand” if s1 or s4 is > 1
  • 8. CSS3 Matrix (4) • CSS3 “skew” matrix(a1, sy, sx, a4, 0, 0): a1 sx 0 sy a4 0 0 0 1 • “skew X” if sx != 0 • “skew Y” if sy != 0
  • 9. CSS3 Matrix (5) • CSS3 “translate” matrix(a1, 0, 0, a4, tx, ty): a1 0 tx 0 a4 ty 0 0 1 • “translate X” if tx != 0 • “translate Y” if ty != 0
  • 10. CSS3 Matrix (6) • CSS3 “rotate” matrix(ct, st, -st, ct, 0, 0): ct -st 0 st ct 0 0 0 1 • ct = cosine (t) and st = sine(t)
  • 11. CSS3 Bouncing Balls (Demo #2) • jQuery css() function • Simple JavaScript • setTimeout() function
  • 12. CSS3 Bouncing Cubes (Demo #3) • jQuery css() function • jQuery clone() function • setTimeout() function
  • 13. CSS3 Basic Pong Game (Demo #4) • jQuery css() function • jQuery clone() function • setTimeout() function • jQuery Mobile vmousemouse event
  • 14. CSS3 Archimedean Spiral (Demo #5) • jQuery css() function • Simple JavaScript • CSS3 radial gradients • CSS3 animation effects (keyframes)
  • 15. CSS3 3D Animation (Demo #6) • CSS3 3D rotate() function • CSS3 3D scale() function • CSS3 skew() function • CSS3 matrix() function
  • 16. CSS Shaders • CSS Shaders (“WebGL for CSS3”) use: + Vertex shaders (project points from 3D to 2D) + Fragment shaders (pixel coloring) • Shaders use a C-like language (GLSL) • W3C specification (early stage): https://dvcs.w3.org/hg/FXTF/raw-file/tip/custom/in
  • 17. CSS Shaders in CSS selectors • #1: use the filter property in CSS Selectors and reference a Vertex Shader file: • -webkit-filter: custom( url(shaders/frequency1.vs), 10 10, phase 50.0, frequency -2.0, amplitude 10, txf rotateX(30deg));
  • 18. CSS Shaders (GLSL code) • #2: define variables (matching the CSS names) in the shaders/frequency1.vs file: • uniform mat4 txf; • uniform float phase; • uniform float amplitude; • uniform float frequency; • const float PI = 3.1415; • const float degToRad = PI/180.0;
  • 19. CSS Shaders (GLSL Code) • #3: GLSL transformation code: • void main() { • v_texCoord = a_texCoord; • vec4 pos = vec4(a_position, 1.0); • float phi = degToRad * phase; • pos.z = cos(pos.x * PI * 1.0 + phi); • gl_Position = u_projectionMatrix * txf * pos; • }
  • 20. OpenGL (in brief) • + created in 1992 • + a cross-platform 3D drawing standard • + widely used in gaming • + computer-aided design apps • + counterpart to Microsoft’s Direct3D • + currently at specification version 4.0
  • 21. WebGL (in brief) • "JavaScript meets OpenGL” • an API for 3D graphics • standardization: Khronos Group • a binding for OpenGL ES 2 in JavaScript • uses the programmable graphics pipeline • getContext("moz-webgl") on a canvas element
  • 22. WebGL (when/why?) • highly flexible rendering effects • applied to 3D scenes • increases the realism of displays • less complex than OpenGL • security issues (according to Microsoft)
  • 23. WebGL Shaders (2 Types) • WebGL vertex shaders: + perform transforms and + calculate 3D->2D projection • WebGL fragment shaders: + use linear interpolation to compute colors and apply them to pixels
  • 24. HTML5 Apps with WebGL • + HTML for structure • + CSS for style • + JavaScript for logic • + GLSL for shaders
  • 25. CSS Shaders and WebGL • CSS Vertex Shaders = WebGL Vertex Shaders • CSS Fragment Shaders != WebGL Fragment Shaders • Read the W3C CSS Shaders Specification for details • Adobe CSS Shaders examples: http://adobe.github.com/web-platform/samples/css- shaders/
  • 26. Toolkits for WebGL • Three.js (a JS layer on top of WebGL) • tQuery.js (a layer on top of Three.js) • Other toolkits
  • 27. Three.js (“Mr Doob”) • A JS layer of abstraction over WebGL • Download link (and code samples): https://github.com/mrdoob/three.js/ • Code stability between versions • Code sample: README file
  • 28. How to Use Three.js • You need to do 3 things: + 1) create a scene (things people will see) + 2) create a camera (which can be moved) + 3) create a renderer (Canvas/WebGL/SVG) • Simple example (README file): https://github.com/mrdoob/three.js/
  • 29. What is tQuery.js? • A jQuery plugin and layer over Three.js • tQuery = Three.js + jQuery • Simpler than Three.js • Download page (and code samples): http://jeromeetienne.github.com/tquery/
  • 30. A Torus in 2 Lines with tQuery.js <script> var world = tQuery.createWorld().boilerplate().start(); var object = tQuery.createTorus().addTo(world); </script>
  • 31. Multi-Media Fusion (Demo) • http://www.technitone.com/ • Uses the following 7 technologies: • WebGL and Web Sockets • Canvas, CSS3, and Javascript • Flash, and Web Audio API
  • 32. WebGL Demos and Samples • Kaazing (multiple demos) racing car: + http://kaazing.com/demo • Tony Parisi (code samples): https://github.com/tparisi/WebGLBook
  • 33. Open Source Projects • Projects on http://code.google.com/p: + css3-graphics and html5-canvas-graphics + css-shaders-graphics and css3-jQuery-graphics + svg-graphics and svg-filters-graphics + D3, jQuery, Raphael, Google Go + Dart, Easel.js, JavaFX 2.0
  • 34. Books and Meetup • Upcoming Books (Q4/2012): 1) HTML5 Canvas and CSS3 Graphics Primer 2) jQuery, CSS3, and HTML5 for Mobile • WebGL meetup SF (Tony Parisi): http ://www.meetup.com/WebGL-Developers-Me / • “WebGL: Up and Running” (Tony Parisi)