SlideShare a Scribd company logo
1 of 26
Download to read offline
フォトンマッピング 
GPU実装最新手法 
平成26年9月 
kgussan
GPU実装~リアルタイムGI 
昨年度の合宿で、様々なレイトレのわかりやすい資料が発表されたと思います。 
今回次に話題になりそうなGPU実装の論文について一つご紹介したいと思います。 
紹介するのはリアルタイム向けのアルゴリズムとして述べられた論文です。ですが 
GPUにとって効率の良いアルゴリズムを知るという意味において有用だと思います。 
現行リアルタイムCGとレイトレーシングの照明の違いとして、リアルタイムCGで使う 
近似アルゴリズムは、環境テクスチャマッピングによる2次の反射光までが中心です。 
近年、ボクセルコーントレーシング、ライトプロパゲーションボリュームなど、いくつか 
の条件付きで反射回数の制限がなくなってきています。 
最近のGPUの性能向上から、リアルタイムCGに本格のグローバルイルミネーション 
が適用される日も近いのではないかと思います。 
フォトンマッピングを使い、任意回数のフォトントレーシング反射結果を表現するいくつ 
かの手法を紹介します。
レイトレーシングとラスタライズアルゴリズムの比較 
レイトレーシングVSラスタライズ(グラフィックス専用演算器群) 
代表的なグラフィックスアルゴリズム比較 
リアルタイムに動かすために様々な工夫、近似を使っている。 
レイトレーシングラスタライズ 
光学計算 
レイトレーシング演算 
スリックモデルなど 
フォンライティング 
フォン・ブリンライティングなど 
大域照明 
(反射が2回以上の光学計算) レイトレーシング演算 
ライトプロパゲーションボリューム(LPV) 
事前計算放射輝度転送(PRT) 
ボクセルコーントレーシングなど 
影レイトレーシング演算 
シャドウマッピング 
シャドウボリューム 
SSAOなど 
反射 
レイトレーシング演算 
(任意回数の反射) 
キューブ環境マップスフィア環境マップなど 
(一回の反射まで) 
屈折 
レイトレーシング演算 
(任意回数の屈折) 
キューブ環境マップスフィア環境マップなど 
(一回の屈折まで) 
集光現象(コースティクス) レイトレーシング演算 
テクスチャ焼き込みなど。 
トポロジに依存するため動的には厳しい 
被写界深度(DOF) レイトレーシング演算深度バッファを使った画像(後)処理 
モーションブラーレイトレーシング演算深度バッファを使った画像(後)処理 
プリミティブ 
レイトレーシング演算 
(陰関数等の交差判定実装次第) 三角形 
基本的に速度はレイトレーシングより 
もラスタライズ方式のほうが格段に高 
速。前者は1フレームに数時間単位に 
対してラスタライズ方式は 
16.7ms(1/60秒, 60fps)で処理す 
ることを前提にしている。ハードウェア 
化されている恩恵とともに、近似演算 
で高速化されていることで可能になっ 
ている。近似されているゆえに高速だ 
が精度を捨てている。 
GPU性能に合わせて性能と質のトレ 
ードオフを見ながらリアルタイム演算 
のアルゴリズムは選択され、新しいも 
のが研究・開発されている。 
元ネタ:raytracing.jp
リアルタイムレイトレーシング 
真面目に計算理する方法でも,実用的なリアルタイム処理が現実に近くなっています。 
下記手法があれば解決? 
・Matt svobodaさんのリアルタイムレイトレデモ 
http://www.youtube.com/watch?v=i8hSZGTXTx8#t=144 
・Mattさんのリアルタイムレイトレデモ解説(brick map ) 
http://d.hatena.ne.jp/hanecci/20140209/p1
反射・屈折のみならず、環境項、多数回の拡散反射、コースティクスを扱うためにはレイトレだ 
けでは表現が難しいです。前頁のものだけでは不足です。フォトンマッピングなど、表現に適し 
た手法があります。 
レイトレーシングのGPU実装の話題は多々ありますが、フォトンマッピングのフォトン収集パス 
とそのGPU実装について述べている論文は見当たらないので紹介したいと思います。 
1st 著者NVIDIA Michaelさん 
今年はDeepGbuffer 
Morganさん: 
法線マップを使ったSSAOなど 
有名論文著作多数。 
http://graphics.cs.williams.edu/pape 
rs/PhotonI3D13/ 
リアルタイムフォトンマッピング処理
論文の概要 
フォトンマッピングの実装を取り上げてみます。 
計算には、フォトンのトレーシング計算に加えて、フォトン収集パスが必要になります。 
フォトン収集には大量のフォトンをサンプリングする必要があります。 
レイトレーシングはすでに様々な解法があります(NVIDIAには秒間数億レイが飛ばせる 
Optixシステムがある)。 
そのためトレーシングは割愛し、今回はフォトンのサンプリング手法について調べます。 
高速に実行するためにGPUを活用します。 
今回試してみたところではGeForce670にて、1frame 
28ms(30fps)を達成した。 
演算能力1344shader pipe, 
915MHz : 2460FLOPs 
メモリバンド幅192GB/s GDDR5 
計算解像度960x540
実装手法 
ここでは実装の可能性を思いつく手法を4つほど試してみました。 
3D Bounds / 2.5D Bounds / HashGrid / Tiled
それぞれの手法の分類を詳しく見てみる。
それぞれの手法の分類を詳しく見てみる。 
メインのループをフォトンあたりにするか、 
ピクセルあたりにするか 
射影するジオメトリを 
どう処理するか 
どの空間で処理するか。 
処理するシェーダステージ 
サンプリングを全部やるか、 
離散的に済ませるか
1)3D Bounds手法 
グラフィックスパイプラインのラスタライザを使って、インスタンシング等でフォトンを描画。 
フォトンの寄与範囲を20面体で表現し、干渉するオブジェクトに色を付ける。 
ラスタライザを使うことで高速に演算が可能になる。 
論文:http://graphics.cs.williams.edu/papers/PhotonHPG09/ 
デモ:https://www.youtube.com/watch?v=GckOkpeJ3BY
2)2.5D Bounds手法 
スクリーンスペースでZバッファを使い、フォトン 
を小さな球に外接するコーンとして計算。 
コーン形状はフォトン座標からGeometry Shader 
で生成する。 
スクリーンスペースで計算することから、3Dでは 
なく2.5Dと表現している。この状態ではZ方向のフ 
ォトンのバウンドは正確ではなくなる。 
(同じ量のフォトンを計算する場合に、3D方式よ 
りも、XYについての寄与は良くなるとのこと)
3)HashGrid Cells 
セル上にフォトンを分配し、スクリーンのピクセル座標を3D 
空間に投影し、その座標に近いフォトンを3D空間上で探 
索・収集する。 
セル内にhash6432shiftアルゴリズムでコードテーブルを作 
成しフォトンを管理する。 
高速化するために共有メモリ(LDS,GDS)を使いたいが、こ 
の手法では使いにくい。
4)タイルベース手法 
スクリーンスペースでタイル状にピクセルを区切 
り、そのタイルごとにフラスタムを生成。フラスタ 
ムにのりしろを付けてフォトンを分配する。 
Intel のtile based renderingのような手法。ここ 
で扱うポイントライトやスポットライトの代わりにフ 
ォトンを扱う。 
demo https://www.youtube.com/watch?v=Aogk2r_HjjA 
タイルベースの分割例(AMD Forward+)
サンプル手法 
真面目に周辺フォトンを探った結果と、周辺フォトンを離散的に(たとえば1飛ばしで1000フォトン中、500フォトンしか 
サンプルしない。) 
バイラテラルフィルタを使ってノイズを減らした画像をみると、差はほとんどなくすことができる。
実行結果 
リッチなフルのBRDF 
リアルタイム向けの 
ランバートのみBRDF 
2)“2.5Dバウンド”と4)”タイルド”アルゴリズムの結果が良好。 
今回はフルのBRDFではなく、リアルタイム向けにランバートのみの状態で 
良好な、タイルドアルゴリズムを詳しく見てみる。
タイルベースアルゴリズムフロー 
1. フォトン投射 
a. 普通にフォトンを光源から投射してトレーシング 
2. 代表深度生成 
a. 次に生成するフラスタムの深度を計算。分割されたタイル内のもっとも手前 
をnearに、もっとも奥をfar に設定 
3. フォトンのタイルデータベースへの分配 
a. 上記投射されたデータをスクリーンスペース上でタイルに区切ったピクセル 
からフラスタムのleft right top bottom を指定。 
b. 2と合わせてフォトン収集半径分ののりしろを付けて、フラスタムカリングが 
できる。これを使ってフォトンをタイルごとに分配。すべてのフォトンが対象。 
4. フォトンのサンプリング 
a. 離散的フィルタ:N飛ばしでフォトンをサンプルし、最後に飛ばしたN倍エネ 
ルギーを増やす。 
5. 放射輝度の計算 
6. 必要に応じてバイラテラルフィルタなどノイズをごまかす
まとめ 
アルゴリズムをCPUからGPUに移動して高速にすることができる。 
この際、データ構造によって性能が大きく異なる。 
性能変化の傾向がCPUとGPUでは違う。 
現状GPUで、数百Kのフォトンをリアルタイムにサンプルして放射輝度を計算すること 
ができる。 
しかしながら、映画品質に向けてはまだ扱うフォトンの桁が6ケタくらい違う。 
今回のGPU実装ネックはメモリ読み込みのレイテンシ。 
分割したフォトンはのりしろ分の重複があるので数が増える。フォトンのデータを読み 
込むのにメモリ読み込みのレイテンシの時間分毎時データ読み込みの待ちが入り、 
処理が進まない。
参考
参考:GPU実装Tips 
GPUのパイプラインは長い。流れが止まると後段 
は滞留する。 
→ 流れを止めない。ボトルネックになっている箇 
所を意識。 
ボトルネック解析ができたら当該箇所の負荷を緩 
和する。 
GPUの構成に依存して強い箇所、弱い箇所があり 
ます。それぞれ、GPUが持っているリソース・特性 
に合わせて調整します。 
よくあるネック要因 
●テクスチャネック 
●頂点アトリビュートネック 
●シェーダネック 
●CBDB(ROP)ネック 
●メモリバンド幅ネック 
●命令ネック 
●同期ネック 
●頂点数ネック
参考文献 
・フォトンマッピング入門林秀一さん 
http://www.slideshare.net/ssuser2848d3/ss-25795852 
・リアルタイムCGとフォトンマッピングのハイブリッドレンダリング 
http://game.watch.impress.co.jp/docs/series/3dcg/20091228_340280.html 
・intel / tile based rendering 
https://software.intel.com/en-us/articles/deferred-rendering-for-current-and-future-rendering-pipelines/ 
・AMD / Forward+ 
http://developer.amd.com/tools-and-sdks/graphics-development/ 
・Fast Global Illumination Approximations on Deep G-buffers 2014 
http://graphics.cs.williams.edu/papers/DeepGBuffer14/#video
フォトン主軸アルゴリズム疑似コード 
(散布系) 
for (uint32_t p=0; p<photon_num; p++ ){ //フォトンループ 
photon[ p ].draw(); // グラフィックスパイプでメモリにフォトン位置を格納 
for(uint32_t y=0; y<height; y++){ //スクリーン座標ループ 
for(uint32_t x=0; x<width; x++){ //pixel shader, compute shaderへGPU化しやすい。 
if( isVisible( photon[ p ].pos, x, y, eyePos ) ){ //スクリーン上でフォトンが見えるなら 
image[ y ][ x ] += contribution( p, x, y, z ); // 寄与をさせる。 
} 
} 
} 
}
ピクセル主軸アルゴリズム疑似コード 
(収集系) 
for(uint32_t y=0; y<height; y++){ //スクリーン座標ループ 
for(uint32_t x=0; x<width; x++){ //pixel shader, compute shaderへGPU化しやすい。 
for (uint32_t p=0; p<photon_num; p++ ){ //フォトンループ 
if( isVisible( photon[ p ].pos, x, y, eyePos ) ){ //スクリーン上でフォトンが見えるなら 
image[ y ][ x ] += contribution( p, x, y, z ); // 寄与をさせる。 
} 
} 
} 
}

More Related Content

What's hot

強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦孝好 飯塚
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意UnityTechnologiesJapan002
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!Junichiro Katsuta
 
【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fieldscvpaper. challenge
 
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ智啓 出川
 
攻略リニアカラー改訂版
攻略リニアカラー改訂版攻略リニアカラー改訂版
攻略リニアカラー改訂版小林 信行
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないことNorishige Fukushima
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラNVIDIA Japan
 
Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unity Technologies Japan K.K.
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
深層強化学習でマルチエージェント学習(前篇)
深層強化学習でマルチエージェント学習(前篇)深層強化学習でマルチエージェント学習(前篇)
深層強化学習でマルチエージェント学習(前篇)Junichiro Katsuta
 
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築NVIDIA Japan
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説Takateru Yamagishi
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17Takuya Akiba
 
[DL輪読会]Learning to Simulate Complex Physics with Graph Networks
[DL輪読会]Learning to Simulate Complex Physics with Graph Networks[DL輪読会]Learning to Simulate Complex Physics with Graph Networks
[DL輪読会]Learning to Simulate Complex Physics with Graph NetworksDeep Learning JP
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
Cvpr 2021 manydepth
Cvpr 2021 manydepthCvpr 2021 manydepth
Cvpr 2021 manydepthKenta Tanaka
 

What's hot (20)

強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦強化学習による 「Montezuma's Revenge」への挑戦
強化学習による 「Montezuma's Revenge」への挑戦
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!深層強化学習の self-playで、複雑な行動を機械に学習させたい!
深層強化学習の self-playで、複雑な行動を機械に学習させたい!
 
【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields
 
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
 
攻略リニアカラー改訂版
攻略リニアカラー改訂版攻略リニアカラー改訂版
攻略リニアカラー改訂版
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラ
 
PCL
PCLPCL
PCL
 
Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
深層強化学習でマルチエージェント学習(前篇)
深層強化学習でマルチエージェント学習(前篇)深層強化学習でマルチエージェント学習(前篇)
深層強化学習でマルチエージェント学習(前篇)
 
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
 
[DL輪読会]Learning to Simulate Complex Physics with Graph Networks
[DL輪読会]Learning to Simulate Complex Physics with Graph Networks[DL輪読会]Learning to Simulate Complex Physics with Graph Networks
[DL輪読会]Learning to Simulate Complex Physics with Graph Networks
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
Cvpr 2021 manydepth
Cvpr 2021 manydepthCvpr 2021 manydepth
Cvpr 2021 manydepth
 

Gpuフォトンマッピング手法 h26-09-kgussan-第2回レイトレ合宿

Editor's Notes

  1. ラスタライズにあるように現在のRealtimeRenderingは様々な手法で近似され高速になっている。
  2. レイトレーシングはリアルタイムによさそうなアルゴリズムが出てきている。 ではもう解決?
  3. 前のページのレイトレーシングでは拡散反射光の解決をしていない。 鏡面反射と屈折の処理。
  4. 完全なフォトンマッピングではなくリアルタイム向け技術のほうに寄せている実装。 フォトンマッピングの理由は 拡散光の内部反射、コースティクス、グロッシー反射、面光源、間接光が表現できること。 通常のリアルタイムレンダリングではできない要素が達成されている。 性能の高いGPUでは正確に近くなり、性能の低いGPUではそこそこの結果が出る。他のGIアルゴリズムではなかなかこうならない。 動機としては現行のNV GPUでやりたかったとのこと。 フォトンマッピングのサンプリングのみを適用する弱点としては、反射、屈折をそのままでは表現できない。 レイトレーシングやスクリーンスペースリフレクションなどの工夫が必要になる。 高速なフォトンマッピングの恩恵としてはアーティストのワークフロー向上。すぐにレンダリングの結果がわかる。 動的なGIがゲームで実現できる。インタラクティブなGI。 プリベイクデータの削減ができる。
  5. 主に4つの手法が有用そう
  6. 形は球に近ければ何でもいい。20面体がバランスが良かった。
  7. こちらもコーン形状なのはジオメトリシェーダで扱うのに高速であったため。 本来はこれも球状が理想的
  8. LDS: local data share 当該のシェーダパイプで同時に実行されるスレッド内でのデータ共有 高速 GDS: global data share すべてのシェーダパイプでのデータ共有 LDSに比べて低速、低容量
  9. ここではさらに離散的にサンプルを行い、バイラテラルフィルタをすることで負荷を減らしつつ画質も保っている。
  10. 真面目にすべてのフォトンをサンプルした結果と、離散的にサンプルした結果はそのままでは差があるが、バイラテラルフィルタでほぼ変わらない結果が出ている、とある。 実際に試したところでは、少し時系列にノイズがばらついてゆらゆら絵が揺れる。
  11. N=4。反射・屈折はなし。
  12. N=4。反射・屈折はなし。 枠内に分割したアルゴリズムを使う場合にはその範囲内の屈折しか表現できない。
  13. N=4。反射・屈折はなし。
  14. そのまま真面目に計算しても間に合わないので、リアルタイム向けには近似を組み合わせていくことになる。 また、反射と屈折には対応できていない。スクリーンスペースリフレクションなどの技術を組み合わせる必要がある。かなりリアルタイム向けに手法を振っている。 レイトレーシング処理を同時に行う時には、サンプル量はここまで出ない。 反射、屈折も併せて、真面目に計算するのであればhash grid cellがいいかもしれない。
  15. GPU800MHz 18 CU: 1.84TFlops 8 ROP/CBDB: 25.6Gpixel/s 18 TU: 230.4Gsample/s 2 Rasterizer: 1.6Gprims/s MemBandWidth: 176.0GB/s
  16. 原田さんのサイト https://e8040b55-a-62cb3a1a-s-sites.googlegroups.com/site/takahiroharada/storage/2012SA_2.5DCulling.pdf?attachauth=ANoY7coC61tpTf1XShM7uPHO1X-bGAcr19AdksUUxPpyKhHFqex4RUgivXkfDW3doqXXZHejslHi_2emKuKbxCBWKYMYHvYnF7K91BJA1JNmrAf-PXGfRsLc8ruGoiTox1EnG0LksoZpO1Qw-JY81RpOlPc4qWgc3UH3OUTVjrxiaW8FWIgPXXlsF8s13ojPAoo6n40551NDupod1l64oiIoz0Nbh5D_7jUWSSEBVxI5ImXrAoCw_u8%3D&attredirects=0
  17. //photon[ p ].draw(); //メモリにフォトン位置を格納