問題タブ [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-es - gl_Colorは、WebGLで宣言されていない識別子です
次のコードスニペットがあるhttp://www.swiftless.com/tutorials/glsl/3_glcolor.htmlを見ています。
WebGLでgl_Colorを使用しようとしました。gl_Colorが宣言されていない識別子であるというエラーが発生しました。
私は何を間違えましたか?
よろしくお願いします。
shader - WebGLフラグメントシェーダーの奇妙な浮動小数点演算
簡単なWebGLプログラムを書いています。シェーダープログラムで奇妙な動作に悩まされています:
条件( 1.01 * 2.0 > 1.0 )
はtrueと評価されますが、条件( 0.99 * 2.0 > 1.0 )
はflaseと評価されます
1.0
他の何かよりも小さい数を掛けるたびに、私はより少ない数を得る1.0
なんでそうなの?
[編集]
フラグメントシェーダーを使用して、ウィンドウレベルとウィンドウの高さ(線形ランプ)を使用して16ビットの符号なし整数データを8ビットのビットマップに変更し、画面に表示しています。16ビットデータを内部形式としてWebGL(AFAIK)に直接保存する方法がないためUint8Array(width*height*3)
、最初のバイトをRチャネルに保存し、2番目をBチャネルに保存してgl.RGB
、gl.UNSIGNED_BYTE
テクスチャに配置することにしました(おそらくLUMINESCANCE_ALPHA
より良いでしょう)。
シェーダーでは、単語形式のバイトを再構築し、レベリングを行います。シェーダープログラム:
ご覧のとおり、愚かな線がありますif( 1.0*2.0 > 1.1 ) gl_FragData[0] = vec4(1,0,0,1);
。浮動小数点演算をテストする場所です。この例では、画像全体が赤ですが、条件がである場合0.999999999*2.0 > 1.1
、答えは偽です。リサンプリングされた16ビット画像に奇妙なアーティファクトが含まれていると、何かを疑うようになりました。
Chrome8とFirefox4でテストしました。浮動小数点演算について何も理解していないと思います。
android - 頂点シェーダーとフラグメント シェーダーから法線を削除する
C++ で OpenGL ES 2.0 を使用して Android 2.2 アプリケーションを開発しています。
ここに私の頂点とフラグメントシェーダーがあります:
私は OpenGL ES 2.0 の開発に非常に慣れていません。
レンダリングにライトが必要な場合は、頂点シェーダーとフラグメント シェーダーに複雑な変更を加える必要があると誰かに言われました。だから、私はそれを行う方法はありません。法線は必要ありません。
私の質問は:
法線を使用しないように頂点シェーダーとフラグメント シェーダーを変更するにはどうすればよいですか?
ありがとう
graphics - マネージドDirectX後処理フラグメントシェーダーレンダリングの問題
私はManagedDirectX 2.0とC#を使用しており、RenderToSurfaceヘルパークラスを使用して画面をテクスチャにレンダリングすることによって構築されたテクスチャにフラグメントシェーダーを適用しようとしています。
これを行うために使用しているコードは次のとおりです。
これは、RenderTextureと呼ばれるTextureオブジェクトにアタッチされているSurfaceRenderSurfaceにレンダリングされます。
次に、次のコードを呼び出してサーフェスを画面にレンダリングし、レンダリングされたテクスチャに2番目のシェーダー「PostProc」を適用します。このシェーダーは、ピクセルごとにカラー値を組み合わせて、シーンをグレースケールに変換します。私はここのチュートリアルに従っています:http://rbwhitaker.wikidot.com/post-processing-effects
ただし、私が見るのは、テクスチャにレンダリングされた元のレンダリングされたシーンだけですが、2番目のシェーダーによって変更されていません。
重要な場合に備えて、FXファイルを以下に示します。
opengl - GLSL:ピクセルのx、y、zの世界位置を取得するには?
世界のどの xyz 位置に応じて色を調整したいのですか。
フラグメントシェーダーでこれを試しました:
カメラの角度/位置によって色が変わるようですが、カメラの位置/角度から座標を独立させるにはどうすればよいですか?
これが私の頂点シェーダーです。
Edit2:タイトルを変更したので、画面座標ではなく、世界座標が必要です!
Edit3:完全なコードを追加しました
opengl-es - GLSLでテクスチャと色を一緒に?
OpenGL ES 2.0 で OpenGL ES 1.1 と同様の結果を得る方法がわかりません。実際に Sampler2D を使用して (テクスチャとアルファ チャネルをフレーム バッファにブレンドするため)、色も設定したいと考えています。テクスチャは色でペイントする必要があります-OpenGL ES 1.1のように、私のFragmentShaderは次のようになります:
しかし、「+ colorVarying」の部分は私のアルファチャンネルを黒で破壊し (AlphaValue が 0 の場合、colorVarying も追加するため)、奇妙なグラデーション効果を生み出します...固定関数パイプラインでテクスチャとカラーチャンネルをどのように組み合わせますか? glColor4f の私の代替品は次のとおりです。
そして、私は glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); を使用しています。これが何らかの形で関連している場合...
色 1.0、0.0、1.0、1.0 については、次のようになります。
そして、私は取得したい:
これを達成するためのアイデアはありますか?どんな助けでも大歓迎です。
ipad - フラグメント シェーダーのテクスチャ マッピングが 3.2.x を実行している iPad でサポートされているかどうかを誰か確認できますか?
シミュレーターでは 3.2 でテストしても問題はありませんが、デバイスではテクスチャが表示されません。4.2 では、シミュレーターとデバイスの両方で正常に動作します。
私は問題を特定しようとしており、3.2.x (iPad のみ) の特定の機能にバグがあるかどうか誰かが確認できるかどうか疑問に思っています。何が間違っているのかについて他に考えがある場合は、お知らせください。私は OpenGL の経験があまりありません。
iphone - アルファのみ (A8) の pixelFormat に切り替えると、フラグメント シェーダーがアルファ情報を読み取れないのはなぜですか?
OpenGL ES 2.0 を使用する iOS アプリを作成しています。私は OpenGL に少し慣れていないので、これは些細な間違いかもしれません。
アルファ チャネルを使用して、あるテクスチャを別のテクスチャでマスキングするための単純なシェーダを作成しました。マスク テクスチャは次のように初期化されます。
glGenTextures(1, &name); glBindTexture(GL_TEXTURE_2D、名前);
glTexParameterf(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glGenFramebuffersOES(1, &buffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, バッファ);
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, 名前, 0);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
次に (後で) マスク テクスチャに何かを描画し、マスク テクスチャをこのフラグメント シェーダにリンクして別のテクスチャに適用します。
これは、私が望む方法を正確にレンダリングします。ただし、マスク テクスチャのバッファをバインドする際のオーバーヘッド (かなりの量のようです) を減らすために、マスク テクスチャに 8 ビットのアルファのみのピクセル フォーマットを使用しようとしています。しかし、RGBA セットアップからコードを変更すると、次のようになります。
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
...アルファのみに:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 1024, 768, 0, GL_ALPHA, GL_UNSIGNED_BYTE, バッファ);
...フラグメントシェーダーは何も描画できません。そもそもマスク テクスチャのアルファしか使用していないので、引き続き機能するはずです。なぜそうしないのか、何か考えはありますか?
image-processing - 複数の OpenGL フラグメント シェーダーを組み合わせる
OpenGL ES を使用したパフォーマンスのために、一部の画像処理作業を OpenGL に移植したいと考えています。非常に単純なしきい値処理アルゴリズムが用意されていますが、画像に追加のフィルター (コントラストなど) を組み合わせたいと考えています。
最初に考えたのは、複数のフラグメント シェーダーを使用してこれを完成させることです。ただし、これをかなり迅速に行いたいので、これにより多くの状態が変化しますか? 私が読んだ唯一の方法は、テクスチャで作業してから「プログラムを使用」を複数回呼び出すことによってこれを行うことです。
これを行うより効率的な方法はありますか?理想的には、ステップの一部としてコントラスト ストレッチとヒストグラム バランスを実行したいと考えています。
これを単一のシェーダーに組み合わせることができない限り、FBO はここで機能しますか?
私はOpenGLに少し慣れていません(わからない場合に備えて)。
ありがとう!
サイモン
glsl - GLSL 正規化マウス入力
私はこのシェーダーの世界では初めてで、何かを試してみたいだけです。私は次のことをしたい:
マウスの周りの特定の半径で、背景のテクスチャを 10° 回転させる必要があります。マウス座標は絶対値であるため、それらを操作するにはそれらを正規化する必要があるため、テクスチャ内の適切なスペースを指定できます。しかし、どういうわけかこれは正しく機能しません。回転は機能しますが、少しオフセットして色情報を取得します。
問題はだと思いますが、normalize(mouse)
これを正しく行う方法がわかりません。シェーダーは次のとおりです。
私はこれを行うためにシンダーを使用しています。
ありがとうございました。