Japan
このブログでは、Google から開発者のみなさま向けの情報をいち早くお届けします。
オープンソースとなった SwiftShader によるユニバーサル レンダリング
2016年7月19日火曜日
[この記事は
Nicolas Capens
、
ソフトウェア エンジニア兼「ピクセルパイレーツ」
による Chromium Blog の記事 "
Universal rendering with SwiftShader, now open source
" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]
SwiftShader は、CPU で高パフォーマンス グラフィック レンダリングを行うソフトウェア ライブラリです。Google は、既に Chrome、Android 開発ツール、クラウド サービスなどの複数の製品でこのライブラリを使用しています。本日(*原文公開当時)、Swiftshader は完全なオープンソースとなり、多くのアプリケーションで使用しやすくなりました。
2009 年以来、Chrome はハードウェア アクセラレーションによるレンダリングを完全にはサポートしていないシステムでの 3D レンダリングに SwiftShader を使用しています。
WebGL
などの 3D コンテンツは GPU 向けに記述されていますが、ユーザーの端末にはこのようなコンテンツを実行できるだけのグラフィック ハードウェアが搭載されていない場合もあります。また、信頼性の高い 3D レンダリングができない、あるいは 3D レンダリングがまったくできない深刻なバグがあるドライバが存在する可能性もあります。Chrome はそのようなシステムでもすべてのユーザーが 3D ウェブ コンテンツを利用できるように、SwiftShader を使用しています。
十分な GPU を搭載していないマシンで SwiftShader を実行していない Chrome(左)では、WebGL の Globe テストを実行できません。同じマシンで SwiftShader を有効にする(右)と、コンテンツの完全なレンダリングが可能になります。
SwiftShader は、Chrome や Android で使用されているのものと同じ OpenGL ES グラフィック
API
を実装しています。SwiftShader をオープンソース化することによって、他のブラウザ ベンダーが広く 3D コンテンツをサポートできるようになり、ウェブ プラットフォーム全体が進化します。とりわけ、WebGL が無条件にサポートされることによって、ウェブ デベロッパーがカジュアル ゲーム、教育アプリ、共同コンテンツ作成ソフトウェア、製品紹介、バーチャル ツアー、
その他
の魅力的なコンテンツを作成できるようになります。SwiftShader には、GPU のないシステムでのレンダリングを可能にするクラウド アプリケーションも存在します。
CPU でグラフィック計算を効率的に実行してユーザーに最高のパフォーマンスを提供するために、SwiftShader はいくつかのテクニックを利用しています。一般的なコンパイル時の最適化とは異なり、動的コード生成によって現在のタスクに
最適な
コードを実行時に生成できます。この複雑なアプローチは、直感的な命令型構文を持つ独自の C++ 埋め込み言語
Reactor
を利用することによってシンプルなものになっています。また、SwiftShader は
SIMT
風のベクター演算とマルチスレッド テクノロジーを併用し、利用できる CPU のコアやベクター演算ユニットを活用して並列度を上げています。これによって、
アプリ ストリーミング
などのリアルタイム レンダリングが Android 上で実現できます。
デベロッパーの皆様は、
git リポジトリ
から SwiftShader のソースコードにアクセスできます。
メーリング リスト
にサインアップすると、最新の開発情報を受け取ることができます。また、オープンソース コミュニティの SwiftShader デベロッパーと共同作業を行うこともできます。
Posted by
Takuo Suzuki - Developer Relations Team
コメントを投稿
ラベル
#hack4jp
3
Addy Osmani
1
ADK
2
AdMob
6
ALPN
1
AMP
5
Analytics
5
Andorid
6
Android
163
Android Auto
1
Android Design Support Library
1
Android Developer Story
2
Android N
7
Android Pay
1
Android Studio
13
Android Support Library
3
Android TV
7
Android Wear
20
androidmarket
3
AngularJS
2
API
20
APIExpert
45
app engine
21
App Indexing
7
App Invites
5
AppCompat
2
Apps Script
6
aprilfool
3
ArtTech
1
Audio
3
Auth Code
1
Authentication
3
AuthSub
2
Autotrack
1
Awareness API
1
Beacons
5
BigQuery
6
BLE
4
Blink
1
blogger
1
Brillo
1
Brotli
1
Calendar
1
Cardboard
3
Career
1
Case Study
1
chrome
55
Chrome Custom Tab
1
chrome extension
2
Chrome for Android
1
Chrome for iOS
1
Chrome OS
1
Chromebook
1
Chromecast
7
chromewebstore
6
Chromium
4
ClientLogin
3
Cloud
8
Cloud Test Lab
1
CocoaPods
1
codejam
5
codelab
2
compute engine
3
Context
1
Dart
2
DataCenter
1
Daydream
2
Deep Learning
1
Demo Party
1
Design Sprint
3
DesignBytes
1
DevArt
3
DevBytes
6
Developer
14
Developer Console
3
Developer Preview
2
Developer Relations
2
DevFest
6
DevFestX
3
devtools
3
DirectShare
1
Doodle
1
DoubleClick
4
Doze モード
1
drive
2
Dynamic Links
1
EarlGrey
1
Easter Egg
1
ECMAScript 2015
1
Eddystone
3
egypt
1
English
2
ES2015
1
ES2016
1
ES6
2
ES7
1
Firebase
18
font
2
game
14
GDD11JP
56
GDD2010JP
23
GDE
2
GDG
10
Geo
23
Gingerbread
1
GLIDE
5
Gmail
1
Go
1
golang
4
goo.gl
1
Google
5
Google Apps
1
Google Cast
7
Google Cloud Messaging
10
Google Cloud Platform
6
Google Developer Experts
2
Google Developers Academy
1
Google Developers live
5
Google Developers Summit
1
Google Drive
2
Google Fit
2
Google for Work
1
Google Maps
28
Google Play
31
Google Play Game Services
6
Google Play Services
18
Google Plus
14
Google Search
3
Google Sign-In
10
Google Tag Manager
1
Google+
1
Googleapps
10
GoogleGames
1
GoogleI/O
27
GoogleLabs
1
GoogleTV
1
gRPC
2
GTUG
5
GWT
2
hack4jp
2
hackathon
6
HTML5
17
HTML5Rocks
1
HTTP/2
3
HTTPS
2
ID Token
1
Identity
12
Identity Toolkit
1
Ignite
4
IME
10
intern
2
iOS
9
IoT
1
IPv6
1
JavaScript
4
K-12
1
Knowledge Graph
1
l10n
8
Lollipop
10
Machine Learning
1
Marshmallow
10
Material
1
Material Design
17
MDL
1
MIDI
2
Mobile
9
Mobile Bootcamp
4
Mobile Vision
3
mod_pagespeed
1
monetize
3
Mozc
14
Music
1
NativeDriver
2
Nearby
4
Nexus
1
Nexus S
1
NFC
1
NPAPI
2
NPN
1
oauth
6
OpenGL
3
OpenID
3
OpenID Connect
2
OpenSocial
1
opensource
11
Payment
1
People API
1
Performance
6
PersonFinder
1
Physical Web
3
Place Picker
1
Player Analytics
4
Policy
2
Polymer
6
Progressive Web Apps
5
project hosting
1
Promise
1
Promo code
1
Protocol Buffers
1
publicdata
1
Push API
1
Push Notification
3
QUIC
1
RAIL
1
Remote Config
1
Remote Display API
1
Runtime Permission
1
Sample Code
2
schema.org
1
security
10
Service Worker
3
sketchup
1
SmartLock for Passwords
4
social
4
SPDY
3
speak2tweet
1
startup
3
streetview
3
Study Jams
3
SwiftShader
1
techtalk
12
TensorFlow
2
test
2
ToS
1
Transliteration
1
Twitter
1
Udacity
15
Unity
2
UX
1
V8
2
VP9
1
VR
2
Vulkan
2
Watch Face
2
wave
2
Weave
1
Web
2
Web Animations
1
Web Components
4
Web Manifest
1
WebAssembly
1
WebMusic
4
WTM
2
YouTube
14
YouTube API
1
インタビュー
1
コードサンプル
1
プライバシー
1
言論の自由
1
節電
3
東日本大震災
9
日本語入力
40
ブログ アーカイブ
2016
7
6
5
4
3
2
1
2015
12
11
10
9
8
7
6
5
4
3
2
2014
12
11
10
9
8
7
6
5
4
3
2
1
2013
12
11
10
9
8
7
6
5
4
3
2
1
2012
12
11
10
9
8
7
6
5
4
3
2
1
2011
12
11
10
9
8
7
6
5
4
3
2
1
2010
12
11
Feed
Google
on
Follow @googledevjp
"プロダクトに関するご意見は
プロダクトフォーラム
にお願いします"