- SAHBVH
- Surface Area Heuristic (SAH)をがっつりまじめに計算.
- BinBVH
- Highly Parallel Fast KD-tree Construction for Interactive Ray Tracing of Dynamic Scenes
- SAH計算をbinningで高速化.
- QBVH
- Shallow Bounding Volume Hierarchies for Fast SIMD Ray Tracing of Incoherent Rays
- Bounding Boxを節ノードに4つ作る, 4分木を構成.
- トラバースの際に, 4つのBounding BoxとレイをSIMDで同時交差判定.
2015年9月14日月曜日
Bounding Volume Hierarchy 01
既存のコードはQBVHだが, すでに古いらしいので, 古典から順番に作成中.
2015年9月5日土曜日
チューリング先生のマラソン記録
チューリング先生のマラソンベストタイムは, 2時間46分だそうです.
1940年前後のオリンピックマラソン金メダリストの記録は, 2時間30分前後でした.
世のプログラマは斯くあるべきと思う.
私は現在のシューズや舗装路の進化がありながら, 約30分離されている.
2015年9月3日木曜日
2015年8月19日水曜日
Microflake SGGX for Mitsuba Renderer
https://github.com/taqu/Microflake-SGGX
今すぐリアルタイムレンダリングに応用できるか?
と問われると思いつかない.
十分小さな誤差で線形補間ができるという性質は,
リアルタイムレンダリングへの応用を期待させる.
今すぐリアルタイムレンダリングに応用できるか?
と問われると思いつかない.
十分小さな誤差で線形補間ができるという性質は,
リアルタイムレンダリングへの応用を期待させる.
2015年7月24日金曜日
Opus再生サンプル
OpusでエンコードされたサウンドのOggファイルを再生するライブラリ, サンプルを作成.
https://github.com/taqu/opus
opus, ogg, opusfile, speexDSPライブラリを使用した.
Windowsでは, WASAPIをバックグランドに,
Androidでは, OpenSL ESをバックグラウンドに使用する.
Unity5のサンプルも作成してみた.
Nexus5では再生遅延の差はほとんどないが,
Xperia Z1 f SO-02Fでは明らかにUnity 3Dの方が遅い.
VorbisとOpusの差なのか, Unity 3Dの処理がよほどXperiaと相性が悪いのか.
https://github.com/taqu/opus
opus, ogg, opusfile, speexDSPライブラリを使用した.
Windowsでは, WASAPIをバックグランドに,
Androidでは, OpenSL ESをバックグラウンドに使用する.
Unity5のサンプルも作成してみた.
Nexus5では再生遅延の差はほとんどないが,
Xperia Z1 f SO-02Fでは明らかにUnity 3Dの方が遅い.
VorbisとOpusの差なのか, Unity 3Dの処理がよほどXperiaと相性が悪いのか.
OpenSL ES
仕様を読む限り,
SL_IID_ENGINECAPABILITIES
の実装は必須に見えるが手持ちのデバイスではとれない.
とりあえず失敗するまでCreateAudioPlayerをするしかない.
初めは, BufferQueue::GetStateで未処理バッファ数をチェックして,
データを補充する方法をとったが, 十分間に合っていると思われるのに
ノイズが入る.
ポーリングでデータを準備して, BufferQueueのコールバックで
BufferQueue::Enqueueに引き渡せばノイズが入らなくなった.
また何か見落とした文章があるのだろう.
SL_IID_ENGINECAPABILITIES
の実装は必須に見えるが手持ちのデバイスではとれない.
とりあえず失敗するまでCreateAudioPlayerをするしかない.
初めは, BufferQueue::GetStateで未処理バッファ数をチェックして,
データを補充する方法をとったが, 十分間に合っていると思われるのに
ノイズが入る.
ポーリングでデータを準備して, BufferQueueのコールバックで
BufferQueue::Enqueueに引き渡せばノイズが入らなくなった.
また何か見落とした文章があるのだろう.
WASAPI
WASAPIは, Core Audio APIsの中の音声再生API.
User-Mode Audio Components
共有モードと排他モードがあるが, ゲーム等, 音声を複数再生する場合,
共有モードを使用する.
基本はサンプルとおり
Rendering a Stream
音声再生のプログラムは,
ドライバなりエンジンからの次データ要求や,
再生バッファの空きの検知をトリガーに,
音声データをドライバ・エンジンに引き渡す処理を繰り返す.
WASAPIの場合, ポーリングで未処理をデータサイズを調べるか, イベントで検知する.
イベントは, WindowsのEventを引き渡し, そのEventがセットされるかチェックする.
イベントを使う方法は, 複数音声の管理には向いていないと思われる.
Core Audio APIsは, エフェクトの機能はなく, 高位のMedia Foundation等が提供する.
サンプル周波数変換には, IAudioClockAdjustmentが共有モードで使用できるが,
品質のほどはわからない.
Speexの, 信号処理部分を纏めたSpeexDSPがある.
resamplerだけ抜き出すのも簡単.
User-Mode Audio Components
共有モードと排他モードがあるが, ゲーム等, 音声を複数再生する場合,
共有モードを使用する.
基本はサンプルとおり
Rendering a Stream
音声再生のプログラムは,
ドライバなりエンジンからの次データ要求や,
再生バッファの空きの検知をトリガーに,
音声データをドライバ・エンジンに引き渡す処理を繰り返す.
WASAPIの場合, ポーリングで未処理をデータサイズを調べるか, イベントで検知する.
イベントは, WindowsのEventを引き渡し, そのEventがセットされるかチェックする.
イベントを使う方法は, 複数音声の管理には向いていないと思われる.
Core Audio APIsは, エフェクトの機能はなく, 高位のMedia Foundation等が提供する.
サンプル周波数変換には, IAudioClockAdjustmentが共有モードで使用できるが,
品質のほどはわからない.
Speexの, 信号処理部分を纏めたSpeexDSPがある.
resamplerだけ抜き出すのも簡単.
登録:
投稿 (Atom)