11

100000 以上のパーティクルを実行しようとしています。私は、シェーダーと OpenCL の能力を実証する多くのチュートリアルやその他の例を見てきました。

私が見た 1 つの例では、パーティクルの位置は、マウス ポインター (片手で保持し、画面上にカーソルを置いた物理デバイス) の位置に基づいて計算されました。各粒子の位置はRGBとして保存されました。R は x、G y、および B、z です。ピクセル シェーダーに渡されます。その後、各カラー ピクセルがパーティクルの位置として描画されます。

しかし、私はこのアプローチに対してばかげていると感じました。

  • このアプローチやコーディング スタイルはむしろ避けるべきではないでしょうか。
  • OpenCL の使用方法と、GPU のマルチスレッド機能を使用して意図したコードを直接記述して渡す方法を学ぶべきではありませんか?
4

2 に答える 2

13

このアプローチやコーディング スタイルはむしろ避けるべきではないでしょうか。

なんで?

シェーダーの全体的なポイントは、ユーザーが自分のやりたいことを実行できるようにすること、やりたいことをより効果的に表現できるようにすること、およびハードウェアをより細かく制御できるようにすることです。

別の機能のために何かを転用することを決して恐れてはなりません。テクスチャは色を保存しません。それらはデータを保存します。これは色である可能性がありますが、他のものである可能性もあります。テクスチャを絵として考えるのをやめるのが早ければ早いほど、グラフィックス プログラマーとしての成果が上がります。

GPU と API は使用するために存在します。必要に応じて使用してください。API があなたを制限するためにどのように使用されるべきかを許可しないでください。

OpenCL の使用方法と、GPU のマルチスレッド機能を使用して意図したコードを直接記述して渡す方法を学ぶべきではありませんか?

昨日、私は「はい」と言ったでしょう。しかし、今日、これがリリースされました: OpenGL 計算シェーダー.

OpenGL ARB と Khronos がこのシェーダー タイプなどを作成したという事実は、OpenCL/OpenGL 相互運用がレンダリング目的でデータを生成する最も効率的な方法ではないことを暗黙のうちに認めています。結局のところ、そうであれば、OpenGL に一般化された計算機能を持たせる必要はありません。これを提供しない GL 4.x の 3 つのバージョンがありました。それが今ここにあるという事実は、基本的にARBが「ええ、OK、これが必要です」と言っているということです.

ハードウェアを作成する多くの人員が配置されている ARB が、CL/GL 相互運用が最速の方法ではないと考えている場合は、コンピューティング シェーダーを使用する必要があることは明らかです。

もちろん、今何かをしようとしているのであれば、それは役に立ちません。計算シェーダーをサポートしているのは NVIDIA だけです。しかも、それはベータ版ドライバーのみです。AMD がそれらのサポートを得るまでには何ヶ月もかかり、そのサポートがしっかりと安定して使用できるようになるまでにはさらに多くの月日がかかります。

それでも、データを生成するために計算シェーダーは必要ありません。トランスフォーム フィードバックとジオメトリ シェーダーを使用して、LOD とフラスタム カリングをインスタンス化されたレンダリングに使用しています。「OpenGL は何かを描画する」ボックスの外で考えるのを恐れないでください。

于 2012-08-07T02:12:33.587 に答える
1

OpenCL でパーティクルをシミュレートするには、「Yet Another Shader Editor」/ http://yase.chnk.us/を試す必要があります。これにより、すべてのトリッキーな部分が取り除かれ、パーティクル制御アルゴリズムのコーディングの要点に取り掛かることができます。あなたのブラウザで。ダウンロードする必要も、アカウントを作成する必要もありません。見つけた例を変更するだけです。それは爆発です。

https://lotsacode.wordpress.com/2013/04/16/fun-with-particles-yet-another-shader-editor/

私はヤセとは何の関係もありません。

于 2013-04-17T09:01:11.647 に答える