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

0 投票する
7 に答える
41343 参照

opengl - フラグメントの現在の色を取得するにはどうすればよいですか?

私は GLSL のシェーダーについて頭を悩ませようとしています。いくつかの有用なリソースとチュートリアルを見つけましたが、基本的で些細であるべき何かの壁にぶつかり続けています。現在のフラグメント?

と言って最終的な色を設定しますgl_FragColor = whateverが、どうやらそれは出力専用の値です。計算を実行できるように、入力の元の色をどのように取得しますか? それはどこかの変数にある必要がありますが、その名前を知っている人がいるとしたら、これまでに出くわしたチュートリアルやドキュメントに記録されていないようで、私を壁に追いやっています.

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

c++ - Qt 4.6 OpenGL GLSL

私は、すべてGLSLにあるQt用のNeHeのチュートリアルのように見つけようとしています。正直なところ、昔の OpenGL は死んでいて、今ではシェーダーが唯一の方法です。また、Qt-4.6 では、QMatrix4x4、QVector3、Shader クラスが導入されました。しかし、これに関するチュートリアルが見つかりません。

私が見つけたものはすべて、くだらないSDLおよび/またはGLUTを使用しています(これはまったく役に立たないだけです)。

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

iphone - テクスチャを使用した OpenGL ES 2.0 レンダリング

iPhone SDK には、一連の (Vertex & Fragment) GLSL シェーダーで ES 2.0 を使用して、さまざまな色のボックスをレンダリングする例があります。この API を使用して単純なテクスチャをレンダリングする方法の例はありますか? 私は基本的にクワッドを取り、その上にテクスチャを描きたいと思っています。

古い ES 1.1 API はもうまったく機能しないので、始めるには少し助けが必要です。ほとんどのシェーダー リファレンスは主に高度なシェーディング トピックについて述べていますが、バインドされたテクスチャを使用するようにシェーダーに指示する方法と、UV を参照する方法についてはよくわかりません。

0 投票する
0 に答える
2922 参照

opengl - アルファ値を保存しないテクスチャへの GLSL シェーダ レンダリング

更新:Danvil が以下のコメントで解決しました。私のテクスチャ フォーマットは GL_RGBA ではなく GL_RGB でした。これはもちろん、アルファ値が保持されないことを意味します。なぜ気づかなかったのかわからない... ありがとう、ダンヴィル。

GLSL シェーダを使用してテクスチャにレンダリングし、そのテクスチャを入力として 2 番目のシェーダに送信しています。最初のテクスチャでは、RGB チャネルを使用してカラー データを 2 番目の GLSL シェーダに送信していますが、アルファ チャネルを使用して、2 番目のシェーダがプログラムの一部として使用する浮動小数点数を送信したいと考えています。問題は、2 番目のシェーダーでテクスチャを読み取ると、アルファ値が常に 1.0 になることです。これを次の方法でテストしました。

最初のシェーダーの最後に、次のようにしました。

次に、2番目のテクスチャで、次のようなものを使用して最初のテクスチャの値を読み取ります

出力に黒のピクセルはありませんが、上記のコードを読み取りに変更すると

そして2番目のシェーダーで

該当するピクセルはすべて黒です。これは、何らかの理由で、最初のシェーダーでアルファ値を 1.0 以外に設定してテクスチャにレンダリングすると、2 番目のシェーダーでは 1.0 として表示されることを意味します。

テクスチャにレンダリングする前に glDisable(GL_BLEND);

問題は、私が望む方法で青チャネルを使用できるため、私には明らかではない方法でアルファ値を処理する OpenGL に関係していることは明らかであり、そこにいる誰かがすぐに問題に気付くと考えました。 .

また、シェーダー プログラムを呼び出す方法は、クワッドを描画することです (テクスチャを持つフレーム バッファーにレンダリングしています)。

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

opengl - フラグメント シェーダーを使用したブロック フィルター

私はApple の OpenGL Shader Builder (Nvidia の fx composer に似たツールですが、より単純なツール) を使用してこのチュートリアルに従っていました。

フィルターを簡単に適用できましたが、正しく機能したかどうかはわかりません (もしそうなら、どうすれば出力を改善できますか)。たとえば、ぼかしフィルター: OpenGL 自体がテクスチャに対して何らかの画像処理を行うため、元の画像よりも高い解像度で表示される場合、OpenGL によって既にぼかしられています。次に、ぼやけた部分は処理されていない部分よりも明るいです。これは意味がないと思います。これは、直接の近隣からピクセルを取得するだけだからです。これは、

よくわかりません:ピクセルは浮動小数点値を使用してインデックス付けされていますか??

ぼやけた画像 http://img218.imageshack.us/img218/6468/blurzt.png

編集:使用した正確なコードを添付するのを忘れました:

フラグメントシェーダー

頂点シェーダー

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

iphone - OpenGL ES 2.0:オブジェクトの回転の問題

次の質問がさまざまなフォーラムで何度も行われていることは知っていますが、さまざまな解決策を表示しても問題が解決しないか
、OpenGLES2.0を使用してピラミッドをモデル化しようとしているという意味がわかりませんでした。 iPhone。
ユーザーがタッチスクリーンを使用してこのピラミッドを回転できるようにして、形状のすべての面を表示できるようにしたいと思います。
私は、OpenGL ES 2.0プログラミングガイドの本に記載されているライブラリに触発された、独自のマトリックスユーティリティを使用しています。
2つのユニフォームと2つの属性を受け取る単純な頂点シェーダーがあります。
これが私の頂点シェーダーです:

したがって、レンダリング中に、modelViewと射影行列の2つの行列を作成します。

これが私の射影行列が初期化される方法です:

私のピラミッドの頂点は次のように設定されています:

最後に、これが私の描画コードです:

すべてが正常に機能しているようです。私のピラミッドはここにあり、Z軸を逆方向に移動しています。
図形を回転し始めると問題が発生します。図形がユーザーの周りではなく、ユーザーの周りを回転しているように見えます。
たとえば、画面を左から右にタッチすると、ピラミッドが画面の右端から出て、左端から画面に戻ってくるのが見えます。まるで、まるで自分の周りを一周したかのようです。 p。

私は自分のマトリックス管理コードについてかなり確信しているので、この質問のコードが多すぎるのを避けるために、ここに投稿しないことにしました。必要に応じてあげることができます。

私が間違ったことについて何か考えがありますか?

どうもありがとう !

トム

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

opengl - GLSL での FBO データの取得

遅延レンダリングを試すために、MRT を OpenGL で動作させようとしています。私が把握している状況はこうです。

  1. 3 つのレンダー バッファーを作成します (たとえば)。2 つの RGBA8 と 1 つの Depth32。
  2. FBO を作成します。
  3. レンダー バッファを FBO にアタッチします。カラー バッファーの場合は ColorAttachment0/1、深度バッファーの場合は DepthAttachment。
  4. FBO をバインドします。
  5. ジオメトリを描画します。
  6. gl_FragData[]frag シェーダーを使用して、さまざまなアタッチメントにデータを送信します。

この時点で、GLSL を使用して別のパスでデータを取得したいと思います。どのように a) フレームバッファ カラー アタッチメントからデータを取得し、b) 深度コンポーネントからデータを取得しますか。

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

opengl-es - WebGLの最初のシェーダー

私はWebGLで最初のシェーダーを書いています。GLSL言語に、属性またはユニフォームがnullであるかどうかを評価する方法があるかどうか疑問に思いました。仕様によると、次のようなことはサポートされていません

そして、これらのケースのそれぞれにブール属性を書くのは無駄だと思います。

別の質問:ユニフォームまたは属性をシェーダーに渡さないと、レンダリング中に何が起こりますか?

ありがとう!

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

iphone - iPhone シェーダーのプロファイリング

iPhone (3GS/4/iPad) でリアルタイムの画像処理を行うために、一連のシェーダーを使用しています。fpsは私が望んでいるものではありません。

ボトルネックを特定するために使用できるツールはありますか?

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

iphone - iPhone のルックアップ テーブル/パレット シェーダー

次のフラグメントシェーダーがあります。

しかし、コンパイルに失敗します:

GLSL でルックアップ テーブルを定義するにはどうすればよいですか? 入力テクスチャには列挙型の値があり、その各値を異なる色にマップしたいと考えています。