440 likes | 597 Views
Computación Gráfica en Dispositivos Móviles. Fundamentos y Técnicas en Computación Gráfica Marzo, 2014. Introducción. Cuál es el videojuego más jugado en el mundo? Opciones: Halo, Mario, Final Fantasy…, WoW, Tetris? Respuesta:. Introducción.
E N D
Computación Gráfica en Dispositivos Móviles Fundamentos y Técnicas en ComputaciónGráfica Marzo, 2014
Introducción • Cuál es el videojuego más jugado en el mundo? • Opciones: Halo, Mario, Final Fantasy…, WoW, Tetris? • Respuesta:
Introducción • Cuál es el videojuego más jugado en el mundo? • Opciones: Halo, Mario, Final Fantasy…, WoW, Tetris? • Respuesta: Snake • En 10 años Nintendo ha vendido 100M GameBoys • En el 2003 Nokia vendió 128M de celulares
¿Por qué gráficos en móviles? • No es solo un teléfono. Un teléfono tiene: calendario, cámara, mensajes, imágenes, animaciones, juegos, navegación, sonido, tv, notas, etc. • Aproximadamente 1 billón de teléfonos x año • El factor visual es un factor sumamente importante
Aplicaciones iPhone/iPod • El 22 de Enero 2011 a las 10:26 AM, el Apple App Store vendió la aplicación nro. 10 billones • 50% de los usuarios de iPhone son < 30 años • 93% de los usuarios ha comprado al menos 1 vez en el App Store
Hrdware Gráfico en móviles • OpenGL ES 1.0 • 100 millones de teléfonos • OpenGL ES 2.0 • Adreno GPU, Qualcomm • Tecnología Imagination Power • NVIDIA Tegra • Google Native Client (NaCl) • WebGL • Ouya • Android desde 2.0 a 2.2 • BlackBerry OS 7.0 a 10 • Raspberry PI
Hardware Gráfico en móviles • OpenGL ES 3.0 • Publicada el 6 de Agosto 2013 • Pocos dispositivos la contienen • Nexus 7 • LG G2 • Samsung Galaxy S4 • Dispositivos con iOS >= 7.0 • Power VR (serie 6) • Versiones recientes de la GPU
ProcesadoresEmbebidos Diseñado para despliegue de gráficos ARM Mali – T604 GPU 4ta. Generación GPGPU Soporta OpenCL y DirectX OpenGL ES 1.1 OpenVG 1.1
ProcesadoresEmbebidos Dual-Core ARM Cortex A9 1 GHz por core 8 cores GPU OpenGL ES 2.0 OpenVG 1.1 EGL 1.4 Procesador de reproducción de video a 1080p
Dificultades en móviles • Poca cantidad de memoria • Conjunto de instrucciones limitadas • En general, relojes de baja frecuencia • 100 - 200 MHz ARM9 • 400 – 600 MHz ARM11 • 600 MHz ARM CortexA8 • Área pequeña para la GPU • Debe ser barato y de poco espacio físico • Consumo de memoria • Acceso a memoria es una de las operaciones más costosas
Comparación Dispositivos no móviles Dispositivos móviles • Gran poder de cómputo • Dispositivos de salida de gran tamaño • Conexión rápida a internet • Bajo poder de cómputo • Dispositivos de salida de pequeños • Conexión lenta a internet • La entrada de datos puede resultar tediosa y no es estándar
Investigación en Móviles • Compresión de texturas • Mecanismos de culling • Técnicas de iluminación • Stereo rendering • Shaders, etc…
Aspectos importantes en el desarrollo • APIs para diversas plataformas • “Debería” funcionar donde sea • OpenGL ES y JSR239
OpenGL ES • OpenGL es muy poderoso para móviles • ES es un subconjunto de OpenGL • PS3, iPhone, Nokia N900, MS Zune, etc.
OpenGL vs. OpenGL ES • Modelo de iluminación completa • Back materials, local viewer: NO • Primitivas • Polígonos y Quads: NO. Solo puntos, triángulos y líneas • Punto fijo para eficiencia
OpenGL ES • Soporta “todo” lo que un móvil necesita • Versiones • OpenGL ES 1.x es para hardware con pipeline fijo • OpenGL ES 2.0 es para hardware con pipeline programable Adrenaline Golf 2009
EGL • Interfaz entre OpenGL ES/OpenVG y el sistema de ventana nativo • Diversas superficies de rendering • windows • pbuffers • pixmaps
Khronos • Diversos estándares multimedia para móviles
Java • M3G (JSR 184), Java Specification Request • JSR 239, Java Bindings for OpenGL ES • JSR 226, 2D Vector graphics for Java
J2ME • API de Java, Java MicroEdition • Utilizado con los MIDP (Mobile Information Device Profile) • Mobile 3D Graphics API: MIDP 1.1 • Interfaz de bajo nivel • Gráficos 3D interactivos • No requiere de hardware especializado • Dos modos (retained + immediate)
Realidad Aumentada WorkSnug Car Finder Le Bar Guide
Android • 2007, Open Handset Alliance • 2008, Android
Android • 2007, Open Handset Alliance • 2008, Android • Android Development Tools (ADT) plug-in de Eclipse • Emulador en el Android Virtual Device (AVD) • Android.package • Soporte para OpenGL ES 1.0 totalmente • $25 para el registro
Android • A partir de la v. 2.2 (Froyo), Android soporta OpenGL ES 2.0 • Se tiene básicamente dos opciones: • Java • Android Native Development Kit (NDK)
Android • A partir de la v. 2.2 (Froyo), Android soporta OpenGL ES 2.0 • Se tiene básicamente dos opciones: • Java • Android Native Development Kit (NDK)
iPhone/iPod/iPad • Objective – C en Mac OS. iPhone SDK • Cocos 2D, Bullet Physics, Appsamuck, etc. • Editor xCode 5 • Licencia Anual de $99 • Al igual que Android, gran cantidad de: • Blogs • Libros • Videos • Código • Conferencias • Campamentos
List of game engines http://en.wikipedia.org/wiki/List_of_game_engines
Librerías – Cocos2D • http://cocos2d-iphone.org • OpenSource engine • iPhone o Android • Diversos juegos se han desarrollado • Utilizado en el ámbito académico
Librerías – Corona Labs • Ambiente 2D desarrollado por Ansca Mobile • Especializado para el desarrollo de Juegos 2D y software gráfico • Emplea LUA y soporta iPhone/iPad y Android • Desde $16/$49/$79/$199 mensual
Librerías - iTorque • Garage Games • Engine muy conocido y de amplia trayectoria • Torque 2D y Torque 3D • Diversas herramientas a diversos costos
Librerías - ShiVa • Plataforma de desarrollo 3D, Stonetrip • Linux, Mac, Windows, Android, iPhone, iPad , Windows Phone, PSVita, Wii, Client-Server, etc. • Los scripts utilizan Lua. Una solución que facilita mucho el desarrollo sobre iOS desde $200
Librerías - Unity • Muy popular en los últimos años (PC y iPhone) • Los scripts son en JavaScript/C#. Unity3D Engine Gratis (Unity) + $1500 - pro
Librerías • Existen muchas otras librerías/engines de desarrollo • Oolong Engine, iPad / iPhone / iPod touch
Librerías • Existen muchas otras librerías/engines de desarrollo • Edgelib
Librerías • Existen muchas otras librerías/engines de desarrollo • jMonkey
Librerías • Existen muchas otras librerías/engines de desarrollo • SIOS Engine
Ejemplo de Otras Aplicaciones • INSTAR (Siemens VDO, FutureLab)
Ejemplo de Otras Aplicaciones • ARDrone
Ideas Finales • Las limitaciones son netamente de hardware • Trabajar en una Pentium 1 ó 2 • Amplio campo de investigación del futuro • La tendencia es wireless y en menor tamaño • Otros tópicos con computación gráfica en móviles: • Fotografía computacional: • FCam
The end • Next class: Introduction to GPU for General Purpose