Кіріспе
Математикада және оның қолданбаларында белгілі қашықтық функциясы (немесе бағдарланған қашықтық функциясы) - берілген x нүктесінің метрикалық кеңістікте Ω жиынның шекарасына ортогональдық қашықтығы, белгісі 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 сәулелік маршы әдісі және компьютерлік көруде қолданылады. SDF 2000 жылдардың ортасынан бастап, әдетте, сәулелік шеру контекстінде нақты уақыт реендерісінде объект геометриясын сипаттау үшін пайдаланылды. 2007 жылы Valve SDF-ті үлкен пиксельдік (немесе жоғары DPI) тегіс қаріптерді GPU жеделдетуімен өз ойындарында көрсету үшін қолданады. Valve әдісі (толық) векторлық кеңістікте мәселені шешудің есептеу күрделілігін болдырмау үшін растрлық кеңістікте жұмыс істейтіндіктен, ол мүлдем дұрыс емес. Аударма мәтіні жиі өткір бұрыштарында жоғалады. 2014 жылы Бехдад Эсфахбод жетілдірілген әдісті ұсынды. Behdad's GLyphy шрифтінің Безиер қисықтарын доғалық сплиндармен жуықтап, желіге негізделген дискреттеу техникасымен (өте алыс нүктелерді алып тастайды) шынайы уақытта жұмыс істеуге жеделдетеді. SDF-тің өзгертілген нұсқасы бірнеше нысанды көрсету кезінде пикселдердің бір-біріне ену қателігін азайту үшін жоғалту функциясы ретінде енгізілді. Атап айтқанда, егер объектке жатпайтын пикселдер объектінің сыртында орналасса, айыппұл салынбайды; егер ол болса, объектінің ішіндегі қашықтығына пропорционалды оң мән беріледі. 2020 жылы FOSS ойын қозғалтқышы Godot 4.0 SDF негізделген нақты уақыт жаһандық жарықтандыруды (SDFGI) алды, бұл көбірек реалистикалық воксельдік ГИ мен пісірілген ГИ арасындағы компромиске айналды. Оның негізгі артықшылығы - оны шексіз кеңістікке қолдануға болады, бұл әзірлеушілерге оны ашық әлемдегі ойындар үшін пайдалануға мүмкіндік береді. 2023 жылы барлық UI элементтерін GPU-ны қолдана отырып, көптеген бөліктерді SDF-ті қолдана отырып, "GPUI" UI фреймворкі шығарылды. Автор 120 кадр/сек жылдамдықпен түсіретін Zed код редакторы шығарды деп мәлімдейді. Бұл жұмыста Иниго Куильздің SDF-дегі геометриялық примитивтер тізімі, Эван Уоллес (Figma-ның негізін қалаушы) SDF-дегі гауссиандық бұзылу және жаңа дөңгеленген тікбұрышты SDF қолданылады.