5

フラグメント シェーダーを使用して、特定の幅の線 (または複数の線) を描画する方法に興味がありました。それを説明しているように見えるこの投稿に出くわしました。

私が抱えている課題は、その背後にあるロジックを理解することです。

いくつかの質問:

  1. この例の座標空間は (0.0-1.0,0.0-1.0) ですよね?
  2. もしそうなら、「uv」変数の目的は何ですか。厚さは 500 であるため、「uv」変数は非常に小さくなります。したがって、そこから pont 1 および 2 までの距離 (変数 a および b に格納されます)?
  3. 最後に、h 変数の背後にあるロジックは何ですか?
4

1 に答える 1

2

私はあなたのすべての質問に一つずつ答えようとします:

1) はい、これは実際に正しいです。

2) 3D コンピュータ グラフィックスでは、(特定の境界内の) 座標を 0 から 1 (または -1 から 1) の浮動小数点値で表現するのが一般的です。まず第一に、これにより、特定の値が上記の境界を超えるかどうかを判断することが非常に簡単になり、「ピクセル」が個別の画像単位であるという概念から抽象化されます。さらに、この一般的な方法は、他のほとんどの場所で見つけることができます (デバイス座標またはテクスチャ座標を考えてください)。

扱う値が 1 未満であることを恐れないでください。実際、コンピューター グラフィックスでは通常、浮動小数点演算を扱います。FLOAT 型は、"1" 点の周りの実数値の線を表現するのに非常に適しています。

3) h の式は、平方根部分と 2/c 係数の 2 つの部分で構成されます。平方根の部分は、ショールの数学のクラスでよく知られているはずです。これは、三角形 (a、b、c の間) の面積のヘロン公式です。2/c は、上記の三角形の高さを抽出します。これは h に格納され、点 uv と三角形の「グラウンド ライン」の間の距離でもあります。次に、この距離を使用して、線 p1-p2 に対して uv がどこにあるかを決定します。

于 2013-10-21T17:30:01.227 に答える