NSCoder - Metal

24
NSCoders México Metal Framework Por Juan C. Ricalde Poveda A.K.A. “jucaripo” CTO FricMartinez.com NSCoder Nights

Transcript of NSCoder - Metal

NSCodersMéxico

Metal Framework

Por Juan C. Ricalde Poveda A.K.A. “jucaripo”

CTO FricMartinez.com

NSCoder Nights

¿Que es el Metal Framework?

Metal Framework

NSCodersMéxico

¿Que es el Metal Framework?

Metal Framework

NSCodersMéxico

Metal es un Api que te da  acceso al GPU, lo que te permite maximizar los gráficos y  potenciar tus aplicaciones de iOS 8. #Metal es una API simplificada, para  shaders precompilados, y  da apoyo para un uso eficiente  de la Multitarea "multi-threading”,# Metal puede llevar tus gráficos  al siguiente nivel de rendimiento y capacidad.

Metal Framework

NSCodersMéxico

El Framework de metal esta diseñado para optimizar las aplicaciones 3D, es un API liviana y esta realizada para los

procesadores A7 y posteriores.

Metal Framework

NSCodersMéxico

IOS y los Graficos por Computadora

Metal Framework

NSCodersMéxico

Metal Framework

NSCodersMéxico

OpenGL (Open Graphics Library) es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 19922

Metal Framework

NSCodersMéxico

OpenGL ES (OpenGL for Embedded Systems) es una variante simplificada de la API gráfica OpenGL diseñada para dispositivos integrados tales como teléfonos móviles, PDAs y consolas de videojuegos. La define y promueve el Grupo Khronos, un consorcio de empresas dedicadas a hardware y software gráfico interesadas en APIs gráficas y multimedia.##

En IOS se usa ##

https://developer.apple.com/library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html

Metal Framework

NSCodersMéxico

WebGL1 es una especificación estándar que está siendo desarrollada actualmente para mostrar gráficos en 3D en navegadores web. El WebGL permite mostrar gráficos en 3D acelerados por hardware (GPU) en páginas web, sin la necesidad de plug-ins en cualquier plataforma que soporte OpenGL 2.0 u OpenGL ES 2.0. Técnicamente es un API para javascript que permite usar la implementación nativa de OpenGL ES 2.0 que será incorporada en los navegadores. WebGL es gestionado por el consorcio de tecnología sin ánimo de lucro Khronos Group .

Metal Framework

NSCodersMéxico

Metal se puede programar en

Swift

Metal Framework

NSCodersMéxico

EL HOLA MUNDO DE METAL CON SWIFT

EL objetivo de esta platica es comenzar a usar las bases del framework 3D con Metal.

// Se requiere de la libreria SceneKit para poder trabajar con 3D import SceneKit

Metal Framework

NSCodersMéxico

// Crear objeto vista let sceneView = SCNView( frame: view.frame)

Empezamos por crear la vista de la escena y la escena

// Crear escena let scene = SCNScene() // asignar escena a la vista sceneView.scene = scene

Metal Framework

NSCodersMéxico

Empezamos por crear la vista de la escena y la escena

Esto le dice a IOS como generar una vista 3D que trabajara con el GPU

#

Metal Framework

NSCodersMéxico

Configuramos la app para que ponga la camara y las luces

// configurar Luces , camara y estadisticas sceneView.autoenablesDefaultLighting = true sceneView.allowsCameraControl = true sceneView.showsStatistics = true

Metal Framework

NSCodersMéxico

Creamos un modelo, en este caso una caja

// crear cajita let box = SCNBox(width: 10, height: 10, length: 10, chamferRadius: 0)

Metal Framework

NSCodersMéxico

Que es un modelo 3D

Metal Framework

NSCodersMéxico

Como se definan los vertices

Metal Framework

NSCodersMéxico

Transformaciones en vertices

Metal Framework

NSCodersMéxico

Asignar un Nodo al modelo y posicionarlo

// asignar nodo a escena let boxNode = SCNNode(geometry: box) boxNode.position = SCNVector3(x: 250, y: 150, z: 460) scene.rootNode.addChildNode(boxNode)

Metal Framework

NSCodersMéxico

Asignar una lampara y la coloreamos// luces let light = SCNLight() light.color = UIColor.redColor() let lightNode = SCNNode() lightNode.light = light // posicion de la lampara lightNode.position = SCNVector3(x: -30, y: 30, z: 60) // agregamos el nodo de luz a la escena scene.rootNode.addChildNode(lightNode)

Metal Framework

NSCodersMéxico

Mostramos la ventana 3d en nuestra vista.

// mostrar la vista en el dispositivo view.addSubview(sceneView)

Metal Framework

NSCodersMéxico

Es este codigo realmente Metal. ##

No pero si……..????

Metal Framework

NSCodersMéxico

Este codigo si es Metal. ##

Mostar demo

Metal Framework

NSCodersMéxico

continuara…