Кэш поверхностей
Способ Quake получить освещённые стены в программном рендерере: заранее запечь текстуру и лайтмап в готовые поверхности, кэшировать их и оставить внутреннему циклу одно лишь копирование.
В Quake (1996) было мягкое предрассчитанное освещение в лайтмапах, но подмешивать свет в текстуру для каждого пикселя каждого кадра Pentium был не в силах. Джон Кармак и Майкл Абраш вывернули задачу наизнанку: каждая видимая поверхность строилась один раз как освещённый растр на том мип-уровне, который требовало расстояние, и хранилась в кэше. Растеризация превращалась в обычное текстурирование вообще без вычислений освещения.
Расплатой стали память и подтормаживания, когда сразу появлялось много новых поверхностей, например после резкого поворота. GLQuake заменил схему многопроходным смешиванием на 3D-ускорителях. Идея живёт в новом обличье: Lumen в Unreal Engine 5 тоже строит кэш поверхностей — теперь для глобального освещения.