SlideShare a Scribd company logo
1 of 57
Download to read offline
DEVELOPER
MEETUP
LINE
#31
Frederik Vogel
LINE Fukuoka 株式会社
iOS Engineer
Freddy
Why this topic?
• I am curious about Metal
• What can I do with Metal?
• Is is difficult to use?
• Can i integrated it in my Project?
• I want to use Swift!!
• Not many resources
• Hope to meet other people with same interest ?
Motivation
Let's have a look at Apple's Metal Framework
• History
• Metal concepts
• Render pipeline
• Compute pipeline
• Shader
• Demo
• Other possibilities
Agenda
History
https://en.wikipedia.org/wiki/Nintendo_64
1996
https://nintendoeverything.com/donkey-kong-country-came-with-a-risky-investment-for-rare/
1994
https://steemit.com/gaming/@jcdetona/lhuyh-review-fire-emblem-awakening-for-3ds
🧐
https://steemit.com/gaming/@jcdetona/lhuyh-review-fire-emblem-awakening-for-3ds
😳
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL -> OpenGL
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
History
John Carmack, id Software, now Oculus VR
https://www.neogaf.com/threads/techspot-the-history-of-the-modern-graphics-processor.531219/
1996, Quake
http://www.vgamuseum.info/index.php/news/item/1-3dfx-voodoo-1
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
• 3D Graphic cards became popular
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
• 3D Graphic cards became popular
• 2003 OpenGL ES was released, subset of OpenGL
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
• 3D Graphic cards became popular
• 2003 OpenGL ES was released, subset of OpenGL
• 2007 iPhone released, supported OpenGL ES
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
• 3D Graphic cards became popular
• 2003 OpenGL ES was released, subset of OpenGL
• 2007 iPhone released, supported OpenGL ES
• 2010 iPhone supports OpenGL ES 2.0 + Shader
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
• 3D Graphic cards became popular
• 2003 OpenGL ES was released, subset of OpenGL
• 2007 iPhone released, supported OpenGL ES
• 2010 iPhone supports OpenGL ES 2.0 + Shader
• 2014 Metal was released
History
OpenGL
Where does it come from?
• 1981 Silicon Graphics (SGI) was founded
• 1992 opened and renamed IRIS GL API -> OpenGL
• 1996 Quake used OpenGL
• 3D Graphic cards became popular
• 2003 OpenGL ES was released, subset of OpenGL
• 2007 iPhone released, supported OpenGL ES
• 2010 iPhone supports OpenGL ES 2.0 + Shader
• 2014 Metal was released
• 2017 Metal 2 was released
History
What is Metal?
• Provides access to the GPU
• Low-level access
• Low-overhead access
• Accelerated 3D graphics rendering
• Data-parallel computation
• Full control of GPU computation power
Metal
🤘
Why not OpenGL ES?
• For graphics programming
• Not for general-purpose programming
• Need to copy memory between CPU and GPU
• Very old, has its beginning in the 80’s
• Does not fit for Apple’s plan
OpenGL ES
Why Metal?
• For graphics programming
• For general-purpose programming
• CPU and GPU are on the same chip
• No Need to copy memory between CPU and GPU
• Optimized for the chip
• Developer has full control of buffer
• Queue work in preferred order
• Can delay buffer execution
• More control over the performance
Metal
?
Render Pipeline
Render pipeline
Vertex Function
• Runs once on every vertex
• Calculates position for every vertex
• Assemble position and other data
Vertex Shader
struct RasterizerData
{
float4 position [[position]];
float4 color;
};
vertex RasterizerData myVertexFunction( uint vid [[ vertex_id ]],
constant packed_float4* position [[ buffer(0) ]],
constant packed_float4* color [[ buffer(1) ]])
{
RasterizerData outVertex;
outVertex.position = position[vid];
outVertex.color = color[vid];
return outVertex;
};
Assemble vertices to primitive
• Groups vertices into primitive types
• Primitive Types: point, line, lineStrip, triangle, triangleStrip
• Needed for rasterization
Rasterization
• Rasterize primitive types
• Interpolates Position
• Interpolates other Data
Fragment Function
• Runs for every pixel on the primitive
• Calculates color for each pixel
Fragment Function
struct RasterizerData
{
float4 position [[position]];
float4 color;
};
fragment half4 myFragmentFunction(RasterizerData inFrag [[stage_in]])
{
return half4(inFrag.color);
};
Render pipeline
What belongs to Metal?
• Metal framework
• MetalKit framework
• Metal Performance Shaders framework (MPS)
• Metal shading language (MSL)
• Metal standard library
Metal World
Let’s build our render pipeline!
Concept
MTLDevice
• Represent the actual GPU
• Create command Queue
• Creates pipeline
• Creates Data Buffer
• Access to custom function library
What is it for?
MTLRenderPipelineState
• Represents rendering pipeline
• Access to custom function library
• Creates compute or render pipeline
What is it for?
MTLCommandQueue
• Created by the MetalDevice
• Creates CommandBuffers
• Queues and schedules CommandBuffers
What is it for?
MTLCommandBuffer
• Created every frame
• Creates CommandEncoders
• RenderCommandEncoder
• ParallelRenderCommandEncoder
• ComputeCommandEncoder
• BlitCommandEncoder
• Encodes to the specific GPU hardware
What is it for?
MTLCommandEncoder
• Encode commands to the specific GPU hardware
What is it for?
🤯
A lot of information!
Setup
Every frame
Demo
Let’s see the code!
MetalKit
MetalKit framework?
• Reduces the boilerplate code
• No need to setup RenderPassDescriptor
• No need to setup MetalLayer
• No need to setup Displaylink
• Provides MTKView
• Provides MTKTextureLoader
• Model Handling
Metal
UIKit + Metal = MetalKit
Demo
Let’s see the code again!
Compute Pipeline
Compute Pipeline
• Only one stage
• shader is marked with kernel keyword
• kernel reads and write directly from/to resource
• Must specify “thread” size
• Fine control performance with threadGroups
Metal
Demo
More code!
Resume
Resume
• A lot of information
• But not too difficult
• An own world
• Compute Pipeline very powerful
• Particles
• Apple says its good for AR, VR, Cryptography, Machine
learning, Physics and Finance
!
Intelligent Scissors
Finance, Cryptography…
Machine learning!?!
Bitcoin Trading Bot!! 😃
Further Sources
・developer.apple.com/documentation/metal
Apple Documentation
・flexmonkey.blogspot.co.uk
・github.com/FlexMonkey/ParticleLab
FlexMonkey Creative Coding in Swift
・by Janie Clayton
Metal Programming Guide: Tutorial and Reference via Swift

More Related Content

What's hot

tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
Hiroshi SHIBATA
 
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014
Hiroshi SHIBATA
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04
Hiroshi SHIBATA
 

What's hot (20)

What's new in RubyGems3
What's new in RubyGems3What's new in RubyGems3
What's new in RubyGems3
 
Gluster technical overview
Gluster technical overviewGluster technical overview
Gluster technical overview
 
Getting modern with my sql
Getting modern with my sqlGetting modern with my sql
Getting modern with my sql
 
Coredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS serverCoredns nodecache - A highly-available Node-cache DNS server
Coredns nodecache - A highly-available Node-cache DNS server
 
tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02tDiary annual report 2009 - Sapporo Ruby Kaigi02
tDiary annual report 2009 - Sapporo Ruby Kaigi02
 
Php core. get rid of bugs and contribute
Php core. get rid of bugs and contributePhp core. get rid of bugs and contribute
Php core. get rid of bugs and contribute
 
Ruby Security the Hard Way
Ruby Security the Hard WayRuby Security the Hard Way
Ruby Security the Hard Way
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of Ruby
 
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
 
IDLs
IDLsIDLs
IDLs
 
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
 
Gems on Ruby
Gems on RubyGems on Ruby
Gems on Ruby
 
Writing a fast HTTP parser
Writing a fast HTTP parserWriting a fast HTTP parser
Writing a fast HTTP parser
 
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
High Availability with Galera Cluster - SkySQL Road Show 2013 in BerlinHigh Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
 
20160401 guster-roadmap
20160401 guster-roadmap20160401 guster-roadmap
20160401 guster-roadmap
 
20140419 oedo rubykaigi04
20140419 oedo rubykaigi0420140419 oedo rubykaigi04
20140419 oedo rubykaigi04
 
Linux kernel TLS и HTTPS / Александр Крижановский (Tempesta Technologies)
Linux kernel TLS и HTTPS / Александр Крижановский (Tempesta Technologies)Linux kernel TLS и HTTPS / Александр Крижановский (Tempesta Technologies)
Linux kernel TLS и HTTPS / Александр Крижановский (Tempesta Technologies)
 
OpenZFS send and receive
OpenZFS send and receiveOpenZFS send and receive
OpenZFS send and receive
 

Similar to Lets have a look at Apple's Metal Framework

SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
Mark Kilgard
 

Similar to Lets have a look at Apple's Metal Framework (20)

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?
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game Engines
 
SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
 
[Osxdev]metal
[Osxdev]metal[Osxdev]metal
[Osxdev]metal
 
Low Level Graphics & OpenGL
Low Level Graphics & OpenGLLow Level Graphics & OpenGL
Low Level Graphics & OpenGL
 
Smart Switch
Smart SwitchSmart Switch
Smart Switch
 
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
Achieve Blazing-Fast Ingest Speeds with Apache ArrowAchieve Blazing-Fast Ingest Speeds with Apache Arrow
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
 
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual MachineDino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
 
Developing Next-Generation Games with Stage3D (Molehill)
Developing Next-Generation Games with Stage3D (Molehill) Developing Next-Generation Games with Stage3D (Molehill)
Developing Next-Generation Games with Stage3D (Molehill)
 
Introduction to Hardware Design Using KiCAD
Introduction to Hardware Design Using KiCADIntroduction to Hardware Design Using KiCAD
Introduction to Hardware Design Using KiCAD
 
Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SCons
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
From Web to Mobile with Stage 3D
From Web to Mobile with Stage 3DFrom Web to Mobile with Stage 3D
From Web to Mobile with Stage 3D
 
metal-sketch-dojo.pptx
metal-sketch-dojo.pptxmetal-sketch-dojo.pptx
metal-sketch-dojo.pptx
 
Angular Day 2018 (italy) - Keynote - The Amazing World of Angular 6
Angular Day 2018 (italy) - Keynote - The Amazing World of Angular 6Angular Day 2018 (italy) - Keynote - The Amazing World of Angular 6
Angular Day 2018 (italy) - Keynote - The Amazing World of Angular 6
 
SeaJUG 5 15-2018
SeaJUG 5 15-2018SeaJUG 5 15-2018
SeaJUG 5 15-2018
 
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
 
Making A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You ThinkMaking A Game Engine Is Easier Than You Think
Making A Game Engine Is Easier Than You Think
 
DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...
DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...
DSD-INT 2014 - NGHS Workshop Scripting in SOBEK 3 & Delft3D Flexible Mesh - P...
 
Road to NODES - Blazing Fast Ingest with Apache Arrow
Road to NODES - Blazing Fast Ingest with Apache ArrowRoad to NODES - Blazing Fast Ingest with Apache Arrow
Road to NODES - Blazing Fast Ingest with Apache Arrow
 

More from LINE Corporation

More from LINE Corporation (20)

JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LTJJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
 
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin CoroutinesReduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
 
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみたKotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
 
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extensionUse Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
 
The Magic of LINE 購物 Testing
The Magic of LINE 購物 TestingThe Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
 
GA Test Automation
GA Test AutomationGA Test Automation
GA Test Automation
 
UI Automation Test with JUnit5
UI Automation Test with JUnit5UI Automation Test with JUnit5
UI Automation Test with JUnit5
 
Feature Detection for UI Testing
Feature Detection for UI TestingFeature Detection for UI Testing
Feature Detection for UI Testing
 
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
 
​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享
 
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
 
日本開發者大會短講分享
日本開發者大會短講分享日本開發者大會短講分享
日本開發者大會短講分享
 
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
 
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
 
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
 
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
 
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
 
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
 
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
 
Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Lets have a look at Apple's Metal Framework