Октаэдрическое кодирование
Упаковывает единичную нормаль в два числа: сфера сворачивается в октаэдр, а тот разворачивается на квадрат.
Нормаль поверхности — единичный вектор: компонент три, а степеней свободы две, так что хранить все три — расточительство, особенно в тесном G-buffer. Октаэдрическое кодирование проецирует сферу на октаэдр, разворачивает его в единичный квадрат и сохраняет две получившиеся координаты. Точность по сфере почти равномерна, а кодирование и декодирование — несколько строк арифметики без тригонометрии; это дешевле и ровнее прежнего преобразования spheremap. Метод популяризировали Чиголль и соавторы в обзоре компактных представлений единичных векторов 2014 года, и теперь это стандартный способ уместить нормаль в два 8- или 16-битных канала.