問題タブ [fragment-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.
opengl - glsl で gl_FragCoord を計算する方法
わかりました、私の GLSL フラグメント シェーダーでは、空間内の特定の線からフラグメントまでの距離を計算できるようにしたいと考えています。
この結果、最初に頂点シェーダーでさまざまな vec2 セットを使用して、最終的な結果をミラーリングしようとしていますgl_FragCoord
。
今私が期待するフラグメントシェーダーで:
しかし、そうではありません。パイプラインは、私が怠っているgl_Position
ものに変えるためにどのような操作を行いますか?gl_FragCoord
fake_frag_coord
opengl - 同じプログラムで複数のピクセル (フラグメント) シェーダーを使用できますか?
2 つのピクセル シェーダーが必要です。最初に 1 つのことを行い、次に別のことを行います。これは可能ですか、それともすべてを 1 つのシェーダーに詰め込む必要がありますか?
fragment-shader - OpenGL 拡散照明シェーダーのバグ?
Orange book のセクション 16.2 には、拡散照明の実装が次のようにリストされています。
ただし、これを実行すると、カメラを動かすと照明が変わります。一方、私が変わるときは
to vec3 N = normalize(gl_Normal);
固定パイプラインのように機能する拡散照明が得られます。
この gl_NormalMatrix とは何ですか?それを削除するとどうなりますか?...これはオレンジブックのバグですか?それとも OpenGl コードを不適切に設定していますか?
[完全を期すために、フラグメントシェーダーは色をコピーするだけです]
fragment-shader - Fragment-shader blur ... これはどのように機能しますか?
sample[i] = texture2D(sample0, ...) 行はどのように機能しますか?
画像をぼかすように思えます。最初に画像を生成する必要がありますが、ここでは、生成しているまさにその画像を何らかの形で照会しようとしています。これはどのように作動しますか?
objective-c - テクスチャ上のフラグメント シェーダー
プログラムにいくつかの後処理機能を追加しようとしています。レンダリングはopenGLを使用して行われます。プログラムが自家製のフラグメントシェーダーをロードして、ビデオストリームで使用できるようにしたいだけです。
「OpenGL Shader Builder」を使用して、テクスチャをグレースケールに変えるだけの小さなシェーダーを作成しました。シェーダーはシェーダー ビルダーではうまく機能しますが、メイン プログラムでは機能しません。画面はすべて黒のままです。
セットアップは次のとおりです。
そして、これが基本的に...画面をレンダリングする「画面のレンダリング」機能です。
最後にシェーダーです。
このシェーダーで画面をすべて赤くすることができるので、シェーダーのロードと使用は機能します
シェーダーに構文エラーが含まれている場合、LoadShader 関数などからエラー メッセージが表示されます。シェーダーの使用を削除すると、すべて正常に動作します。
問題は、「テクスチャを均一なパラメータとして渡す」ことにあると思います。しかし、これらは openGL を使用した最初のステップであり、何も確信が持てません。
opengl - Fragment Shader Eye-Space スケーリングされていない深度座標
GLSL フラグメント シェーダーで、シーン内のオブジェクトまでのスケーリングされていない (フロント クリッピング プレーンからの実際の距離) 距離を使用しようとしています。gl_FragCoord.z の値が予想よりも小さいです。私の頂点シェーダーでは、ftransform() を使用して gl_Position を設定します。値が 15 から 20 の間であると予想しているときに、2 から 3 の間の値が表示されます。
実際の目の空間深度を取得するにはどうすればよいですか? ありがとう!
opengl - 頂点シェーダーを使用して球のバウンディングクワッドを計算します
グラフィックペーパーからアルゴリズムを実装しようとしていますが、アルゴリズムの一部は、既知の半径の球をバッファーにレンダリングしています。彼らは、頂点シェーダーで位置とサイズを計算し、フラグメントシェーダーで適切なシェーディングを行うことによって、球をレンダリングすると言います。
彼らが実際にこれをどのように行ったかについての推測はありますか?位置と半径はワールド座標で知られており、投影は遠近法です。それは球が円として投影されることを意味しますか?
opengl - フラグメントの現在の色を取得するにはどうすればよいですか?
私は GLSL のシェーダーについて頭を悩ませようとしています。いくつかの有用なリソースとチュートリアルを見つけましたが、基本的で些細であるべき何かの壁にぶつかり続けています。現在のフラグメント?
と言って最終的な色を設定しますgl_FragColor = whatever
が、どうやらそれは出力専用の値です。計算を実行できるように、入力の元の色をどのように取得しますか? それはどこかの変数にある必要がありますが、その名前を知っている人がいるとしたら、これまでに出くわしたチュートリアルやドキュメントに記録されていないようで、私を壁に追いやっています.
c++ - OpenGL ステンシル テストは、フラグメント プログラムの実行前または実行後に行われますか?
すべての描画を効果的に無効に設定glStencilFunc( GL_NEVER, . . . )
し、[シェーダーにバインドされた] プログラムを実行すると、フラグメント シェーダーを実行するよりもパフォーマンスが向上しません。ステンシル テストはフラグメント プログラムの前に行われたと思いました。そうではありませんか、少なくとも保証されていませんか?gl_FragColor に定数を書き込むだけのフラグメント シェーダーに置き換えると、FPS が高くなります。
opengl - フラグメント シェーダーを使用したブロック フィルター
私はApple の OpenGL Shader Builder (Nvidia の fx composer に似たツールですが、より単純なツール) を使用してこのチュートリアルに従っていました。
フィルターを簡単に適用できましたが、正しく機能したかどうかはわかりません (もしそうなら、どうすれば出力を改善できますか)。たとえば、ぼかしフィルター: OpenGL 自体がテクスチャに対して何らかの画像処理を行うため、元の画像よりも高い解像度で表示される場合、OpenGL によって既にぼかしられています。次に、ぼやけた部分は処理されていない部分よりも明るいです。これは意味がないと思います。これは、直接の近隣からピクセルを取得するだけだからです。これは、
よくわかりません:ピクセルは浮動小数点値を使用してインデックス付けされていますか??
ぼやけた画像 http://img218.imageshack.us/img218/6468/blurzt.png
編集:使用した正確なコードを添付するのを忘れました:
フラグメントシェーダー
頂点シェーダー