問題タブ [glsl]
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.
iphone - iPhoneで使用されているGLSLのバージョンは何ですか?
iPhoneがOpenGLES2.0を使用していることは知っていますが、基盤となる言語GLSLのバージョンがわかりません。1.3、1.4、2.0、またはその他ですか?
performance - How to perform bit shift without ("<<" || ">>") operator efficiently?
I am working on a OpenGL ES 2.0 shader and I have tightly packed data e.g. three 5-bit unsigned integers within a block of two bytes. To unpack this data I obviously need bit-shifting, but this is not supported in OpenGL ES Shading Language (see page 29 http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf)
Consequently I perform a number of *2 and /2 operations to emulate bit shifting.
Does anyone know a more efficient/elegant way to do this? Is there a trick I am not aware of?
Thanks!
opengl-es - OpenGL ES 2.0のテクスチャポイント?
パーティクルシステムのOpenGLES2.0にテクスチャポイント(ポイントスプライトなど)を実装しようとしています。私が抱えている問題は、テクスチャが適切にマッピングされるのではなく、すべてのポイントが黒一色の正方形としてレンダリングされることです。
gl_PointCoordが実際に0.0から1.0までのx/y値を返していることを確認しました。これは、テクスチャ全体にマッピングされます。ただし、texture2D呼び出しは常に黒を返すようです。
私の頂点シェーダー:
そして私のフラグメントシェーダー:
問題のテクスチャは16x16です。このテクスチャを他のジオメトリに正常にマッピングできますが、何らかの理由でポイントにマッピングできません。
私のプラットフォームは、Android2.2を実行しているMotorolaDroidです。
c++ - GLM + STL:演算子==欠落
STLコンテナでGLMベクトルクラスを使用しようとしています。私が使用しようとしない限り、大したことはありません<algorithm>
。==
ほとんどのアルゴリズムは、GLMクラスに実装されていない演算子に依存しています。
誰もがこれを回避する簡単な方法を知っていますか?STLアルゴリズムを(再)実装せずに:(
GLMは、C++でGLSL関数を実装する優れた数学ライブラリです。
アップデート
glmが実際に拡張で比較演算子を実装していることを知りました(ここ)。しかし、どうすればstlでそれらを使用できますか?
アップデート2
この質問はこれに取って代わられました:stlアルゴリズムでglmのoperator ==を使用する方法は?
opengl - GLSL - ビット単位の演算子が予約されているのはなぜですか? ビット単位の演算 (ビット単位でエミュレートする浮動小数点演算) を使用する代わりに使用できる適切な方法は何ですか?
私は WebGL でいくつかの実験を行っています。そのうちの 1 つは XOR エフェクト フラグメント シェーダーです。何らかの理由で、すべてのビット演算子は GLSL で予約されており、使用するとコンパイラ エラーが発生します。なぜこれらのオペレーターは違法なのですか? | の代わりに何を使用できますか? この場合?
macos - この OpenGL の優れた頂点シェーダーを OS X でコンパイルするにはどうすればよいですか?
OpenGL Superbible 5th Edition が最近リリースされ、OpenGL 3.3 について説明しています。残念ながら、OS X は OpenGL 2.1 と GLSL バージョン 1.20 しかサポートしていません。彼らが提供する最初の自明ではない頂点シェーダーは、エラーメッセージでコンパイルに失敗します:
書かれているように、シェーダーは次のとおりです。
opengl - GLSLの複数のテクスチャ-1つだけが機能します
私の問題は、GLSLシェーダーで複数のテクスチャにアクセスできるようにすることです。これが私がしていることです:
シェーダー:
したがって、一様変数に基づいて2つの色の値から選択するだけです。十分に単純ですが(これはテストです)、予想される動作の代わりに、blend<=0.5のときにすべて黒になります。
OpenGLコード:
シェーダーはコンパイルされ、このすべての前にバインドされます。そのプロセスのすべての健全性チェックは、問題がないことを示しています。
すでに述べたようにBahbarの返信に従って修正されました。col
、シェーダープログラムのの値は、テクスチャからのフラグメントを反映しています。の値col2
は黒です。表示されるテクスチャは最後にアクティブなテクスチャです。最後glBindTexture
にバインドするように変更するTexture0.Handle
と、テクスチャが変更されます。
gl_FragColor.r = blend;
シェーダーの最後の行のようなものを追加しても、シーンはそのまま黒くなります。ただし、呼び出しをコメントアウトするとglActiveTexture(GL_TEXTURE1);
、シェーダーが再び機能し、sampler0とsampler1の両方に同じテクスチャが表示されます。
どうしたの?問題の行はglActiveTexture(GL_TEXTURE1);
、後続のによって証明されるように、問題なく機能しているようglGetIntegerv(GL_ACTIVE_TEXTURE, &anint)
です。なぜそれはすべてをそれほどひどく壊すのですか?私はすでにディスプレイドライバをアップグレードしようとしました。
opengl - ATIグラフィックカードでのGLSL3Dノイズの実装
使用可能なノイズ関数を取得するために非常に多くの異なる戦略を試しましたが、どれも機能しません。では、GLSLのATIグラフィックカードにパーリンノイズをどのように実装しますか?
私が試した方法は次のとおりです。順列とグラデーションのデータをGL_RGBA1Dテクスチャに入れて、texture1D関数を呼び出してみました。ただし、このノイズ実装への1回の呼び出しは、12回のテクスチャ呼び出しにつながり、フレームレートを強制終了します。
順列と勾配のデータを均一なvec4配列にアップロードしようとしましたが、インデックスが定数でない限り、コンパイラーは配列内の要素を取得できません。例えば:
これのコンパイラエラーが発生します:
エラー:0:43:一時配列間接インデックスを使用する場合はサポートされません。
つまり、次のようなデータしか取得できません。
また、配列をシェーダーに直接プログラミングしようとしましたが、同じインデックスの問題が発生しました。NVIDIAグラフィックカードは実際にこの方法を許可すると聞いていますが、ATIは許可していません。
入力インデックスに応じて特定のハードコードされたデータポイントを返す関数を作成しようとしましたが、この関数は12回呼び出され、64個のifステートメントを持っているため、リンク時間が耐えられませんでした。
ATIはglslの「組み込み」ノイズ関数をサポートしていません。フラクタルを扱っているため、ノイズを事前に計算してテクスチャとしてインポートすることはできません。これは、実行時にノイズを計算する無限の精度が必要であることを意味します。
したがって、包括的な質問は...
どのように?
opengl - GLSLで頂点配列をビルボードしますか?
私は三角形のベクトル配列を持っています。これは基本的に、ビルボードする必要のある正方形の束で構成されています。次のようなもの
その後glDrawArray
、適切な引数を使用して、合計10個の正方形を描画します。
同じ頂点配列に存在するこれらすべてのポリゴンを個別にビルボードできるシェーダープログラムを作成することは可能ですか?
opengl-es - 変数コンストラクターに関する質問:
もしも...
では、以下は何を表しているでしょうか?
ありがとう 。