Syoyo Fujita's Blog

raytracing monte carlo

[Recent news&events]

There’s no news&events

HPG 2014 report

lyon_rhone

今や猫も杓子もレイトレという世の中, レイトレの国際学会といってもおかしくないであろう HPG 2014 に参加してきました.

http://www.highperformancegraphics.org/2014/

hpg2014

 

今年の HPG 2014 は EGSR 2014 と共催で, フランスはリヨンの University of Lyon で開催されました. 講堂がヨーロッパらしくてここで学問を極めることができるとは, リヨン大のひとはなんと恵まれているのでしょう. そしてローヌ川もすぐ近くにあってサイクリングや運動するのに最適です. 感動です.

lyon_u

Arnold レンダラの Marcos が「レイトレはどうやって VFX 映画界を制覇したのか!」という内容のキーノートスピーチを行いました.

IMG_2286

論文発表では皆さんレイトレ研究だったりハイパフォーマンスグラフィックスの成果を切磋琢磨して発表していました. 素晴らしい. 今年はスマホ時代のグラフィックス処理をどうするか? もトレンドとして見えてきたりしました.

コーヒーブレイクなどでは, 何人かの海外のレイトレの知り合いにも会う事ができて感動ひとしお. 新しいレイトレ研究アイデアも生まれました.

CERN

また, 知り合いのフランス在住レイトレ野郎を通じて, リヨンから車で 2 時間ほどで行ける, スイスはジュネーブにある CERN に行くことができました.

entrance

CERN では観測器(?)からのデータが 20 PB/year くらいの規模であるそうです. ビックデータと行っても過言ではないかもしれませんね. 「PB 規模のデータの可視化にもレイトレが有効ですよ」, と CERN の方々に説き伏せてきました.

CERN では構内の道の名前が「アインシュタイン通り」や「パウリ通り」などと命名されていて我々の心をゆさぶりました.

einstein

まとめ

  • レイトレが全盛.
  • でもまだまだやることはありますね. リアルタイムレイトレや, ゲーム, VR への応用など.
  • ヨーロッパはすばらしい.

来年の HPG 2015 は SIGGRAPH と共催になる予定です.

No ray-tracing, No life!

 

エクサバイトまで対応可能なバイナリシリアライズライブラリ ESON

コンピュータグラフィックスでは, 静的で, リードの比率が高く, 大量で1つのデータサイズが大きいバイナリデータを扱うのが多いので, そのためのシリアライズライブラリ ESON を作りました.

https://github.com/syoyo/eson/

 

実際には 1 年くらい前からありましたが, それなりに使うプロジェクトも増えてきたのでもう少し詳細を書いて普及してみようと思いました.

たとえば

https://github.com/lighttransport/obj2eson

など.

特徴は,

  • single header, single source でポータブル
  • C++ API は STL のみに依存
  • シリアライズ後のデータは linear になるので, リード時に mmap でより扱いやすい(予定). たとえば必要な部分領域だけをアクセスがあったときのみリードするなど.

バイナリデータのシリアライズについては, たとえば以下のような例がありますが, どれもしっくり来ませんでした.

  • redis : GB 単位のファイルを扱うのが難しい
  • bson(mongodb) : GB 単位のファイルを扱うのが難しい.  32bit のデータタイプしかサポートしていない.
  • Alembic : boost とか HDF5 とか依存関係が多すぎて扱いづらい.
  • protocol buffer 系 : 細かいデータの通信に特化した感があるので, 単一で大きなデータには向かない.

ESON のシリアライズの仕様については

https://github.com/syoyo/eson/blob/master/SPECIFICATION.md

にあります. 基本的には BSON の仕様を strip して 64bit 化した感じになります.

ESON の主な利用先としては以下が挙げられます.

  • テクスチャ, HDR 画像.
  • CAD やメッシュなどのジオメトリデータ.
  • シーングラフやシミュレーションキャッシュデータ.
  • NVM(Non volatile memory) 時代の KVS 的なストレージ.

NVM(persistent memory)は最近出始めて来た感があるので, ESON は CG 用に限らずより一般的な使い方にも使えるかもと考えています.

圧縮については, lossless は lz4, lossy(特に浮動小数点データ) はいいライブラリがまだありませんが wavelet か fpack あたりを取り入れてみたいと考えています.

Towards implementing ray tracing on FPGA at 2014.

While Imagination released a GPU IP with dedicated raytracing logic, still it would be meaningful to implement our own ray tracing on FPGA.

Here’s notes on ray tracing on FPGA nowdays(2014).

 

– Zynq

http://www.xilinx.com/products/silicon-devices/soc/zynq-7000/

ARM + FPGA logic.

 

Zynq-based FPGA dev board can be purchased from $200 for example ZYBO http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,719,1197&Prod=ZYBO

 

– SGRT: A Mobile GPU Architecture for Real-Time Ray Tracing

http://web.yonsei.ac.kr/wjlee/

 

– Towards Hardware Ray Tracing using Fixed Point Arithmetic

http://www.eng.utah.edu/~cs7940/papers09/HW-fixed-point.pdf

 

– Robust Ray-Bounding Volume Hierarchy Traversal with
Reduced Precision Integer Arithmetic

http://pages.cpsc.ucalgary.ca/~blob/papers/jeff/mar1jeffcgf/CGF/latex/paper.pdf

Integer is saving its area by 6x than floating point .

Hardware accelerated OpenGL in docker container

Confirmed hardware accelerated OpenGL in docker container is possible.

docker-opengl-glx

https://github.com/syoyo/docker-utils/tree/master/ubuntu-glx

 

Using CUDA on Docker

Using CUDA in Docker container is possible.

http://qiita.com/syoyo/items/07d59b526a7d31e83824

PS4Eye をハイフレームレートステレオカメラとして使う(試み)

PS4Eye は最大 240fps を出力できるステレオカメラとして魅力です.

https://github.com/ps4eye/ps4eye

カスタムファームウェアを利用すれば Linux などでも USB カメラとして利用することができます.

ただし, PS4Eye はコネクタが独自なので, まずはケーブルを改造(?)して, USB3.0 ケーブルとうまく結線してあげる必要があります.

Image

 

USB3.0 ケーブルから出ている白と緑の線は UBS2.0 互換のための線のようなので, 結線する必要はありません(PS4Eye 側にそもそも対応する線が無い)

また, USB3.0 対応 PC でも初期のころのものは対応していない? ようです. 実際に繋がるかどうかは USB3.0 対応機器に刺してみて確認してみる必要があります

参考までに, Samsung’s ARM Chromebook では認識されましたが, Thinkpad T420s では認識されませんでした.

Image

Chromebook の Ubuntu Linux で, Chrome を使って webcamera として使ってみた図. 傍のピクセルがおかしいですが, もともと横 1000 ピクセルほどが無駄に reserve されているようなので, これで正しいのかもしれません.

RAW モード? 

さて, 現在の ps4eye ファームウェアツールでは YUV422 のピクセルフォーマットに設定されていますが, PS4Eye は仕様上は 12bit RAW(Bayer?)が取れるようになっています.

RAW で取れるとよりよい諧調が取得できて, ステレオ画像からのデプス推定や三次元復元で有益です. うまくレジスタを設定して取得できるようにしてみたいですね.

On ETTR(Exposure to the right)

最近の Magic Lantern では (Auto) ETTR という機能が付いていて, dynamic range の変化の大きい日の入り, 日の出の time lapse 撮影がやりやすくなっています.

たとえばこちら.

さて, ところで ETTR(Exposure to the right) とはなんでしょう? 日本語に訳すと “右側に露出” になりますが, この用語は日本では普及していないようで適切な訳がありません.

ETTR は, ヒストグラムを表示したときに, なるべくヒストグラムが右側に寄るように露出を調整する, という撮影テクニックになります.

ETTR によりセンサー値の範囲を活用することで, よりノイズの少ない撮影を行うことが可能になります.

撮像センサー(CCD, CMOS)は物理的な光量を記録するので, 入射した光の量と RAW の値はリニアになっています.

ただし人間の目はリニアには反応しないため, ライブビューでの表示や JPEG 画像に記録されるときには非線形の変換がかかります.

ただ, ETTR にも気をつけるべき問題があります. time lapse や RAW 動画で動画を撮るときは露出オーバーにならないように気をつける必要があります. ライブビューで撮影した画像を見たときは白飛びしているように見えるかもしれません(ライブビューで見るときにはトーンマップがかかっているので). 現像処理をするときも RAW(Linear) を基準として考える必要があります.

Docker + InfiniBand in LXC container

Docker + InfiniBand works! See my post at Qiita(in Japanese)

http://qiita.com/syoyo/items/bea48de8d7c6d8c73435

Pseudo-virtualized InfiniBand will be possible? It opens a lot of possibilities for HPC virtualization.

Docker で aobench を動かす.

Qiita に書きました.

http://qiita.com/syoyo/items/de299359dc53795c2b66