【发布时间】:2015-08-13 05:36:13
【问题描述】:
我正在尝试在 GLSL 中编写一个函数,该函数将带符号的距离返回到一个矩形。矩形是轴对齐的。我觉得有点卡住了;我只是想不通我需要做些什么才能让它发挥作用。
我想出的最好的是:
float sdAxisAlignedRect(vec2 uv, vec2 tl, vec2 br)
{
// signed distances for x and y. these work fine.
float dx = max(tl.x - uv.x, uv.x - br.x);
float dy = max(tl.y - uv.y, uv.y - br.y);
dx = max(0.,dx);
dy = max(0.,dy);
return sqrt(dx*dx+dy*dy);
}
这会产生一个看起来像这样的矩形:
线条显示与矩形的距离。它工作正常,但仅适用于矩形外的距离。矩形内的距离是静态的0.。
如何使用统一公式获得矩形内的准确距离?
【问题讨论】:
标签: geometry glsl shader euclidean-distance