Happy My Life

日常とか技術とか

Renderscriptの今

ってことで、Renderscriptは今どうなっているのかをまとめてみた。

一番の謎は、Google I/O 2013に「High Performance Applications with RenderScript」というセッションがあったこと。一言でいうと「Renderscriptはいつ使うの? 今でしょ! 今後も頑張って拡張しちゃうよ。期待しててね!」という内容。なんでセッション1つ設けたんでしょうね?

Renderscriptの紹介

Renderscriptって何やねん? ってところからお話する。単純に言うと「AndroidGPU Computingを行うため開発環境」のこと。

もうちょっと詳しく書くと以下のようになる。

  • 文法はC言語(C99)
  • .RSファイルにコードを書いてJavaから呼び出す(NDKみたいだけど呼び出し方は緩い)
  • LLVM/clang使ってるから、CPU、GPUの違いに左右されないよ!
  • CPUよりめっちゃ早く計算できたりするよ!GPUで計算するからCPU負荷が減るよ!
  • API 18から、GingerbreadでもRenderscript使えるようになるよ。でもGPUじゃなくてCPUで計算するからね!(Google I/O 2013の発表)

詳しいことはGoogleさんが2011年11月のLLVM開発者ミーティングで発表したPDFを読むのがわかりやすいかと。

今どうなっているの?

名称はRenderscriptなのだが、JellyBean(Android 4.2)の段階で正式サポートされているのはGPU Computing的な数学関数が中心となっている。以前はOpenGL|ESっぽい描画機能も持っていたのだがJellyBeanで非推奨となった。Renderが指す意味は一体どこへ行ったのだ…。

で、疑問に思っていた事の一つに「OpenCL採用せずにRenderscriptって作ったん?」てのがあったけど、その疑問に対する答えの一つがStackoverflowにあった。ざっくり言うと「AndroidはモバイルだしCPUやGPUなどは沢山のアーキテクチャを相手にしなきゃいかんから、OpenCLが前提としているハード構成などと違うからでね?」という感じ。なるほどねぇ。

今後どうなっていくの?

Mali-T604とRenderscriptを使って「ほらほら顔認識させても全然CPU負荷が上がらないよ!すごいでしょ」という動画もあるので、当面はそういう方面に使われていくかなー、という気がする。

Androidゲームプログラミング A to Z
Mario Zechner
インプレスジャパン
売り上げランキング: 32,333