В вашем вершинном шейдере важен бит texture_coord = world_pos.sp
.
Существует три способа обращения к компонентам вектора в GLSL.xyzw
(наиболее распространенный), rgba
(более естественный для цветов), stpq
(более естественный для координат текстуры).
Линия texture_coord = world_pos.sp
была бы более понятной, если бы она была записана как texture_coord = world_pos.xz
.
Как только вы осознаете, что генерируете текстурные координаты, игнорируя компонент y, становится очевидным, почему вертикальные плоскости не текстурированы так, как вам бы хотелось.
К сожалению, не существует простой одной линииисправить.Возможно, трехплоскостное текстурирование может быть подходящим решением для вас - этот кажется хорошим объяснением техники.