Введение
Расстояние от точки до границы множества В математике и ее приложениях, функция расстояния с знаком (или функция ориентированного расстояния) является ортогональным расстоянием от данной точки x до границы множества Ω в метрическом пространстве, при этом знак определяется тем, находится ли x внутри Ω. Функция имеет положительные значения в точках x внутри Ω, она уменьшается по мере приближения к границе Ω, где функция расстояния с знаком равна нулю, и принимает отрицательные значения за пределами Ω. Однако иногда вместо этого используется альтернативная конвенция (т. е. отрицательная внутри Ω и положительная снаружи).
In mathematics and its applications, the signed distance function (or oriented distance function) is the orthogonal distance of a given point x to the boundary of a set Ω in a metric space, with the sign determined by whether or not x is in the interior of Ω. The function has positive values at points x inside Ω, it decreases in value as x approaches the boundary of Ω where the signed distance function is zero, and it takes negative values outside of Ω. However, the alternative convention is also sometimes taken instead (i. e., negative inside Ω and positive outside).
Алгоритмы
Алгоритмы для расчета функции сигнального расстояния включают в себя эффективный метод быстрого движения, метод быстрого промывания и более общий метод установки уровня. Для рендеринга вокселей быстрый алгоритм расчета SDF в геометрии такси использует таблицы суммированной площади.
Приложения
Функции расстояния с сигналом применяются, например, в рендеринге в реальном времени, например, метод SDF Ray Marching и компьютерное зрение. SDF использовался для описания геометрии объекта в режиме реального времени, обычно в контексте raymarching, начиная с середины 2000-х годов. К 2007 году Valve использует SDF для создания гладких шрифтов с большим размером пикселей (или высоким DPI) с ускорением GPU в своих играх. Метод Valve не является совершенным, поскольку он работает в растровом пространстве, чтобы избежать вычислительной сложности решения проблемы в (непрерывном) векторном пространстве. В переводе часто теряются острые углы. В 2014 году Бехдад Эсфахбод представил улучшенный метод. GLyphy Бехдада приближает кривые Безье шрифта с дуговыми линиями, ускоренными методами дискретизации на основе сетки (которая отбирает слишком далекие точки), чтобы работать в режиме реального времени. Модифицированная версия SDF была введена как функция потери, чтобы свести к минимуму ошибку в взаимопроникновении пикселей при рендеринге нескольких объектов. В частности, для любого пикселя, который не принадлежит объекту, если он находится за пределами объекта в рендеринге, не налагается штраф; если это так, налагается положительное значение, пропорциональное его расстоянию внутри объекта. В 2020 году игровой движок FOSS Godot 4.0 получил глобальное освещение в реальном времени на основе SDF (SDFGI), которое стало компромиссом между более реалистичным голосовым и выпеченным GI. Его основное преимущество заключается в том, что он может применяться в бесконечном пространстве, что позволяет разработчикам использовать его для игр с открытым миром. В 2023 году была выпущена структура пользовательского интерфейса "GPUI", чтобы нарисовать все элементы пользовательского интерфейса с использованием графического процессора, многие части с использованием SDF. Автор утверждает, что создал редактор кода ZED, который воспроизводит на 120 кадров в секунду. В работе используется список геометрических примитивов Иниго Куильца в SDF, приближенный гауссов размытие Эвана Уоллеса (соучредителя Figma) в SDF и новый округленный прямоугольник SDF.