Вода в игре — это не обязательно «вода» в вычислительном смысле

Чтобы показать озеро, игре не нужно просчитывать каждую каплю. Поверхность обычно задают простой сеткой полигонов, а впечатление воды создают материалом — набором визуальных правил, которые обрабатывает видеокарта. Синий цвет, блеск и движущиеся узоры могут быть частью такого материала, а не изображением заранее нарисованной неподвижной картинки.

Например, программа сдвигает текстуру — картинку с мелкими волнами — и меняет её яркость. Так поверхность кажется живой даже при сравнительно простой геометрии. Дополнительные блики могут зависеть от направления взгляда и света, а силуэт берега или неба иногда добавляют отражением, рассчитанным лишь приближённо.

Почему настоящая физика обходится дорого

Полная модель должна учитывать, как вода движется, сталкивается с берегом и препятствиями, отражает свет и преломляет его — то есть меняет вид предметов под поверхностью. Причём результат меняется при каждом кадре и зависит от положения камеры, освещения и объектов в сцене. Чем больше поверхность и чем ближе камера, тем заметнее детали, которые приходится обрабатывать.

У игры есть жёсткий бюджет времени на кадр: если видеокарта тратит его на воду, меньше остаётся для персонажей, теней и других эффектов. Поэтому разработчики выбирают не самый точный расчёт, а убедительный и достаточно дешёвый. Это не обязательно одна плоская синяя заливка: могут сочетаться простая поверхность, движущиеся текстуры и выборочные отражения. Важен результат именно с игрового ракурса.

Иллюзия зависит от того, что может заметить игрок

На далёком пруду мелкие волны почти неразличимы, поэтому простого эффекта достаточно. У берега, где персонаж заходит в воду, та же хитрость выдаёт себя: хочется увидеть рябь, брызги и изменение отражений. Такие детали добавляют там, где они заметны, а не обязательно просчитывают всю воду в мире одинаково подробно.

Так ограничение вычислений превращается в дизайнерский выбор: спокойная блестящая поверхность убедительно выглядит издали, а сложные эффекты получают только те места, где игрок может подойти вплотную.