繁体   English   中英

片段着色器 - 画一条线?

[英]Fragment shader - drawing a line?

我对如何使用片段着色器绘制具有特定宽度(或多行)的线感兴趣。 我偶然发现这篇文章似乎在解释它。

我所面临的挑战是理解它背后的逻辑。

几个问题:

  1. 我在这个例子中的坐标空间是(0.0-1.0,0.0-1.0),对吗?
  2. 如果是这样,“uv”变量的目的是什么。 由于厚度为500,“uv”变量将非常小。 因此从它到pont 1和2的距离(存储在a和b变量中)?
  3. 最后,h变量背后的逻辑是什么?

我将尝试逐一回答您的所有问题:

1)是的,这实际上是正确的。

2)在3d计算机图形中常见的是表示坐标(在某些边界内),浮点值在0和1之间(或在-1和1之间)。 首先,这使得很容易判断给定值是否超过所述边界,并且抽象出“像素”是离散图像单元的概念; 此外,这种常见的做法几乎可以在其他任何地方找到(想想设备坐标或纹理坐标)

不要害怕与你合作的价值不到一个; 事实上,在计算机图形学中,你通常会处理浮点算术,而FLOAT类型则非常善于在“1”点附近表达Real值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM