Как сделать нанитов

Обновлено: 04.07.2024

Наниты уже в телах людей и пожирают их изнутри. И это не выдумка. Еще 2 года назад многие пациенты жаловались на странный зуд под кожей. Высыпания на коже, зуд невыносимый. Потом оттуда нити начинают вылезать, какие то паучки белые и красные. Причем, непонятно вообще, как лечить. Ничего не помогало. Попробовали давленным чесноком- помогло. Но в других местах вылезает. Скорее всего, это нано-роботы . Проникают через продукты с ГМО. Встроенные геном в растения. Через лекарства, напитки , соки. В это время как раз Гос.дура принимала закон о запрете чеснока:)) У меня даже пост был про это. Это связано с этим заболеванием нано- роботами. Заранее черные жрецы заботились о том, чтобы их наниты не гибли от этого атибиотика природного. Запрещали, а возможно, им удастся чеснок запретить даже высаживать. как и коноплю и многое другое. Наниты же должны сработать , иначе зачем они столько бабла в эти технологии влили?
В блоге у меня есть пост , как внедряют нанитов в аэропортах.

Она получила заболевание 11 лет назад, когда они с семьей отдыхали на природе, а позже выяснилось, и ее укусил слепень и с этого момента начались все ее мучения. На месте укуса был сильный отек, в больнице сделали димедрол и с Богом отправили домой. Все действительно прошло, а через месяц на месте укуса возникла язва, которая очень болела, не заживала и женщина обратилась в поликлинику, где ей поставили более чем необоснованный диагноз: тромбофлебит, варикозная язва.
На ее слова о том, что это результат укуса некоего насекомого не обратили внимания. А дальше в точности по описанной схеме: раны начали появляться вначале рядом, затем ареал распространения рос, уже на обеих ногах все было покрыто язвами, из ран выделялись белые длинные нити, черные личинки и кто-то вылетал, но эти рассказы в поликлинике у дерматолога не вызывали ничего, кроме направления к невропатологу. И так 11 (. ) лет. У нее собрана целая коллекция этой живности в трех пробирках: там и эти белые волосы и какие-то черные личинки и что-то с крылышками. Вот и наши пациенты точно так же описывали начало заболевания. Все точь в точь.
Если вы думаете, что вас это не коснется, то ошибаетесь. Новая эпидемия связана именно с нанитами. Причем, полномасштабная.

Попался интересный пост про то, какими способами темная "элита" может начать сокращать население. В данном случае с использованием нанотехнологий.

Рассмотрим предпосылки


  • во-первых, я уже писал, что роботы могут полностью заменить 90% населения ( и это оптимистичный прогноз)
  • во-вторых, вся финансовая система только и ждёт удобного случая обрушиться и под своими обломками похоронить экономику, а это голодные бунты, потеря управляемости, опасность для жизни черной "элиты".
  • в-третьих, сама текущая экономика так заточена, что безумное потребление/производство поставило человечество на грань экологической катастрофы

Т.е. как ни крути, миллиарды населения не нужны "элите". Как их "утилизировать"?
Война? Как вариант. Но ведь может и ракета прилететь не к месту.

Поэтому, удобнее голод, болезни, нанотех, биотех. Вирусы, которые сами себя соберут, убьют жертву и разберутся не оставляя никаких следов.

Т.е. и технологии есть уже такие и цель их применения на лицо. Да и так называемая "элита" не одну войну начинало, чтобы обогатиться, продавая обеим сторонам конфликтов как оружие, так и кредиты. Т.е. не единожды доказывала "элита" свою бесчеловечность.

Так что с вероятностью 99% оружие истребления уже тестируют. Понятное дело, что легче всего спрятать концы там, где идет война - как вариант - бывшая Украина.

Тем более, если наноботы заточены под белую расу.

Опасность реальная, что делать

Как минимум распространять информацию и логику, почему все это реально.
Потом, стоит понять, как бороться с нанотехом или биотехом, если уж случилось заражение.

Для биотеха (всякие грибки/паразиты) - подозреваю, что паразитарный организм имеет более низкие вибрации, чем организм носителя. Поэтому, стать для паразита "токсичным" - поднять до неприемлемого для его жизни уровень вибраций.

Для нанотеха - как-то надо используя энергетику потоков планеты прожигать себя каждый день.

Для скептиков. Вся ваша материальность - всего лишь энергия, пусть и в сверхконцентрированном виде. Так что сознание может влиять на материю.

Наниты впервые были использованы на практике!

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

Наноро́боты, или нанобо́ты — роботы, размером сопоставимые с молекулой (менее 100 нм), обладающие функциями движения, обработки и передачи информации, исполнения программ.

Другие определения описывают наноробота как машину, способную точно взаимодействовать с наноразмерными объектами или способной манипулировать объектами в наномасштабе. Вследствие этого, даже крупные аппараты, такие как атомно-силовой микроскоп можно считать нанороботами, так как он производит манипуляции объектами на наноуровне. Кроме того, даже обычных роботов, которые могут перемещаться с наноразмерной точностью, можно считать нанороботами.

Более интересную и работающую версию нанитов создали ученые из Калифорнийского университета. Результатом их исследований стали микроскопические роботы, способные доставлять лекарства внутри организма, не вызывая при этом болевых ощущений или побочных эффектов.

Созданные роботы перенесли на себе частицы лекарственных препаратов, используя в качестве топлива пузырьки газа. Газ, кстати, является продуктом жизнедеятельности живого существа, он образуется внутри желудка. В качестве первого испытателя выступила лабораторная мышь, при этом она не испытывала какие-либо неудобства и осталась цела.

Ученые говорят о том, что такой результат говорит о большом прогрессе в отрасли, ведь созданные ими роботы смогли двигаться в организме со скоростью 60 микрометров в секунду. Для того чтобы доставить лекарство до пункта назначения (а в этом эксперименте им нужно было добраться до оболочки желудка), пришлось затратить некоторое время, при этом роботы оставались в желудке примерно двенадцать часов, это позволило им точечно впрыснуть лекарство и добиться предельной эффективности его действия.

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

Сейчас ученые думают над тем, как увеличить скорость передвижения, а также об альтернативном топливе, так как использование газа может негативно сказаться на состоянии человека.

После показа впечатляющего демо год назад и недавнего показа в превью UE5, Nanite сейчас весьма популярная тема. Мне просто захотелось окунуться в эту тему и немного развлечься, пытаясь разобраться и объяснить как на мой взгляд всё это работает и какие технические решения стоят за этим, используя кадр захваченный в RenderDoc. Стоит отдать должное Epic за открытость их технологий, что делает проще их изучение и структурирование; в редакторе есть маркеры и отладочная информация которые оказываются очень полезными.

Это кадр, который мы собираемся рассмотреть из демо-проекта Долина Древних. Он показывает взаимодействие между Nanite и не-Nanite геометрией и оно сделано действительно круто.


Nanite::CullRasterize

Первый этап в этом процессе — это Nanite::CullRasterize, и выглядит он следующим образом. Этот вызов отвечает за отсеивание экземпляров объектов и треугольников и их растеризацию. Ниже показано, как это выглядит в захваченном кадре.


Отсеивание экземпляров объектов

Одна из первых вещей, которые здесь происходят, это отсеивание экземпляров объектов. Похоже, что это фильтрация по пирамиде видимости и окклюзии на GPU. Тут используются как данные экземпляра, так и данные примитива и я предполагаю, что вначале происходит отсеивание целых объектов и если экземпляр остаётся, то начинается фильтрация на более детальном уровне. В буфере Nanite.Views хранится информация о камере для фильтрации по пирамиде видимости и иерархический буфер глубины (HZB), используемые для фильтрации окклюзии. Для построения иерархического буфера глубины берутся данные с предыдущего кадра и репроецируются на текущий. Я не уверен в том, как обрабатываются динамические объекты. Возможно, используется достаточно большой MIP-уровень (с низким разрешением), который достаточно консервативен.

Видимые и скрытые объекты записываются в буферы. Последние, как мне кажется, нужны, чтобы выполнять запросы окклюзии: информируем CPU что некоторый объект не видим и перестаём его обрабатывать пока он не станет видимым. Видимые объекты также записываются в список кандидатов на отрисовку.

Персистентное отсеивание

Судя по всему, персистентное отбрасывание связано со стримингом. Это фиксированный набор потоков вычислительного шейдера, которые, предположительно не связаны со сложностью сцены и вместо сцены, вероятно, проверяют окклюзию для некоторой пространственной структуры. Это довольно сложный шейдер, но глядя на его входные и выходные данные можно понять, что он пишет сколько кластеров треугольников каждого типа (для традиционной растеризации и растеризации с помощью вычислительных шейдеров) видны в буфер MainRasterizeArgsSWHW (SW-растеризация в вычислительном шейдере, HW — обычная растеризация).


Кластеризация и уровни детализации

Самое время поговорить об уровнях детализации, потому что именно здесь выбираются уровни для отрисовки. Несмотря на то, что некоторые люди предполагали использование геометрических изображений как способ уровней детализации, переходящих друг в друга, я не вижу здесь ничего подобного. Треугольники сгруппированы в патчи, которые именуются здесь кластерами. Некоторая часть отсеивания геометрии происходит на уровне кластеров. Техника кластеризации уже была ранее описана в статьях от Ubisoft и Frostbite. Для конкретного уровня детализации кластеры появляются и исчезают по мере уменьшения детализации для экземпляра объекта. Тут использованы какие-то сложные магические заклинания для того чтобы кластеры соединялись друг с другом без швов.

Растеризация

В захваченном кадре есть два вида растеризации: на вычислительных шейдерах и традиционная с вызовами отрисовки. Буферы, полученные на предыдущем шаге, содержат аргументы для выполнения непрямой отрисовки.

Нарисовать 3333 экземпляра с 384 вершинами каждый. Запустить 34821 группу для вычислительного шейдера

Нарисовать 3333 экземпляра с 384 вершинами каждый. Запустить 34821 группу для вычислительного шейдера

Первый вызов отрисовки использует традиционную аппаратную растеризацию. Критерий для предпочтения аппаратной или программной растеризации не очень понятен, но можно предположить, что он связан с размером треугольников относительно пикселей. Ранее Epic отмечали, что растеризация в вычислительных шейдерах может превосходить аппаратную растеризацию в некоторых сценариях, в то время как в остальных предпочтительнее аппаратный подход. Эти сценарии связаны с тем как аппаратная растеризация захлёбывается на большом количестве очень мелких треугольников поскольку не может эффективно распланировать их обработку. Страдает как загрузка видеокарты, так и производительность. Я могу найти несколько экземпляров из больших треугольников, но это сложно выбрать предпочтительный вид растеризации просто смотря на них.


Информация выше показывает нам размер кластеров (384 вершины, т.е. 128 треугольников). Он подозрительно хорошо делится на 32 и 64 которые обычно выбираются для эффективного заполнения варпа на GPU. Итак, 3333 кластера рисуются аппаратно в то время как программная растеризация позаботится об остальной геометрии Nanite. Каждая группа состоит из 128 тредов, поэтому я предполагаю, что каждый тред обрабатывает 1 треугольник (каждый кластер это 128 треугольников). Колоссальные 5 миллионов треугольников! Эти цифры говорят, что более 90% геометрии растеризуется программно, что подтверждает сказанное Брайеном Карисом здесь. Для теней выполняется тот же процесс, только рисуется всё в буфер глубины.

Описанный выше процесс повторяется для некоторой части геометрии в Post Pass. По-видимому, причиной для этого служит то, что Nanite создает более актуальный иерархический буфер глубины (в BuildPreviousOccluderHZB) с информацией о глубине для текущего фрейма, полученной на данном этапе, комбинирует её с информацией из ZPrepass (проход, который выполняется до начала Nanite) и использует все эти данные для более корректного отсеивания. Мне интересно, как происходит отсеивание для геометрии, которая была на краях буфера глубины с предыдущего кадра или была не видна на предыдущем кадре, чтобы не было артефактов с резким появлением объектов. В любом случае результатом стадии растеризации является одна текстура, о которой мы поговорим далее.

Буфер видимости

Одна из главных особенностей Nanite это буфер видимости. Это текстура формата R32G32_UINT, которая содержит информацию о треугольнике и глубине для каждого пикселя. На этом этапе ещё нет информации о материалах и данные из первого канала содержат информацию необходимую для получения свойств материала в дальнейшем. Буфер видимости — это не новая идея. Она уже была описана ранее (например, здесь и здесь), но насколько я знаю, не было коммерческих игр с ней. Если отложенное освещение отделяет освещение от геометрии, то эта идея разделяет геометрию и материалы: каждый пиксель/материал треугольника вычисляется только один раз и доступ к текстурам, буферам и ресурсам не осуществляется, если в дальнейшем эти данные не понадобятся. Буфер видимости организован следующим образом:

R [31:7]

R [6:0]

G

ClusterID (25 bits)

Triangle ID (7 bits)

32-bit Depth

ID кластеров ID треугольников Глубина

Тут возникает верхняя граница в примерно 4 миллиарда (232) треугольников, что было вполне достаточно ранее, но теперь я в этом уже не уверен. Вещь, которую я нахожу интересной, как эта информация ограничена. Другие подходы к буферу видимости предлагают хранить барицентрические координаты. Всё остальное будет получено позже при пересечении треугольника с лучом из камеры, чтении данных из исходного буфера и вычислении вертексных атрибутов на лету. Это детально описано здесь. И последнее замечание, можно заметить щель там где должен стоять персонаж, что позволяет оценить эффективность системы отсеивания.

Nanite::EmitDepthTargets

Маска Nanite Векторы движения Nanite Глубина сцены

Глубина материала

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


Nanite::BasePass

К счастью, сейчас мы имеем хорошее понимание геометрического конвейера. До сих пор мы вообще ничего не говорили о материалах. Это весьма интересно поскольку между генерацией буфера видимости и текущим моментом, много времени тратится на другие вещи: сетка освещения, атмосфера и т.д. и ещё рисуется G-buffer как это обычно бывает. Это действительно разделение геометрии и материалов, то на что и нацелен буфер видимости. Важные шаги происходят внутри Classify Materials и Emit G-buffer.


Classify materials

В проходе классификации материалов запускается вычислительный шейдер, который анализирует полноэкранный буфер видимости. Это очень важно для следующего прохода. Результат этого прохода — это текстура размером 20x12 (=240) пикселей в формате R32G32_UINT, которая называется Material Range. В ней закодирован промежуток материалов представленных в регионе размером 64x64. Это выглядит вот так:


Emit G-buffer

Мы наконец достигли точки, где встречаются видимость и материалы. Здесь информация треугольников из буфера видимости превращается в свойства поверхности. Unreal позволяет пользователям задавать произвольные материалы поверхностям. Так как же эффективно работать с этой сложностью? Вот как выглядит Emit G-buffer.


Мы видим что-то похожее на вызовы отрисовки на каждый ID материала и каждый вызов отрисовки делит экран на 240 квадратов, которые отрисовываются на экране. Полноэкранный проход отрисовки на каждый материал? Они обезумели? Не совсем. Мы отмечали ранее, что текстура с промежутками материалов состоит из 240 текселей, поэтому каждый квад такого полноэкранного прохода соответствует одному текселю. Вершины квада семплируют эту текстуру и проверяет релевантен ли квад для текущего прохода. Если нет, то координата x для вершины выставляется в NaN и весь квад отбраковывается. Это известная операция.

Насколько я могу судить, система использует 14 бит для ID материала. Максимум 16384 материалов. Через константный буфер в вершинный шейдер передаётся ID материала и можно проверить попадает ли он в промежуток материалов.

Вдобавок, вспомним, что мы сделали текстуру с глубиной материалов, где каждый ID материала выставляется в качестве глубины. Квады в качестве глубины хранят номер материала, и выполняется тест глубины установленный на равенство. Таким образом железо может очень быстро отбросить все нерелевантные пиксели. В качестве дополнительного шага движок имеет ранее размеченный трафаретный буфер, в котором отмечены пиксели, содержащие геометрию Nanite. Это позволяет использовать ранний тест трафарета в качестве оптимизации. Чтобы понять, что всё это значит, посмотрите на буфер альбедо.

Сетка применения материалов Nanite Тест глубины для материала Nanite Вторая сетка применения материалов Nanite Тест глубины второго материала Nanite Последняя сетка применения материала Nanite Последний тест глубины Nanite Альбедо Nanite

Вы могли заметить, что некоторые квады полностью красные. Я предполагал, что они будут полностью отброшены в вершинном шейдере. Однако, я думаю, что текстура с промежутком материалов не зря называется именно так и это именно промежуток материалов, которые есть в тайле. Если материал внутри этого промежутка, но ни один пиксель ему не соответствует, он будет принят как кандидат несмотря на то, что будет полностью отброшен далее в тесте глубины. В любом случае, это главная идея. Один и тот же процесс, показанный на изображениях повторяется для всех материалов. Финальный G-buffer выглядит как тайлы ниже.


Заключительные замечания


На этом Nanite заканчивается и последующий конвейер отрисовки переходит к обычному отложенному освещению. Проделанная работа действительно замечательна. Я уверен, что есть ещё множество деталей, о которых я не знаю и неточности в том, как это работает. Поэтому я с нетерпением жду, что Брайен Кэрис расскажет на SIGGRAPH в этом году.

Нанороботы ― это слово часто можно услышать или прочитать в новостях науки. Их называют одними из самых перспективных инструментов для лечения тяжелых болезней. Но что это такое? ITMO.NEWS объясняет вместе с лауреатом программы ITMO Fellowship & Professorship Дианой Маркозашвили.


Иллюстрация: Дмитрий Лисовский, ITMO.NEWS


Чаще всего под нанороботами подразумевают структуры с программируемым поведением, которые могут точно взаимодействовать и манипулировать другими объектами. И всё это ― на уровне наноразмеров, то есть на атомном и молекулярном уровне. Размеры таких роботов могут варьировать от одной десятой нанометра до ста нанометров, в зависимости от их конечного устройства.


В привычном нам понимании микросхем из полупроводников и манипуляторов, отлитых из металла, у них нет. Они состоят из молекул и атомов, причем их устройство может быть совершенно разным. Такие конструкции могут быть сделаны из органических соединений (белки, нуклеиновые кислоты), неорганических (соединения кремния, углерода, ферроматериалов) и их сочетаний.


Здесь следует внести уточнение: следует отличать наномашины от нанороботов. Отличие заключается в том, что, помимо сенсорной и двигательной части, робот должен иметь процессор как отдельную функциональную единицу. Иначе ― это машина. И следуя данной классификации, нанороботов пока еще не создали, хотя подвижки в эту сторону есть.



Возьмем для примера наномашины на основе ДНК, которыми занимаются ученые SCAMT. Зная генетический код, они подбирают определенную нуклеотидную последовательность цепей и синтезируют короткие ДНК-цепочки. По законам образования химических связей и правилу комплементарности эти ДНК цепочки собираются в определенную структуру, которая может узнавать и связывать другие молекулы ДНК или РНК и разрезать их. То есть их проектируют так, чтобы они связывали именно нужные молекулы, а другие не трогали.



Путь от идеи до финальной реализации, тем более на людях, крайне долгий. Во-первых, нужно отработать систему, убедиться, что она безукоризненно работает и уровень токсичности и побочных эффектов не критичен. Сначала новые разработки тестируют в пробирке ― in situ. Потом в клетках, которые живут в искусственных условиях ― это называется in vitro. Потом на модельных живых организмах, например, мышах ― это in vivo эксперименты. Все это является доклиническими исследованиями. Если все идет хорошо, то переходят к следующих этапам ― клиническим испытаниям на людях, тех, кто добровольно согласился испытать на себе новый препарат. В клинических испытаниях есть тоже несколько фаз. И только после успешного завершения всех исследований новый препарат может выйти в производство на рынок.


Современная тенденция в мире изобретений ― это уменьшение размера и повышение эффективности. Поэтому и бионанотехнологии, объединяющие в себе инженерию и биохимию, завоевывают все большую популярность. Ведь одна наномашина сочетает в себе различный функционал, которым можно управлять, к тому же, ему доступны объекты на наноуровне, а это открывает новые возможности для диагностики и лечения заболеваний. Но в отличие от компьютерных технологий, что крайне быстро изменили нашу повседневную жизнь, у бионанотехнологий несколько более длинный путь выхода на рынок и в нашу повседневную жизнь. Но это лишь вопрос времени.

Читайте также: