パート1 SHADER GURU執筆時のPCと比較
SHADER GURUを執筆したのが今から5年前2011年です。(早いものですねぇ)
サンプルプログラムでfpsを表示しているものがあります。私は重たいサンプルではfpsを表示する習慣があります。
それらのfps値は当時使用していたPCでのものです。
執筆当時のPCスペックは、
CPU : Corei5-2300 2.8GHz
GPU : ATI Radeon HD 5700
でした。
SHADER GURUのサンプルを使い、当時のPCと1ヵ月前に購入したPCの速度を比較します。
新しいPCのスペックは、
CPU : Corei7-6700K 4.0Ghz
GPU : NVIDIA GeForce GTX1070
です。
サンプルプログラムのなかで重いものとしてディファード・シェーディングのサンプルを抜粋してみます。
それぞれのfpsは画像内の上のほう、ウィンドウバーの部分を見れば分かります。
まずはフォワードシェーディング2011年のfpsはアベレージ86fpsだったようです。↓
同じサンプルを今のPCで走らせてみると、3192fpsになりました。↓
ライトを100個使用した別のフォワードシェーディングサンプル2011年のfpsは337↓
同じサンプルを今のPCで走らせてみると、7645fpsになりました。↓
次はディファードシェーディング2011年のfpsは135fps↓
2011年 テセレーション+フォグ+シャドウのサンプル 159fps↓
かなり違いますね。だいたい20倍くらいでしょうか。
ただこれらディファードシェーディング系は当時でもさほど遅く感じたわけではありません。当然ですよね、それぞれ2011年でも100fpsから400fps付近なんですから。
なのであまり有難味が・・・
ではこれからもっと激重!の処理、レイトレーシングと3Dフルイド(3D流体)の処理について比較していきましょう。どれだけ違うのか楽しみ♪
次の画像はレイトレーシングサンプルの実行画面です。単純な球とテクスチャー付き地面の2つの物体の相互作用をレイトレースしています。
レイトレース2011年のfpsは 34fps おぉ・・・来ました激重処理! ↓
上のレイトレースは見た目は良いのですが、実は”綺麗な形状”というのはプログラム的に生成できて、レイトレーシング計算が非常に高速にできるという特徴があります。
このサンプルは球と平面しかないので非常に高速にレイトレースできるわけです。
というわけで、もっと重たいレイトレースを見ていきましょう。
メッシュ vs メッシュのレイトレースです。メッシュの場合は決まった形状がないわけで、レイトレース判定はメッシュを構成するポリゴン一枚ごとに行います。(基本的に)
なので計算量はメッシュのポリゴン数に依存し、一般的に”綺麗な形状”の数百倍くらいにはなるでしょうか。
メッシュvsメッシュの相互判定レイトレース2011年のfpsは たった8fps ↓
出ました1桁! これを見た当時は正直「これ駄目じゃね?」って思いましたね。
ようやく現実的なfpsになってくれてほっとします。
ただ、私の構築したこのリアルタイムレイトレーシングは実は最適化の余地が(かなり)あって2014年頃にけっこう劇的なスピードアップを実現しています。
なので8fpsというのは2011年PCでもかなり改善されています。
当時のPC上の新アルゴリズムでの実行結果はないので、今のPCで新しいアルゴリズムを試すと次のような驚愕の結果がでました。↓
新レイトレース メッシュvsメッシュ2016PCでは 3265fps↓
9700fps・・・目を疑いました。もちろん操作しようとしても一瞬で画面外に飛んでしまって操作不可能。(執筆当時はゆ~っくり動いてくれたから操作できました)
メッシュvsメッシュでも3265fps出ています。このサンプルは当時8fpsだったので画面を小さく作ったという経緯があります。
画面を小さくするとそれだけ速度を稼げます。なので一般的な640とか800の画面サイズにすると1000fpsくらいになるかもしれません。
それらを考慮しても実用的な速度になっていると思います。
これからリアルタイムレイトレーシング導入を検討している企業様、ご検討ください。(営業 lol)
パート2 SHADER GURU2 KEMURI 執筆時のPCと比較
SHADER GURU2 KEMURIはけっこう最近2014年に執筆した、流体を使った煙や炎のエフェクトに関する書籍です。
執筆当時使用していたPCのスペックは、
CPU : Core i7-2600 3.4Ghz
GPU : AMD FirePRO V5900
です。
新しいPC、
CPU : Corei7-6700K 4.0Ghz
GPU : NVIDIA GeForce GTX1070
と比較します。
基本的に流体、特に3D流体は重たい処理で、それらのサンプルは多くあるのですが、その中で唯一というか飛び抜けて激重のサンプルが1つあります。
雲を表現した3D流体サンプルです。このサンプルがほかのどのサンプルよりもfpsが1桁少ない感じでした。当時「これ重たいなぁ」と思ったものです。
ただでさえ重たい3D流体に陰影処理(セルフシャドウ)をしているのが激重の理由です。
動画があるので動画で見てみましょう。画像よりもインパクトがあります。両方の動画について、実行時そのままのスピードで記録していますので、
動画の速度が実際の速度と考えてもらって構いません。
2014年PCでの実行時ムービー↓
[fvplayer src=”http://northbrain.org/wp-content/uploads/2014/12/Cloud-2014-12-19-17-10-54-2.flv”]
なんかフレームがカクカクしていますね。そしてゆ~っくり。これはこれで美しいような・・・
2016年PCでの実行時ムービー↓
[fvplayer src=”http://northbrain.org/wp-content/uploads/2016/10/fluid_cloud-2016.flv”]
もう爆速です。ムービー録画による多少のfpsダウンがあってのこの速度です。もう本当にいろんな処理が実用段階にきているという感じですね。
流体の導入を検討されている企業様、どうでしょう?(再び営業 lol)
ではまた来週!(そんな頻度で投稿してないだろ 笑)