2016-09-04 4 views
0

A question sort of addressing the problemおよびanother question asking a related questionハードウェアの3Dテクスチャサンプリングとフリップブックスタイルのボリュームテクスチャを使用するには?

私はこのような格子状に積層したボリュームの12×12のスライスがある2Dテクスチャ持っている:私は今、何をやっている enter image description here

を使用して、ボリューム内のオフセット座標と3Dのベースのサンプリングを計算することです私自身HLSLコード。私はherehereという記述に従っています。最初のリンクでは、2Dスライステクスチャからの3Dサンプリングについても説明しています。現代のハードウェアには3Dテクスチャをサンプリングする機能があると聞いています。

言われているように、3Dテクスチャをサンプリングする説明やサンプルコードは見つかりませんでした。このフリップブックタイプのテクスチャをサンプルするのに、どのようなHLSLまたはOpenGL関数を使用できますか?可能であれば、小さなサンプルスニペットに説明を追加してください。もしあなたが傾けていれば、私に1つを指摘してください。私はUとV方向のレイヤーの数を提供できるサンプラー関数がないので、軸ごとにいくつのスライスがあるか分からずにサンプリングする方法を見ていません。

もし私がこれを完全に誤解していると、私はそう言われて感謝します。

はあなたの助けをいただき、ありがとうございます。

+0

あなたは実際に何を使用していますか:DirectXまたはOpenGL? OpenGLの場合は、HLSLではなく、GLSLでシェイダーを書く可能性が高くなります。 – BDL

+0

私はHLSLとDirextXを使っていますが、OpenGL関数が分かっていれば、HLSLの検索がはるかに簡単です。さらに、私はある時点でこれをOpenGLコードで実装しなければならないかもしれません。 –

+1

"*現代のハードウェアが3Dテクスチャをサンプリングする能力を持っていると聞きました。" "現代"であれば、過去15年ほどで作られたほとんどすべての(デスクトップの)GPUを意味します) –

答えて

2

OpenGLは、真の3Dテクスチャをサポートしています(実際にはOpenGL-1.2で既に登場しています)。これで、 "flipbook"ではなく、単純に2D画像のスタックとして、glTexImage3Dを使って3Dテクスチャをアップロードします。 GLSLでは通常のtextureアクセス機能を使用しますが、sampler3Dと3コンポーネントのテクスチャ座標ベクトル(GLSLの古いバージョン、つまりtexture3Dを使用するGLSL-1.5/OpenGL-3の前は除く)を使用します。

+0

3Dテクスチャのフリップブックタイプがないことを確認できますか?私が示したフォーマットでデータを取得する限り、手動で行う必要がありますか?そうであれば、別のイメージでデータを要求できるかどうかがわかります。 –

+0

@NoobsDeSroobs:実際には "フリップブック形式"の3Dテクスチャはサポートされていません。何かそんなことがあるのはなぜですか?つまり、ピクセルストアパラメータ、つまりGL_UNPACK_SKIP_PIXELSとGL_UNPACK_ROW_LENGTHを設定するのはかなり簡単なので、まず変換ステップを実行せずに、あなたのフリップブックからサブイメージを直接取得できます。 – datenwolf

+0

これをクリアしていただきありがとうございます! –

関連する問題