Полный текст
Создаём графику, как будто на дворе 1993 годСамописный рейкастер с буфером 320x240 и 256 цветами упирается в тупик при реализации динамического затенения. В линейном массиве, где каждый байт — лишь индекс палитры, концепция цвета отсутствует. Поиск ближайшего тёмного оттенка через обход всей палитры для каждого фрагмента на лету убивает производительность растеризатора.Решение требует прекалькуляции матрицы — цветовой карты на 32 уровня освещённости. Классический поиск по евклидовому расстоянию сводит удалённые тайлы к серому шуму. Выход — конвертация палитры в Oklab с применением перцептивного расстояния и алгоритма hue shifting.Так растеризатор получает затенённый пиксель за константное время O(1). Рассмотрим, как интегрировать этот алгоритм в движок.