問題タブ [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 - 頂点シェーダーでポリゴン内のすべての頂点にアクセスすることは可能ですか?
Unityでワイヤーフレーム頂点/フラグメントシェーダーを作成しようとしています。この論文によれば可能だと思われます。一般的な考え方は、頂点シェーダーで計算された距離ベクトルをフラグメントシェーダーの各フラグメントに渡すことです。これを使用して、ポリゴン内の位置に基づいてワイヤーフレームラインを描画する明るさを決定できます。
ただし、私が読んだ他のすべてのことから、頂点シェーダーでは1つの頂点にしかアクセスできないようです。ecah頂点のポリゴン内のすべての隣接する頂点にアクセスする必要があります。このペーパーは、ジオメトリシェーダーが不要であることを示唆しているようです。これは、Unityがまだサポートしていないため良いことです。
私は何が欠けていますか?頂点シェーダーで隣接する頂点にアクセスすることはできませんか?ジオメトリシェーダーなしでは不可能にしようとしていることはありますか?
glsl - シェーディング言語の場合、どちらが主流ですか?
GLSL、HLSL、CGのような今日利用可能ないくつかのシェーディング言語がありますが、トレンドに追いつくためにどれを選ぶべきですか?
c++ - シンプルな GPU プログラミング (Cg を使用?)
GPU の並列処理能力をどのように使用するかを知りたいと思っています。しかし、私はグラフィックを作ることに熱心ではありません! Cgのチュートリアルをやってみたのですが、グラフィック用語が重そうです。さらに、そのようなプログラムを入出力に接続する方法を理解できないようです。
次の非常に単純なプログラムを考えてみましょう。これは明らかに並列処理の恩恵を受ける可能性があります (遅い HDD 速度は無視してください): 2 つのファイルから 2 つの大きな整数配列を読み取り、最後の 2 つの要素を追加して新しい配列を作成し、それを別のファイルに保存します。 . 私はそれをテストしませんでしたが、C ++でコーディングする方法は次のとおりです。
これに Cg を使用する方法を詳しく教えてください。
directx - モーション ブラー方向識別 DirectX
速度情報をテクスチャに保存しています。テクスチャは {0, 1} の範囲の色の値しか持てないため、速度の方向をどのように判断すればよいですか? 1 つの解決策は、速度の方向情報のみを格納する別のテクスチャを作成することですが、非常にコストがかかります。ご意見はありますか?
opengl - cg シェーダ パラメータ
cg (ogre3d 用) を使用してシェーダーを作成しようとしています。自分のコードの開始点として使用したい作業中のシェーダーを解析できないようです。
シェーダーの宣言は次のとおりです。
私の質問:
iTexCoord0 は明らかに入力パラメーターです。なぜ統一宣言されていないのですか?
(oColor は明らかに出力パラメータです。問題ありません)
covMap1 - splat6 はテクスチャです。これらのパラメータまたはグラフィック カード メモリにロードされているもの (グローバルなど) はありますか? シェーダー プログラムの ogre 定義には、それらがパラメーターとしてリストされていません。
splatScaleX と splatScaleZ もパラメーターですか? シェーダー プログラムの ogre 定義にも、これらがパラメーターとしてリストされていません。
外部プログラムから値を送信する場合、宣言の順序は意味がありますか?
float の配列 (高さマップ) を渡したいと思います。だと思います
パラメータの 1 つを渡さない場合、シェーダは実行されません (テクスチャがないため、オブジェクトは見えなくなります)。
ヒット/ミスして推測するよりも、これらをデバッグするためのより良い方法はありますか?
c++ - Cg:compile error:semantic"POSITION"を使用したボリュームレンダリングはこのプロファイルに表示されません
現在、OpenGL、Cg、およびC ++を使用して直接レイキャスティングボリュームレンダリングを実装するようにコーディングしています。コンピューターのシステムはWin7で、グラフィックスはnVidiaGTX570です。
実際、直接レイキャスティングボリュームレンダリングの基本機能を正常に実装しましたが、ここで照明を追加したいので、ローカル照明モデルを使用します。イルミネーション用のコードを数行追加すると、Cgコンパイラエラーが発生します。追加する前は、正常に動作します。
私が使用するCgプロファイルはCG_PROFILE_VP40とCG_PROFILE_FP40です。
今私は私のCgコードを投稿します:
Cgエラーに関する情報:
線を消せば
そうすればプログラムはうまく動きます、確かに私は照明効果を得ることができません。ですから、照明効果を計算する関数の陰影に何か問題があると思います。
しかし、私はそれを理解することはできません。誰かがこの問題を解決する方法を教えてもらえますか?
interpreter - Cg で使用される動的コンパイルと一部のスクリプトで使用されるインタープリターの違いは何ですか?
Cg のチュートリアルでは、Cg は動的コンパイルを使用すると書かれています。最初のパスですべてのコードをコンパイルする必要がないという点で、コンパイラーはインタープリターといくつかの類似点があることに気付きました。エラーが存在する場合は、exe の実行時にそれを見つけることができます。
しかし、それらの違いは何ですか。誰か私に詳細を教えてもらえますか?どうもありがとう。
opengl - Cgを使用したOpenGLの複数のレンダリングターゲット
私は(無駄に)OpenGLとNVIDIAのCgシェーダーシステムを使用してMRTをセットアップしようとしていますが、最終的な目標は遅延レンダリングです。単一のターゲットに対してシェーダーとRenderToTextureの両方を正常に機能させることができましたが、オブジェクトを複数のレンダリングターゲットにレンダリングしようとすると、いずれのターゲットにも表示されません。
フレームバッファオブジェクトを次のように設定しています。
私のシェーダー(によって返されるプロファイルを使用してコンパイルされますcgGLGetLatestProfile
)は次のとおりです。
なぜこれが失敗するのかについて誰かが何か手がかりを持っていますか?
opengl - OpenGL での Cg の問題
私は Windows で OpenGL プロジェクトに取り組んでおり、GLEW を使用して、提供された Windows ヘッダーにない機能を提供しています。シェーダーのサポートには、NVIDIA の Cg を使用しています。私が読んだすべてのドキュメントとコード サンプルは、以下がシェーダーを使用してロードするための正しい方法であることを示しており、コードにこの方法で実装しました。
- で Cg コンテキストを作成します
cgCreateContext
。 cgGLGetLatestProfile
withCG_GL_VERTEX
およびCG_GL_FRAGMENT
をそれぞれ使用して、最新の頂点およびピクセル シェーダー プロファイルを取得します。cgGLSetContextOptimalOptions
両方のプロファイルに最適なセットアップを作成するために使用します。- 作成したこれらのプロファイルとシェーダーを使用して、 を使用してシェーダー プログラムを作成します
cgCreateProgramFromFile
。 - を使用してシェーダー プログラムをロードし
cgGLLoadProgram
ます。
次に、各フレームで、特定のシェーダーを使用するオブジェクトについて:
- を使用して、目的のシェーダー (頂点および/またはピクセル) をバインドします
cgGLBindProgram
。 - を使用して、目的のシェーダのプロファイルを有効にします
cgGLEnableProfile
。 cgGetNamedParameter
およびさまざまなパラメータ設定関数を使用して、必要なユニフォーム シェーダ パラメータを取得および設定します。- オブジェクトを通常どおりレンダリングする
- を呼び出してシェーダーをクリーンアップします。
cgGLDisableProfile
しかし、事態は奇妙になり始めます。1 つのシェーダーを使用すると、すべて正常に動作しますが、2 番目のシェーダーをロードするとcgGLLoadProgram
、最初のシェーダーを使用しているオブジェクトのレンダリングが停止するようです。描画順序を切り替えると問題が解決するようですが、それで解決することはほとんどありません。この問題は、私とパートナーの両方のラップトップ (Intel 統合チップセットを搭載したかなり最近のマシン) で発生します。
デスクトップで GeForce GTX 260 を使用して同じコードをテストしたところ、すべて正常に動作しました。ラップトップの GPU が Cg とうまくいかないので、これを書き留めておきますが、OGRE グラフィック エンジンを使用して、ラップトップで複数の Cg シェーダーを同時に使用するプログラムをビルドして実行することに成功しました(残念ながら、私が現在取り組んでいる課題はコンピュータ グラフィックスのクラスのため、OGRE だけを使用することはできません)。
結論として、私は困惑しています。私のコードではなく、OGRE が行っていることは何ですか? Cg の使い方が間違っていませんか?
xcode - Cg フレームワークが XCode 3.2.6 で認識されない
に Cg をインストールしました/Library/Frameworks/Cg.framework
。ディスク上では次のようになります。
私のXCode 3.2.6プロジェクトにはLibrary/Frameworks
、フレームワーク検索パスとして-Framework Cg
「その他のリンカー設定」がありますが、試してみると#include <Cg/cg.h>
ファイルが見つかりません。「ヘッダー検索パス」に直接追加/Library/Frameworks/Cg.framework/Headers
すると、「#include」できますが、「Framework not found Cg」というエラーでリンクに失敗します。
Mac フレームワークとは何かよくわかりません。それは特別なものですか、それとも単なる通常のディレクトリですか? 何らかの理由で Xcode が単にフレームワークであることを/Library/Frameworks/Cg.framework
理解していないようです。
これが関連しているかどうかはわかりません: https://stackoverflow.com/questions/5293940/xcode-3-2-6-stops- looking-in-library-frameworks
何が間違っているのかを理解する助けがあれば幸いです。
コマンドラインから簡単なテストをテストしました:
test.cpp
「gcc -c test.cpp」を実行するだけで成功します (-c はリンクしないと言います)。私も「gcc -M test.cpp」を実行しました(依存関係のリスト):/Library/Frameworks/Cg.framework/Headers/cg.h
フレームワークは問題ないようです...検索パスを渡さずにgccを実行するにはどうすればよいですか?