Comments 36
Приличное количество ошибок в плане русского языка не есть хорошо.
Приличное количество смех**чков уместно (и даже прямо требуется) на лурке, но не на хабре.
Геометрические шейдеры появились в DirectX 10, а не 9.
1) Си - мой родной, а для вашего я компилятора не нашёл
2) Тоже так думал, но Хабр буквально рекомендует чуть ли не мемы использовать в блогах компаний, если это прямо не запрещено политикой самой компании. Решил, что Хабр лучше знает.
3) Точно, в 9 только геометрический процессинг был. Спасибо за замечание.
Спасибо за статью, самого интересовали эти вопросы ??
На голом Анриал 5, игра перенесённая с Анриала 4 - будет работать быстрее.
Но почему то сейчас нет ни одной нормальной игры в инфополе (ну кроме собственно Fortnite, но здесь понятно) которая бы была сделана на 5 анриале и при этом отличалась хорошей производительностью.
Как я понимаю развитие UE во многом зависит от того сколько ещё школьники будут заносить денег в Fortnite. Не смотрел отчётов финансовых их последних, но все же есть подозрение что UE приносит не так много денег как хотелось бы.
Алексей Макаренков уже рассказывал об это нюансе. Просто могу, сославшись на него, повторить, что как правило, разработчики стараются включать Lumen - аналог трассировки. Но большая часть проектов, либо ещё не ушла с предыдущей версии, либо не так давно перешла на текущую.
По поводу финансов - знаю куда больше. Подразделение разработки движка - очень прибыльное, настолько, что если фортнайт просто исчезнет, Epic и дальше сможет не только существовать, но и расти. С ними прям всё слишком хорошо. Одна только Microsoft имеет с ними эксклюзивный договор, и почти всё, что они делают - выпускается на анриале. Крупные студии - это молочная корова для эпиков. На данный момент с одних только отчислений за движок, эпики могут позволить финансирование всех своих текущих проектов, включая форточку. Поэтому форточка на самом деле приносит ещё больше денег, чем представлялось до этого.
Спасибо за ответ. Но на мой взгляд про люмены как то принято за уши, ну или разработчики не очень умные люди поголовно, но вот реально я не назову ни одной игры вышедшей не от эпиков на UE 5 не считающиеся техническим провалом и спокойно идущие на стим дек (для меня это как критерий). При этом Fornite спокойно себя чувствует что с нанитами, что с люменами, судя по демонстрациям, сам не играю.
По поводу прибыльности UE. На суде с Apple им пришлось раскрыть цифры и вроде как там доход не больше 300 млн енотов вышло за 2 года. Ну такое с учётом того, что доход Fornite аналогично был в районе 6 млрд. Тут интереснее конечно не какой доход, а какая прибыль. Ведь разработка движка требует немало вложений.
При этом у меня нет сомнений что у эпиков все ещё долго будет хорошо. Просто гложет любопытство могут ли они просрать все полимеры и по какому сценарию
Я имел ввиду условный Люмен, там есть множество технологий те же Virtual Shadow Maps - очень прожорливые, они делаю работу с тенями очень простыми, снимая весь геморрой, но стоят они столько... Нанит имеет ограничения, на старых видеокартах - минимальная база, которая требуется для старта съедает прилично, и именно, на старых видеокартах, хотя новые, даже менее производительные - проблем не чувствуют совсем. Опять же, после короны, многие развитые страны быстро и массово обновились до железа последнего поколения, а как известно проблемы индейцев - шерифа не волнуют.
Суд с эпл был ещё до появления UE5, и даже тогда представленные данные, были ретроспективными с лагом в пару лет. Те данные на которые вы ссылаетесь - это показатели 2019 года. Все эти акции с Нанитами и Люменом - очень хорошо продали движок, а реальные отчисления с него, Эпики начали получать всего только год назад, когда проекты увидели релиз.
С такими бюджетами и уже наработанными технологиями, даже если они закроют разработку вообще, они ещё года 3 проедать заработанное будут. Как говорится too big to fail.
В теории, можно предпринять меры по увеличению отчислений, конкретно политика, которую выдвинули Юнити - ровно так же убийственна и для Анриала, после такого, они бы очень сильно убавили в росте. Хотя, он навряд ли бы кончился, учитывая клиентуру, конкретно, Анриала. Можно начать увольнять разработчиков, и повышать отчисления, убрать бесплатный доступ. Но даже когда у Анриала были все эти недостатки в прошлом, он всё ещё был прибыльным и развивался. Всегда будет дешевле купить, даже дорогой Анриал, чем писать свой движок, если вам нужно, что-то более-менее мощное. Анриал после такого, может, разве что, сдать позиции в пользу Юнити.
Просто напоминаю, гонка игровых движков существует относительно не так долго, когда-то она существовала на заре игровой индустрии в 90-х и начале 2000-х, и потом, во второй половине десятых, с появлением Юнити и только с 4 версии Анриала, движки начали вообще хоть куда-то двигаться. Поэтому в этой индустрии - не обязательно стараться как Анриал, но если кто-то старается, то он точно заберёт у вас клиентов. В этом по сути и заключалась стратегия Юнити. Ни кто не знал, что выкатят Эпики, вообще ни кто.
Эх, променяли Unreal Tournament на Fortnite
Было бы здорово вместе с уровнем сложности и прочими ярлыками показывать оценку уровня языка. Например, ярлык ? показывал бы уровень грамотности значительно ниже среднего по Хабру.
да, сложно пробираться сквозь текст. но статья мне нравится: она не похожа на копроблоговскую генеративную жвачку, больше похоже на то, что автор высказывает свое личное (похоже на конструктивное) мнение по поводу UE5 и оно прямо вразрез идет с тем, что, например, высказывается от самих iXBT games: https://youtu.be/DzZF6bQjG6c
и прошу заметить, количество просмотров тут 2к, в ролике на ютубе 500к.
и я думаю, что мне придется еще не раз возвращаться к этой статье
возможно ли сравнить UE5 с Source 2?
А почему они нуждаются в сравнении? Они никак не пересекаются.
Unreal Engine 5 доступен любому желающему со всеми его возможностями и отличной документацией. Ориентирован в первую очередь на передовые графические технологии и удобство кроссплатформенной разработки.
Source 2 внутренний инструмент Valve Software, отчасти доступный сторонним разработчикам, но без толковой документации. Если индивидуально договориться с Valve, то можно получить больше поддержки и возможностей. Ориентирован на высокую производительность, хорошо зарекомендовавшие себя обкатанные технологии и наиболее распространенные графические ускорители. Valve делает его для себя и под себя, просто не против поделиться, если кому-то еще очень надо.
Мешлеты в mesh-шейдерах - это любая группа вершин обрабатываемая параллельно, это WorkGroupID. Кластеры в Nanite - это часть иерархии видимости модели, это структурная часть самой модели.
https://developer.nvidia.com/blog/introduction-turing-mesh-shaders/
" The original mesh is segmented into smaller meshlets as figure 2 shows. Each meshlet ideally optimizes the vertex re-use within it."
https://docs.unrealengine.com/5.0/en-US/nanite-virtualized-geometry-in-unreal-engine/
"Nanite is Unreal Engine 5's virtualized geometry system which uses a new internal mesh format "
"During import — meshes are analyzed and broken down into hierarchical clusters of triangle groups "
Hierarhical clusters = LODS
Triangle groups = Meshlets
Разве концептуально не одно и тоже?
Наниты на само деле не имеют ничего общего с лодами, Наниты разбивают модель на кластеры точек, которые уже в свою очередь используются для куллинга.
https://docs.unrealengine.com/5.0/en-US/nanite-virtualized-geometry-in-unreal-engine/
' A Nanite mesh is still essentially a triangle mesh at its core with a lot of level of detail and compression applied to its data. On top of that, Nanite uses an entirely new system for rendering that data format in "an extremely efficient way.
Entirely new system - скорее всего эмуляция mesh-shaders для API < DX12
И все таки не кластеры точек, а иерархия кластеров групп треугольников.
Как я понял, вы сравниваете готовую технологию (с лодами, стримингом, куллингом, компрессией & etc.) и отдельные высказывания от мира Unity.
Ни кто за всё это время не сделал ничего подобного Нанитам.
Потому что это долго и дорого. Nanite работает на API ниже DX12. Дешевле делать такую технологию сразу под DX12+. Но даже при этом это "дешево" все равно долго и дорого, т.к. нужно принять очень много решений и наложить очень много ограничений. Для многих компаний, не имеющих такой уровень финансов и кадров, проще подождать конкурентов или пользоваться Nanite. Более того, сделать саму концепцию и рендер - это пол беды. Самое тяжелое - это tools.
Разве концептуально не одно и тоже?
Это хорошее замечание, я умышленно пренебрёг этим моментом, как по мне - это вводит больше непонимания и ложных параллелей. Мешлет - это локальный кусок меша, размером с блок видеокарты. То есть это выровненные данные. У мешлетов даже свойств нет, это просто массив. В то время как, Нанит использует именно иерархию и сложные взаимосвязи с компрессией и т.д. Мешлеты - это не часть меш-шейдеров вовсе, это подход Nvidia к выравниванию данных для оптимизации.
Entirely new system - скорее всего эмуляция mesh-shaders для API < DX12
Mesh-шейдер - это int Main(Polygon Args), я не совсем понимаю, как его можно эмулировать? Это даже в коде не отобразится, это просто декларация. У Mesh-шейдеров нет ни какого разбиения на структуру или иерархии. Голый меш-шейдер даже в теории не может рендерить что-то структурное.
Как я понял, вы сравниваете готовую технологию (с лодами, стримингом, куллингом, компрессией & etc.) и отдельные высказывания от мира Unity.
Нет, я сравнивал Нанит с тем, что ему приписывают. Его называют - кастомным меш-шейдером, но меш-шейдеры доступны любому разработчику, они подключаются в 5 строк кода, но они не делают ничего подобного, что делает Нанит. У вас просто эмпирический на выходе не будет Нанита. Как Нанит может быть меш-шейдером, если меш-шейдер не умеет делать то, что делает Нанит?
Мешлет - это локальный кусок меша, размером с блок видеокарты. То есть это выровненные данные. У мешлетов даже свойств нет, это просто массив.
Мешлеты - это не часть меш-шейдеров вовсе, это подход Nvidia к выравниванию данных для оптимизации.
Но чтобы послать на рендер из движка, вы все равно будете делать структуру этих данных для меша. Это вопрос терминологии, а не концептуальная разность. Ну давайте по аналогии с пикселем-текселем (picture element / texture element) назовем эту сущность мешель-meshel (mesh element). Что поменяется с точки зрения разбиения меша (все равно надо учитывать выравнивание, локальность)? Да и нередко термин за время существования смещает свой смысл. На мой взгляд с мешлетом так и произойдет.
В то время как, Нанит использует именно иерархию и сложные взаимосвязи с компрессией и т.д.
Ну правильно. Если реализовывать рендер на меш-шейдерах, это все придется делать. Они ж не из коробки дают профит. Т.е. уместно было бы сравнивать либо две технологии, либо конкретную концепцию из нанита с мифом. Просто люди, которые не разбираются в этом, могут использовать формулировки из вашей статьи, которые, на мой взгляд, имеют легкие неточности, за которые могут зацепиться и не понять основного поинта.
Mesh-шейдер - это int Main(Polygon Args), я не совсем понимаю, как его можно эмулировать?
Это моя кривая формулировка, я имел ввиду новый подход к рендерингу на task/mesh шейдерах. Эмулировать - это на уровне движка работать с "meshel", в вершинном буфере они будут обычными локализоваными треуглами, и далее шлём на обычный конвеер. Так же есть не нулевая вероятность, что мешели можно находить схожие и заменять на какую нибудь среднюю, интерполированную версию. Но это уже концептуальные фантазии.
Его называют - кастомным меш-шейдером
Ну это чушь какая-то. Сравнивать технологию с вычислительным блоком. Разве это им нужно объяснять? )
но меш-шейдеры доступны любому разработчику, они подключаются в 5 строк кода
А они могут показать демку, если это так просто? ) (я понимаю, что речь идет о простоте подключения, а не простоте рендера, но выйти на этот тезис несложно)
Как Нанит может быть меш-шейдером
Никак.
Есть подозрение что, чтобы реально донести, нужна более сложная подробная статья, которую, я полагаю, смысла для вас писать никакого.
Я же лишь выделил те моменты, за которые ваши опоненты могут зацепиться.
Как минимум, мы это обсудили в комментах и дополнили общую доказательную базу )
(все равно надо учитывать выравнивание, локальность)?
Нет, это полностью опционально, вы можете использовать mesh-шейдеры без мешлетов. Обычные меши так же подходят. Просто Nvidia демонстрирует, что вы имеете прямой доступ к геометрии и показывает свой подход. Это не обязательно, это просто пример от Nvidia. Вы же не ждали на презентации пустой шейдер, который ничего не делает?
Ну это чушь какая-то
Это буквально то, что я слышал от других разработчиков, это то, что можно найти под видео. Про это делают видео, каналы миллионники: https://youtu.be/LlnTBmPJklU?t=124&si=7H6cAnFTyh83WxSr
Просто Nvidia демонстрирует, что вы имеете прямой доступ к геометрии и показывает свой подход. Это не обязательно, это просто пример от Nvidia.
Ну подход про локальные группы треугольников тема же старая?
Если ее брать, как концепцию, то она одинакова, что у нвидии, что у нанита - давайте группировать локально не вершины, а треугольники, т.к. есть куча профита для высокополигонального ренедринга и рейтресинга.
Я думаю, с этой точки и идет дальнейшее ложное сравнение, что нанит - это мешшейдер.
это то, что можно найти под видео
Ох, там смешались в кучу люди-кони...
Возможно я ошибаюсь, но, насколько я понимаю, их концепцию: в Nanite они сделали что-то аналогичное адаптивному LOD для земли, но вместо heightmap-а использовали расстояние до базовой модели и переложили генерацию треугольников на видеокарту. А цветные кусочки - это те самые heightmap-ы на которые разбита моделька и которые использует шейдер для генерации треугольников.
https://docs.unrealengine.com/5.0/en-US/nanite-virtualized-geometry-in-unreal-engine/
During import — meshes are analyzed and broken down into hierarchical clusters of triangle groups.
During rendering — clusters are swapped on the fly at varying levels of detail based on the camera view, and connect perfectly without cracks to neighboring clusters within the same object. Data is streamed in on demand so that only visible detail needs to reside in memory. Nanite runs in its own rendering pass that completely bypasses traditional draw calls. Visualization modes can be used to inspect the Nanite pipeline.
Все таки группы треугольников. Тем более, что они уже работают над анимацией в нанит, а с хайтмапой это дичайше сложная задача.
Обычные движки не могут больше 100к полигонов отображать чего? Дум3 несколько миллионов вертел, у элой из хорайзон только на волосах 300к полигонов. Меш шейдеры как и все лучи это заслуга директ икса, а не анриала или нвидиа. В юнити тоже воткнуть эту преблуду если уже не воткнули какими нибудь плагинами. Статья не о чем
Так а всё же, тот видос с заброшки с пушкой от первого лица — реальное видео или нет?
Учитывая, что вы смотрите его на Ютуб, это абсолютно реально - видео.
Если вы про Unrecord, то это вполне по силам UE5. В видео вполне видны все артефакты присущие современной 3D графике, местами низкополигональные модели, физически некорректные отражения, неудачные текстуры, отсутствие поверхностного затенения у динамических объектов.
Проблема в том, что при таком уровне детализации обеспечить приемлемую производительность этого проекта на чем-то помимо RTX 4090 может быть сложновато.
Я правильно понимаю что исходники UE5 доступны любому желающему? Тогда интереснее было бы почитать статью про то чем этот нанит все-таки является. Потому что эти "революция миллиард треугольников скоро и на мобилках где они не влезут даже в оперативную память" и "это не лоды, тут всё точно, но при этом можно выставить качество и только при 100% это эквивалентно честной отрисовке" выглядят странно.
Нанит производит конвертацию модели, в этот момент можно и выставить качество конвертации. Возможно, я не правильно выразился - Нанит использует уровни детализации для кластеров, но не в привычном понимании, это скорее тесселяция, чем обычные лоды.
Тогда интереснее было бы почитать статью про то чем этот нанит все-таки является.
Вы можете прочитать про это из первых рук.
Да и посмотреть на исходники (при наличии доступа) тоже можете -UnrealEngine/Engine/Source/Runtime/Renderer/Private/Nanite. А здесь шейдеры - UnrealEngine/Engine/Shaders/Private/Nanite
Если очень грубо - это хитрый софтверный растеризатор с иерархией, который конечно же эксплуатирует mesh-shader'ы, если они доступны.
Хотел тезисно ответить на статью, но она представляет из собой какой-то бессвязный поток сознания и борьбы с Юнитишниками тезисами, которые автор непонятно где увидел.
Если очень грубо - это хитрый софтверный растеризатор с иерархией, который конечно же эксплуатирует mesh-shader'ы, если они доступны.
Не совсем, там используется и софтверный, написанный на Cuda и OpenCL, и одновременно классический конвейер. Результаты объединяются, архитектура Unreal Engine - позволяет проворачивать такой трюк. Но ни какой иерархии растеризации нет, вы вероятно перепутали с Иерархичным Буфером Глубины(HZB), который используется для кулинга или вы, вообще, о геометрии.
Господи, всё ждал, когда же автор наконец соизволит объяснить человеческим языком, что же за магию делают эти ваши Наниты, но, видимо, не в этой жизни… Они не это, не это и не это, ха-ха, лузеры! Ну а так что же?
Анрил безусловно всех победит в будущем, т.к. мы живем в мире капитализма. Но пока анрил смог победить только мой пк неадекватными системками на игры, выходящие на этом волшебном движке, и мои глаза количеством мыла на экране
На голом Анриал 5, игра перенесённая с Анриала 4 - будет работать быстрее. Нанит - это тоже технология снижающая потребление ресурсов, она может выдавать не только модели высокого качества, но и огромное количество самих моделей, включение технологии Нанит для проекта на Анриал 5 - увеличит производительность.
Простите, но нет. Это вам как техлид игры на UE5 говорю. И ещё вижу двоих на работе на соседних проектах. В остальном статья хороша, пишите ещё.
Статья хороша
По поводу тотального доминирования Unreal - и проблемы и популярность Unity не обусловлены проблемами State of Art рендеринга.
Часть из них безусловно технические, но это скорее к бизнес модели.
Наниты угрожают юнити чуть более чем вообще никак. Подавляющее большинство выпускаемых игр на юнити это не гиперреалестичные AAA-шутаны с миллионами полигонов, а что-то с половиной пунктов из: мобильное, двухмерное, стилизованное, индюшатина.
Эх, если бы в UE из коробки завезли возможность писать код на dotnet.. а так грустим-грустим
Соглашусь, по моим оценка, это буквально единственная серьёзная причина, почему многие остаются на Unity. Писать код на Шарпе значительно проще.
Но могу вас заверить, Unreal Engine использует много обёрток и даже собственный сборщик мусора, чтобы разгрузить программиста, попытки перейти на C++, будут для программиста намного проще.
Мифы об Unreal Engine 5 — Nanite