フォト

Google AdSense

  • AdSense
無料ブログはココログ

2012.05.18

”Octree-Based Sparse Voxelization for Real-Time Global Illumination"の実装で気になるところメモ

”Octree-Based Sparse Voxelization for Real-Time Global Illumination”のスライドを見ていたらOpenGLでの実装について色々と気になるところがあってメモ。

”Octree-Based Sparse Voxelization for Real-Time Global Illumination”
http://blog.icare3d.org/2012/05/gtc-2012-talk-octree-based-sparse.html

まず24枚目。OpenGL 4.2のImage_load_Storeの話とNVIDIAのBindless Graphicsの話。

Ss001

それから30ページ目。OpenGLにはDirect3D11のようにCompute Shaderが無いので頂点シェーダでComputeをエミュレートしてみた話。input attributeを使用しない頂点シェーダをCompute Shaderの代わりをさせています。gl_VertexIDで処理してる頂点の番号を取得することでスレッドIDとしているみたいですね。

つまり、1000頂点のDrawをしたVertex Shaderを、1000スレッドのCompute Shaderと見るわけか。OpenGL 4.2ならload_image_Storeでバッファへの読み書きは出来ちゃうから同期とかスレッドグループ共有メモリみたいなものを必要としなければこれでいいわけか。

Ss004

結構無理矢理感が無いわけでは無いけど面白いGPUの使い方してるなぁ。

2012.04.12

夜桜撮ってきた

最近、単焦点レンズM.ZUIKO DIGITAL ED 12mm F2.0を買ったのですが夜の撮影がしてみたくてミッドタウン行ってきました(カメラはE-P3)。

桜ライトアップ2012
http://www.tokyo-midtown.com/jp/event/2012/6048.html

いや~、レンズ明るめなので夜でも撮れますし背景がボケてくれるなぁ。

2012.04.08

浅草と浜離宮の写真撮ってきた

浅草と浜離宮に写真撮りに行っていました。

浅草は顔写ってるの多いので、隅田公園からのスカイツリーと桜写真で。

天気が良かったので色々と撮れて良かったです。

P4082239

P4082267

P4082278

P4082289

P4082313

P4082349

P4082355

P4082375

P4082396

P4082401

P4082409

P4082414

P4082419

P4082450

P4082459

P4082460

P4082462

2012.03.26

防水iPadケースを買ってみた

Case001

なんとなく風呂用に防水iPadケースを買ってみたんですが、風呂にiPadを持ち込む際に若干の安心感はありますね。別に風呂の中に水没させたいわけじゃないのでひとまず入れておけば水濡れはなさそうです。

ちゃんと入れた状態でもタッチ操作はできたのでOKですね。

防水アイパッドケース RJ317
防水アイパッドケース RJ317
わがんせ 2011-03-10
売り上げランキング : 18084


Amazonで詳しく見る
by G-Tools

2012.03.24

Unity:ShadowGunのサンプルレベル

Unity Technologies blogでShadowGunのモバイル向けに最適化したサンプルレベルが公開されてますね。

ShadowGun: Optimizing for Mobile Sample Level
http://blogs.unity3d.com/2012/03/23/shadowgun-optimizing-for-mobile-sample-level/

blogの方では、モバイルデバイスへの描画の最適化の話などが解説されていますが大規模なアセットを使ったレベルの構築例として参考になりそうですね。

Sg001

Sg002

Sg003

2012.03.21

MLAA vs. FXAA ~AMDのGDC 2012のUnreal Engineのセッションスライドから

※画像はクリックすると大きなサイズになります。

本日は、AMDのGDC 2012セッションを読みまくってるんですが、"Enhancing Graphics in Unreal Engine 3 Titles using New Code Submissions"がちょっと面白かったのでメモ。

AMDのGDCセッションスライド
http://developer.amd.com/documentation/presentations/Pages/default.aspx#GDC

スライド
http://developer.amd.com/gpu_assets/Enhancing%20Graphics%20in%20Unreal%20Engine%203%20Titles%20using%20New%20Code%20Submissions.ppsx

このセッションは、Unreal Engineに関与しているAMDの技術についての解説なのですが、内容的には、テセレーション、マルチモニタ、頂点シェーダベースのボケDoF、FSAA(フルシーンアンチエイリアシング)が取り上げられています。

今回は、その中でもFSAAのところが気になったので読んでました。

Unreal Engine 3では、FSAAとしてMLAAとFXAAの2種類が使えるようで、その手法の特徴と比較が行われてました。両方とも現行の家庭用機で使用できて流行っているんですが、イマイチどちらがいいのかわかってなかったのですが、読んでたらそれぞれの特徴と優位性がわかってきました。

IntelのMLAAのサンプル(CPU実装なので遅い)
http://software.intel.com/en-us/articles/vcsource-samples-morphological-antialiasing-mlaa/

FXAA 3.11
http://timothylottes.blogspot.jp/2011/07/fxaa-311-released.html

とりあえず、両者の特徴が書かれてるスライドを抜き出してみました。

・FXAA
Ue001
特徴
○シングルパスのポストエフェクト(シェーダ)で実現できる
○アンチエイリアス処理をかけるレンダーターゲット以外のレンダーターゲットはいらない(360はちょっとごにょごにょしないと行けないけどね)
×エッジの検出しすぎで非エッジ箇所もブラーがかかっちゃう
→画面がぼけた感じになりやすい

・MLAA
Ue002
×3パスのポストプロセス→パス数多い
×2つの追加レンダーターゲットテクスチャが必要
→1. エッジマスクを格納するテクスチャ
→2.エッジ長さを格納するテクスチャ
○エッジ部分を精度良くアンチエイリアス処理できる
○エッジ検出レベルをパラメータで制御できる
→パフォーマンス制御しやすい

なんか×の数では、MLAAの方が多いのですが内容的には

品質:MLAA > FXAA
速度や実装のしやすさ:FXAA > MLAA

となります。わりと話題になってるエッジ検出に関してのスライドがありました。

・エッジ検出の比較
Ue003

Ue004

おお、なんかMLAAに比べるとFXAAの方がエッジ部分の検出が多いですね。FXAAは、エッジの検出率が高いからアンチエイリアス処理がかかりすぎて全体的にボケ気味になるのはこのせいか~、なるほど。

・速度の話
ここからはAMDのスライドの話ではありませんが、速度比較してるサイトがありました。

FXAA vs. MLAA
http://www.hardocp.com/article/2011/07/18/nvidias_new_fxaa_antialiasing_technology/4

全体的にFXAAが速いですねぇ。いくつかのGPUで実験されてますが、30%以上速い感じですね。

・まとめ FXAAの品質は何と比較するべきか?
こうなるとFXAAはMLAAと比較すべきじゃないんでしょうねぇ。

FXAAはおそらく、MSAAと比較すべきなんでしょうねぇ。MSAA 2xよりも良い品質だけど、MSAA 4xが使えないときに高速にやりたいって場合に使うもんなんでしょうね。

MLAA・・・FXAAの品質に納得いかない場合。GPUに余裕がない場合に他のプロセッサで出来る。
FXAA・・・とにかく速度が欲しい場合でMLAA使えない場合。

って感じでしょうかねぇ。

Unreal Engineでは両方使えるようですが、上記の特徴を理解しながら使えって感じでしょうね(AMDはMLAA押しですが、NVIDIAはFXAA押し)。

2012.03.20

iOS版iPhotoでアップロードできるサービスの話

下記がiPadでiPhoto使ってるところですが、共有できるのはTwitter、Flickr、Facebookって感じですね。

それから印刷なんかもOKですね。

転送というのは複数のiOS間で写真のワイヤレスなやりとりが出来ます。たとえば、iPhoneで撮影してiPadに渡すとかそんなことができます。転送でうけたやつはそのままではカメラロールに入らないので引き続きカメラロールへ転送します。

写真の選択なんかでは標準の写真アプリでは出来ない範囲選択とかその辺もサポートされてました。

Img_0041_1
クリックすると大きなサイズになります

新iPadとデジカメを持って出かけた

Img_2353

新iPadとデジカメ(E-P3)を持って皇居周辺を散歩してきました(その中から2枚アップしてますが、ココログは1枚1MBまでしか写真貼れないのでだいぶ画質は落としてます)。

P3201822

P3201853

いや~、新iPadは出先で写真確認するには良い感じでした。写真の取り込みはApple iPad Camera Connection Kitだったのでわりとすんなりですね。

Apple iPad Camera Connection Kit
http://store.apple.com/jp/product/MC531ZM/A?fnode=MTc0MjU4NjE

それから試しついでに、iPadのiPhotoからFacebookのアルバムへのアップロードも試しましたが、回線が安定して速ければこれも行けることが確認できました(WiMAXとかで移動しながらとかでなければ)。

iPhoto
http://itunes.apple.com/jp/app/iphoto/id497786065?mt=8

とりあえず、iPad持って行って出先で写真をどんどん撮る→iPadに送って確認→オンラインアルバムサービスにアップロードの流れは良い感じで出来たので今後もどんどんやっていこう。

あと今日は、Eye-Fiに撮っていたんですが、Eye-FiからiPadというのは試さなかったのですが、今度はそれも試そう。

【純正品】Apple iPad Camera Connection Kit
【純正品】Apple iPad Camera Connection Kit
Connection Kit
売り上げランキング : 1517


Amazonで詳しく見る
by G-Tools

2012.03.16

新iPad受け取り

新iPadの受け取りができたので、取ってきました。

とりあえず、バックアップからアプリなどを復元中。

Img_2296


2012.03.11

Macでお手軽にUnityからAndroid転送を行うための準備

※画像はすべてクリックすると大きなサイズになります。

現在、4/8までUnityのiOS /AndroidのBasicライセンスが無料のキャンペーンが行われています。

https://store.unity3d.com/index.html

今回、このキャンペーンでAndroidのライセンスを追加できた(以前からiOS Basicのライセンスは持っていた)のですが、その際にMacでの開発環境を作ったので自分の手順をメモとして残しておきます。なお、開発端末はGalaxy Nexusでやるのでそのほかの端末の場合、接続設定などはGalaxy Nexusの場合とは違うと思います。

Androidの開発環境というとJavaとかAndroid SDKとかNDKとかEclipseとか色々とセットアップしないといけないイメージなんですが、ありがたいことにNVIDIAのTegra開発サイトにAndroidの開発に必要なモノを1つのインストーラにパッケージングしてくれたものがあります。

この"Tegra Android Developer Pack 1.0r5"は、Tegra用のサンプルなどがついてきますが、特にTegra専用というわけではなく他のAndroid端末でもいいみたいです(インストール時にTegra専用の部分を外すこともできます)。

http://developer.nvidia.com/tegra-resources

そんなわけで、Mac用をダウンロードしてインストール...と思ったら下記のダイアログが出てきました。

Javategra

Javaを入れろということらしいので下記からインストール。

http://support.apple.com/kb/DL1421?viewlocale=ja_JP&locale=ja_JP

Javaのインストールが終わったら"Tegra Android Developer Pack 1.0r5"のインストールを再開。

まずは、下記のダイアログが出てきます。インストールする内容を選択できます。ここで全部入れてしまって問題ないのですが、Tegraやらない人だとTegra SamplesとかNVIDIA Debug Managerとかは外してもいいかもしれません。

Setup

インストールディレクトリ設定ですね。とりあえず、デフォルトのままで。

Folder

Install

インストールはネットワークを通じて行われるのではProxy設定ですね。

Proxy

あとはインストールが終わるのを待つだけですね。

・Galaxy Nexusのセットアップ

・・・とその前に、自分のGalaxy NexusとMacの接続設定などのメモ。

Galaxy NexusはUSBマスストレージで接続しないのでMacと接続するには専用のGoogleのAndroid File Transferを入れる必要があります。そんなわけで下記からダウンロード。

http://support.google.com/ics/nexus/bin/answer.py?hl=ja&answer=1649773

それから開発用に【設定】、【開発者向けオプション】、【USBデバッグ】をON。

Screenshot_20120311184909

とりあえず、Galaxy Nexus側はこれで完了。

・Unityからの転送
事前準備が終わったので、いよいよUnityからビルド、転送をやります。

まずは適当にUnityのシーンを準備。

Unity

用意したらビルドします。とりあえず、下記のように1シーンだけビルド対象にします。

Build

それからPlayer SettingsのAndroidの部分をいじります。赤線で囲んだ部分はデフォルトからいじりました。Company NameとかProduct Nameとかは適当ですね。Bundle Identifierはデフォルトのままだとダメだったので変更。Minimum API Levelは対象となるOSのバージョンですが、自分の場合はAndroid 4.0(ICS)だけあればいいのでこれに。

Buildsettings

設定が終わったらビルドです。

初回のBuildをするとAndroid SDKはどこにインストールしてるんだ?というようなことを聞かれますので、インストールフォルダの下の"android-sdk-macosx"を指定します。デフォルトなら下記のような感じですね。userはMacのユーザーディレクトリですね。

/user/NVPACK/android-sdk-macosx

これを指定すればあとは端末にアプリが転送されます。一応、うまくいきましたがカメラとかの設定が適当すぎですね。

Ss

・まとめ
とりあえず、NVIDIAの開発パックだとインストールとか設定が一発なのでAndroid開発環境が一発でできあがります。そのほかに開発に利用するAndroid端末ごとにUSB接続とか開発設定がいるはずなんですが、Galaxy NexusはUSBの転送ソフトをいれるだけでOKでした。

今回はMacですが、近いうちにWindowsの方もNVIDIAの開発パックでいけるのか試してみたいと思います。

より以前の記事一覧