問題タブ [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.
actionscript-3 - 低レベルのAGALでコーディングしているときに、テクスチャごとに新しいProgram3Dを作成する必要がありますか?
例えば...
複数のテクスチャ(基本的には一意のスプライト)を必要とするアプリケーションを開発している場合、アプリケーションで使用する個々のテクスチャごとに新しい(とを使用してcontext3D.createProgram();
)を呼び出してアセンブルする必要がありますか?Program3D
VertexShaderAssembler
FragmentShaderAssembler
Program3D
通常、エンジン内でどのように機能しますか?1つのプログラムですべてを実行しますか、それともテクスチャ、モデル、マップごとに1つのプログラムを使用しますか?
そして、各フレーム()ではなく、Program3D
初期化時間()中に1回だけ作成する必要があると仮定するのは正しいですか?Event.ADDED_TO_STAGE
Event.ENTER_FRAME
textures - フラグメントシェーダーにデータを渡すための均一な配列またはテクスチャ?
フラグメントシェーダーに渡す浮動小数点データがたくさんある場合は、均一な配列またはテクスチャを使用することをお勧めしますか?均一な配列がそれを行うための適切な方法のようですが、配列のサイズは制限されているようです(特に私が働いているWebGLでは)何千ものオブジェクトに関する情報を(レイトレーシングの目的で)送信したい場合はデータを渡すためにテクスチャを使用する代わりの現実的な方法はありますか?これは悪いことですか、それとも良いことですか?
webgl - webgl の頂点およびフラグメント シェーダー値
私は webgl を初めて使用します。頂点シェーダーとフラグメント シェーダーの値がどのように生成されるのか疑問に思っていました。私はいくつかのサンプルを見ていましたが、これらの値の巨大な配列を見ることができました.これらの値がどのように生成されているかを理解できませんでした.これらの値を生成するツールはありますか. 何か不足していますか?これらのシェーダー値を作成する方法について説明したチュートリアルはありませんでした。これについての助けをいただければ幸いです。
opengl - GLSL Gif ディザ効果: 最適化
基本的にカラーアルファを読み取り、それをピクセル全体のディザリング効果に変換するフラグメントシェーダーがあります。
ただし、すべての mod と if ステートメントを使用すると、プロセッサにかなり負荷がかかります。以下のコードを最適化するための推奨事項はありますか?
フィードバックに基づく解決策は次のとおりです。
shader - Cgフラグメントシェーダーのピクセル位置を変更/置換するにはどうすればよいですか?
Cgを使用してフラグメント(ピクセル)シェーダーのピクセル座標を変更することは可能ですか?このような機能は第2/3世代のシェーダーで利用できるようになったと思いますが、正確にどのプロファイルを使用するのか、またはその方法はわかりません。
opengl-es-2.0 - 複数のプログラムで1つの頂点/フラグメントシェーダーを使用する
OpenGL ES 2.0では、コンパイルされた頂点/フラグメントシェーダーを複数のリンクされたプログラムで使用できますか?
たとえば、1つのコンパイル済み頂点シェーダーと5つのコンパイル済みフラグメントシェーダーがあるとします。5つの異なるプログラム(vsh1 + fsh1、vsh1 + fsh2など)を作成できますか?
私の知る限り、これは可能であるはずですが、質問するのは決して痛いことではありません。
ありがとう
c++ - GLSL4.10テクスチャマッピング
GLSLバージョン4.10を使用してテクスチャマッピングを行う方法を理解しようとしています。私はGLSLにかなり慣れていないので、シェーダーを使用してsin(time)に基づいて色がフェードする三角形のレンダリングを今日取得できてうれしかったです。今、私は単一のテクスチャでシェーダーを使用することに興味があります。
多くのチュートリアルやStackOverflowの回答でさえ、gl_MultiTexCoord0の使用を提案しています。ただし、これはGLSL 1.30以降非推奨になり、最新バージョンは4.20になりました。私のグラフィックカードは4.20をサポートしていません。そのため、4.10を使用しようとしています。
テクスチャを適切に生成してバインドしていることはわかっています。固定関数パイプラインを使用しているときにハイトマップが完全にレンダリングされ、テクスチャではなく色でうまくレンダリングされるため、適切な頂点座標とテクスチャ座標があります。
これが私のGLSLシェーダーと私のC++描画コードの一部です:
私も疑わしいのは、頂点シェーダーではタッチしていないので、テクスチャコーディネイトをフラグメントシェーダーに変化として渡す必要があるかどうかです。また、そこから補間されたtexcoordsをどのように取得するのかわかりません。補間された座標ではなく、0.fまたは1.fを取得するようです。シェーダーについては、それがどのように機能するかを理解するのに十分な知識がありません。誰かが私を啓発することができれば、私はわくわくするでしょう!
編集1:
@Bahbar:申し訳ありませんが、それはタイプミスでした。あるマシンでコードを入力し、別のマシンでコードを読み取っています。私が言ったように、それはすべて固定機能パイプラインで機能しました。glEnableClientStateとgl[Vertex| TexCoord] Pointerは非推奨ですが、シェーダーで動作するはずですよね?glVertexAttribPointerではなくglVertexPointerは、テクスチャではなく色で機能しました。また、glBindAttribLocation(0の位置と1のtexcoord)を使用しています。
私がまだglVertexPointerを使用している理由は、一度に1つのことを非推奨にしようとしているからです。
opengl - GLSLフラグメントシェーダーでのテクスチャからオブジェクトへのプレーンマッピング
フラグメントシェーダーでのテクスチャのマッピングに問題があります。ウィンドウと同じサイズのテクスチャがあり(前のパスでレンダリングされたシーンの一部を使用していますが、以下の例ではレンガのテクスチャを使用しています)、2Dのようにマッピングする必要があります。どういうわけか可能ですか?さまざまな方法を試しましたが、何も機能しませんでした。
フラグメントシェーダーはどのように見えるべきか教えていただけますか?何かアドバイスがあれば助かります。ありがとうございました!
linker - 関数呼び出しを追加すると、WebGLフラグメントシェーダーがリンクに失敗する
レイトレーシングを行うために使用しているWebGLフラグメントシェーダーがあります。テクスチャを使用して球と三角形のデータを渡します。これまでのところ、2つの球と3つの三角形が機能しています。4番目の三角形との交差をチェックする呼び出しを追加すると、シェーダーはリンクせず、呼び出しgetProgramInfoLog()
はnullを返します。
フラグメントシェーダーが大きくなりすぎている可能性がありますか?または、別の原因を探す必要がありますか?問題がどこにあるかをどのように判断しますか?
これがコードスニペットです。いずれかの呼び出しをコメントアウトするcheckTriangleIntersection
と、シェーダーが正常にリンクされます。
インデックス以外はすべて同じなので、コード自体に問題はないと思いましたが、なんらかの制限がありますか?
追加の関数呼び出しを追加する前に30FPSを超えています。追加の呼び出しを追加しても、頂点シェーダーとfragemntシェーダーの両方が正常にコンパイルされます。