SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
CeedMath & CeedGL
Let’s talk 3D...




web: 	

 	

 www.creaceed.com
twitter: 	

 @rsebbe
                                cocoaheads.be
Overview
• CeedMath & CeedGL are libraries for easier
 computer graphics development on Mac & iOS

• BSD license

• Available on Github
  • https://github.com/rsebbe/CeedMath
  • https://github.com/rsebbe/CeedGL
Overview
                         App


         Ceed3DGL         Ceed3DRenderMan        ...
CeedGL




                          Ceed3D




GL            CeedMath              Foundation
CeedMath
Why?
• CG math libs are generally written in C++
• C++ is cumbersome when developing in
  Objective-C
• Need of a pure C library
• Need for both float & double data type
Definition
• Written in pure C
• Macro-based templates, float & double
• Simple types (float*)
• Chain-able
• C++ interoperable (polymorphic)
  • In C, use _f or _d suffixes
  • In C++, automatic based on param type
Types
• vector (2D, 3D, 4D)
• normal (3D) / plane (4D)
• matrix (2D, 4D)
• quaternion (4D)
• ray
• box
• frustum
• triangle
What?
• vector: add, subtract, dot/vect product, norm,
  rotate, project, find angles, lerp...
• matrix: add, subtract, multiply, transform,
  solve, invert...
• quaternion: standard operations...
• ray: intersections w/ plane/triangle/box...
• box: union / intersection...
• frustum: perspective transform...
• triangle: normal computation
Xcode Project
• Universal: Mac & iOS libs

• Headers note
  • lib: PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/CeedMath
  • app: HEADER_SEARCH_PATHS = "$(DSTROOT)/usr/local/include" "$
    (CONFIGURATION_BUILD_DIR)/usr/local/include"


  • #include <CeedMath/C3Math.h>
Demo
• Demo #1: template mechanics

• Demo #2: real world example (rounded rect)
                   C3MeshGeometry+Primitives.mm



• Demo #3: C++ templates for mouse picking
                   C3StreamPrimitive+Picking.mm
Demo
Demo’s
CeedGL
Why?
• OpenGL is a C API, most GL objects are int’s
  • Error prone, all function take int’s
  • Complex APIs, many functions
  • Not practical within Objective-C
  • Intimidating, hard to start
• Higher level abstractions exist (scene
 graphs), but what if you only need standard
 OpenGL?
Old vs. Modern OpenGL

      OpenGL 1.x, 2.x            OpenGL ES 1.x
 define camera position, define object position, choose a
predefined illumination model, place the lights, draw some
      triangles, change position, draw some other...


      OpenGL >= 3.1          OpenGL ES 2.x + WebGL
set vertices, indices, shading program & params, then draw
OpenGL
• Modern OpenGL programming is hard.
 Especially the first time...
 • It’s a functional C API
 • Most “objects” are represented by handles (int)
 • Modern GL has removed many concepts
    • Light, shading, transforms
 • For the good, the old pipeline was limiting, and
   a hurdle for card makers
 • It is now more in sync w/ hardware capabilities
CeedGL
• CeedGL does not define new concepts
• But it helps in setting up and managing your
  OpenGL objects
• Thin Objective-C Wrapper
CeedGL
                            GLObject
GLFramebuffer                                GLRenderbuffer


 GLBuffer       GLTexture         GLShader      GLProgram


                                                  GLValue




                     GLDrawCommand
Draw (1/2)
     • Vertex Shader
        • 1 execution per vertex
        • inputs: uniform, attribute
        • output: varying
     • Fragment Shader
        • 1 execution per output
         pixel
       • input: uniform, varying
       • output: fragment color
Draw (2/2)
        GLDrawCommand          GLFramebuffer

GLProgram      u    GLValue         GLRenderbuffer

v   GLShader   a    GLValue          GLTexture

f   GLShader   a   GLBuffer
               i   GLBuffer
               t   GLTexture
Demo’s
GLKit?
• GLKit’s Math
  • NEON optimized
  • Currently iOS5 only, definitely Apple only
  • Has an overlap with CeedMath
• GLKit’s GL
  • Forces a GL coding style
  • Provides easier starting point
  • Mostly complementary to CeedGL

• Permissive, forkable open source make
 sense in such projects
Happy 3D coding !



web: 	

 	

 www.creaceed.com
twitter: 	

 @rsebbe
                                cocoaheads.be

Más contenido relacionado

La actualidad más candente

Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to ScalaJohan Andrén
 
CPP13 - Object Orientation
CPP13 - Object OrientationCPP13 - Object Orientation
CPP13 - Object OrientationMichael Heron
 
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03) iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03) Jonathan Engelsma
 
Typescript overview
Typescript overviewTypescript overview
Typescript overviewThanvilahari
 
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02) iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02) Jonathan Engelsma
 
Introduction To Rust Language - Chester Devs
Introduction To Rust Language - Chester DevsIntroduction To Rust Language - Chester Devs
Introduction To Rust Language - Chester DevsAndy Lowry
 
Model with actors and implement with Akka
Model with actors and implement with AkkaModel with actors and implement with Akka
Model with actors and implement with AkkaNgoc Dao
 
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...Álvaro Agea Herradón
 
Microservices, the lean way
Microservices, the lean wayMicroservices, the lean way
Microservices, the lean wayBruno Bossola
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
Java- Java tech overview- Mazenet solution
Java- Java tech overview- Mazenet solutionJava- Java tech overview- Mazenet solution
Java- Java tech overview- Mazenet solutionMazenetsolution
 
Adapter Design Pattern
Adapter Design PatternAdapter Design Pattern
Adapter Design Patternguy_davis
 
Melbourne Cocoa Heads CoreML Presentation
Melbourne Cocoa Heads CoreML PresentationMelbourne Cocoa Heads CoreML Presentation
Melbourne Cocoa Heads CoreML PresentationHon Weng Chong
 
Kotlin For Android (at DevFest İzmir 2016)
Kotlin For Android (at DevFest İzmir 2016)Kotlin For Android (at DevFest İzmir 2016)
Kotlin For Android (at DevFest İzmir 2016)Semih Bozdemir
 
Adapter design-pattern2015
Adapter design-pattern2015Adapter design-pattern2015
Adapter design-pattern2015Vic Tarchenko
 
Introduction to Scala for Java Developers
Introduction to Scala for Java DevelopersIntroduction to Scala for Java Developers
Introduction to Scala for Java DevelopersSolix JJ
 

La actualidad más candente (20)

Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Short and fast introduction to Scala
Short and fast introduction to ScalaShort and fast introduction to Scala
Short and fast introduction to Scala
 
CPP13 - Object Orientation
CPP13 - Object OrientationCPP13 - Object Orientation
CPP13 - Object Orientation
 
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03) iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 03)
 
Typescript overview
Typescript overviewTypescript overview
Typescript overview
 
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02) iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02)
iOS Bootcamp: learning to create awesome apps on iOS using Swift (Lecture 02)
 
Introduction To Rust Language - Chester Devs
Introduction To Rust Language - Chester DevsIntroduction To Rust Language - Chester Devs
Introduction To Rust Language - Chester Devs
 
Model with actors and implement with Akka
Model with actors and implement with AkkaModel with actors and implement with Akka
Model with actors and implement with Akka
 
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
 
Microservices, the lean way
Microservices, the lean wayMicroservices, the lean way
Microservices, the lean way
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
Java- Java tech overview- Mazenet solution
Java- Java tech overview- Mazenet solutionJava- Java tech overview- Mazenet solution
Java- Java tech overview- Mazenet solution
 
Adapter Design Pattern
Adapter Design PatternAdapter Design Pattern
Adapter Design Pattern
 
Kotlin & Swift
Kotlin & SwiftKotlin & Swift
Kotlin & Swift
 
Scala for C# Developers
Scala for C# DevelopersScala for C# Developers
Scala for C# Developers
 
Melbourne Cocoa Heads CoreML Presentation
Melbourne Cocoa Heads CoreML PresentationMelbourne Cocoa Heads CoreML Presentation
Melbourne Cocoa Heads CoreML Presentation
 
Kotlin For Android (at DevFest İzmir 2016)
Kotlin For Android (at DevFest İzmir 2016)Kotlin For Android (at DevFest İzmir 2016)
Kotlin For Android (at DevFest İzmir 2016)
 
Adapter design-pattern2015
Adapter design-pattern2015Adapter design-pattern2015
Adapter design-pattern2015
 
Introduction to Scala for Java Developers
Introduction to Scala for Java DevelopersIntroduction to Scala for Java Developers
Introduction to Scala for Java Developers
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 

Destacado

Gestión del CM y herramientas - #AprendiendoenDigital
Gestión del CM y herramientas - #AprendiendoenDigitalGestión del CM y herramientas - #AprendiendoenDigital
Gestión del CM y herramientas - #AprendiendoenDigitalAyuntamiento de Sevilla.
 
Adex Benchmark 2011 (IAB Europe)
Adex Benchmark 2011 (IAB Europe)Adex Benchmark 2011 (IAB Europe)
Adex Benchmark 2011 (IAB Europe)IAB Spain
 
Parkinson i Alzheimer dues malalties neurodegeneratives
Parkinson i Alzheimer dues malalties neurodegenerativesParkinson i Alzheimer dues malalties neurodegeneratives
Parkinson i Alzheimer dues malalties neurodegenerativesPatricia Cañaveras
 
LOS ORIGENES DE MADRID
LOS ORIGENES DE MADRIDLOS ORIGENES DE MADRID
LOS ORIGENES DE MADRIDpazair
 
CV-Library Q4 Media Pack
CV-Library Q4 Media PackCV-Library Q4 Media Pack
CV-Library Q4 Media PackJames Legge
 
Taller outlook 2010
Taller outlook 2010Taller outlook 2010
Taller outlook 2010FACPYME
 
El libro de_los_cuidadores_de_semillas_-_rosemary_morrow
El libro de_los_cuidadores_de_semillas_-_rosemary_morrowEl libro de_los_cuidadores_de_semillas_-_rosemary_morrow
El libro de_los_cuidadores_de_semillas_-_rosemary_morrowInstituto Comenius
 
Programación Actividades CURSA
Programación Actividades CURSAProgramación Actividades CURSA
Programación Actividades CURSAAlexander Perdomo
 
Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...
Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...
Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...Checks & Balances
 
Con los hijos
Con los hijosCon los hijos
Con los hijosanacjg
 
Lumenous trust mit media
Lumenous trust mit mediaLumenous trust mit media
Lumenous trust mit mediaLaVonne Reimer
 
DEKRA Magazine - n. 8 del 2010
DEKRA Magazine - n. 8 del 2010DEKRA Magazine - n. 8 del 2010
DEKRA Magazine - n. 8 del 2010DEKRA Italia
 
Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"
Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"
Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"Jansäter Kommunikation AB
 

Destacado (20)

Vector3
Vector3Vector3
Vector3
 
Jesus te ama
Jesus te amaJesus te ama
Jesus te ama
 
Gestión del CM y herramientas - #AprendiendoenDigital
Gestión del CM y herramientas - #AprendiendoenDigitalGestión del CM y herramientas - #AprendiendoenDigital
Gestión del CM y herramientas - #AprendiendoenDigital
 
OpenSense
OpenSenseOpenSense
OpenSense
 
Adex Benchmark 2011 (IAB Europe)
Adex Benchmark 2011 (IAB Europe)Adex Benchmark 2011 (IAB Europe)
Adex Benchmark 2011 (IAB Europe)
 
Parkinson i Alzheimer dues malalties neurodegeneratives
Parkinson i Alzheimer dues malalties neurodegenerativesParkinson i Alzheimer dues malalties neurodegeneratives
Parkinson i Alzheimer dues malalties neurodegeneratives
 
LOS ORIGENES DE MADRID
LOS ORIGENES DE MADRIDLOS ORIGENES DE MADRID
LOS ORIGENES DE MADRID
 
CV-Library Q4 Media Pack
CV-Library Q4 Media PackCV-Library Q4 Media Pack
CV-Library Q4 Media Pack
 
Go-Enotur, una app para descubrir territorios enoturísticos - Fòrum TurisTIC
Go-Enotur, una app para descubrir territorios enoturísticos - Fòrum TurisTICGo-Enotur, una app para descubrir territorios enoturísticos - Fòrum TurisTIC
Go-Enotur, una app para descubrir territorios enoturísticos - Fòrum TurisTIC
 
emcels creative 2016
emcels creative 2016emcels creative 2016
emcels creative 2016
 
Taller outlook 2010
Taller outlook 2010Taller outlook 2010
Taller outlook 2010
 
El libro de_los_cuidadores_de_semillas_-_rosemary_morrow
El libro de_los_cuidadores_de_semillas_-_rosemary_morrowEl libro de_los_cuidadores_de_semillas_-_rosemary_morrow
El libro de_los_cuidadores_de_semillas_-_rosemary_morrow
 
El Exito 1
El Exito 1El Exito 1
El Exito 1
 
Estudio seguros de repatriación
Estudio seguros de repatriaciónEstudio seguros de repatriación
Estudio seguros de repatriación
 
Programación Actividades CURSA
Programación Actividades CURSAProgramación Actividades CURSA
Programación Actividades CURSA
 
Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...
Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...
Todos los hombres del rey: Abordaje desde el Análisis Transaccional y la Nego...
 
Con los hijos
Con los hijosCon los hijos
Con los hijos
 
Lumenous trust mit media
Lumenous trust mit mediaLumenous trust mit media
Lumenous trust mit media
 
DEKRA Magazine - n. 8 del 2010
DEKRA Magazine - n. 8 del 2010DEKRA Magazine - n. 8 del 2010
DEKRA Magazine - n. 8 del 2010
 
Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"
Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"
Davidshalls Höstfest 24/9 - fotoutställning "Vi är Davidshallare"
 

Similar a CeedMath & CeedGL, Let's talk 3D...

Designing an Objective-C Framework about 3D
Designing an Objective-C Framework about 3DDesigning an Objective-C Framework about 3D
Designing an Objective-C Framework about 3Drsebbe
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Droidcon Berlin
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I💻 Anton Gerdelan
 
openGL basics for sample program (1).ppt
openGL basics for sample program (1).pptopenGL basics for sample program (1).ppt
openGL basics for sample program (1).pptHIMANKMISHRA2
 
openGL basics for sample program.ppt
openGL basics for sample program.pptopenGL basics for sample program.ppt
openGL basics for sample program.pptHIMANKMISHRA2
 
OpenGL Shading Language
OpenGL Shading LanguageOpenGL Shading Language
OpenGL Shading LanguageJungsoo Nam
 
PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)Slide_N
 
Chapter02 graphics-programming
Chapter02 graphics-programmingChapter02 graphics-programming
Chapter02 graphics-programmingMohammed Romi
 
Getting started with open gl es 2
Getting started with open gl es 2Getting started with open gl es 2
Getting started with open gl es 2matthewgalaviz
 
Introduction of openGL
Introduction  of openGLIntroduction  of openGL
Introduction of openGLGary Yeh
 
AOT-compilation of JavaScript with V8
AOT-compilation of JavaScript with V8AOT-compilation of JavaScript with V8
AOT-compilation of JavaScript with V8Phil Eaton
 
Java on the GPU: Where are we now?
Java on the GPU: Where are we now?Java on the GPU: Where are we now?
Java on the GPU: Where are we now?Dmitry Alexandrov
 

Similar a CeedMath & CeedGL, Let's talk 3D... (20)

Designing an Objective-C Framework about 3D
Designing an Objective-C Framework about 3DDesigning an Objective-C Framework about 3D
Designing an Objective-C Framework about 3D
 
september11.ppt
september11.pptseptember11.ppt
september11.ppt
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014
 
OpenGL Interaction
OpenGL InteractionOpenGL Interaction
OpenGL Interaction
 
Computer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming IComputer Graphics - Lecture 01 - 3D Programming I
Computer Graphics - Lecture 01 - 3D Programming I
 
openGL basics for sample program (1).ppt
openGL basics for sample program (1).pptopenGL basics for sample program (1).ppt
openGL basics for sample program (1).ppt
 
openGL basics for sample program.ppt
openGL basics for sample program.pptopenGL basics for sample program.ppt
openGL basics for sample program.ppt
 
Graphics Libraries
Graphics LibrariesGraphics Libraries
Graphics Libraries
 
2D graphics
2D graphics2D graphics
2D graphics
 
Efficient Image Processing with Halide
Efficient Image Processing with HalideEfficient Image Processing with Halide
Efficient Image Processing with Halide
 
Open gl
Open glOpen gl
Open gl
 
OpenGL Shading Language
OpenGL Shading LanguageOpenGL Shading Language
OpenGL Shading Language
 
PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)
 
Chapter02 graphics-programming
Chapter02 graphics-programmingChapter02 graphics-programming
Chapter02 graphics-programming
 
GLSL
GLSLGLSL
GLSL
 
Getting started with open gl es 2
Getting started with open gl es 2Getting started with open gl es 2
Getting started with open gl es 2
 
Introduction of openGL
Introduction  of openGLIntroduction  of openGL
Introduction of openGL
 
AOT-compilation of JavaScript with V8
AOT-compilation of JavaScript with V8AOT-compilation of JavaScript with V8
AOT-compilation of JavaScript with V8
 
Programming with OpenGL
Programming with OpenGLProgramming with OpenGL
Programming with OpenGL
 
Java on the GPU: Where are we now?
Java on the GPU: Where are we now?Java on the GPU: Where are we now?
Java on the GPU: Where are we now?
 

Último

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

CeedMath & CeedGL, Let's talk 3D...

  • 1. CeedMath & CeedGL Let’s talk 3D... web: www.creaceed.com twitter: @rsebbe cocoaheads.be
  • 2. Overview • CeedMath & CeedGL are libraries for easier computer graphics development on Mac & iOS • BSD license • Available on Github • https://github.com/rsebbe/CeedMath • https://github.com/rsebbe/CeedGL
  • 3. Overview App Ceed3DGL Ceed3DRenderMan ... CeedGL Ceed3D GL CeedMath Foundation
  • 5. Why? • CG math libs are generally written in C++ • C++ is cumbersome when developing in Objective-C • Need of a pure C library • Need for both float & double data type
  • 6. Definition • Written in pure C • Macro-based templates, float & double • Simple types (float*) • Chain-able • C++ interoperable (polymorphic) • In C, use _f or _d suffixes • In C++, automatic based on param type
  • 7. Types • vector (2D, 3D, 4D) • normal (3D) / plane (4D) • matrix (2D, 4D) • quaternion (4D) • ray • box • frustum • triangle
  • 8. What? • vector: add, subtract, dot/vect product, norm, rotate, project, find angles, lerp... • matrix: add, subtract, multiply, transform, solve, invert... • quaternion: standard operations... • ray: intersections w/ plane/triangle/box... • box: union / intersection... • frustum: perspective transform... • triangle: normal computation
  • 9. Xcode Project • Universal: Mac & iOS libs • Headers note • lib: PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/CeedMath • app: HEADER_SEARCH_PATHS = "$(DSTROOT)/usr/local/include" "$ (CONFIGURATION_BUILD_DIR)/usr/local/include" • #include <CeedMath/C3Math.h>
  • 10. Demo • Demo #1: template mechanics • Demo #2: real world example (rounded rect) C3MeshGeometry+Primitives.mm • Demo #3: C++ templates for mouse picking C3StreamPrimitive+Picking.mm
  • 11. Demo
  • 14. Why? • OpenGL is a C API, most GL objects are int’s • Error prone, all function take int’s • Complex APIs, many functions • Not practical within Objective-C • Intimidating, hard to start • Higher level abstractions exist (scene graphs), but what if you only need standard OpenGL?
  • 15. Old vs. Modern OpenGL OpenGL 1.x, 2.x OpenGL ES 1.x define camera position, define object position, choose a predefined illumination model, place the lights, draw some triangles, change position, draw some other... OpenGL >= 3.1 OpenGL ES 2.x + WebGL set vertices, indices, shading program & params, then draw
  • 16. OpenGL • Modern OpenGL programming is hard. Especially the first time... • It’s a functional C API • Most “objects” are represented by handles (int) • Modern GL has removed many concepts • Light, shading, transforms • For the good, the old pipeline was limiting, and a hurdle for card makers • It is now more in sync w/ hardware capabilities
  • 17. CeedGL • CeedGL does not define new concepts • But it helps in setting up and managing your OpenGL objects • Thin Objective-C Wrapper
  • 18. CeedGL GLObject GLFramebuffer GLRenderbuffer GLBuffer GLTexture GLShader GLProgram GLValue GLDrawCommand
  • 19. Draw (1/2) • Vertex Shader • 1 execution per vertex • inputs: uniform, attribute • output: varying • Fragment Shader • 1 execution per output pixel • input: uniform, varying • output: fragment color
  • 20. Draw (2/2) GLDrawCommand GLFramebuffer GLProgram u GLValue GLRenderbuffer v GLShader a GLValue GLTexture f GLShader a GLBuffer i GLBuffer t GLTexture
  • 22. GLKit? • GLKit’s Math • NEON optimized • Currently iOS5 only, definitely Apple only • Has an overlap with CeedMath • GLKit’s GL • Forces a GL coding style • Provides easier starting point • Mostly complementary to CeedGL • Permissive, forkable open source make sense in such projects
  • 23. Happy 3D coding ! web: www.creaceed.com twitter: @rsebbe cocoaheads.be