Затенение с переменной скоростью — это аппаратная функция, представленная в графических процессорах NVIDIA Turing и предоставляемая через расширение GL_NV_shading_rate_image.
Затенение с переменной скоростью позволяет аппаратному обеспечению закрашивать примитивы с частотой, отличной от скорости растеризации. Пользователь может выбирать между различными скоростями, включая отсутствие затенения, нормальное разрешение, половинное разрешение и четверть разрешения. Если при рендеринге используется множественная выборка, скорость затенения можно увеличить, чтобы обеспечить затенение нескольких сэмплов в одном и том же примитиве. Это может уменьшить сглаживание, генерируемое шейдером. Скорость затенения определяется для блоков пикселей с постоянной скоростью внутри каждого блока.
Образец позволяет пользователю выбрать предопределенные скорости затенения. При выборе «visualizeShadingRate» будет отображаться цветное изображение скорости затенения на пиксель.
В вершинном шейдере можно изменять скорость закрашивания каждого треугольника; в примере все зеленые объекты выбраны с полной степенью затенения. Эту функцию можно отключить в меню.
Поскольку снижение скорости затенения может быть незначительным, образец позволяет выполнять рендеринг с более низким разрешением и «увеличивать масштаб» с помощью настройки «масштабирования кадрового буфера».
В идеале клонировать этот и другие интересные репозитории с образцами nvpro в общий подкаталог. Вам всегда понадобится nvpro_core. Поиск nvpro_core осуществляется либо в подкаталоге образца, либо в каталоге выше.
Если вас интересуют несколько примеров, вы можете использовать build_all CMake в качестве точки входа; он также предоставит вам возможность включать/отключать отдельные образцы при создании решения.