問題タブ [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.
cg - CPU で Cg 頂点/フラグメント シェーダを実行するには?
小さなネットブック (Linux を実行) で Cg を使用して、いくつかの頂点シェーダーとフラグメント シェーダーをいじっています。明らかに、グラフィックス コントローラーのリソース制限に頻繁に到達するので、CPU でシェーダーを実行してテストするだけの良い方法がないか考えていました。D3Dのリフレストみたいな…
ティア
アンディ
opengl - OpenGL レンダリング出力から法線情報を取得する
これをシンプルに保つようにします。
フレーム バッファ出力 (または同様のもの) から、シーンの通常の情報にアクセスする方法が必要です。glGetTexImage と GL_DEPTH_COMPONENT を使用して深度バッファにアクセスできるのと同じ方法です。
通常の情報を RGB カラー スペースで出力するフラグメント シェーダーをセットアップして、レンダリングされたイメージから読み取ることができることはわかっています。しかし、openGL API 内でこれを行う方法があるかどうか疑問に思っています。
リクエストに応じてできる限り明確にします、ありがとう
opengl - OpenGLの深度バッファーをぼかす-フラグメントシェーダーでミップマップレベルにアクセスする方法は?
フラグメントシェーダーでミップマップレベルをぼかしてブレンドすることにより、深度テクスチャをぼかしようとしています。
2つのframbufferオブジェクトがあります
。1)深度renderobjectがアタッチされたカラーframbuffer。
2)デプステクスチャがアタッチされたzフレームバッファ。
シーンをカラーフレームバッファオブジェクトにレンダリングしたら、次に深度バッファオブジェクトにブリットし、それを正常にレンダリングできます(出力はGL_LUMINANCE深度テクスチャです)。
デプスバッファを描画する前に選択することで、任意のミップマップレベルに正常にアクセスできます。たとえば、次のようにミップマップレベル3をレンダリングできます。
別の方法として、texture2D()GLSL関数にバイアスパラメーターを追加するか、texture2DLod()を使用して単一のテクスチャサンプラーで操作したいのですが、0より大きいレベルを選択すると、ミップマップが生成されません:
mipmappingがglBlitFramebuffer()でどのように機能するかはわかりませんが、私の質問は、texture2D / texture2DLodに対して行われた呼び出しが期待される結果をもたらすように、プログラムをセットアップする適切な方法は何ですか?
ありがとう、デニス
opengl - OpenGL テクスチャの問題を悪化させる
テクスチャを VRAM にロードしようとすると問題が発生します。私は Mac OS X で OpenGL を使用しています。色をフラグメント シェーダーに渡すことでレンダリングに成功したジオメトリがあります。ただし、テクスチャを読み込もうとすると、ジオメトリがレンダリングされず、背景色しか表示されません。テクスチャをロードするコードは次のとおりです。
そして、これが私のフラグメントシェーダーコードです:
このコードの一部はおそらく必要ないことはわかっていますが、考えられることはすべて試しています。
ありがとう。
opengl - BlitzMax - png ファイルへの 2D ネオン輝くライン効果の生成
BlitzMax で、スター ウォーズのライトセーバーやレーザービームのような輝くライン エフェクトを作成したいと考えています。リアルタイムである必要はありませんが、TImage オブジェクトに対してのみ行い、後でアニメーションで使用するために PNG に保存することもできます。3D 機能は喜んで使用しますが、これは 2D ゲームで使用するためのものです。
黒/スペースの背景になるので、私の戦略は、色と透明度の高い一連の白いぼやけた線を描き、最終的に中心線のぼやけを減らして白くすることです. 私が描きたいのは、実際にはベジェ曲線です。曲線を描くのは簡単ですが、上記の手法を使用して優れたレーザー/ネオン効果を作成することはできません。そのため、1 ピクセルのベジエ曲線である、よくレンダリングされるものにぼかし効果/シェーダーを使用する方が良いと思います。
私が抱えていた問題は次のとおりです。
- 線が描かれている画面の特定の領域だけにシェーダーを適用します。テクスチャに線を描画し、そのテクスチャをぼかして png を保存する方法があれば、それを聞くのは素晴らしいことです。これを行う方法があるはずですが、適切な要素をまだ連携させることができていません. このようなことに詳しい人からの助けをいただければ幸いです。
- 2D 呼び出しだけを使用すると、理解と再利用が容易になり、有利になる可能性があります。
- 透過性/アルファ要素を保持する PNG を保存する方法を知っておくと非常に便利です。
ps この投稿 (および他の投稿) を確認し、サンプルを動作させ、独自の 5x5 シェーダーを開発しました。しかし、それは 3D であり、2D または特定の領域だけにうまく変換されないように見えるシーン全体のものです。 http://www.blitzbasic.com/Community/posts.php?topic=85263
arrays - int配列をフラグメントシェーダーに渡す
OpenGLESで反復関数をプロットしようとしています。intの配列は、特定のピクセルが反復関数によってヒットされる頻度で更新されています。この密度配列をフラグメントシェーダーに渡し、それを使用して、画面全体をカバーする単純なクワッドに結果をプロットしたいと思います。
私の質問は、この配列をユニフォームとしてシェーダーに直接渡し、 gl_FragCoordを使用して指定された位置の密度を検索することでピクセルを生成できますか?
また
配列を使用して、 GL_LUMINANCEを使用して1つのチャネルでテクスチャを作成し、それをシェーダーに渡す必要がありますか?
arrays - GLSL 均一配列を 1D テクスチャに置き換える方法
Ardor3D の地形システムを SM3.0 ハードウェアで動作させようとしています。
現在の GLSL フラグメント シェーダーは、均一な vec2 配列を使用して、xy 座標の配列をフラグメント シェーダーに渡します。
動的インデックス付き一様配列は SM4.0+ ハードウェアでのみ動作するため、SM3.0 で実行するには、1D float テクスチャに置き換える必要があります。
現在の配列は次のようになります。
uniform vec2 sliceOffset[8];
次のようにアクセスします。
vec2 offset = sliceOffset[int(unit)];
私は OpenGL と GLSL の経験が豊富なので、変換に問題があります。
1D テクスチャを作成します - 幅 = 8 - フォーマット = RGBA32F
テクスチャ用の 1D バッファを作成する
- width = 8 * 4 = 32 float、または 32 * 4 = 32 バイト大
- 次のようにフロート バッファを埋めます。
[x0,y0,0,0,x1,y1,0,0,x2,y2,0,0,x3,y3,0,0,x4,y4,0,0,x5,y5,0,0,x6,y6,0,0,x7,y7,0,0]
テクスチャの 1D サンプラーを作成する
- 最小フィルター = 最も近い、ミップ マップなし
- マグフィルター = 最も近い
- ラップ モード = エッジにクランプ
GLSL では、サンプラーを次のように定義します。
uniform sampler1D sliceOffset;
そしてそれにアクセスします:
しかし、それは壊れています。
私は何を間違っていますか?
opengl-es - フラグメント シェーダーからテクスチャ座標を削除する
頂点シェーダーとフラグメント シェーダーがあり、テクスチャではなくソリッド カラーを表示したいと考えています。
次の頂点シェーダーとフラグメント シェーダーがあります。
テクスチャを表示しないようにフラグメント シェーダを変更するにはどうすればよいですか? (私の英語でごめんなさい)。
ありがとう。
glsl - シェーダーフレームバッファーのリードバック
新しいシェーダーモデルで、ターゲットフレームバッファーからピクセル値を読み戻すサポートがあるかどうか疑問に思いました。これは、描画パイプラインの後の(プログラム不可能な)段階ですでに行われていると思います。これにより、この機能がプログラム可能なパイプラインに追加された可能性があります。
テクスチャにバインドされたフレームバッファに描画してから、このテクスチャをシェーダーに送信できることを認識しています。同じ機能を実現するためのよりエレガントな方法を望んでいました。
opengl - 頂点シェーダーとフラグメントシェーダー
Cgに関するチュートリアルをいくつか読んだことがありますが、はっきりしないことが1つあります。頂点シェーダーとフラグメントシェーダーの違いは正確には何ですか?そして、どのような状況で一方が他方よりも適していますか?