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

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

opengl - 頂点シェーダーとフラグメントシェーダーの両方でのgl_Colorとgl_FrontColorの関係は何ですか

パススルー頂点シェーダーとフラグメントシェーダーがあります。

頂点シェーダー

フラグメントシェーダー

それらは空のレンダリングを生成します(glClearBufferのように背景色ではなく黒)。

頂点シェーダーを変更してgl_FrontColorをgl_Colorに設定すると、そのままのOpenGlバッファーがレンダリングされます...パススルーシェーダーの予想される動作です。

混乱しています。頂点シェーダーのgl_FrontColorを設定すると、フラグメント1のgl_Colorの値がどのように変わるのでしょうか。私が欠けているものは何ですか?

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

opengl - この GLSL Vertex Shader がコンパイルされないのはなぜですか?

OpenGL を使用して独自のシェーダーを作成していますが、このシェーダーがコンパイルされない理由がわかりません。他の誰かがそれを見ることができますか?

頂点として渡すのは、次の形式の 2 つの float (バイト単位で区切られたもの) です。

そして、これは私のシェーダーです:

さらに情報が必要な場合は、喜んで対応させていただきます。

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

opengl-es - 頂点シェーダーを使用して頂点データにユニフォームを掛けるにはどうすればよいですか?

これは私が以前に抱えていた問題から来た質問です。基本的に、プロジェクションマトリックスのスケールコンポーネントを変更して、シェーダーに正投影スケーリングを実装しようとしましたが、それは不可能でした。私が実際にやらなければならなかったのは、ドローを介してシェーダーに「送信」する前に、頂点をスケーリングすることでした。それは魅力のように機能します...

しかし、もちろん、問題は、ソフトウェアでは、シェーダーに渡す前にすべての頂点をスケーリングする責任があるということです。これにより、頂点シェーダーにこれを実行させることが可能かどうか疑問に思います。想像しますが、わかりません。

私がしているのは、(で保持されてfloat vertices[8]いる)4つの頂点すべてを通過して実行すること*= scale;です。もう少し正確にするために、XコンポーネントとYコンポーネントに別々にとを掛けscaleXますscaleY

頂点シェーダーでこれと同じことを行うにはどうすればよいですか?

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

opengl - この正射頂点シェーダが正しい答えを生成しないのはなぜですか?

私の問題は、渡された「translateX」と「translateY」のユニフォームを介してスプライトの中心 X と Y を指定できる、(機能している) 正投影頂点とフラグメント シェーダーのペアがあることです。よく働く。正投影操作に関する限り、すべてが機能します。このシェーダーへの受信ジオメトリは、中心点として 0, 0, 0 に基づいています。

その中心点 (ローカル座標空間の 0, 0, 0) が変換後にどうなるかを把握したいと思います。フラグメント シェーダーでこの情報を知る必要があります。0, 0, 0 でベクトルを作成し、同じ変換を適用できると仮定しました。しかし、私は正しい答えを得ていません。

私の質問: 私は何を間違っていますか? また、何が起こっているのかをデバッグするにはどうすればよいですか? 計算されている値が間違っているに違いないことはわかっていますが、それが何であるかについての洞察はありません。(私のプラットフォームは、OpenGL ES 2.0 iOS 用に開発している OS X 上の Xcode 4.2 です)

ここに私の頂点シェーダーがあります:

編集:私の正射行列が間違っていることに対応して、以下はウィキペディアがオルソ投影について言わなければならないことであり、私の-1は正しく見えます。たとえば、私の場合、私のマットの 4 番目の要素は -((right+left)/(right-left)) である必要があるため、960 の右であり、0 の左である -1 * (960/960) は -1 です。 .

編集:ここで根本的な問題を明らかにした可能性があります -どう思いますか?

ここに画像の説明を入力

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

glsl - [GLSL]ワールド座標のすべての頂点のz値を比較するにはどうすればよいですか?

これは簡単な質問かもしれません。GLSLの初心者として、私はむしろここで質問したいと思います。これで、頂点シェーダーで、次の方法でワールド座標系の位置を取得できます。

問題は、すべての頂点の中でposWorldの最大/最小値を取得できるかどうかです。頂点の深さの範囲を取得できるようにしますが、深さバッファーの範囲は取得できません。

これが不可能な場合、ワールド座標系で近距離/遠距離平面のz値を取得するにはどうすればよいですか?

敬具、

ジャン

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

opengl-es-2.0 - 同じプログラムで複数の頂点シェーダーを使用する

頂点シェーダーを使用して、投影を実装しようとしています。

個別の頂点シェーダーで gl_Position の設定を処理し、別の頂点シェーダーでフラグメント シェーダーに必要な値を設定する方法はありますか?

問題は、最初の頂点シェーダーの main() 関数のみが呼び出されることです。

編集:複数の独立したシェーダーを使用する代わりに、シェーダー ソースを組み合わせることで、機能させる方法を見つけました。これが最善の方法かどうかはわかりませんが、うまく機能しているようです。

main_shader.vsh

transform_2d.vsh

次に、次のように使用します。

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

c++ - この頂点シェーダーは何をしていますか?

私は最近、チームメンバーが数か月前に辞めたまま停滞したプロジェクトを引き継ぎました。スピードを上げようとしているときに、この頂点シェーダーに出くわしましたが、その機能を理解するのに苦労しています。

私がよりよく理解したい行は、次のような行です。

これを説明するドキュメントが見つからないようです。

誰かがこのシェーダーが何をしているのか簡単に説明できますか?

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

graphics - DX9の頂点シェーダーで正しいタイプのテクスチャ座標入力を取得する方法

これがHLSL頂点シェーダー入力の2つのバージョンです

struct VS_INPUTS_0 {float3 Pos:POSITION; float2 Tex0:TEXCOORD0; }

struct VS_INPUTS_1 {float3 Pos:POSITION; float3 Tex0:TEXCOORD0; }

唯一の違いは、Tex0のfloat2とfloat3です。Tex0のタイプがfloat2であるかfloat3であるかを示すために、正しいタイプのTex0を取得するDX9 APIはありますか?

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

opengl-es - glUniform OpenGL ES 2.0を介してシェーダーでオブジェクトを移動する

glUniform **を介して世界でオブジェクトを移動する方法は?

私は試した glUniform3f(_positionSlot, 6.0f, 6.0f, -2.0f);

しかし、私のオブジェクトは動かない。

シェーダー.vs:

リーダー:

編集:

立方体のみ、または正方形のみを描画する場合は、すべて問題ありません。しかし、そのいくつかが同じ位置にレンダリングされているようで、立方体しか見えません。この方法はうまくいかないようです。glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

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

opengl - 頂点シェーダーからテクスチャ座標を渡すGLSL

私が達成しようとしていること:シーンの上にシーンの深度マップを描画する(オブジェクトが近くにあると暗くなり、遠くにあると明るくなるように)

問題:頂点シェーダーからフラグメントシェーダーに正しいテクスチャ座標を渡す方法がわからないようです。

そこで、FBOと、深度マップが描画されるテクスチャを作成しました...自分が何をしていたかが完全にわかっているわけではありませんが、何であれ、機能します。固定機能パイプラインを使用してテクスチャを描画することをテストしましたが、想定どおりのように見えます(つまりデプスマップ)。

しかし、シェーダーで使用しようとしても機能しません...

テクスチャをバインドするrenderメソッドの部分は次のとおりです。

だから...そうですね。多分?テクスチャ7が、私がチェックしていたチュートリアルにあったものだった理由はわかりません...

そして、これが私の頂点シェーダーからの重要なものです:

Aaand、フラグメントシェーダー:

ここで問題となるのは、フラグメントシェーダーがテクスチャに対して受け取る座標が常に(0,0)、つまり左下隅であるということです。ShadowCoord = gl_MultiTexCoord7に変更してみました。これは、テクスチャをスロット番号7に配置することに関係があると考えたためです...しかし、残念ながら、問題は解決しませんでした。(0、0)の色が変わると、適切なピクセル/フラグメントのみの色が変わるのではなく、シーン全体の色も変わります。

そして、それは私がいくつかの洞察を得ることを望んでいることです...正しい座標を渡す方法(テクスチャの角が私の画面の角と同じ座標になりたいです)。はい、これは初心者の質問です...しかし、私はOrange Bookを調べていました。問題は、GLSL側では優れているということですが、OpenGL側では、次のような例が大幅に不足しています。私は本当に使うことができました...