問題タブ [cg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shader - Cgをどこまで押し込めますか?
経験豊富なシェーダー開発者から、単純なシェーダーには Cg が適しているが、結果のシェーダー コードにバグがあるため、高度なシェーダーには直接 GLSL/HLSL を使用することをお勧めすると言われました。
具体的には、Cg を使用する際の制限および/または既知の問題は何ですか?それができない特定のことがありますか?それとも、問題が発生するまで Cg で作業してみてください?
shader - Cgフラグメントシェーダーのピクセル位置を変更/置換するにはどうすればよいですか?
Cgを使用してフラグメント(ピクセル)シェーダーのピクセル座標を変更することは可能ですか?このような機能は第2/3世代のシェーダーで利用できるようになったと思いますが、正確にどのプロファイルを使用するのか、またはその方法はわかりません。
opengl - Cg Vertex シェーダからの座標出力
ここの記事には次のように書かれています。
x、y、および z を w で除算すると、これが達成されます。結果の座標は、正規化されたデバイス座標と呼ばれます。現在、すべての可視ジオメトリ データは、OpenGL の <-1, -1, -1> と <1, 1, 1> の間、および <-1, -1, 0> と <1, 1 の間の位置を持つ立方体にあります。 、1> Direct3D で。
これは、何らかの特定の理由で Z 座標をテストしたいクロスプラットフォーム シェーダーに問題を引き起こします。プラットフォームに関係なく、同じ範囲で Z 座標を取得する方法はありますか?
opengl - OpenGL で Cg シェーダの均一な位置を取得するには?
以前、GLSL の方法を使用して、基本的なシェーダー プログラミングに手を出しました。今、私は Cg シェーダーを使用して、それに戻ってきました。Josh Beam の Web サイトのチュートリアルに従って、必要な機能を実現し、シェーダーを変更することができましたが、OpenGL 側でユニフォームを操作できませんでした。
完璧に動作します。しようとすると::glGetUniformLocationARB(handle, pUniformName)
、GL_INVALID_VALUE エラーが発生します。シェーダーを作成した後とバインドした後の両方で、同じ結果にこれを実行しようとしました。さまざまなソースが示唆しているように、私も試しましたが::glUseProgramObjectARB(handle)
、これも機能せず、GLSL の方法 ( Lighthouse3D チュートリアル) に属しているようです。
ユニフォームの名前が正しいことを再確認しました。
また、#include-ing Cg ヘッダーと cg API の呼び出しを含むアプローチ ( NeHe チュートリアル)も見つけました。これは OpenGL API を使用して実行できませんか? (これの理由はミニマリズムです。私はこの機能を静的ライブラリの一部にしたいと考えており、コンパイル/リンクの依存関係の数を最小限に抑えることに全力を尽くしています。)
iphone - ベジェパスを閉じる
UIBezierPathに多くの小さな線と曲線を追加しています。ただし、次に追加される要素を判別することはできません。結局、パスは割り込みのない閉じたパスです。
次に、BezierPath上のオブジェクトをアニメーション化します。動作しますが、問題があります。パスの横に追加されているピースを特定できないため、アニメーション中にアニメーションオブジェクトがパス上をジャンプしています。
アニメーションがパスを飛び回らないようにパスを作成する方法はありますか?
どうもありがとうございます。
shader - nVidia の Cg は死んでいますか?
私は Cg が好きですが、現在は GLSL/HLSL に大きく遅れをとっているようです。たとえば、フラグメント シェーダーと頂点シェーダーのみをサポートしています。
まだ開発中ですか、それともあきらめましたか? その場合、GPU に依存しないシェーダーを作成する方法はもうありませんか?
opengl - Cg から深度バッファを書き込み、OpenGL から読み取る
cgでシャドウマップを作りたいです。私は、opengl プログラムと 2 つのピクセル シェーダー (2 つの頂点シェーダー) を作成しました。最初のピクセル シェーダーで DEPTH レジスターを書き込み、OpenGL プログラムでこれをテクスチャーに読み取ります。2 番目のピクセル シェーダーでは、このテクスチャから読み取りたいのですが、値が 0 しかないようです。両方のシェーダーに別のテクスチャがあります。そのバンが問題になるかどうかはわかりませんが、そうは思いません。
最初のシェーダーは次のようになります。
OpenGL プログラムで、深度コンポーネントのテクスチャを作成しました。
GL_DEPTH_TEST を有効にし、オブジェクトを表示した後:
次に、2 番目のシェーダーで:
そして、私が得ているのは、すべて黒い画面です。いろいろ試した結果、自分らしいという結論にたどり着きました。
値が 0 しか含まれていません。たとえば深度の値を 0.2 に変更すると機能するため、問題は z バッファからの読み取り、またはシャドウ マップのテクスチャの読み取りにあると思います。では、z-buffer のコンテンツを opengl のテクスチャに保存するにはどうすればよいでしょうか?
3d - (どのように)シェーダーは現在のレンダーバッファーを表示できますか?
ピクセルシェーダーが深度/色/ステンシルバッファーの現在の状態を確認することは可能ですか?
3d - シェーダーはテクスチャ内のピクセルのブロック/領域をサンプリングできますか?
シェーダーが単一の値を検索するのではなく、読み取ったテクスチャ内のピクセルのブロックの合計/平均を照会できる方法はありますか? 私は Cg で働いていますが、例や検索語は大歓迎です。
具体的には、シェーダーで手動でループするのではなく、組み込みの方法を意味します。
algorithm - フラグメントシェーダーの結果をぼかす方法は?
いくつかのマスク画像に基づいて小さな雲を生成するシェーダーに取り組んでいます。現在はうまく機能していますが、結果に何かが欠けていると感じており、ぼかしがいいと思いました。ノルム 1 の行列 (行列が大きいほど結果が大きくなる) と画像を使用して畳み込みを適用する必要がある基本的なぼかしアルゴリズムを覚えています。問題は、シェーダーの現在の結果を画像として扱う方法がわからないということです。基本的にはシェーダーをそのままにしておきたいのですが、ぼやけてしまいます。任意のアイデア?、畳み込みアルゴリズムをシェーダーに統合するにはどうすればよいですか? または、他のアルゴリズムを知っている人はいますか?
Cg コード: