Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

シェーダ(HLSL)内における、整数テクスチャと浮動小数テクスチャの挙動について

DirectXのシェーダ(HLSL)における、整数テクスチャと浮動小数テクスチャの挙動が、
気になったので調査した。
忘れないようにまとめる。



『整数テクスチャについての調査』

結果:
・シェーダー内において、整数テクスチャは、0から1までの値しか扱えなかった。
・シェーダ内で整数テクスチャにtex2D関数でテクスチャのピクセルにアクセスした場合、
戻り値として帰ってくるピクセルの値は、0から1.0fの値であった。
(整数テクスチャに格納されている0から255の値を0.0fから1.0fの値で扱うということである。)
・アプリケーション側からテクスチャの内容にアクセスすると、
内容には0から1の値が入っているのではなく、0から255の値の整数値が入っていた。
・[D3DFMT_〜〜]は、[D3DFMT_上位ビット〜下位ビット] という表記になっている。

まとめ:
・整数テクスチャは、0から255までの整数値を記憶するものである。
・シェーダー内で見た場合とアプリケーション側で見た場合で扱う値が変わる。ちょこっとややこしいので注意!!
・シェーダー内でピクセルの値を見ると、ピクセルの値は0から1.0fとなる。
(シェーダー内では、整数テクスチャのピクセル値0から255の値を0から1.0fの値として扱うことになる。)
・アプリケーション側でピクセルの値を見ると、ピクセルの値は0から255となる。
・シェーダー内で、1.0fより大きい値をいれても、1.0fとして扱われる。


『浮動小数テクスチャについての調査』
結果:
・シェーダー内において、浮動小数テクスチャは、指定したフォーマットの精度で表せる値が扱えた。
D3DFMT_A32B32G32R32Fなら、各色、32bitで表せる値が扱える。
・シェーダ内で浮動小数テクスチャにtex2D関数でテクスチャのピクセルにアクセスした場合、
戻り値として帰ってくるピクセルの値は、指定したフォーマットの精度で表せる値であった。
・アプリケーション側からテクスチャの内容にアクセスすると、
内容には指定したフォーマットの精度で表せる浮動小数値が入っていた。
シェーダー内で格納した値と等しかったということである。
・[D3DFMT_〜〜]は、[D3DFMT_上位ビット〜下位ビット] という表記になっている。

まとめ:
・浮動小数テクスチャは、指定したフォーマットの精度で表せる浮動小数値を記憶するものである。
・シェーダー内で見た場合とアプリケーション側で見た場合において、扱う値は同じ。
(整数テクスチャのような、0から255の値を0から1.0fの値として扱うことはない。)

まとめからわかること:
・浮動小数テクスチャは、シェーダー内、アプリケーション側に関わらず、整数テクスチャのように、
値が変換されることはない。そのため、ポリゴンに貼るなどして、浮動小数テクスチャを
画面に表示する場合、シェーダー内で浮動小数テクスチャの内容を0から1.0fに直して、
色を出力する必要がある。(HDR処理の時とか。)
・浮動小数テクスチャを使えば、シェーダー内の演算結果を保存して、見ることができる。

theme : プログラミング
genre : コンピュータ

SURF(Speeded Up Robust Features)すごい

ニコニコ動画で以下の動画をみて、
SURF(Speeded Up Robust Features)というものを知りました。

『はちゅね召喚プログラム』


『【パッケージから】巡音さんがやってきた【召喚】』
http://www.nicovideo.jp/watch/sm5519371

『拡張現実(AR)を自作ソフトウェアでやってみた・なんでもマーカー編』
http://www.nicovideo.jp/watch/sm6834013


SURFというものを使えば、あらかじめ用意したテンプレート画像と
カメラで撮影した画像の特徴点を対応づけできるみたいです。

SURFは、OpenCVで利用できるみたいなので触ってみました。

『OpenCV 1.1を導入&SURFを動画で | happymeme』
http://www.happymeme.com/?p=84
↑この方のソースを使わせてもらい、起動してみると
すごい!!ちゃんと特徴点を見つけて、元画像と対応付けできてる・・
surf_snap0.jpg

対応点を知ることができるから、マーカーとして使えるわけですね。
勉強になりました。


使用感メモ
・カラー画像でも使える。
・リアルタイムに処理できた。
・特徴の多い画像(イラストや写真)の方が、対応付けがしっかりできた。
・ARToolkit等で使用するような正方形のマーカーの画像を
 テンプレート画像として登録し、処理してみたら、対応付けが
 あまり正確ではなかった。正方形の外周を正確に取り出せなかった。
・真正面から撮影した時が一番精度が良い。
 斜めから撮影するにつれて精度が悪くなった。


他の参考サイトとか
『dandelion's log » OpenCVのCVS版(20081010)で遊んでみた』
http://www.atinfinity.info/blog/archives/108

『dandelion's log » OpenCV 1.1:SURFを動画で試してみた』
http://www.atinfinity.info/blog/archives/115

『OpenCV 1.1 pre1aのSURF - yoggy's diary〜せかいのすみっこから〜(2009-03-23)』
http://www.sabamiso.net/yoggy/tdiary/?date=20090323
ソースコードあり

『SURF : Speeded-Up Robust Featuresの紹介』
http://storage.osdev.info/pub/idmjt/diaryimage/0901/neta090130l1.pdf

theme : プログラミング
genre : コンピュータ

OpenCVでARToolkitと同じことをやる

ニコニコ動画でこんなの発見。

『拡張現実(AR)を自作ソフトウェアでやってみた』
http://www.nicovideo.jp/watch/sm6587803

自分が以前の記事でやったようにOpenCVで
3Dモデル合成のための行列を計算しているみたい。

動画のコメントによるとソースコードとバイナリは
後ほど公開してくれるらしいです。
すごく楽しみです!

OpenCVは、GPLではないので、GPL汚染の心配はないと思います。
是非参考にしたいですね!

後、この方、PTAMのようなものも作ってる!
すごいです!
http://www.nicovideo.jp/watch/sm6764313

theme : プログラミング
genre : コンピュータ

簡単! 〜USBカメラ制御 〜 撮影した動画像をポリゴンに貼り付ける

私のホームページ http://space.geocities.jp/mosapui/index.html
のほうで「USBカメラを用いて撮影した動画像を
ポリゴンに貼り付けるプログラム」についての記事を書いてみました。
サンプルプログラムもあるのでよかったらどうぞ。

Technique1.jpg

プログラムに使用したのは、videoInput LibraryとDirectXです。
videoInput Libraryを用いることで手軽にUSBカメラを制御できました。
videoInput Libraryすごいです!

theme : プログラミング
genre : コンピュータ

ゲーム「AR波乗りわんこ」の公開

約4ヶ月前の記事
自作ゲームにAR(Augmented Reality 拡張現実)を加える。
気が付いたことメモ
」で、作成したゲームの公開。

水面シミュレーションゲーム「波乗りわんこ」に
簡単な拡張現実感?を取り入れたゲームです。

遊ぶまでにちょっとした手間が掛かりますが、
よかったらどうぞ(・ω・)つ

[ダウンロードはこちら↓]
ダウンロード

ゲーム画面は、こんな感じ。カメラは固定して遊びます。
ARnaminori_snap1.jpg

設定ファイルでXファイルの差し替えとかもできるよ。

theme : プログラミング
genre : コンピュータ

プロフィール

Author:mosapui
ようこそ!! ★ もさプイ ★ 
プログラムや数学についてのお話を書いていきます!

主な内容:
C++
Direct3Dを使った3Dプログラム
画像処理関係

『足を止めずに前に進めば、いつかゴールに着くよ。』

カテゴリー
最近の記事
最近のトラックバック
最近のコメント
月別アーカイブ
カウンター
ブログ内検索
RSSフィード
リンク
By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード