60
Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc.

Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Embed Size (px)

Citation preview

Page 1: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG

Daosheng Mu, Lead Programmer

Eric Chang, CTO

XPEC Entertainment Inc.

Page 2: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Outline

• Brief of Speakers• Introduction of Adobe Flash Stage3D API• XPEC Flash 3D Engine• Optimization for Flash Program• Future Works• Conclusion• Q & A

Page 3: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Brief of Speakers

• Eric Chang– 19 Years of Game Industry

Experiences– Cross-platform 3D Game

Engine Development– PC/Console/Web

Page 4: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc
Page 5: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Brief of Speakers

• Daosheng Mu– 4.5 Years of Cross-platform 3D Game Engine Development

Experiences– PC/Console/Web

Page 6: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Why Flash?Native C/C++ vs. Unity vs. Flash

Native C/C++ Unity Flash

DevelopmentDifficulty High Low Mid

Ease ofCross Platform Low High High

Performance High Mid Low

Market Popularity Low Mid

High(>95%)

Page 7: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Project C4 Demo Video

Page 8: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Introduction of Adobe Flash Stage3D API

Page 9: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Stage3D

• Support all browsers

Page 10: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Stage3D

• Stage3D includes with GPU-accelerated 3D APIs– Z-buffering– Stencil/Color buffer– Vertex shaders– Fragment shaders– Cube textures– More…

Page 11: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Stage3D

• Pros:– GPU accelerated API– Relies on DirectX, OpenGL, OpenGL ES– Programmable pipeline

• Cons:– No support of alpha test– No support of high-precision texture format

Page 12: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Stage3D

ResourceNumber allowedTotal memoryVertex buffers 4096 256 MBIndex buffers 4096 128 MB Programs 4096 16 MB Textures 4096 128 MB*Cube textures 4096 256 MB Draw call limits 32,768

*350 MB is absolute limit for textures, 340 MB is the result we gather

Page 13: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

AGAL

• Adobe Graphics Assembly Language– No support of ‘if-else’ statements– No support of ‘constants’

Program3D

Page 14: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

XPEC Flash 3D Engine

Page 15: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Model Pipeline

• Action Message Format (AMF):– Native ByteArray compression– Native object serialization

3DS Max

EngineLoader

Exporter ColladaBinary

Converter AMF

AMFEngineRender

Page 16: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

XPEC Flash 3D Engine

• Application: update/render on CPU• Command buffer: store graphics API

instruction

Application DriverCPU

Page 17: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

XPEC Flash 3D Engine: Application

Object3D•Material•Geometry

Update•UpdateDeltaTime•UpdateTransform

Scene management•Scene partition•Frustum culling

Update•UpdateHierarchy

Draw•SetMaterial•SetGeometry

Stage3D•Set Stage3D APIs

Page 18: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Scene Management

• Goal: Minimize draw calls as possible• Indoor Scene

– BSP tree

• Outdoor Scene– Octree/Quad tree– Cell– Grid

Page 19: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Scene Management: Project C4• Grid partition• Object3D: (MinX, MaxX), (MinY, MaxY)

(0, 0)

(2, 2)

(4, 4)

(0,0),

(1,2)

(3,4),(0,2)

y

x

Page 20: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Scene Management: Project C4

• Frustum: (MinX, MaxX), (MinY, MaxY)

(0, 0)

(2, 2)

(4, 4)

(1,4),(0,4)

(0,0),

(1,2)

(3,4),(0,2)

y

x

Page 21: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

XPEC Flash 3D Engine:Command Buffer

Initialize

• createVertex/Index Buffer

• createTexture

• createProgram

Begin

• clear• setRend

erToTexture

Draw

• setVertex/Index Buffer

• setProgram• setProgram

Constants• setRenderS

tate• setTextureA

t• drawTriangl

es

• Avoid user/kernel mode transition• Decrease shader patching

– “Material sorting”• Reduce draw call

– “Shared buffers”– “Dynamic batching”

Page 22: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Material Sorting

• Opaque/Translucent

Page 23: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Material Sorting

• State management• 1047/2598 draw calls

Page 24: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

0

20

40

60

CPU waiting GPURender loop

Ela

psed

tim

e(m

s)

Page 25: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

020406080

100

CPU waiting GPURender loop

Ela

psed

tim

e(m

s)

Page 26: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Before sorting(ms) After sorting(ms)

NVIDIA 8800 GT- 1047 draw calls

Render loop elapsed time

16 16

Total elapsed time

41 40

NVIDIA 8800 GT- 2598 draw calls

Render loop elapsed time

36 36

Total elapsed time

50 50

Before sorting(ms) After sorting(ms)

NVIDIA 6600 GT- 1047 draw calls

Render loop elapsed time

34 31

Total elapsed time

53 48

NVIDIA 6600 GT- 2598 draw calls

Render loop elapsed time

81 64

Total elapsed time

89 89

Page 27: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shared Buffers

• Problem:– Numbers of buffers are limited

ResourceNumber allowedTotal memoryVertex buffers 4096 256 MBIndex buffers 4096 128 MB Programs 4096 16 MB

Page 28: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shared BuffersVertex Buffer

Index Buffer

Vertex Buffer

Index Buffer

Vertex Buffer

Index Buffer

Page 29: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Particle System

• Each particle property is computed on the CPU at each frame– Alpha, Color,

LinearForce, Size, Speed, UV

– Facing

Page 30: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Particle System

• Index buffer– Indices will not be changed

• Vertex buffer– Problem:

• Particle amount depends on frame• Upload data to vertex buffer frequently

Page 31: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Particle System

StaticIndex Buffer

DynamicVertex Buffer

Vertex Data

Page 32: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Skinned Model

• Problem:– Lesser vertex constants

allowed• 128 constants per vertex

program

– Global vertex constants• Lighting, Fog, Const

Page 33: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Skinned Model

• 4x3 Matrix• Bone count per

geometry is limited to 29– “Split mesh”

128 constants / 3 = 42.6666 bones3 * 29 bones = 87 constants

Page 34: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shadow Map

Page 35: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shadow Map

present()

End frame

setRenderToBackBuffer()

Set shadow map

setRenderToTexture()

Clear shadow map Draw to shadow map

clear()

Clear back buffer

Page 36: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shadow Map• Problem:

– Texture format: RGBA8– Artifact

• Aliasing• Popping while moving

Page 37: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

• Size: 1024x1024• RGBA8 R32

Shadow Map

Page 38: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shadow Map

• Percentage Closer Filtering (PCF) solution:– Hard shadow– Aliasing– Popping while moving

Page 39: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shadow Map

• PCF

pw = 1/mapWidth

ph = 1/mapHeight

• Result = 0.5 * texel( 0, 0) + 0.125 * texel( -pw, +ph) + 0.125 * texel(-pw, -ph)+ 0.125 * texel( +pw, +ph) + 0.125 * texel(+pw, -ph)

(-pw , +ph) (+pw , +ph)

(0, 0)

(+pw , -ph)(-pw , -ph)

Page 40: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Shadow Map

• PCF based solution:

NVIDIA 6600GT - 1047 draw

calls

NVIDIA 6600GT - 1047 draw calls with

PCF

NVIDIA 8800GT - 1047 draw

calls

NVIDIA 8800GT - 1047 draw calls with

PCF

0

20

40

60

80

100

CPU waiting GPURender loop

Ela

ps

ed

tim

e(m

s)

Page 41: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Toon Shading

• Single pass– Problem: Dependent on no. of face

• Two passes– Scale vertex position following the vertex

normal– Not dependent on no. of face

𝑣→

:𝑣𝑖𝑒𝑤𝑣𝑒𝑐𝑡𝑜𝑟𝜃

𝑖𝑓 𝜃> h h𝑡 𝑟𝑒𝑠 𝑜𝑙𝑑 ,𝑑𝑟𝑎𝑤𝑡𝑜𝑜𝑛𝑐𝑜𝑙𝑜𝑟

𝑁→

:𝑣𝑒𝑟𝑡𝑒𝑥 𝑛𝑜𝑟𝑚𝑎𝑙

Page 42: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Toon Shading

• Enable back face• Scale vertex

position• Draw color

Toon• Enable front face• Draw material

General Result

Page 43: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Alpha Test

• Problem:– Stage3D without alpha test– “kil opcode in AGAL”

• Performance penalty on mobile device

Page 44: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Alpha Test• Solution:

Render loop time(ms)

Total time(ms)

6600GT alpha test

17~19 47

6600GT alpha blend

18~19 65~67

8800GT alpha test

0.16 37

8800GT alpha blend

0.3 36

• 304 draw calls• Alpha-test performance is better on

desktop

Replace alpha-test

with alpha-blend

Page 45: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Post Effect

OriginGlowDOFColor Filter

Page 46: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Static Lightmap

• Pros:– Pre-computation– Global illumination

• Cons:– More textures

Page 47: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Optimization for Flash Program

Page 48: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Optimization for Flash Program

• Problem:– For Each is slow

• “Use for-loop to replace it”

– Memory management• “Recycle manager”• “Strengthen garbage collection”

Page 49: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Optimization for Flash Program

• Solution:– Recycle manager

• Reduce garbage collection loading• Save objects initial time• public function

recycleObject3D( obj:IObject3D ):void• public function requestObject3D( classType:int ,

searchKey:*, renderHandle:int = 0 ):*

Page 50: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Optimization for Flash Program

• Solution:– Strengthen garbage collection

• Avoid inner function• Force to dereference function pointer• Dereference attribute in object destructor

Page 51: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

• Avoid inner function• Force to dereference function pointer

Without inner function

Use inner function

Page 52: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Optimization for Flash Program

• Experiment: before vs. after– Switching among levels

Before improvement: After improvement :

Page 53: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Rapid loading

Page 54: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Rapid loading

• Streaming– Data compression

• PNG: swf compression: 20%~55%• Package: zip compression: 25~30%

– Batch loading• Separate resource to several packages• Download what you really need

Page 55: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc
Page 56: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Rapid loading

Enter to avatar stage

Enter to game stage

After loading picture finished

5Mb/sElapsed time (sec)

15 6 12

• game code• ui

• game scene • scene textures

Page 57: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Future Works

• Adobe Texture Format (ATF)– Support for compressed/mipmap textures on the

different GPU chipset

• FlasCC– C++ AS3 Compilation

• AS3 Workers– Multi-thread support

• MovieClip– Replace with Stage3D UI framework, ex: Starling

Page 58: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Conclusion

• Cross-Device/Cross-OS/Cross-Browser– Browser + Cloud Computing– Write Once, Run Anywhere

• Flash vs. HTML5• Cross-Compiling Technology Trend

– C/C++ + Flash/ActionScript– C/C++ + HTML5/JavaScript

Page 59: Using The New Flash Stage3D Web Technology To Build Your Own Next 3D Browser MMOG Daosheng Mu, Lead Programmer Eric Chang, CTO XPEC Entertainment Inc

Acknowledgements

• XPEC - Project C4 Team• XPEC - RDO Team