サイズが100
、幅が100
のテクスチャがあり、スレッドグループとサイズが{10, 10, 1}
のカーネル関数にディスパッチされているとします。カーネル内のピクセル座標、テクスチャ座標とgid
thread_position_in_grid
が0-9または0-99(テクスチャのサイズが100×100)になるかどうかを理解できませんか?
私はテクスチャの色を取得するためにfloat4 c = in.read(gid);
を使用していますが、私は(それが間にある場合があるだろうタイプfloat4
のある結果を取得するために調整する方法gid
はテクスチャにをマッピングされている知っていただきたいと思いますピクセル(テクスチャ?)座標?)。
カーネル関数でのテクスチャのサイズで定義されている正確な位置を取得できるようにするために、上記の仕組みがどれほど深いか理解したいと思います。すなわち、
発送サイズ:{10, 10, 1}
およびテクスチャサイズ100 x 100;そして、カーネル関数の値を取得する:
0、1、2、3、4、5 ...、カーネル関数内gid
、texture coordinates
とpixel coordinates
をどのように関係するか99要約すると
、?彼らはどのようにからマップしますか?私は過去4日間、ドキュメンテーションと同様の質問を読んできましたが、具体的で権威ある答えを得ることに成功しませんでした。
ありがとうございます。
テクスチャからの*サンプリング*(たとえば、in.sample(in_sampler、coords、...)を使用)を使用すると、正規化されたテクスチャ座標に関するビットが正しくなります。元の質問と同じように*テクスチャを読むときは、常に正規化されていないテクスチャ(テクセルまたはピクセル)座標を使用します。他のいくつかの質問を明示すると、グリッドとテクスチャ座標の位置に自動変換はありません。渡した値はテクスチャ座標として直接解釈されます。読み込みでは、テクスチャ座標の「中間」はありません。整数とそれらを1対1でテクスチャ座標に渡しています。 –
良いメモ、ケン。余分な詳細と説明をくれてありがとう。 – warrenm
お返事ありがとうございました。したがって、各スレッドは、_single_グループ内の '0-99'から移動します。 どのグループ(インスタンス)が実行されているか(例:グループ2とそれに対応するgid値、グループ4 ...)を知る方法はありますか?さらに、 100x100のテクスチャの場合に '0 - 9999'から値を取得したいのですか?それは可能でしょうか?その場合は、テクスチャ(およびグリッドも行方向または列方向に格納されます)がありますか? – Unheilig