← На главную

Разработчик реализует глобальное освещение в браузере

09.05.2026 19:09 · hackernews

Исследователь изучает возможность реализации глобального освещения в реальном времени прямо в браузере с помощью WebGPU, используя технологию surfels. Этот подход позволяет вычислить сложное косвенное освещение, не привязываясь к экранному разрешению: каждый surfel (поверхностный элемент) — это маленький диск в трёхмерном пространстве с положением, нормалью и радиусом, который независимо хранит данные о свете. Процесс начинается с surfelization, когда обычная геометрия из треугольников превращается в сетку из таких дисков, при этом для оптимизации создаётся сложная пространственная структура типа grid с каскадами разных разрешений. Без неё система медленно работает, но с умной структурой сравнения кандидатов становится быстрым. Далее следует построение дерева BVH через библиотеку three-mesh-bvh, которое помогает отсекать лишние части сцены перед вычислением лучей. Особое внимание уделяется направляемому выборку направлений: старые и стабильные surfels чаще смотрят туда, где много света, а новые — исследуют всё поле равномерно, что позволяет быстро вычислять индикаторы яркости без шума. Чтобы изображение не мерцало, используется мультимасштабный оценщик среднего значения MSME, который лучше балансирует между скоростью отклика и стабильностью по сравнению с простыми экспоненциальными скользящими средними. Главный вызов — устранение световых протечек, когда surfels ошибочно передают свет сквозь стены. Для этого внедряется радиальная карта глубины, хранящая расстояние до геометрии во всех направлениях и использующая моментные тени MSM для создания плавных переходов. Эта система проверяет, не блокирована ли линия обзора перед тем как передать освещение другому элементу, эффективно закрывая отверстия в геометрии. Разработчик также упоминает, что для получения цвета при пересечении луча используется хитрая техника с текстурными массивами, так как стандартная система сшивки текстур WebGPU не всегда подходит для такой задачи.

Читать оригинал →