【问题标题】:Is triangle rasterization possible without baryzentric coordinates?没有重心坐标可以进行三角形光栅化吗?
【发布时间】:2017-01-15 21:33:55
【问题描述】:

我只是在 GPU (GLSL) 上规划一个三角形光栅化器,我遇到了一种算法,它可以从光栅化中移除重心坐标(这对计算来说非常昂贵)。

给定边为 abc 的三角形 ABC 和线性方程 f。 在第一步中,我检查每个边 abc 是否与 f 相交,(三角形已经投影在 R² 中) 然后我从 abc 的线性方程中获取因子(每个边都是一个线性方程),并使用 R³ 中的这个参数来确定一个新方程,该方程将三角形两个不同边上的两个交点连接起来。 所以现在我可以逐行填充我的三角形(交叉点之间的像素被填充)。 基于 R³(交叉点)中的线性方程,我现在可以确定每个像素的 R³ cooeds,因此我有一个深度值。

我知道这有点复杂,所以如果您有任何疑问,请问我。

那么您认为这种方式可行吗?如果可以,它会更快吗? 如果我忘记了什么或者我做错了,请告诉我。 如果您有任何优化想法或其他方面,请告诉我。

【问题讨论】:

  • "barycentric coords (这对 copute 来说非常昂贵)" ... 从什么时候开始的?
  • "如果是,iit 是否更快" 是否比什么更快?
  • 计算三角形 ABC 中点 P 的重心坐标非常昂贵,我有大约 36*3+2 的计算,如果有更快的方法,只需添加评论。
  • 没那么贵。成本只是内部循环中每个像素的一个加法。屏幕空间中三角形上的渐变是线性的。三角形内 (x, y) 点处的任何值与其邻域具有线性对应关系:e(x + N, y) - e(x + 0, y) 可以表示为 constant_over_x * N。在 y 方向上的工作方式相同.如果您使用重心作为边缘函数,它甚至更便宜,因此您可以通过使用它和重心进行点积来解决任何梯度。

标签: math rendering rasterizing


【解决方案1】:

我发现它有点快,但我会遇到一些纹理问题,并且加法计算会减慢整个过程,所以我想我会使用重心坐标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 2022-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多