在片段着色器中绘制线段

时间:2018-02-05 17:22:52

标签: glsl shader fragment-shader

我很难理解下面的代码,想法是在片段着色器中绘制一个简单的片段。我试图分解它但我仍然没有得到???线。 有一个很好的解释会很棒。我在SO或Google上找不到任何东西。

array

原始代码来自TheBookOfShaders.

1 个答案:

答案 0 :(得分:2)

假设线由点a定义,bp是要评估的点,那么pa是从点{a开始的向量1}}将pba中的向量指向a。{/ p>

现在,b等于dot(ba, ba)length(ba) ^ 2是向量pa在您的线上的投影。然后,dot(pa,ba) / length(ba)是在线条长度上标准化的投影。该值夹在0和1之间,因此您的投影将始终位于定义线的点之间。

然后在dot(pa,ba)/dot(ba,ba)length(pa - ba * h)等于ba * h,这是你的点在线上的投影,现在被夹在点a和b之间。减法dot(pa,ba) / length(ba)会生成一个向量,表示您的直线与点pa - ba * h之间的最小距离。使用该矢量的长度并将其与厚度进行比较,您可以确定该点是否落在您想要绘制的线内。

相关问题