mat4 view_projection;
mat4 transform;
vec4 position;
vec4 frag_position = view_projection * transform * position;
В векторной математике порядок действий имеет огромное значение. И когда операций много, можно легко запутаться и написать потрясающие воображение визуальные баги. Проблема стандартного неймнга в том, что название говорит только о пространстве результата. А вот знание о том, какие данные ожидаются на вход - это неявный контекст.
В последнее время я начал использовать домино-нейминг (ещё встречается под названием destination_source):
mat4 projection_from_world;
mat4 world_from_local;
mat4 local_position;
vec4 frag_position = projection_from_world * world_from_local * local_position;
Идея в том, что название явно указывает откуда и куда трансформируется вектор. Ключевой момент здесь именно в использованиеи
_from_, а не _to_. Так поиск ошибок становится предельно простым: если конец слова совпадает с началом следующего - всё правильно; если нет, значит это баг.