Normal Derive — Z | VisualShader | Godot

Алгоритм Восстановление нормалей

В этом посте я хочу поделиться небольшой, но полезной техникой, которую можно использовать в шейдерах движка Godot Engine. Речь пойдёт о восстановлении полной нормали в 3D по только двум её компонентам — X и Y. Это особенно полезно, когда мы передаём нормали через текстуру (например, в каналах RG), и нам нужно восстановить недостающую Z-компоненту.

Принцип работы

Если у нас есть нормаль, представленная как vec2(x, y), мы можем рассчитать её третью компоненту z, опираясь на свойство, что длина единичного вектора равна 1:

Это позволяет нам восстанавливать вектор нормали, не храня лишние данные — отличный способ экономить ресурсы и ускорять рендеринг, особенно в визуальных эффектах и анимациях.

Где можно использовать?

  • В процедурных нормалях
  • При работе с flow maps, decal normals
  • В оптимизации текстур нормалей
  • Для рендера эффектов на геометрии, где важна производительность

Плюсы подхода

  • ✅ Экономия места в текстуре (только 2 канала)
  • ✅ Минимум вычислений
  • ✅ Подходит для процедурных и динамических нормалей
  • ✅ Совместимо с Godot Visual Shader (через кастомные узлы)

Вы можете получить GLSL код или VisualShader алгоритм на этой странице: XY Нормальная реконструкция – Z — Шейдеры Godot

Если вам нужен готовый визуальный алгоритм, то вы можете скачать из Google Disc

Ниже предоставленное изображение визуального алгоритма

Спасибо что вы снами.