にゃははー

はへらー

はえーーーー

いや、はやいwwwww

とりあえずいろんな補間は実装できたから、あとは高速化だと思っていろいろがんばった結果、textureメモリを使うという方法を思いついた。

ただ、textureReferenceが3要素のテクセルを受け付けないからx方向に3倍して当てたんだけど・・・。でも普通16384x32768のものなんかつくろうとか思わないはずだから大乗でしょう。

大体の速度の目安としてはRGB各要素を単精度浮動小数点を使って1024x768のビットマップを5120x3840に上げたときものです。

ちなみにスペックは
GPU:GeForce9600GT
GDDR3 512MB
Core Clock 650MHz
Mem Clock 1800MHz
です。時間は何回か測って大体の値をとっています。

補間法non-textureuse textureRelease build
最近傍点補間110ms60ms60ms
1次スプライン補間1600ms50ms60ms
3次スプライン補間1600ms240ms230ms
3次畳み込み補間1650ms620ms267ms
sinc関数1620ms320ms250ms
Lanczos-2補間1620ms520ms260ms
Lanczos-3補間4300ms910ms570ms

やっぱLanczos-3が参照画素数多い関係でテクスチャを使わないとかなり遅いですね。未だ実用的じゃないし。

驚きなのは最近傍点より1次スプラインのほうが速かったってことですね。多分メモリアクセスのタイミングによってこうなるんでしょう。

あとsincとLanczos-2,3は定数テーブル使えばもっと速くなるヨカーン

そういや今日、大学あさってたらGeFo8500GTのPCI接続できる玄人志向のボードが3,4枚でてきたので複数デバイス使った場合の実験ができるwwww。