𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
194 subscribers
561 photos
48 videos
5 files
59 links
ニャン
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
❤1🍓1
Умные мысли преследовали его

Но он оказался "Just UE5 & C++ Coder without personal life :D"
❤‍🔥5❤2💯1
Clang + AST Analysis = Reflection + Code Generation
❤2🔥1
Читаю Джейсона Грегори, решил по книжке попробовать реализовать аллокаторы

Аллокатор - своеобразный диспетчер памяти. Вместо того чтобы каждый раз просить память у Windows (что ужасно смертельно долго, поверьте), движок берет 1 большой кусок памяти при запуске и отдает ее аллокатору

А тот уже просто нарезает память на кусочки и помечает у себя в таблице: "этот кусочек занят, этот свободен" и раздает их моментально (и да, аллокатор буквально переводится как распределитель)
🔥2💯1
This media is not supported in your browser
VIEW IN TELEGRAM
💔2
== TPoolAllocator ==
Принимает размер ячейки/пула (BlockSize в байтах) и хранит в себе арену (64 таких ячеек) (размер которых равен BlockSize * 64 байт)

А также служебную маску (FreeBlocksMask), в которой каждый бит - является состояние "свободная ли ячейка?" (можно сказать карта города - какие ячейки заняты, а какие свободны и можно ли их занять)
🔥1💯1
== TBinnedAllocator ==
А этот аллокатор уже является "менеджером" пуловых аллокаторов. Название произошло от английского (англицизм, ага) Bin - корзина.

Его главная задача - получить запрос на аллокацию, например, 12 байт. Сгладить 12 байт до ближайшего большего (например, к 16 байт), а затем вызвать 16-байтовый аллокатор (попросить аллокацию и тд.)

Можно сказать это если бы мы сидели у нескольких мусорных ведер разного размера, нам давали какой-нибудь предмет, а мы по его размеру сортировали и кидали в маленькое, среднее или большое мусорное ведро

Конечно об этом аллокаторе Джейсон Грегори не писал подробно, но я узнал о нем периодами изучая исходный код Unreal Engine - у него есть прекрасные исторические примеры таких аллокаторов, как FMallocBinned (UE3, старый), FMallocBinned2 (UE4.12+, многопоточность) и FMallocBinned3 (UE5, 64-бит)
🔥1💯1
И да, это все работает просто замечательно

Могу смело запрашивать блоки даже "не красивого" размера, TBinnedAllocator округляет их, находит нужный мне аллоктор и дергает его

Одним словом - не зря нахваливают Джейсона Грегори и его книгу "Игровой Движок" (все таки движок - это лишь 90% Архитектуры и 10% Реализации)
🔥1💯1
Root Engine - Удобство, Смерть и Рендер
Ох, как же я не хотел поднимать эту тему... но время пришло

На чем писать графику в Root Engine?

- OpenGL - Быстрый, удобный, но стар как этот мир (1992)
- Vulkan - Долго, муторно, но производительно
- DirectX - Интеграция с экосистемой Windows, но внутри симметрично отражает Vulkan
🔥1
Я бы мог сейчас начать поливать типа "OpenGL - херня. Vulkan - топ", но не стану. Это не столь важно. Лучше гляньте историю шире и глубже:

- Minecraft - пожалуй единственная игра ради которой OpenGL имел хоть какой-то смысл. Но! Относительно недавно Mojang объявили, что начнут переписывать рендер-движок Java-версии на Vulkan! (а еще я напомню: Mojang принадлежит Microsoft, а у Microsoft есть DirectX)
- OpenGL 4.6 - последняя версия, выпущенная в 2017, после которой до сих пор нет даже планов развитии данного API
- Самый явный признак смерти API: Драйвера Mesa Zink позволяет запускать OpenGL поверх Vulkan
- А также Google (Android) планируют драйвер ANGLE сделать по умолчанию. Что это значит? Что в будущем Android-устройства будут поддерживать только Vulkan, а OpenGL ES будет работать лишь как слой абстракции поверх Vulkan
- Также Apple начали вставлять свои палки в колеса, формально пометив OpenGL устаревшим (и вырезав его), но по факту - Unity и Unreal Engine уже вырезают OpenGL RHI для билда под macOS и iOS, оставляя только Vulkan и Metal
- И банально: любые новые технологии, такие как Ray Tracing или Mesh Shaders - исключительно Vulkan и DirectX 12

То есть чувствуете это? Все когда-нибудь зарождается и умирает - принцип RAII работает всегда и везде. И OpenGL - не исключение, а мы с вами - свидетели эпохи, когда впервые 34-летний API начал... умирать
🕊1😭1
Хорошо, мы похоронили OpenGL, и у нас остаются 5 игроков: Vulkan, DirectX, Metal, bfgx и WebGPU

Metal
- Очень быстр, код призван быть "приятнее Vulkan", но очевидно теряем большую долю рынка - движок и игры будут только на технике Apple (которой, к слову, у меня нет :D)

WebGPU
- Совсем новый, взяв лучшие идеи из Vulkan, DirectX и Metal, переосмысливая их (как Rust в экосистеме C/C++)
- Проверка на лету, нельзя обрушить драйвер "случайно"
- Но вместе с эти накладные расходы на проверки и валидацию

bfgx
- Швейцарский нож от всего и для всего
- Быстрое проектирование, за вечер рендер, за неделю Анрюша на коленках
- Но это черный ящик, по сути - повторяя судьбу OpenGL - быстро строишь, но если нужен контроль - ничего не сделаешь
- Хорошо для начала, но в будущем - нож самому себе

И вот тут остаются 2 близняшки: DirectX и Vulkan - Внутри они очень сильно повторяют друг-друга, можно сказать зеркально (и да, они оба убийственно сложные)

DirectX
- Лучшая поддержка, много инструментов для отладки
- Быстрее внедряются новые технологии
- ОЧЕНЬ хорошая интеграция с Windows
- Но вместе с этим - золотая клетка, ведь выйти из экосистемы Microsoft практически невозможно
- Движок останется навсегда только для Windows и Xbox пользователей
- А про Android, Steam Deck, Linux и PlayStation можно забыть

Vulkan
- Настоящий, открытый и доступный API для всего что умеет рисовать пиксели на экране
- Windows, Linux, Android, Xbox, Steam Deck, PlayStation, macOS, iOS - весь рынок будет доступен
- Vulkan, в какой-то степени, язык C в мире GPU - абсолютный контроль, который оплачивается высоким понимаем как работает GPU, а не простым оперированием абстракциями
- Но и вместе с этим - можно выжимать максимальную производительность

И в выборе между Vulkan и DirectX ответ пришел откуда не ждали: Помните я упомянул что: Mojang - дочерняя компания Microsoft, а Microsoft имеет DirectX?

Думаете почему Mojang не заставили переписать Minecraft на DirectX? Рынок... Microsoft сами прекрасно знают про свою золотую клетку. И понимают, что их DirectX - красив, но теряет большую долю рынка (оставляя только Windows и Xbox)

Поэтому Vulkan - остается единственным, сложным, но универсальным API ко всему, что можно классифицировать как "видеокарта"
❤1🔥1
Каков мой вердикт? Барабанная дробь.... Vulkan

Я знаю, мне самому до сих пор сложно признать то, что я буду иметь дело с одним из самых трудных API, но с другой стороны - Это буквально Сишный доступ к видеокарте, минимум абстракций, максимум возможностей

Да, 1000 строк кода - но если в них есть смысл, то значит они что-то значат

И да, я рассчитываю делать Root Engine немного с "бунтарскими" наклонностями. Например - впервые попробовать Clustered Shading, минуя Forward/Deferred подходы - и поэтому здесь полный доступ к видеокарте будет очень кстати

А еще рядом с книгой "Игровой Движок" (Джейсона Грегори) я заказал "Vulkan: Руководство разработчика" (Селлерс Грэхема) - буду читать, да постигать плоды Vulkan'чика
❤1🔥1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
❤2
Покатушки на великах... Объявляются открытыми!
❤2🤩2
С Днем Рождения, Акира Асай!

(принимаются только неправильные аргументы почему я шизофреник)
❤‍🔥3💯1
Официально могу заявить что библия по Vulkan взята в мои руки 🎉
❤4🎉2🤩1
Кароче итоги дня
Я проехал 49 км из 60

А куда подевались оставшиеся 11?

Прям анекдот Задорного: Когда выезжал с Балашихи на шоссе, вот оставалась финишная прямая - у меня, сука, лопнуло заднее колесо, и дальше я шел пешком...

Хотя позже меня забрал отец, и примерно так, на первой фотке, мы загрузили велик в багажник, пометив габариты красной ленточкой на переднем колесе, а крышку...

А видите ту маленькую скромную черную сумочку на багажнике? И ее ремень с простыми декоративными карабинами? Да так мы этим ремешком привязали крышку багажника к автомобилю

И привязали настолько хорошо, что этот ебанутый ремень нахуй оторвал пластиковую деталь от багажника вместе с замком, пхахаха))
😁1💔1😈1
А я блин ещё думал, что приеду обратно, схожу на автомойку, помою своего коня

Потом поеду в Глобус, там посижу книгу полистаю

Но стоило мне только выехать с Балашихи, и у меня сразу "шрик шрик" от заднего колеса. Смотрю - а у меня покрышка отдельно от колеса восьмеркой ходит

btw, говоря про камеру внутри колеса - это была оригинальная камера, и оригинальная покрышка

А я напомню, эти двое отпахали всё прошлое лето (когда я проехал 1.500 километров)

Так что press F им
Они отслужили свое 🫡
🕊1
"Тяжело в компайле - легко в рантайме"

- (c) RootTool
❤1💯1🍾1