← На главную

Stylized GGX Shading не подошел Spellcasters Chronicles

04.08.2026 11:28 · hackernews

Чтобы получить мультяшный (toon) вид в 3D-графике, обычно достаточно порогового освещения: мягкие градиенты превращаются в плоские цветовые зоны. Но такой подход целиком двумерный. Можно смешать 2D и 3D: на низкой шероховатости поверхности дают большие резкие блики, а на высокой — мягкие градиенты. Так картинка выглядит современнее, и при этом можно опираться на PBR: проще сохранять энергию, интегрировать в существующие пайплайны и калибровать материалы физически. Этот смешанный подход назвали Stylized GGX Shading.

В играх такое уже пробовали. В Zelda: Breath of the Wild персонажи сделаны чистым toon-шейдингом, а окружение больше тянет в сторону 3D и PBR — поэтому герои заметно выделяются на фоне. В Spellcasters Chronicles, над которой работал автор, перебрали много вариантов, включая этот Stylized GGX Shading, но в итоге остановились на другом решении, тоже смешивающем 2D и 3D.

Базовая модель — GGX Cook-Torrance microfacet model. Шероховатость поверхности описывает Normal Distribution Function (NDF); в реалтайме обычно используют Trowbridge-Reitz NDF. Если немного поменять её формулу, можно расширить зеркальные блики. Простая модификация добавляет параметр SpecularSize: он возвращает больше энергии на больших углах NdotH, сохраняя исходную форму NDF. Стоит это дёшево — одно умножение и один max. Но простой вариант слишком сильно задирает яркость шероховатых материалов.

Улучшенная версия добавляет параметр GGXMatching. Он управляет тем, насколько стилизованный NDF совпадает с оригинальным GGX при высокой шероховатости: на практике хорошо работают значения 4 или 8. В итоге при высокой roughness кривая повторяет обычный GGX, а при низкой — расширяет блики, как в простой версии. В статье есть интерактивные графики на Desmos, где видно, как меняются кривые при изменении параметров.

В демо показан финальный вид при разных roughness, metalness и SpecularSize. Если этого кажется мало для полноценного toon-стиля, в Spellcasters добавляли дополнительные приёмы. GI-пробы обрезали до трёх SH-коэффициентов вместо обычных девяти — глобальный, верх и низ для неба и земли. Это уменьшало направленность света и делало картинку ближе к рукотворному 2D-арту, плюс экономило производительность. Такой же приём использовали в Hi-Fi Rush. Ещё упрощали дальние объекты смесью depth-based Kuwahara filter, mip biasing и простого тумана. Добавляли rim lighting, outlines и inlines. И, конечно, много работы ушло в текстуры и модели.

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