Стилизованное освещение: дальше cel shading
Ступенчатые тени — первый шаг, который знают все. Настоящий характер живёт в контровом свете и в том, как выбран цвет тени.
Ступеней недостаточно
При словах «toon shader» первым делом вспоминают округление интенсивности света до нескольких ступеней. Само по себе это даёт дешёвый вид: сцена выглядит не как мультфильм, а как низкое качество.
Разницу создаёт то, в какие цвета попадают эти ступени. Сдвиньте тень не к чёрному, а к дополнительному цвету света — и сцена внезапно начинает выглядеть срежиссированной.
Контровой свет спасает силуэт
В стилизованных сценах объекты склонны теряться на фоне, потому что деталей затенения мало. Поэтому rim light — не украшение, а функциональный инструмент.
Если масштабировать силу rim по расстоянию до камеры, дальние объекты перестают пересвечиваться. Небольшой множитель даёт большую разницу.
Измеряйте стоимость
Предположение, что стилизованные шейдеры дешёвые, ошибочно. Многослойный rim, обводки и собственный расчёт теней могут выйти дороже PBR.
Я замеряю каждый вариант шейдера в RenderDoc и записываю стоимость на GPU в документацию. Когда арт-команда видит бюджет, решения становятся лучше.
Согласованность решает всё
Все материалы сцены должны использовать одну модель освещения. Один-единственный PBR-объект ломает цельность стилизованной сцены.
Поэтому я пишу общую функцию освещения, которую вызывают все шейдеры. Модель меняется один раз — и вся сцена меняется вместе с ней.