Аннотация
В работе выполнен сравнительный анализ шейдерных подходов к деформируемому снегу в real-time рендеринге.
Типы шейдеров (вершинные, тесселяционные, геометрические, пиксельные) сопоставлены на единой базовой сцене в Unity URP.
Оптимизированная гибридная сцена достигла 242 FPS при 114 FPS базовой.
Сформулированы рекомендации по выбору и комбинированию подходов.
Описание предметного поля
В компьютерной графике получение финального изображения происходит с помощью процесса рендеринга. По описанию геометрии сцены, материалов, освещения и камеры создается изображение для простейших мультфильмов или фотореалистичного изображения. Результат компьютерных вычислений выводится на экран и/или сохраняется в файл.
По способу получения этих кадров рендеринг принято делить в литературе на два основных типа: «в реальном времени» (real-time) и «офлайн рендеринг» (pre-render, offline-render) [1]
Предварительный или офлайн-рендеринг — это генерация кадров заранее. В таком случае нет строгого лимита по времени на создание одного кадра, а значит могут быть использованы ресурсоемкие методы расчета. Таким образом создание самых сложных кадров может занимать до нескольких часов.
В зависимости от степени гравитационного линзирования изображения, для создания одного изображения в формате IMAX при работе на десяти процессорных ядрах обычно требуется от 30 минут до нескольких часов
Так в своей работе пишет команда ученых, занимавшаяся расчетом преломления света от гравитационного линзирования для фильма «Интерстеллар». Такой рендеринг требует значительных вычислительных ресурсов и объёмов данных.
Ограничением здесь выступают сроки производства. Это типично для кино, рекламы, визуализации.
Рендеринг в реальном времени – быстрая генерация изображения на компьютере. Часто действия зрителя могут немедленно влиять на содержание следующего кадра.
This cycle of reaction and rendering happens at a rapid enough rate that the viewer does not see individual images
Этот цикл реакции и рендеринга происходит с такой скоростью, что зритель не видит отдельных изображений
В этом случае скорость отображения измеряется в кадрах в секунду (frame per second или FPS). При 1 FPS интерактивность почти отсутствует.
Сравнение частоты кадров
Ощущение отклика появляется примерно с 6 FPS. В играх стремятся достичь 30, 60 или более FPS. Для 60 FPS на отрисовку одного кадра есть примерно 16,7 миллисекунды, это и отличает рендеринг в реальном времени.
Ограничения обусловлены не только временными ресурсами, но и аппаратными. Устройство зрителя, на котором должен вычисляться каждый кадр, в разы слабее, а значит нельзя использовать высоконагруженные сцены, поскольку кадр будет отрисовываться дольше, а частота кадров снизится.
график не отражает математическую функции зависимости, а демонстрирует порядок значений
Шейдеры
Термин «шейдер» (Shader) в компьютерной графике появился в 1980‑е годы в компании Pixar в рамках языка описания материалов RenderMan Shading Language (RSL) — специализированного языка программирования, предназначенного для описания внешнего вида поверхностей, свет, объём.
Шейдеры RSL выполнялись на процессоре (CPU) в офлайн‑конвейере. [3]
В 1987 году была представлена видеокарта IBM 8514/A — одна из первых графических плат, реализующих так называемый конвейер с фиксированной функциональностью (fixed-function pipeline).
IBM 8514/A
Это означает, что видеокарта способна выполнять только те операции, которые изначально заложены её производителем.
Можно было нарисовать треугольник, наложить текстуру или выполнить простые операции с освещением, чем и пользовались разработчики игр для real-time рендеринга. Но тогда еще не было возможности создать свой собственный эффект. [4]
«Mission», Loriciels, 1987
Это продолжалось до 1999 года. Разработчики могли пользоваться исключительно фиксированным конвейером. Трансформация вершин, освещение, растеризация были жестко заданы и можно было только настраивать их отдельные параметры. [5]


«Resident Evil 2», Capcom R&D Division 4, 1998
В августе 1999 года выходит видеокарта GeForce 256
Nvidia GeForce 256
Был оснащён аппаратным блоком преобразований и освещения (Transform and Lighting, T&L) [6].
Данный модуль позволил перенести вычисление геометрических преобразований и модели освещения с центрального процессора на графический, что существенно повысило пропускную способность графического конвейера при сохранении архитектуры с фиксированным функционалом (fixed-function pipeline).
«Deus Ex», Ion Storm, 2000

«Counter-Strike», Valve, 2000

Уже в феврале 2001 года выходит GeForce 3, а вместе с ней и программируемые шейдеры: Vertex Shader 1.1 и Pixel Shader 1.1 [7].
С этого момента конвейер становится программируемым. DirectX 8, а затем OpenGL 2.0 с GLSL закрепили модель шейдеров как основу пайплайна в 2004 году.
«Resident evil 4», Capcom, 2005
Процесс отрисовки кадра
Для того чтобы кадр появился на экране должны завершиться несколько последовательных операций. Этот конвейер и называется пайплайном. По нему данные идут от программы до пикселей на мониторе. Конвейер разделяют на четыре основные стадии [8]
Схема последовательности этапов конвейера




