⚙️ Глубоко в настройках: рефакторинг под Metal и работа с Uniform-буферами
Продолжаю тему настройки рендера под Metal. Основная проблема на текущий момент — ошибки валидации при работе с uniform-буферами.
📖 Что такое uniform-буферы?
Если коротко — это специальные буферы для передачи параметров из кода в шейдер. Через них можно отправить:
- Цвет, размер, положение объектов
- Любые другие данные для работы шейдера или материала
🎯 Особенности в Metal
В Metal действуют строгие правила выравнивания данных. Возьмём для примера такую структуру:
Правильное выравнивание этой структуры критически важно для работы Metal. Если данные на CPU не упакованы согласно этим требованиям — система просто откажется их принимать.
🛠 Что было сделано
Провёл масштабный рефакторинг структур данных, направленный на:
- Единообразие размера передаваемых данных
- Автоматическое соблюдение правил выравнивания Metal
- Устранение ошибок валидации на этапе компиляции
Работа кропотливая, но необходимая для стабильной работы движка на macOS и iOS. Впереди ещё много интересных оптимизаций! 🚀
#ThunderEngine #Metal #Graphics #Shader #GameDev #Optimization
Продолжаю тему настройки рендера под Metal. Основная проблема на текущий момент — ошибки валидации при работе с uniform-буферами.
📖 Что такое uniform-буферы?
Если коротко — это специальные буферы для передачи параметров из кода в шейдер. Через них можно отправить:
- Цвет, размер, положение объектов
- Любые другие данные для работы шейдера или материала
🎯 Особенности в Metal
В Metal действуют строгие правила выравнивания данных. Возьмём для примера такую структуру:
glsl
layout(set = 1, binding = GLOBAL) uniform Global {
mat4 view;
mat4 projection;
vec4 cameraWorldToScreen;
vec4 cameraAndParams;
} g;
Правильное выравнивание этой структуры критически важно для работы Metal. Если данные на CPU не упакованы согласно этим требованиям — система просто откажется их принимать.
🛠 Что было сделано
Провёл масштабный рефакторинг структур данных, направленный на:
- Единообразие размера передаваемых данных
- Автоматическое соблюдение правил выравнивания Metal
- Устранение ошибок валидации на этапе компиляции
Работа кропотливая, но необходимая для стабильной работы движка на macOS и iOS. Впереди ещё много интересных оптимизаций! 🚀
#ThunderEngine #Metal #Graphics #Shader #GameDev #Optimization
🔥4
🔧 Репортаж с полей разработки: сражения с платформами, прогресс с Metal и важные открытия
Эх, видимо, придётся где-то раздобыть мини-PC, чтобы поставить Linux и полноценно тестировать движок на этой платформе. Только что закончил двухнедельный «марафон» по ремонту поддержки всей линейки устройств Apple — и понимаю, что без автоматизации дальше будет тяжело.
Либо надо серьёзно расширять автотесты… а на них, как всегда, вечно не хватает времени, а ещё — экспертизы и просто терпения. Знакомое чувство? 😅
🍎 Прогресс с Metal
Из приятного: теперь Metal — нативный API для всей яблочной линейки (macOS, iOS, tvOS). Пока остаются мелкие проблемы с освещением, которые надеюсь починить к следующему релизу. Ну или сразу после — главное, чтобы работало стабильно.
🎮 Нежданное открытие с геймпадами
Тут я, кажется, слегка приукрасил в своём докладе. Думал, что геймпады работают везде — ан нет: поддержка есть только под Windows и Linux. На iOS через GLFM геймпады, увы, не работают. Видимо, придётся писать свои обёртки или искать обходные пути.
Работа продолжается — не без сложностей, но с движением вперёд! Если есть идеи по тестированию под Linux или опыт с геймпадами на iOS — welcome в комментарии 👇
#ThunderEngine #GameDev #Metal #Linux #iOS #Геймпады #Разработка
Эх, видимо, придётся где-то раздобыть мини-PC, чтобы поставить Linux и полноценно тестировать движок на этой платформе. Только что закончил двухнедельный «марафон» по ремонту поддержки всей линейки устройств Apple — и понимаю, что без автоматизации дальше будет тяжело.
Либо надо серьёзно расширять автотесты… а на них, как всегда, вечно не хватает времени, а ещё — экспертизы и просто терпения. Знакомое чувство? 😅
🍎 Прогресс с Metal
Из приятного: теперь Metal — нативный API для всей яблочной линейки (macOS, iOS, tvOS). Пока остаются мелкие проблемы с освещением, которые надеюсь починить к следующему релизу. Ну или сразу после — главное, чтобы работало стабильно.
🎮 Нежданное открытие с геймпадами
Тут я, кажется, слегка приукрасил в своём докладе. Думал, что геймпады работают везде — ан нет: поддержка есть только под Windows и Linux. На iOS через GLFM геймпады, увы, не работают. Видимо, придётся писать свои обёртки или искать обходные пути.
Работа продолжается — не без сложностей, но с движением вперёд! Если есть идеи по тестированию под Linux или опыт с геймпадами на iOS — welcome в комментарии 👇
#ThunderEngine #GameDev #Metal #Linux #iOS #Геймпады #Разработка
🔥5