39
3D In the Browser It’s go time. Presented by Pascal Rettig http://cykod.com @cykod Liberally using Material From: Mozilla MIT IAP WebGL Class http://learningwebgl.com Monday, July 11, 2011

3D in the Browser via WebGL: It's Go Time

Embed Size (px)

DESCRIPTION

Presentation on WebGL given to the Boston HTML5 Game Development Meetup on 3/16/2011

Citation preview

Page 1: 3D in the Browser via WebGL: It's Go Time

3D In the BrowserIt’s go time.

Presented by Pascal Rettighttp://cykod.com @cykod

Liberally using Material From:Mozilla MIT IAP WebGL Class

http://learningwebgl.com

Monday, July 11, 2011

Page 2: 3D in the Browser via WebGL: It's Go Time

When last I talked...

Monday, July 11, 2011

Page 3: 3D in the Browser via WebGL: It's Go Time

Where We are

1985-90 1991-94 1995-20001977-84

Monday, July 11, 2011

Page 4: 3D in the Browser via WebGL: It's Go Time

Where we are

Q4 2010 Q2 2011 Q4 2011Q1 2010

Monday, July 11, 2011

Page 5: 3D in the Browser via WebGL: It's Go Time

I was wrong.

Q4 2010 Q2 2011Q1 2010

Monday, July 11, 2011

Page 6: 3D in the Browser via WebGL: It's Go Time

WebGL is enabled in:

• Chrome - Stable

• Firefox 4 Beta

• Webkit Nightly’s

• an Opera Preview Release

• IE ... Yeah, not anytime soon.

Monday, July 11, 2011

Page 7: 3D in the Browser via WebGL: It's Go Time

By the end of Q2All major supported browsers should have WebGL

turned on by default.

Monday, July 11, 2011

Page 9: 3D in the Browser via WebGL: It's Go Time

What is WebGL?WebGL is a royalty-free, cross-platform API that brings OpenGL ES 2.0 to the web as a 3D drawing context within HTML, exposed as low-level Document Object Model interfaces. It 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 ideally suited for dynamic 3D web applications in the JavaScript programming language, and will be fully integrated in leading web browsers.

http://www.khronos.org/

Monday, July 11, 2011

Page 10: 3D in the Browser via WebGL: It's Go Time

WebGL is:

Monday, July 11, 2011

Page 11: 3D in the Browser via WebGL: It's Go Time

WebGL is:

• A 1.0 Standard (as of 3/8/11) released by the Khronos Group

Monday, July 11, 2011

Page 12: 3D in the Browser via WebGL: It's Go Time

WebGL is:

• A 1.0 Standard (as of 3/8/11) released by the Khronos Group

• In-browser native (Look ma, no plugins!)

Monday, July 11, 2011

Page 13: 3D in the Browser via WebGL: It's Go Time

WebGL is:

• A 1.0 Standard (as of 3/8/11) released by the Khronos Group

• In-browser native (Look ma, no plugins!)

• Implementation of OpenGL ES 2.0 (OpenGL for embedded systems)

Monday, July 11, 2011

Page 14: 3D in the Browser via WebGL: It's Go Time

WebGL is:

• A 1.0 Standard (as of 3/8/11) released by the Khronos Group

• In-browser native (Look ma, no plugins!)

• Implementation of OpenGL ES 2.0 (OpenGL for embedded systems)

• A low level API (We’re not kidding around)

Monday, July 11, 2011

Page 15: 3D in the Browser via WebGL: It's Go Time

WebGL is:

• A 1.0 Standard (as of 3/8/11) released by the Khronos Group

• In-browser native (Look ma, no plugins!)

• Implementation of OpenGL ES 2.0 (OpenGL for embedded systems)

• A low level API (We’re not kidding around)

• Well Integrated into the DOM - can layer, use textures, etc.

Monday, July 11, 2011

Page 16: 3D in the Browser via WebGL: It's Go Time

OpenGL ES 2.0

Monday, July 11, 2011

Page 17: 3D in the Browser via WebGL: It's Go Time

OpenGL ES 2.0

• OpenGL for Embedded Systems

Monday, July 11, 2011

Page 18: 3D in the Browser via WebGL: It's Go Time

OpenGL ES 2.0

• OpenGL for Embedded Systems

• Well-defined subsets of desktop OpenGL

Monday, July 11, 2011

Page 19: 3D in the Browser via WebGL: It's Go Time

OpenGL ES 2.0

• OpenGL for Embedded Systems

• Well-defined subsets of desktop OpenGL

• What you’re using playing 3D games on your iPhone 3G (Orig. iPhone, Android are ES 1.0)

Monday, July 11, 2011

Page 20: 3D in the Browser via WebGL: It's Go Time

OpenGL ES 2.0

• OpenGL for Embedded Systems

• Well-defined subsets of desktop OpenGL

• What you’re using playing 3D games on your iPhone 3G (Orig. iPhone, Android are ES 1.0)

• OpenGL ES 1.X is for fixed function hardware. 2.0 is fully programmable vertex and fragement shaders.

Monday, July 11, 2011

Page 21: 3D in the Browser via WebGL: It's Go Time

WebGL uses shaders for just about everything• Little bits of run-time compiled code that

runs on the GPU

• GLSL (OpenGL Shading Language)

• “High Level” Shader language based on C

• Compiled at runtime

• Vertex shaders transform vertices

• Fragment shaders compute pixel colors

Monday, July 11, 2011

Page 22: 3D in the Browser via WebGL: It's Go Time

WebGL PipeLineVertex Operation

Rasterization

Fragment Operation

FrameBuffer

Monday, July 11, 2011

Page 23: 3D in the Browser via WebGL: It's Go Time

Simple(st) Shaders

void main(void) { gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); }

Fragment Shader

attribute vec3 aVertexPosition;void main(void) { gl_Position = vec4(aVertexPosition, 1.0);}

Vertex Shader

Monday, July 11, 2011

Page 24: 3D in the Browser via WebGL: It's Go Time

Which gets us...

Monday, July 11, 2011

Page 25: 3D in the Browser via WebGL: It's Go Time

Simplest Full Example(From Mozilla IAP class)

Monday, July 11, 2011

Page 27: 3D in the Browser via WebGL: It's Go Time

Has anyone noticed a problem?

Monday, July 11, 2011

Page 28: 3D in the Browser via WebGL: It's Go Time

Has anyone noticed a problem?

OpenGL isn’t exactly something you want to have to see on a daily basis, especially as a Javascript Programmer

Monday, July 11, 2011

Page 29: 3D in the Browser via WebGL: It's Go Time

Abstraction Please...

Monday, July 11, 2011

Page 30: 3D in the Browser via WebGL: It's Go Time

PhiloGLRelatively new framework from Sencha Labs

http://senchalabs.github.com/philogl/

Monday, July 11, 2011

Page 32: 3D in the Browser via WebGL: It's Go Time

Mr. Doobs Three.jshttps://github.com/mrdoob/three.js/

Generic 3D library that supports a WebGL rendering as one of the backends.

Monday, July 11, 2011

Page 33: 3D in the Browser via WebGL: It's Go Time

Three.js

Monday, July 11, 2011

Page 34: 3D in the Browser via WebGL: It's Go Time

Three.js• Nice, standard OO Abstractions for 3D

programming.

• No documentation, but lots of examples in the examples directory.

• Lots of Demos to look at on the Github Page

• May be a little too abstract for performant WebGL games, but they are reworking the WebGL renderer, so who knows.

Monday, July 11, 2011

Page 35: 3D in the Browser via WebGL: It's Go Time

Copperlicht

• Bills itself as “Commercial grade WebGL 3D engine with editor”

• http://www.ambiera.com/copperlicht/

• Quake 3 Level http://bit.ly/fGKoOh

Monday, July 11, 2011

Page 36: 3D in the Browser via WebGL: It's Go Time

More Frameworks / Engines

From the Chronos WebGL Wiki:http://www.khronos.org/webgl/wiki/

Monday, July 11, 2011

Page 37: 3D in the Browser via WebGL: It's Go Time

glQuery

Monday, July 11, 2011

Page 38: 3D in the Browser via WebGL: It's Go Time

glQuery doesn’t exist...But it should - talk to me if you’re interested in working on

something after the meetup.

Monday, July 11, 2011

Page 39: 3D in the Browser via WebGL: It's Go Time

Thanks!Pascal Rettig

@cykod on Twitter

Monday, July 11, 2011