Stage3D

Last updated

Stage3D (codenamed Molehill [1] ) is an Adobe Flash Player API for rendering interactive 3D graphics with GPU-acceleration, within Flash games and applications. Flash Player or AIR applications written in ActionScript 3 may use Stage3D to render 3D graphics, [2] and such applications run natively on Windows, Mac OS X, Linux, Apple iOS and Google Android. [3] Stage3D is similar in purpose and design to WebGL. [4] [5]

Contents

Stage3D was introduced in Adobe Flash Player 11.0 and AIR 3.0 in order to facilitate GPU-acceleration of 3D content in Flash applications [1] [6] In Flash Player 10 and earlier, 3D Flash applications had to render 3D graphics completely on the CPU. Flash Player 10 supported a limited form of GPU acceleration support for materials, in an API called Pixel Bender. [1] [7]

GPU Shaders in Stage3D are expressed in the Adobe Graphics Assembly Language (AGAL). [8] :57 [9] Stage3D objects depart from the traditional SWF rendering model in that they cannot be added to SWF's display lists; instead they must be instantiated via ActionScript. [1] [8] :25

Because Stage3D is a low-level library that may be tedious to use directly, it has seen some higher-level 3D and 2D libraries built on top of it in order to benefit from the higher performance that it provides. An incomplete list of libraries and game engines using it includes: Unreal Engine 3, [10] [11] Away3D 4, [5] CopperCube, [12] Flare3D, [13] Starling, [14] :vii ND2D or Adobe Labs' Proscenium. [15] Similarly, WebGL 3D applications may be built with three.js, a higher-level library similar to these. [5] Away3D and Starling have been christened as official components of the Adobe Gaming SDK. [16] [17]

History

In 2011, Flash Player 11 was released, and with it the first version of Stage3D, allowing for GPU-accelerated 3D rendering for Flash applications and games, on desktop platforms such as Microsoft Windows and Mac OS X. [1]

In March 2012, Flash Player 11.2 was released, which enabled Stage3D/GPU support on Android and iOS platforms. Games utilizing Stage3D APIs would work with no changes on these mobile platforms. [18]

In June 2012, Flash Player 11.3 was released, enabling progressive streaming of Stage3D texture maps, allowing for faster performance and startup times for games and applications utilizing Stage3D. [18]

In August 2012, Flash Player 11.4 was released, which raised the supported hardware-accelerated video cards count to 2006, and allowed alpha-channels for Stage3D compressed textures. [18]

In March 2012, Adobe announced that Stage3D will be part of the premium features of the Flash Player (stating with Flash Player version 11.2), and thus not available completely free of charge to developers, but based on a revenue sharing scheme. [19] [20] Various notable members of the Flash community objected to the change, referring to it as a "speed-tax". [19]

In January 2013, Adobe classified all premium features as general availability, and could be freely used by Flash applications, without requiring a license or royalty from developers or publishers. [2]

In September 2012, Flash Player 11.4 was released allowing games to target "constrained profiles" which included older graphics chips, that did not support all the features of Stage3D. [21]

In April 2013, Flash Player 11.7 was released, which supported 16-bit texture maps for Stage3D content, which allowed reduced memory usage and improved memory management. [18]

In July 2013, Flash Player 11.8 was released, which increased the maximum texture map size to 4096 x 4096, in addition to supporting rectangular (non-square) texture maps for Stage3D content. This allowed for greater detail in texture maps, and larger texture atlases to be created enabling better performance. [18]

As of 2014, GPU acceleration was removed in Flash Player 11.8 onwards for Pixel Bender scripts. Pixel Bender was an older technology for writing high-performance CPU-based image processing filters. This disrupted a number of less well-endowed projects, including MIT's Scratch, which could not find the manpower to rapidly recode their applications. [22] [23]

Features

Stage3D consists of the following components:

Stage3D is supported by the following components:

AGAL

Adobe Graphics Assembly Language (AGAL) is an assembly language for writing GPU shaders. [26] AGAL was invented by Adobe to provide a unified shader language for all platforms. [26] AGAL programs are written by hand with low-level opcodes and registers. [26] AGAL programs are compiled into bytecode which is then embedded into Flash SWF movies. [26] This AGAL bytecode is automatically compiled into OpenGL GLSL Shaders and DirectX HLSL Shaders by Adobe Flash Player, depending on the platform. [26]

With AGAL, developers can write shaders that transform 3D models on the GPU (vertex shader), and shaders that render complex dynamic lighting effects on the GPU (pixel shader). AGAL also allows high-quality texture rendering with mip-mapping. [27] AGAL is used extensively in Flash game engines such as Away3D and Flare3D for various effects. AGAL is commonly used to provide dynamic lighting, high dynamic ranging (HDR), alpha masking, multipass rendering, displacement mapping, and environment mapping. [28] [29] Flare3D extends AGAL with a proprietary Shader language called FLSL (FLare3D Shader Language), that makes writing Shader programs easier. [29] HLAG is another example of a high-level Shader language that compiles into AGAL. [30]

When porting C++ 3D video games for playback in Adobe Flash Player, developers must translate traditional HLSL and GLSL shaders into AGAL. [31] The C++ video game code can be converted into Flash-compatible code using CrossBridge.

See also

Related Research Articles

<span class="mw-page-title-main">DirectX</span> Collection of multimedia related APIs on Microsoft platforms

Microsoft DirectX is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with "Direct", such as Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound, and so forth. The name DirectX was coined as a shorthand term for all of these APIs and soon became the name of the collection. When Microsoft later set out to develop a gaming console, the X was used as the basis of the name Xbox to indicate that the console was based on DirectX technology. The X initial has been carried forward in the naming of APIs designed for the Xbox such as XInput and the Cross-platform Audio Creation Tool (XACT), while the DirectX pattern has been continued for Windows APIs such as Direct2D and DirectWrite.

<span class="mw-page-title-main">Adobe Flash</span> Discontinued multimedia platform used to add animation and interactivity to websites

Adobe Flash is a discontinued multimedia software platform used for production of animations, rich internet applications, desktop applications, mobile apps, mobile games, and embedded web browser video players.

<span class="mw-page-title-main">OpenGL</span> Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three-dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware acceleration if it is available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z-buffering, W-buffering, stencil buffering, spatial anti-aliasing, alpha blending, color blending, mipmapping, texture blending, clipping, culling, atmospheric effects, perspective-correct texture mapping, programmable HLSL shaders and effects. Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties.

Direct3D and OpenGL are both application programming interfaces (APIs) that can be used in applications to render 2D and 3D computer graphics. As of 2005, graphics processing units (GPUs) almost always implement one version of both of these APIs. Examples include: DirectX 9 and OpenGL 2 circa 2004; DirectX 10 and OpenGL 3 circa 2008; and most recently, DirectX 11 and OpenGL 4 circa 2011. GPUs that support more recent versions of the standards are backwards compatible with applications that use the older standards; for example, one can run older DirectX 9 games on a more recent DirectX 11-certified GPU.

<span class="mw-page-title-main">Shader</span> Type of program in a graphical processing unit (GPU)

In computer graphics, a shader is a computer program that calculates the appropriate levels of light, darkness, and color during the rendering of a 3D scene—a process known as shading. Shaders have evolved to perform a variety of specialized functions in computer graphics special effects and video post-processing, as well as general-purpose computing on graphics processing units.

<span class="mw-page-title-main">OpenGL ES</span> Subset of the OpenGL API for embedded systems

OpenGL for Embedded Systems is a subset of the OpenGL computer graphics rendering application programming interface (API) for rendering 2D and 3D computer graphics such as those used by video games, typically hardware-accelerated using a graphics processing unit (GPU). It is designed for embedded systems like smartphones, tablet computers, video game consoles and PDAs. OpenGL ES is the "most widely deployed 3D graphics API in history".

A shading language is a graphics programming language adapted to programming shader effects. Shading languages usually consist of special data types like "vector", "matrix", "color" and "normal".

Adobe Flash Player is computer software for viewing multimedia content, executing rich Internet applications, and streaming audio and video content created on the Adobe Flash platform. It can run from a web browser as a browser plug-in or independently on supported devices. Originally created by FutureWave under the name FutureSplash Player, it was renamed to Macromedia Flash Player after Macromedia acquired FutureWave in 1996. It was then developed and distributed by Adobe as Flash Player after Adobe acquired Macromedia in 2005. It is currently developed and distributed by Zhongcheng for users in China, and by Harman International for enterprise users outside of China, in collaboration with Adobe.

<span class="mw-page-title-main">Software rendering</span> Generating images by computer software

Software rendering is the process of generating an image from a model by means of computer software. In the context of computer graphics rendering, software rendering refers to a rendering process that is not dependent upon graphics hardware ASICs, such as a graphics card. The rendering takes place entirely in the CPU. Rendering everything with the (general-purpose) CPU has the main advantage that it is not restricted to the (limited) capabilities of graphics hardware, but the disadvantage is that more transistors are needed to obtain the same speed.

<span class="mw-page-title-main">Perl OpenGL</span>

Perl OpenGL (POGL) is a portable, compiled wrapper library that allows OpenGL to be used in the Perl programming language.

Web3D, also called 3D Web, is a group of technologies to display and navigate websites using 3D computer graphics.

<span class="mw-page-title-main">WebGL</span> JavaScript bindings for OpenGL in web browsers

WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.

<span class="mw-page-title-main">Away3D</span>

Away3D is an open-source platform for developing interactive 3D graphics for video games and applications, in Adobe Flash or HTML5. The platform consists of a 3D world editor, a 3D graphics engine, a 3D physics engine and a compressed 3D model file format (AWD).

<span class="mw-page-title-main">Three.js</span> JavaScript library for 3D graphics

Three.js is a cross-browser JavaScript library and application programming interface (API) used to create and display animated 3D computer graphics in a web browser using WebGL. The source code is hosted in a repository on GitHub.

<span class="mw-page-title-main">Flare3D</span>

Flare3D is a framework for developing interactive three-dimensional (3D) graphics within Adobe Flash Player, Adobe Substance and Adobe AIR, written in ActionScript 3. Flare3D includes a 3D object editor and a 3D graphics engine for rendering 3D graphics. Flare3D runs on current web browsers utilizing the Adobe Flash Player, and uses Stage3D for GPU-accelerated rendering. Flare3D has not been under active development since late 2014.

Papervision3D is an open-source, 3D graphics engine for rendering 3D content within Adobe Flash Player and Adobe AIR.

<span class="mw-page-title-main">Adobe Scout</span> Software

Adobe Scout is a visual profiler for Adobe Flash content running on desktop or mobile platforms, and works together with Adobe Flash Player and Adobe AIR. Scout enables in-depth profiling of ActionScript 3 code execution, 2D graphics and text rendering, and 3D graphics rendered via the Stage3D application programming interface (API).

<span class="mw-page-title-main">OpenFL</span> Software framework for video games

OpenFL is a free and open-source software framework and platform for the creation of multi-platform applications and video games. OpenFL applications can be written in Haxe, JavaScript, or TypeScript, and may be published as standalone applications for several targets including iOS, Android, HTML5, Windows, macOS, Linux, WebAssembly, Flash, AIR, PlayStation 4, PlayStation 3, PlayStation Vita, Xbox One, Wii U, TiVo, Raspberry Pi, and Node.js.

<span class="mw-page-title-main">Cg (programming language)</span> Shading language

Cg and High-Level Shader Language (HLSL) are two names given to a high-level shading language developed by Nvidia and Microsoft for programming shaders. Cg/HLSL is based on the C programming language and although they share the same core syntax, some features of C were modified and new data types were added to make Cg/HLSL more suitable for programming graphics processing units.

References

  1. 1 2 3 4 5 Joseph Labrecque (2011). What's New in Flash Player 11. O'Reilly Media, Inc. p. 17. ISBN   978-1-4493-1110-0.
  2. 1 2 Adobe Premium Features for Flash Player, Flash Player Dev Center, Adobe
  3. 1 2 Stage3D unsupported chipsets, drivers, Flash Player 11, AIR 3, Adobe Help
  4. Matt Fisher (2013). HTML5 for Flash Developers. Packt Publishing Ltd. § Stage3D versus WebGL, p. 91. ISBN   978-1-84969-333-2.
  5. 1 2 3 "Stage3D vs WebGL Performance — Airtight Interactive". Airtightinteractive.com. 2011-10-28. Retrieved 2014-08-04.
  6. Joseph Labrecque (2011). What's New in Adobe AIR 3. O'Reilly Media, Inc. pp. 17–26. ISBN   978-1-4493-1108-7.
  7. Remi Arnaud (2011). "3D in a Web Browser". In Eric Lengyel (ed.). Game Engine Gems 2. CRC Press. pp. 207–212. ISBN   978-1-56881-437-7.
  8. 1 2 Christer Kaitila (2011). Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner's Guide. Packt Publishing Ltd. ISBN   978-1-84969-169-7.
  9. "What is AGAL | Adobe Developer Connection". Adobe.com. 2011-10-10. Retrieved 2014-08-04.
  10. Wagner James Au (2012). Game Design Secrets. John Wiley & Sons. p. 130. ISBN   978-1-118-46391-8.
  11. "Adobe Flash 11 adopts Unreal Engine 3 for better browser games | The Verge". theverge.com. 7 October 2011. Retrieved 2014-08-04.
  12. "Tools Spotlight: CopperCube 4.0". MCV. evelop-online.net. 2014-05-28. Retrieved 2014-09-22.
  13. Keith Gladstien (2013). Flash Game Development In a Social, Mobile and 3D World. Cengage Learning. pp. 383–421. ISBN   978-1-4354-6021-8.
  14. 1 2 Thibault Imbert (2012). Introducing Starling. O'Reilly Media, Inc. ISBN   978-1-4493-2089-8.
  15. Rex van der Spuy (2012). Foundation Game Design with ActionScript 3.0. Apress. p. 641. ISBN   978-1-4302-3993-2.
  16. Thibault Imbert (December 4th, 2012) Introducing Game Developer Tools (Gaming SDK, Adobe Scout, FlasCC)
  17. "Adobe Gaming SDK". creative.adobe.com. Retrieved 2014-08-04.
  18. 1 2 3 4 5 Adobe Flash Roadmap, Adobe
  19. 1 2 And Then Premium Features Arrived Archived 2015-02-05 at the Wayback Machine , ASV Guy Blog
  20. Update: Premium Features for Flash Player, Adobe AIR and FP Blog
  21. Imbert, Thibault. "Introducing Flash Player 11.4/AIR 3.4 beta!". ByteArray.
  22. "Stage3D". scratch.mit.edu. Retrieved 2014-08-05.
  23. Adobe Flash Player 11.8 - Bug 3591185: Pixel Bender shader performance drastically degraded in FP11.8. Closed as "NeverFix" Archived 2014-04-22 at the Wayback Machine
  24. "Stage3D compressed textures – Introducing the ATF SDK - ByteArray.org". bytearray.org. Retrieved 2014-08-04.
  25. 1 2 3 4 5 Getting started with Adobe Scout, Adobe Developer Connection
  26. 1 2 3 4 5 What is AGAL, Adobe Developer Connection
  27. Mipmapping for smoother textures in Stage3D, Adobe Developer Connection
  28. Session : Flash to the Max! High Performance 3D Graphics in Silent Hunter Online, GDC Europe 2013
  29. 1 2 FLSL, Flare3D Wiki
  30. HLAG is currently in alpha, HLAG Tool Website
  31. Crytek, Silent Hunter Online talks late additions to GDC Europe 2013, Gamasutra, "C++ console rendering engine into Adobe Flash using Actionscript/Stage3D and using AGAL for graphical effects such as ocean rendering"