2011.05.27 acc 기술세미나 : adobe flash builder 4.5를 환경에서 molehill 3d를 이용한...
DESCRIPTION
Flash Player 11의 Molehill 3D 환경에서 Adobe Flash Builder 4.5 개발도구를 이용 해 프로젝트를 시작할 수 있다.작성 : http://blog.jidolstar.comTRANSCRIPT
Molehill 3D를 이용한 개발소개
발표 : 지용호
About me
• 이름 : 지용호
• 별명 : 지돌스타
• 관심사 : 천문, 프로그래밍, 로봇, 드럼
• 블로그 : http://blog.jidolstar.com
• 활동 : ACC, ACP, 천문노트 고문, Powerfl
• 일 : 스타플 SNS http://starpl.com
Goal
• Flash Player 11의 Molehill 3D 환경에서 Adobe Flash Builder 4.5 개발도구를 이용해 프로젝트를 시작할 수 있다.
Adobe Flash Platform
Adobe Flash Builder 4.5
• Eclipse기반 Flash 통합개발도구(IDE)
• Flex SDK, ActionScript 3.0 기반으로 개발
• 다양한 멀티 스크린 어플 제작
• 다양한 서버 사이드 기반 지원(Java, ColdFusion, PHP, REST, SOAP등)
Adobe Flash Player 11?
• 차세대 Flash Player 버전
• Flash Player 11 Incubator로 지칭
• http://labs.adobe.com/technologies/flashplatformruntimes/incubator
Molehill?
Molehill 3D?• 차세대 2D 및 3D 고성능 렌더링을 Flash Platform
Runtime환경에서 지원하기 위해 만들어진 코드명
• low-level, GPU 가속 3D API
• Stage3D API
• 윈도우 directX, Mac과 Linux는 OpenGL 1.3
• 모바일 OpenGL ES 2.0
• z-buffering, stencil color buffer, fragment and vertex shader, cube textures 등이 지원
Molehill Performance
• 현재 Flash Player
• 수천개의 triangle
• z-buffer 미지원
• GPU 미지원
• 30hz 렌더링
• Molehill 기반 Flash Player
• 수십만개 triangle
• z-buffer 지원
• GPU 지원
• 60Hz HD급 렌더링
Molehill Performance
• Display list를 이용한 2D 애니메이션http://www.bytearray.org/wp-content/projects/molehill2d/displaylist/
• Molehill을 이용한 2D 애니메이션http://www.bytearray.org/wp-content/projects/molehill2d/molehill/
Molehill 3D Demo
• http://blog.theflashblog.com/?p=2607
Molehill API
• flash.display.DisplayObject 기반에서 물리적으로 분리됨
• 기존 3D API와 전혀 다른 새로운 API
• Main Classes : Stage3D, Context3D등
• AGAL(Adobe Graphics Assembly Language)
• 학습• Flash Player 3D Future 동영상 : http://goo.gl/OpRKK
• Digging more into Molehill APIs : http://goo.gl/CXNH7
• 임시API 문서 : http://jidolstar.net/asdocs/incubator/
Main Classes
Stage
Stage3D
Context3D Program3D
Texture3D
IndexBuffer3D
VertexBuffer3D
TextureCube3D
create/set
attach
Vector.<Stage3D>(4)
Stage3D Compositing
Stage3D Class
flash.display3D package
flash.display3D.textures package
VertexBuffer3D Class IndexBuffer3D Class
XYZRGB XYZRGB XYZRGB XYZRGB XYZRGB XYZRGB ...1 2 4IndexBuffer3D
VertexBuffer3D
AGAL• Adobe Graphics Assembly Language
• Adobe에서 정의한 Low-level 언어
• 폴리곤(삼각형)의 확대/축소/이동/색상적용/조명처리/텍스쳐반영 등을 처리명령
• 순수 binary bytecode, ByteArray로 입력
• AGALMiniAssembler.as 또는 Pixel Bender 3D 를 이용해 AGAL을 만듬
• 약 20개의 Opcodes가 존재• Opcode[32] Destination[32] SourceA[64] Source[64]
• Data : MOV, SGE, SLT, ABS, NEG, SAT, MIN, MAX
• Arithmetic : ADD, SUB, MUL, DIV, RCP, RSQ, SQR, POW, LOG, EXP, SIN, COS, FRC, NRM, DP3, DP4, CRS, M44, M34, M33
• Special(Fragment only) : TEX, KIL
• AGAL Register : AGAL Programs(sharders)가 실행되는 동안 사용할 수 있는 GPU내에 작은 메모리 영역
• Attribute Register, Constant Register, Temporary Register, Output Register, Varing Register, Texture Sampler
• Program3D 클래스에서 AGAL을 다룸
• Vertex Program(Vertex Shader), Fragment Program(Pixel Shader) 을 포함
Connecting the Pieces
Molehill Code Walkthrough
GPU Stage3D[0] Stage3D[1] ... Vector.<Stage3D>
Context3D
TextureCube3D
Texture3D
IndexBuffer3D
VertexBuffer3D
Program3D
present()
setProgram()
createVertexBuffer()
createIndexBuffer()
createProgram()
upload()
requestContext3D()
createTexture()
setTexture()
setVertexBufferAt()
drawTriangles()
clear()
AGAL Vertex Program
AGAL Fragment Program
AGALMiniAssemblersetProgramContentsFromMatrix()setProgramContentsFromVector()
Render
Setup
How does it work?
• Low-Level Access
• flash.display3D package
• flash.displayStage3D class
• AGAL(Adobe Graphics Assembly Language)
• High-Level Access
• Away3D, Alternativa 3D, Flare 3D, Sophie 3D, Minko, Coppercube, Yogurt3D, Zest3D, M2D, ND2D
Molehill 3D Development Environment
• 개발OS
• Win OS, Mac OS
• 개발도구• Flash Builder 4.5
• 필요한 사항
• Flash Player Incubator 와 playerglobal.swc
• Flex 4.5 SDK
• (선택)Away3D 4.0 Alpha 라이브러리 및 예제
• (선택)Alternative 3D 8 라이브러리
When should you start studing?
Right Now!