API para renderizar gráficos 3D interactivos
Stage3D ( nombre en código Molehill [1] ) es una API de Adobe Flash Player para renderizar gráficos 3D interactivos con aceleración de GPU , dentro de juegos y aplicaciones Flash. Las aplicaciones Flash Player o AIR escritas en ActionScript 3 pueden usar Stage3D para renderizar gráficos 3D, [2] y dichas aplicaciones se ejecutan de forma nativa en Windows, Mac OS X, Linux, Apple iOS y Google Android . [3] Stage3D es similar en propósito y diseño a WebGL . [4] [5]
Stage3D se introdujo en Adobe Flash Player 11.0 y AIR 3.0 para facilitar la aceleración por GPU de contenido 3D en aplicaciones Flash [1] [6] En Flash Player 10 y versiones anteriores, las aplicaciones Flash 3D tenían que renderizar gráficos 3D completamente en la CPU . Flash Player 10 admitía una forma limitada de soporte de aceleración por GPU para materiales, en una API llamada Pixel Bender . [1] [7]
Los sombreadores de GPU en Stage3D se expresan en el lenguaje ensamblador de gráficos de Adobe (AGAL). [8] : 57 [9] Los objetos Stage3D se apartan del modelo de renderizado SWF tradicional en que no se pueden agregar a las listas de visualización de SWF ; en su lugar, se deben instanciar a través de ActionScript . [1] [8] : 25
Debido a que Stage3D es una biblioteca de bajo nivel que puede resultar tediosa de usar directamente, se han creado algunas bibliotecas 3D y 2D de nivel superior sobre ella para beneficiarse del mayor rendimiento que proporciona. Una lista incompleta de bibliotecas y motores de juegos que la utilizan incluye: Unreal Engine 3, [10] [11] Away3D 4, [5] CopperCube , [ 12] Flare3D , [13] Starling , [14] : vii ND2D o Proscenium de Adobe Labs. [15] De manera similar, las aplicaciones 3D WebGL se pueden crear con three.js , una biblioteca de nivel superior similar a estas. [5] Away3D y Starling han sido bautizados como componentes oficiales del Adobe Gaming SDK. [16] [17]
Historia
En 2011, se lanzó Flash Player 11, y con él la primera versión de Stage3D, que permite la renderización 3D acelerada por GPU para aplicaciones y juegos Flash, en plataformas de escritorio como Microsoft Windows y Mac OS X. [1]
En marzo de 2012 se lanzó Flash Player 11.2, que permitió la compatibilidad con Stage3D/GPU en plataformas Android e iOS. Los juegos que utilizan API de Stage3D funcionarán sin cambios en estas plataformas móviles. [18]
En junio de 2012, se lanzó Flash Player 11.3, que permite la transmisión progresiva de mapas de textura Stage3D, lo que permite un rendimiento y tiempos de inicio más rápidos para juegos y aplicaciones que utilizan Stage3D. [18]
En agosto de 2012, se lanzó Flash Player 11.4, que aumentó la cantidad de tarjetas de video aceleradas por hardware compatibles a 2006 y permitió canales alfa para texturas comprimidas Stage3D. [18]
En marzo de 2012, Adobe anunció que Stage3D sería parte de las características premium de Flash Player (a partir de la versión 11.2 de Flash Player) y, por lo tanto, no estaría disponible de forma totalmente gratuita para los desarrolladores, sino que se basaría en un esquema de reparto de ingresos. [19] [20] Varios miembros notables de la comunidad Flash se opusieron al cambio, refiriéndose a él como un "impuesto a la velocidad". [19]
En enero de 2013, Adobe clasificó todas las funciones premium como de disponibilidad general y podían ser utilizadas libremente por las aplicaciones Flash, sin necesidad de una licencia o regalías por parte de los desarrolladores o editores. [2]
En septiembre de 2012, se lanzó Flash Player 11.4, que permite a los juegos apuntar a "perfiles restringidos" que incluían chips gráficos más antiguos que no admitían todas las características de Stage3D. [21]
En abril de 2013, se lanzó Flash Player 11.7, que admitía mapas de textura de 16 bits para contenido Stage3D, lo que permitía reducir el uso de memoria y mejorar la gestión de la memoria. [18]
En julio de 2013 se lanzó Flash Player 11.8, que aumentó el tamaño máximo de los mapas de textura a 4096 x 4096, además de admitir mapas de textura rectangulares (no cuadrados) para contenido Stage3D. Esto permitió obtener más detalles en los mapas de textura y crear atlas de textura más grandes, lo que permitió un mejor rendimiento. [18]
A partir de 2014, la aceleración de GPU se eliminó en Flash Player 11.8 y versiones posteriores para los scripts de Pixel Bender. Pixel Bender era una tecnología antigua para escribir filtros de procesamiento de imágenes basados en CPU de alto rendimiento. Esto afectó a varios proyectos menos dotados, incluido Scratch del MIT , que no pudo encontrar la mano de obra para recodificar rápidamente sus aplicaciones. [22] [23]
Características
Stage3D consta de los siguientes componentes:
- API unificada: API unificada de ActionScript 3 para gestionar la memoria de texturas, el sombreado de vértices, el sombreado de píxeles y la representación de mallas. Se ejecuta de forma transparente mediante OpenGL (en Mac OS X y Linux ) y DirectX (en Microsoft Windows ).
- Representación acelerada por GPU: soporte integrado para tarjetas gráficas de NVidia, AMD e Intel, [3] Lista negra de tarjetas gráficas incompatibles.
- Representación acelerada de CPU: representación de software integrada mediante SwiftShader para sistemas con tarjetas gráficas faltantes o incompatibles.
- AGAL (Adobe Graphics Assembly Language): un lenguaje para escribir Shaders (programas que se ejecutan en la GPU) de modo que puedan convertirse en Shaders OpenGL GLSL y Shaders DirectX HLSL mediante Flash Player.
- ATF (Adobe Texture Format): un formato de textura que permite convertir las texturas a formatos de textura específicos de la plataforma, como DXT en Windows y MacOS, PVRTC en iOS. [14] : 47–48 [24]
Stage3D es compatible con los siguientes componentes:
- API XC: las "funciones premium" de Flash Player, que consisten en códigos de operación de manipulación de memoria de alta velocidad (conocidos como "Alchemy" ) y API de Stage3D.
- CrossBridge : un kit de herramientas de compilación cruzada para compilar juegos 3D o motores de juegos basados en OpenGL para ejecutarlos en Flash Player.
- Adobe Scout : un generador de perfiles visuales para contenido Flash que se ejecuta en computadoras de escritorio o dispositivos móviles. Scout permite generar perfiles detallados de contenido Stage3D con las siguientes funciones integradas: [25]
- Vista previa de Stage3D: vea el búfer de respaldo actual del contenido de Stage3D ejecutado [25]
- Grabación Stage3D: captura cada comando Stage3D ejecutado por el contenido Flash y reproduce/recorre los comandos ejecutados [25]
- Uso de memoria de GPU: uso de memoria de textura de perfil con un desglose en tiempo real [25]
- Editor de programas Stage3D: modifique de forma interactiva los comandos Stage3D grabados y observe qué efecto tienen en la representación. Edite el código AGAL para los programas de vértices y fragmentos ejecutados por cada llamada de dibujo. [25]
AGALO
Adobe Graphics Assembly Language (AGAL) es un lenguaje ensamblador para escribir sombreadores de GPU . [26] AGAL fue inventado por Adobe para proporcionar un lenguaje de sombreado unificado para todas las plataformas. [26] Los programas AGAL se escriben a mano con códigos de operación y registros de bajo nivel . [26] Los programas AGAL se compilan en código de bytes que luego se integra en películas Flash SWF . [26] Adobe Flash Player compila automáticamente este código de bytes AGAL en sombreadores GLSL OpenGL y sombreadores HLSL DirectX , según la plataforma. [26]
Con AGAL, los desarrolladores pueden escribir sombreadores que transforman modelos 3D en la GPU ( sombreador de vértices ) y sombreadores que renderizan efectos de iluminación dinámicos complejos en la GPU ( sombreador de píxeles ). AGAL también permite renderizar texturas de alta calidad con mapeo mip . [27] AGAL se usa ampliamente en motores de juegos Flash como Away3D y Flare3D para varios efectos. AGAL se usa comúnmente para proporcionar iluminación dinámica , alto rango dinámico (HDR), enmascaramiento alfa , renderizado multipaso, mapeo de desplazamiento y mapeo de entorno . [28] [29] Flare3D extiende AGAL con un lenguaje Shader propietario llamado FLSL (FLare3D Shader Language), que hace que escribir programas Shader sea más fácil. [29] HLAG es otro ejemplo de un lenguaje Shader de alto nivel que se compila en AGAL. [30]
Al portar videojuegos 3D en C++ para su reproducción en Adobe Flash Player , los desarrolladores deben traducir los sombreadores HLSL y GLSL tradicionales a AGAL. [31] El código de videojuego en C++ se puede convertir en código compatible con Flash usando CrossBridge .
Véase también
Referencias
- ^ abcde Joseph Labrecque (2011). Novedades de Flash Player 11. O'Reilly Media, Inc. pág. 17. ISBN 978-1-4493-1110-0.
- ^ ab Funciones premium de Adobe para Flash Player, Centro de desarrollo de Flash Player, Adobe
- ^ ab Conjuntos de chips no compatibles con Stage3D, controladores, Flash Player 11, AIR 3, Ayuda de Adobe
- ^ Matt Fisher (2013). HTML5 para desarrolladores Flash. Packt Publishing Ltd. § Stage3D versus WebGL, pág. 91. ISBN 978-1-84969-333-2.
- ^ abc "Rendimiento de Stage3D frente a WebGL: Airtight Interactive". Airtightinteractive.com. 28 de octubre de 2011. Consultado el 4 de agosto de 2014 .
- ^ Joseph Labrecque (2011). Novedades de Adobe AIR 3. O'Reilly Media, Inc., págs. 17-26. ISBN 978-1-4493-1108-7.
- ^ Remi Arnaud (2011). "3D en un navegador web". En Eric Lengyel (ed.). Game Engine Gems 2. CRC Press. págs. 207–212. ISBN 978-1-56881-437-7.
- ^ ab Christer Kaitila (2011). Guía para principiantes de programación de juegos Adobe Flash 11 Stage3D (Molehill) . Packt Publishing Ltd. ISBN 978-1-84969-169-7.
- ^ "¿Qué es AGAL? | Adobe Developer Connection". Adobe.com. 10 de octubre de 2011. Consultado el 4 de agosto de 2014 .
- ^ Wagner James Au (2012). Secretos del diseño de juegos . John Wiley & Sons. pág. 130. ISBN 978-1-118-46391-8.
- ^ "Adobe Flash 11 adopta Unreal Engine 3 para ofrecer mejores juegos de navegador | The Verge". theverge.com. 7 de octubre de 2011. Consultado el 4 de agosto de 2014 .
- ^ "Herramientas destacadas: CopperCube 4.0". MCV . evelop-online.net. 2014-05-28 . Consultado el 2014-09-22 .
- ^ Keith Gladstien (2013). Desarrollo de juegos Flash en un mundo social, móvil y 3D . Cengage Learning. págs. 383–421. ISBN 978-1-4354-6021-8.
- ^ de Thibault Imbert (2012). Presentación de Starling . O'Reilly Media, Inc. ISBN 978-1-4493-2089-8.
- ^ Rex van der Spuy (2012). Diseño de juegos básicos con ActionScript 3.0. Apress. pág. 641. ISBN 978-1-4302-3993-2.
- ^ Thibault Imbert (4 de diciembre de 2012) Presentación de herramientas para desarrolladores de juegos (Gaming SDK, Adobe Scout, FlasCC)
- ^ "SDK para juegos de Adobe". creative.adobe.com . Consultado el 4 de agosto de 2014 .
- ^ abcde Hoja de ruta de Adobe Flash, Adobe
- ^ ab Y luego llegaron las funciones premium Archivado el 5 de febrero de 2015 en Wayback Machine , Blog de ASV Guy
- ^ Actualización: Funciones Premium para Flash Player, Adobe AIR y FP Blog
- ^ Imbert, Thibault. "¡Presentamos la versión beta de Flash Player 11.4/AIR 3.4!". ByteArray.
- ^ "Stage3D". scratch.mit.edu . Consultado el 5 de agosto de 2014 .
- ^ Adobe Flash Player 11.8 - Error 3591185: el rendimiento del sombreador Pixel Bender se degradó drásticamente en FP11.8. Cerrado como "NeverFix" Archivado el 22 de abril de 2014 en Wayback Machine
- ^ "Texturas comprimidas Stage3D: presentación del SDK ATF - ByteArray.org". bytearray.org . Consultado el 4 de agosto de 2014 .
- ^ abcde Introducción a Adobe Scout, Adobe Developer Connection
- ^ abcde ¿Qué es AGAL, Adobe Developer Connection?
- ^ Mipmapping para texturas más suaves en Stage3D, Adobe Developer Connection
- ^ Sesión: ¡Flash al máximo! Gráficos 3D de alto rendimiento en Silent Hunter Online, GDC Europe 2013
- ^ desde FLSL, Wiki Flare3D
- ^ HLAG se encuentra actualmente en versión alfa, sitio web de la herramienta HLAG
- ^ Crytek, Silent Hunter Online habla de las últimas incorporaciones a GDC Europe 2013, Gamasutra , "Motor de renderizado de consola C++ en Adobe Flash usando Actionscript/Stage3D y usando AGAL para efectos gráficos como el renderizado del océano"
Enlaces externos
- Artículos de Stage3D en Adobe Developer Connection
- "Desarrollo de juegos 3D para Flash y videojuegos". adobe.com . Consultado el 4 de agosto de 2014 .
- "Cómo funciona Stage3D". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Creación de un juego Flash 3D con Flare3D y Stage3D". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Creación de juegos y aplicaciones en 3D con Away3D 4 y Stage 3D". adobe.com . Consultado el 17 de septiembre de 2014 .
- "¿Qué es AGAL?". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Añadir contenido 3D a tu juego Flash de forma rápida y sencilla". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Presentación del marco Starling 2D". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Sombreadores de vértices y fragmentos". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Mipmapping para texturas más suaves en Stage3D". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Motores de juegos Stage 3D". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Introducción a Adobe Scout". adobe.com . Consultado el 17 de septiembre de 2014 .
- "Compilación de juegos OpenGL con el compilador Flash C++ (FlasCC)". adobe.com . Consultado el 17 de septiembre de 2014 .
- Herramientas de traducción de OpenGL y GLSL :
- "adobe/GLS3D · GitHub". github.com . Consultado el 4 de agosto de 2014 .
- "adobe/glsl2agal · GitHub". github.com . Consultado el 4 de agosto de 2014 .