問題タブ [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.

0 投票する
1 に答える
1625 参照

opengl - opengl と cg でマルチパス レンダリングを行う方法

鉛筆のレンダリングに関するアルゴリズムを実装したいと思います。これで、ストロークの強度といくつかのモデルが異なる 32 のテクスチャができました。プロセスは次のようになります。まず、フォン シェーディングを使用して強度を決定する必要があります。次に、テクスチャをレンダリング結果にマップする必要があります。

テクスチャは 3D テクスチャ空間に保存する必要があります。問題は、opengl とシェーダーを使用してマルチパス レンダリングを行う方法がわからないことです。そして、正しい座標でテクスチャにアクセスする方法がわかりません。メッシュの面がテクスチャよりも小さい場合はどうなりますか? doint this の例を誰かに見せてもらえますか?

0 投票する
1 に答える
1385 参照

opengl - OpenGL と Cg を使用した環境マッピング

OpenGL と Cg シェーダー言語を使用して環境マッピングを実装するプログラムを作成します。しかし、結果はあまり正しくありません。モデルの色を計算するときに、反射をデカール テクスチャとブレンドします。反射率と呼ばれる均一なパラメーターにより、アプリケーションはマテリアルの反射率を制御します。

まず、フラグメント Cg コードをリストします。

均一パラメータの反射率を 0.6 に設定しました。結果は次のとおりです。 ここに画像の説明を入力

ご覧のとおり、デカール テクスチャからの色情報は失われています。環境キューブ テクスチャからの色情報しかありません。また、反射率を 0 に設定すると、モデルは暗くなります。しかし、フラグメント cg コードの color.xyz を次のように変更すると:

私は正しい結果を得ることができます(デカールテクスチャからの色のみがあります): ここに画像の説明を入力

そして、フラグメント cg コードの color.xyz を次のように変更すると:

私も正しい結果を得ることができます(環境キューブテクスチャからの色のみがあります): ここに画像の説明を入力

そして、私の質問は次のとおりです。デカール テクスチャの色情報を Cg 関数lerpを使用して環境キューブ テクスチャの色情報とブレンドすると、なぜ機能しないのですか?

最後に、cg 頂点シェーダーと cpp ファイルをリストします: vertex.cg:

main.cpp:

0 投票する
2 に答える
1332 参照

opengl - openglおよびcgシェーダーで3Dテクスチャを使用するにはどうすればよいですか?

3Dテクスチャマッピングに問題があります。複数の2Dテクスチャがあり、これらの2Dテクスチャを使用して3Dテクスチャを作成したい場合。これらすべてのデータをまとめるために何ができますか?関数glTexImage3Dは、テクスチャのデータにつながるパラメータconst GLvoid*texelsで終了します。しかし、今は32個の2Dテクスチャがあり、3Dテクスチャを取得したいと考えています。どうやってするか?

2番目の質問は、画像空間のフィルタリング方法についてです。それが何であるかを知っている人はいますか?この方法を使用して、テクスチャ座標を決定する必要があります。

0 投票する
2 に答える
2801 参照

opengl - 「Render to Texture」とマルチパス レンダリング

鉛筆のレンダリングに関するアルゴリズムを実装しています。まず、フォン シェーディングを使用してモデルをレンダリングし、強度を決定します。次に、テクスチャをレンダリング結果にマップする必要があります。

opengl および cg シェーダーを使用してマルチパス レンダリングを実行します。「テクスチャにレンダリング」を試してみるべきだと誰かに言われました。しかし、このメソッドを使用して必要な効果を得る方法がわかりません。私の意見では、最初にこの方法を使用してメッシュをレンダリングし、次にシーン全体の 2D テクスチャを取得する必要があります。フレームバッファにコンテンツを描画したので、次は画面にレンダリングする必要がありますよね? しかし、レンダリングされたテクスチャをどのように使用し、後処理を行うのでしょうか? それに関するコードやリンクを誰かに教えてもらえますか?

0 投票する
1 に答える
880 参照

geometry - Cg シェーダーで球体をテクスチャリングする

そのため、Cg のピクセル/フラグメント シェーダー内からテクスチャを球体にマップする必要があります。

すべてのパスで「入力」として持っているのは、テクスチャをサンプリングする球上のポイントのデカルト座標 x、y、z です。次に、これらの座標を球面座標に変換し、次のように角度 Phi と Theta をそれぞれ U 座標と V 座標として使用します。

この単純なマッピングが球の極に継ぎ目を生成​​することはわかっていますが、現時点では、テクスチャが球全体で数回繰り返されるという問題があります。私が望んでいて必要としているのは、テクスチャ全体が球の周りを一度だけラップされることです。

シェーダーをいじって何時間も検索しましたが、解決策が見つかりません。どこかに何らかのスケーリングを適用する必要があると思いますが、どこですか? または、私は完全に間違った方向に進んでいるのかもしれません.Cgとシェーダープログラミング全般に非常に慣れていません...助けてくれてありがとう!

0 投票する
1 に答える
218 参照

c - アルファ チャンネルからデータを抽出する CGFX シェーダー

これも Nvidia Developer ディスカッションに投稿しました。

http://forums.developer.nvidia.com/devforum/discussion/9946/extracting-numbers-cgfx-shader

初めての cgfx シェーダー (地形シェーダー) の書き方を学んでいます。したがって、1 つの頂点チャネル (アルファ チャネル) しか使用できず、3 つのマスクを格納する必要があります。3d アプリ Maya で問題なくスクリプトをプログラムし、10 分の 1 に 1 つのマスク、100 分の 1 に 1 つ、1000 分の 1 に 1 つのマスクを格納できます。

元のペイントされた各マスクは 0 ~ .9 にクランプされます (fmod でゼロになるのを防ぐため)。

マスク 1 =.857

マスク 2 =.345

マスク 3 -.948

この頂点の結合されたアルファ チャネルは = .839 です。

私が抱えている問題は、シェーダーでこれらのマスクを個別のマスクに適切に抽出できないことです。

Mask1 を出力すると、きれいにブレンドされた適切なマスクが得られます。私はこれを行います:

Mask2 を出力すると、これらすべての奇妙なアーティファクトが得られます。Mask2 のみを出力しているときでも、mask1 が自分自身を押し上げているように見えます。私は数学が機能することを確信しています.Mayaで同じことを実行して、最初に値を保存しました. なぜこれが起こっているのか誰にも教えてもらえますか?

平:

これは、マスク 2 を 10 分の 1 に押し上げ、マスク 1 を消去するだけで、同じアーティファクトが発生します。

問題の画像を Nvidia フォーラムに投稿しましたが、スパム防止のためここには投稿できません。

http://forums.developer.nvidia.com/devforum/discussion/9946/extracting-numbers-cgfx-shader

助けていただければ幸いです。最後までお読みいただきありがとうございます。できれば/時間があれば、あなたの反応を説明してください。私はプログラミングに慣れていないので、わかりやすいほど良いです!

0 投票する
1 に答える
257 参照

c - 頂点データを複数回出力する CGFX シェーダ

頂点シェーダーからピクセル シェーダーに何かを複数回出力するにはどうすればよいですか。たとえば、頂点シェーダーで頂点の色に対していくつかの異なる数学演算を実行した後、頂点の色を float 4 としてピクセル シェーダーに 4 回出力する必要がありますか?

私はこれを行うことができますか?空のfloat4 color2を作成し、In.colorからIn.vertcolorを読み取って出力しようとしました...エラーは発生しませんが、テクスチャは白です。空の float 4 を読み取るだけです...

これがこのセクションの私のコードです。ありがとう!

0 投票する
1 に答える
2337 参照

c++ - この CG プログラムに何か問題がありますか?

グラフィックエンジンとして Ogre3D を使用しています。

正常に動作するメッシュを手動で作成します。UV は正しく、グリッド座標を表すように設定されています (この例では、グリッドは 10 x 10 です)。

私は頂点プログラムでは何もせず、非常に単純なフラグメント プログラムを使用しています。説明するために、両方のプログラムとマテリアル ファイルを含めました。

私の問題は、フィルタリングをなしに設定しても、色が元の画像と同じように見えないことです(これは、オーガでテクスチャを手動で作成する際に問題があったため、使用しているテスト画像にすぎません)。問題はオーガの私のコードではなく、マテリアル ファイルまたはフラグメント/頂点プログラムのいずれかに関係している可能性が高いことが判明しました。

また、出力のスクリーンショットを左側に、元の画像を右側に含めました。フラグメント シェーダーは上部に単純なグリッドも描画するので、UV 座標が正しく渡されていることを確認できます。彼らのようです。

ここに画像の説明を入力

何が間違っているのか本当にわからないので、どんな洞察も大歓迎です。

素材ファイル:

CG ファイル:

0 投票する
1 に答える
355 参照

shader - Unity cg シェーダーで sizeof float を使用する

cg を使用して unity 用のシェーダーを作成しようとしています。float の精度を知りたいのですが、sizeof コマンドの使用方法がわかりません。使用しようとすると、次のエラーが表示されます。

218は「CGPROGRAM」と書かれた行です。

float の arbvp1/arbfp1 プロファイルを使用する標準サイズがあるかどうか、または sizeof コマンドの使用方法を誰か教えてもらえますか?

0 投票する
2 に答える
388 参照

opengl - CgFx コンパイラ エラー「不明な状態 'VertexShader'」

次の CgFx ファイルがあります。

cgc を使用して 3 つのシェーダーを検証すると、すべて正常にコンパイルされます。

しかし、次を使用してエフェクト全体をコンパイルしようとすると:

次に、次のエラーが表示されます。

私は何を間違っていますか?