Ограничение области главы
Полноценные подразделы с реализациями и метриками приведены только для подходов, реализованных в рамках проекта. Подходы на основе compute-шейдеров и mesh-шейдеров в главе 3 не описываются; их теоретическое обсуждение перенесено в главу 4 (Обсуждение)
Базовая сцена

Изображение базовой сцены
Фиксируем референсную конфигурацию сцены, относительно которой в дальнейшем сравниваются все шейдерные подходы к деформируемому снегу. В базовой сцене не применяются специализированные шейдеры деформации снега; рендеринг осуществляется стандартными средствами URP.
В этой сцене снег— множество отдельных белых элементов (без единой карты деформации). Специальных шейдеров деформации снега не используется. Платформа, персонаж и объекты рендерятся стандартным конвейером URP.
Таблица для базовой сцены
Подход на основе пиксельных (фрагментных) шейдеров
Данный подход не меняет геометрию сцены: снег по-прежнему представлен множеством отдельных. Шейдер лишь заменяет внешний вид снега во фрагментном этапе: по карте деформации (DeformMap) выполняется семплирование текстур снега и земли, смешивание и отсечение «убранного» снега (clip). Освещение — полное (основной свет, тени, дополнительные источники, specular, SampleSH)
Изображение сцены c фрагментными шейдерами
Вершинный этап (Vertex) только трансформирует позицию и передаёт UV и нормали. Геометрия остаётся той же, что и в базовой сцене — множество мешей (кусочков снега), без объединения в единую плоскость. Таким образом, пиксельный шейдер даёт визуальное при сохранении структуры сцены.
Таблица для пиксельного/фрагментного шейдера
Объём геометрии (Tris, Verts) близок к базовой сцене, поскольку снег по-прежнему представлен множеством элементов. Деформация без изменения геометрии - только смена и смешивание текстур во фрагменте.
Снег остаётся в виде многих кусочков; улучшается визуал. Единая глобальная текстура для всех отдельных.
Подход на основе вершинных шейдеров
Деформация снега и расчёт освещения выполняются в вершинном (Vertex) шейдере. Снег представлен в виде плоскости (plane), следы и зоны уборки реализованы за счёт карты деформации (DeformMap) и смещения вершин вдоль нормали. Как описано в работе (Hanák, 2021, Ch. 4.4)
Изображение сцены c вершинными шейдерами
Подход переносит логику деформации в vertex stage. По карте высот (DeformMap) выполняется смещение вершин. Фрагментный этап не выполняет расчёт освещения - только отсечение «убранного» снега.
Таблица для вершинного шейдера
FPS выше базового за счёт упрощённого фрагментного этапа и меньшего объёма геометрии, в отличие от пиксельного шейдера, здесь снег - единая плоскость, а не много кусочков; деформация реализована через изменение геометрии (vertex displacement по DeformMap), визуально видны следы и зоны уборки, тени на снегу в данной реализации отключены намеренно для изоляции вершинного этапа.
Подход на основе тесселяции (Hull + Domain)
Деформация выполняется в Domain Shader. Hull-шейдер задаёт факторы тесселяции в зависимости от расстояния до камеры (LOD), фрагментный этап – отсечение. Снег представлен плоскостью с минимальной плотностью вершин на CPU, тесселяция увеличивает детализацию геометрии на GPU
Изображение сцены с теселяционным шейдером
Исходная плоскость снега имеет мало вершин; Hull/Domain-шейдеры на GPU увеличивают число треугольников в зависимости от расстояния до камеры. Деформация (смещение по DeformMap) выполняется в Domain Shader, что позволяет получать плавную геометрию следов без передачи плотной сетки с CPU.


Разница в детализации плоскости снега
Таблица для теселяционного шейдера
Подход на основе геометрических шейдеров
Деформация снега отсутствует, геометрия повторяет базовую сцену. Геометрический шейдер формирует и модифицирует меш‑частицы падающего снега над сценой. Вершинный шейдер передаёт данные без деформации, сцена без полноценного освещения. Снег задаётся как набор mesh‑частиц




