問題タブ [vertex-shader]

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 に答える
155 参照

opengl - 頂点シェーダーのトラブル

頂点シェーダー (1.20) が機能しません。シンプルな白い三角形をレンダリングしていますが、頂点シェーダーをロードすると三角形が消えます。

私も試しました:

無駄に。フラグメント シェーダが機能するので、本当に混乱しています。例えば、

私の三角形を緑色にします。私は何か間違ったことを見つけることができません (そして、シェーダーはエラーなしでコンパイルされます)。

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

opengl - GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN は常に 0 を返します

OpenGL の変換フィードバック機能を使用しようとしています。ミニマルな頂点シェーダーを作成し、それを使用してプログラムを作成しました (フラグメント シェーダーはありません)。glTransformFeedbackVaryingsまた、単一の出力変数名で を呼び出し、バッファ モードを に設定しましたGL_INTERLEAVED_ATTRIBS。シェーダー プログラムは正常にコンパイルおよびリンクされます (呼び出し後にリンクすることも確認しglTransformFeedbackVaryingsます。

を使用して単一の頂点属性配列を有効にglEnableVertexAttribArrayし、一般的な頂点属性に VBO を割り当て、属性の呼び出しをglVertexAttribPointer行いました。

生成した別のバッファーにバインドし、TRANSFORM_FEEDBACK_BUFFER変換フィードバック中に書き込むのに十分な大きさのデータ ストアを作成しました。

次に、変換フィードバックを有効にして を呼び出しますglDrawArrays(GL_POINTS, 0, 1000)。プログラムの実行中にクラッシュすることはありません。

問題は、変換フィードバックが呼び出しTRANSFORM_FEEDBACK_BUFFER中に に何かを書き込んでいるという兆候が得られないことです。glDrawArrays監視するクエリを設定する GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTENと、これは常に0を返します。何を試しても、変換フィードバックを取得して何も書き込めないようです(意味のあることは気にしないでください!)

何かを書くための変換フィードバックを得る方法や、確認すべきことについて何か提案があれば、教えてください!

注: トランスフォーム フィードバック オブジェクトは使用できず、頂点配列オブジェクトも使用していません。

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

opengl - 頂点シェーダー内から頂点属性が有効になっているかどうかわかりますか?

頂点属性が頂点シェーダー内から有効になっているかどうかを確認する方法があるかどうか疑問に思っていましたか? 頂点属性が無効になっている場合、すべての値が 0.0 として扱われることがわかっているので、次のようなテストを実行できます。

しかし、これには、属性が有効で値が 0 に設定されている場合 (無効であるかのように扱われる) の明らかな問題があります!

もう1つの解決策は、属性を使用するかどうかを示す一様な変数を使用することですが、それを行うGLSLに組み込まれたものがあるかどうか疑問に思いましたか?

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

opengl-es - GLSL Shader - 2D オブジェクトの Coverflow 反射

カバーフローに使用されるものと同様の画像の反射を作成するシェーダーを作成したいと考えています。

しかし、このシェーダーは以下を作成してい ます:元の画像の下部に画像を反映する方法を知っています。

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

android - OpenGL ES 頂点シェーダーが関数でコンパイルされない

以下の簡略化された頂点シェーダーを Galaxy S (PowerVR SGX540、Android) でコンパイルしようとすると、コンパイルされず、エラーが発生しません。「コンパイルに失敗しました」だけです。ログにあります。

ただし、関数ブロックをメイン関数に移動すると、問題なくコンパイルされます。

デスクトップでは、両方がコンパイルされます。なぜそのように振る舞うのか理解できません。誰かがそれを説明できますか、それともシステム内のバグですか?

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

opengl - 頂点シェーダーで 2 番目の VBO をループすることはできますか?

では、2 つの頂点バッファーがあるとします。1 つは私が描きたい実際の形状を記述し、もう 1 つは最初の形状に影響を与えることができます。

だから、私が実際にできるようにしたいのは、次のようなものです:

私がやりたいことは重力かもしれません.second_oneの各ポイントがポイントを少し近づけてドラッグしようとし、ポイントが調整された後、マトリックスを適用して実際の位置を取得します。

それが可能であるか、それに近いものであることに本当に驚きます。しかし、要点は、2 番目の VBO を使用できるようにすること、またはそれを vec3 タイプのユニフォームとして作成して、アクセスできるようにすることです。

0 投票する
4 に答える
5182 参照

opengl - GLSL のシリンダー詐欺師

分子の 3D 可視化用の小さなツールを開発しています。私のプロジェクトでは、"Brad Larson" 氏が Apple ソフトウェア " Molecules " で行った方法で何かを作ることにしました。使用されたテクニックの小さなプレゼンテーションを見つけることができるリンク: Brad Larsson ソフトウェア プレゼンテーション

私の仕事をするために、球の偽者円柱の偽者を計算する必要があります。

今のところ、別のチュートリアルLies and Impostorsの助けを借りて、「Sphere Impostor」を実行することに成功しました。

球詐欺師の計算を要約します。最初に、「球の位置」と「球の半径」を「頂点シェーダー」に送信します。これにより、カメラ空間に常にカメラに面する正方形が作成されます。そこで単純なレイ トレーシングを使用して、正方形のどのフラグメントが球体に含まれているかを見つけ、最後にフラグメントの法線と位置を計算して照明を計算します。(別のこととして、詐欺師の球体に適切な深さを与えるために gl_fragdepth も記述します!)

しかし、今、私は円柱詐欺師の計算でブロックされています。球詐欺師と円柱詐欺師の間で並列処理を試みましたが、何も見つかりませんでした。私の問題は、球がどのように見ても常に同じです。「円」と、もう 1 つのことは、球が数学によって完全に定義されていることです。そうすれば、照明を計算するための位置と法線を簡単に見つけて、詐欺師。

円柱も同じではなく、見る角度によって様々な形を見せてくれる「円柱ごっこ」のような形をモデリングするヒントが見つからなかったのです!

そこで、「シリンダー詐欺師」という私の問題の解決策または兆候についてお聞きしたいと思います。

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

glsl - この頂点シェーダーのデータはどこから来ていますか?

Open GL ES 2.0 の GLSL を学習しようとしています。私はチュートリアルを見回しましたが、まったく意味がないため、明らかに説明に欠けているものがあります. 以下のコードをご覧ください。これは、公式の OpenGL ES 2.0 リファレンス カードから抜粋したものです。

これは、頂点シェーダーであると想定されています。

問題 1: 何も初期化されていません。最初に 8 つの変数/オブジェクトがリストされており、1 つも初期化されていません。したがって、8 つの null 変数/オブジェクトがあります。

問題 2: 初期化される変数/オブジェクトは、前の 8 つの null 変数/オブジェクトを使用して初期化されます。素晴らしいので、今はすべてがnullです...

問題 3: 関数から何も渡されません。これがどのように影を落とすことができるかは、私にはわかりません。何も取り込まず、何も渡しません。それが影響を与える唯一のものは gl_Position です。これは明らかにある種の特別な出力変数です。しかし、それは mvp_matrix と a_vertex だけに依存しているので、他のすべてのものは何のためにあるのでしょうか?

そして、それはこの例だけではなく、これまでに見つけたすべてのものです. 一連の変数を宣言し、それらのほとんどを使用せずに、null オブジェクトをあちこちに渡したり割り当てたりすると、何ができるかわかりません。

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

opengl - GLSLVertexShaderは表示なしでコンパイルされます

私は無駄にフォンシェーディングを実装しようとしています。私はシェーダーを少しずつ構築しています(これ自体が問題になる可能性があります)が、現在ここにいます。これにより、結果(ユタティーポット)が黒い背景に白い画像として出力されると思います。頂点シェーダーからライン18を削除すると、これは正しく行われますが、ラインが存在する場合、出力はなく、エラーもありません。何か案は?

フラグメントシェーダー:

頂点シェーダー:

normalおよびnormalModelViewが現在設定されていないことにも言及する価値があるかもしれません。以前に有効にしてみたところ、同様の結果が得られました。私の理解では、これらはデフォルト値に設定する必要があります。