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 之间)的浮点值来表示坐标(在某些边界内)是很常见的。首先,这使得确定给定值是否跨越所述边界变得非常容易,并且从“像素”作为离散图像单元的概念中抽象出来;此外,这种常见做法几乎可以在其他任何地方找到(想想设备坐标或纹理坐标)

不要害怕你正在使用的值小于一个;事实上,在计算机图形学中,您通常处理浮点运算,而 FLOAT 类型非常擅长表达“1”点周围的实数值线。

3) h 的公式由两部分组成:平方根部分和 2/c 系数。平方根部分应该在 scholl 数学课上是众所周知的——这是三角形面积(a、b、c 之间)的 Heron 公式。2/c提取所述三角形的高度,存储在h中,也是点uv到三角形“地线”的距离。然后使用该距离来确定 uv 相对于线 p1-p2 的位置。

于 2013-10-21T17:30:01.227 回答