問題タブ [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.
opengl - OpenGL 頂点シェーダーの w とは何ですか? なぜ w で割るのですか?
したがって、clipCoord
標準の固定パイプライン変換を行っているだけです。で割る理由w
と、これから何を得るのですか?
fragment-shader - OpenGL 拡散照明シェーダーのバグ?
Orange book のセクション 16.2 には、拡散照明の実装が次のようにリストされています。
ただし、これを実行すると、カメラを動かすと照明が変わります。一方、私が変わるときは
to vec3 N = normalize(gl_Normal);
固定パイプラインのように機能する拡散照明が得られます。
この gl_NormalMatrix とは何ですか?それを削除するとどうなりますか?...これはオレンジブックのバグですか?それとも OpenGl コードを不適切に設定していますか?
[完全を期すために、フラグメントシェーダーは色をコピーするだけです]
opengl - 頂点シェーダーで頂点の色を変更する
gl_Position が頂点の位置を変更するのと同じように、GLSL 頂点シェーダー プログラムを使用して単一の頂点の色を設定することは可能ですか?
opengl - 頂点シェーダーを使用して球のバウンディングクワッドを計算します
グラフィックペーパーからアルゴリズムを実装しようとしていますが、アルゴリズムの一部は、既知の半径の球をバッファーにレンダリングしています。彼らは、頂点シェーダーで位置とサイズを計算し、フラグメントシェーダーで適切なシェーディングを行うことによって、球をレンダリングすると言います。
彼らが実際にこれをどのように行ったかについての推測はありますか?位置と半径はワールド座標で知られており、投影は遠近法です。それは球が円として投影されることを意味しますか?
cg - CPU で Cg 頂点/フラグメント シェーダを実行するには?
小さなネットブック (Linux を実行) で Cg を使用して、いくつかの頂点シェーダーとフラグメント シェーダーをいじっています。明らかに、グラフィックス コントローラーのリソース制限に頻繁に到達するので、CPU でシェーダーを実行してテストするだけの良い方法がないか考えていました。D3Dのリフレストみたいな…
ティア
アンディ
xna - HLSL: コンパイル時に一定のレジスタ制限を強制する
HLSL で、コンパイラが使用する定数レジスタの数を制限する方法はありますか?
具体的には、次のようなものがある場合:
vs_2_0 頂点シェーダーでは、コンパイラーは 256 を超える定数レジスターを使用して効果をうまく生成します。しかし、2.0 頂点シェーダーは 256 個の定数レジスターへのアクセスが保証されているだけなので、エフェクトを使用しようとすると、実行時にあいまいで GPU に依存する方法で失敗します。コンパイル時に失敗した方がいいです。
この問題は、コンパイラ自体が、私が求めているものの上に、舞台裏で定数レジスタを割り当てるため、特に厄介です。アセンブリをチェックして、制限を超えているかどうかを確認する必要があります。
理想的には、これを HLSL で実行したいと考えています (XNA コンテンツ パイプラインを使用しています) が、コンパイラに渡すことができるフラグがあれば、それも興味深いものです。
xna - HLSL: unaligned/packed float へのインデックス
私はいくつかのインスタンス化を行う頂点シェーダー (2.0) を持っています - 各頂点は配列へのインデックスを指定します。
次のような配列がある場合:
コンパイラは、100 個の定数レジスタを割り当てます。各定数レジスタは であるfloat4
ため、必要なスペースの 4 倍を割り当てています。
定数レジスタを 25 個だけ割り当て、それぞれに 4 つの値を格納する方法が必要です。
理想的には、CPU と GPU の両方で のように見えるメソッドが必要float[]
です (現在、 を呼び出しEffectParamter.SetValue(Single[])
ており、XNA を使用しています)。ただし、手動でのパックとアンパックfloat4[]
もオプションです。
また、これを行うことによるパフォーマンスへの影響は何ですか? それは実際にそれだけの価値がありますか?(私にとっては、これにより 4 ~ 5 回ごとに約 1 つのバッチが節約されます)。
opengl-es - gl_Position の x 座標をゼロに設定すると、WebGL/GLSL 頂点シェーダーが 9 ポイントを 1 つのポイントに折りたたむ
x 座標がゼロの頂点バッファーをレンダリングすると、次の 2 つのシェーダーが異なる結果を生成する理由がわかりません。
初め:
2番:
最初の結果は、9 つのドットの行です。2 番目の結果は 1 つのドットです。
次の頂点配列を GL_POINTS として描画しています。
VBO 準備呼び出しは次のとおりです。
ドローコールは次のとおりです。
directx - DirectX11:ComputeShaderからVertexShaderにデータを渡しますか?
Compute Shaderを使用してレンダリングされるジオメトリデータにフィルターを適用し、その結果をVertex Shaderの入力バッファーとして使用することは可能ですか?これにより、データを読み戻す手間(&時間)を節約できます。
どんな助けでも大歓迎です。
glsl - GLSL の texture1d() が vec4 を返すのはなぜですか?
頂点シェーダーで 1D 配列をルックアップ テーブルとして使用しようとしています。
texture1D(tex,gl_TexCoord[0].s);
それはvec4を返しますか?つまり、それが何をするかはわかっていますが、4 つの値は何を表しているのでしょうか? 私が欲しいのは、座標に基づくテクスチャからの 1 つの値だけです。