The article discusses the Depth of Field (DoF) post-processing effect — a method for simulating optical lens blur in real-time rendering. The thin lens physical model and the concept of the circle of confusion are described. The main DoF implementation algorithms are presented: CoC radius blur and Bokeh DoF.
Keywords : depth of field, circle of confusion, bokeh, blur, post-processing, rendering.
Введение
Глубина резкости — зона пространства, в которой изображение воспринимается достаточно чётким, тогда как объекты за её пределами размыты. В кинематографии и фотографии управление глубиной резкости является важнейшим художественным инструментом: оно направляет взгляд зрителя на главный объект сцены и создаёт ощущение пространственного объёма [1, с. 532]. В реалтаймовой графике DoF реализуется как пост-эффект, применяемый к уже отрендеренному кадру, что позволяет воспроизвести оптический эффект без трассировки лучей через виртуальный объектив. Цель статьи — изложить физические основы эффекта и описать основные алгоритмы его реализации в рендер пайплайне.
1. Физическая модель: тонкая линза и круг нерезкости
Теоретической основой DoF служит модель тонкой линзы. Согласно уравнению тонкой линзы, параллельные лучи, пришедшие от точечного источника на расстоянии d от линзы с фокусным расстоянием f, сходятся в одной точке на расстоянии d′ за линзой: 1/f = 1/d + 1/d′. Плоскость изображения (сенсор или экранный буфер) расположена на фиксированном расстоянии от линзы; она совпадает с плоскостью фокуса лишь для одного расстояния d_focus [2, с. 3].
Для объектов, находящихся вне плоскости фокуса, лучи не сходятся в точку на плоскости изображения, а образуют пятно — круг нерезкости (Circle of Confusion, CoC). Радиус CoC вычисляется по формуле: CoC = |d − d_focus| / d × A × f / (d_focus − f), где A — диаметр апертуры линзы [2, с. 5]. Из формулы следует, что чем больше апертура и чем дальше объект от плоскости фокуса, тем крупнее пятно размытия. Именно радиус CoC, вычисленный для каждого пикселя по его глубине из буфера глубины, является центральной величиной во всех алгоритмах реализации DoF.
2. Алгоритмы реализации DoF в реальном времени
2.1. Размытие по радиусу CoC (Disc Blur)
Простейший подход: для каждого пикселя вычисляется радиус CoC по глубине из буфера, после чего применяется размытие изображения в пределах этого радиуса. На практике используются дисковые ядра (disc kernel) — выборки, равномерно распределённые по кругу радиуса CoC. Число выборок обычно составляет 16–64; меньшее количество приводит к заметным паттернам. Для снижения стоимости ядро нередко аппроксимируется двумя последовательными размытиями по сепарируемым гауссовым ядрам [3, с. 6].
Метод дёшев и прост в реализации, однако страдает от фундаментального артефакта — просачивания (leakage): размытие объектов переднего плана «загрязняет» соседние чёткие пиксели фона. Проблема частично решается раздельной обработкой переднего и заднего планов с последующим компоузингом.
2.2. Bokeh DoF (рассеяние спрайтов)
Более физически корректный подход основан на рассеянии (scattering): каждый пиксель изображения рассматривается как точечный источник, который «размазывается» в пятно CoC на итоговом буфере. Пиксель вносит аддитивный вклад в круговую область вокруг своей экранной позиции. Метод корректно воспроизводит оптическое боке, в том числе характерное «свечение» ярких точечных источников [4, с. 2].
Наивная реализация через запись каждого пикселя в круговую область имеет квадратичную сложность O(N × R²), где N — число пикселей, а R — радиус CoC в пикселях. Для управляемой производительности метод применяется только к пикселям с CoC выше порогового значения; остальные обрабатываются дешёвым гауссовым размытием. Именно такая гибридная схема реализована в системе DoF движка Unreal Engine 5 (Cinematic DoF) [5].
Заключение
Пост-эффект глубины резкости является важным инструментом как художественной выразительности, так и перцептивного реализма в реалтаймовой графике. Физическая модель тонкой линзы и производный от неё радиус круга нерезкости образуют единую теоретическую базу для всех алгоритмов реализации. Дисковое размытие по CoC обеспечивает минимальные затраты; рассеяние спрайтов боке воспроизводит оптический эффект с высокой точностью при умеренной нагрузке; метод накопительного буфера служит эталоном качества для офлайн-рендеринга. Интеграция DoF с системой временного сглаживания позволяет значительно повысить качество эффекта без роста стоимости, что определяет направление развития реалтаймовых реализаций в современных игровых движках.
Литература:
- Akenine-Möller T., Haines E., Hoffman N. Real-Time Rendering. — 4th ed. — CRC Press, 2018. — 1198 с.
- Demers J. Depth of Field: A Survey of Techniques // GPU Gems / Под ред. R. Fernando. — Addison-Wesley, 2004. — Гл. 23. — С. 375–390.
- de Vries J. Bloom [Электронный ресурс] // Learn OpenGL. — URL: https://learnopengl.com/Advanced-Lighting/Bloom (дата обращения: 01.06.2025).
- Kokojima Y. et al. Resolution Independent Rendering of Deformable Vector Objects Using Graphics Hardware // ACM SIGGRAPH Sketches. — 2006.
- Epic Games. Depth of Field [Электронный ресурс] // Unreal Engine Documentation. — URL: https://dev.epicgames.com/documentation/en-us/unreal-engine/depth-of-field-in-unreal-engine (дата обращения: 02.06.2025).
- Unity Technologies. Depth of Field [Электронный ресурс] // Unity HDRP Docs. — URL: https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@14.0/manual/Post-Processing-Depth-of-Field.html (дата обращения: 02.06.2025).

