Трассировка фотонов

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

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

Как это работает[править]

Представь: у тебя есть сцена в 3D, на ней какие-то объекты, и есть источник света — лампа, солнце, факел, неважно. Из источника стартуют миллиарды виртуальных фотонов (ну, почти настоящих), и они начинают путешествие по сцене. В реальности это всё происходит за доли секунды, но твоему железу придётся посчитать каждый грёбаный фотон. Прямо вот каждый.

Генерация фотонов[править]

Источник света кидает фотоны во все стороны. Это как на вписке, где кто-то кинул хлопушку, и конфетти летит по всему помещению — фотоны примерно так же рассеиваются по сцене.

Взаимодействие с поверхностями[править]

Фотоны сталкиваются с поверхностями: отскакивают, преломляются, рассеиваются, и вообще делают всякую физическую хрень. Тут вступают в дело всякие коэффициенты отражения и преломления. Если у тебя стекло — фотон частично пройдёт через него, если металл — отскочит, как мячик от стены. И всё это нужно просчитать.

Отражение и преломление[править]

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

Множественные взаимодействия[править]

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

Энергетический вклад[править]

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

Отличия от трассировки лучей и путей[править]

Значит, у нас есть три популярные метода симуляции света в рендеринге: трассировка лучей (Ray Tracing), трассировка путей (Path Tracing) и наша звезда — трассировка фотонов (Photon Tracing). Эти термины звучат похоже, но на самом деле отличаются, как твой учитель математики от мемов в интернете. Давай разберёмся, чем они отличаются:

Трассировка лучей (Ray Tracing)[править]

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

Трассировка путей (Path Tracing)[править]

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

Трассировка фотонов (Photon Tracing)[править]

Ну, а трассировка фотонов — это вообще другая песня. Здесь всё наоборот: свет рассчитывается от источников, а не от камеры. Источники света испускают фотоны, которые летят по сцене, сталкиваются с объектами, отражаются и преломляются, постепенно теряя энергию. В отличие от предыдущих методов, фотонная трассировка напрямую моделирует глобальное освещение, учитывая даже самые мелкие эффекты вроде каустики (это такие световые узоры на дне бассейна, например).

Почему трассировка фотонов круче?[править]

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

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

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

Для чего это всё нужно[править]

Ну, вообще, трассировка фотонов — это топчик для тех, кто хочет, чтобы картинка выглядела как в жизни. Кино, игры, рендеринг сцен для спецэффектов — всё это требует отрисовки света по-честному. Никакого фейка, только хардкор. Правда, на полную трассировку твоя видеокарта будет работать так, что нагреется как печка зимой. Видеокарты с поддержкой RTX и всякие там RT-ядра пытаются хоть как-то ускорить этот процесс, но если у тебя не топовое железо, то готовься к тому, что твой комп превратится в термоядерный реактор.

Зачем мне это[править]

Если ты хочешь графику уровня «чуть-чуть круче, чем реальная жизнь», и у тебя есть деньги на новую видеокарту, то трассировка фотонов — твоё всё. Но помни: если включить эту функцию на слабом компе, ты получишь примерно три кадра в минуту и сможешь варить кофе прямо на корпусе.

Telepuz 2.jpg Человек нонче игры разные ценит весьма, дык
МетаRPGИгровая консольШтампы в компьютерных играхИгровой движокТиммейтМассовый запрет игровых видео на YouTubeРейтыАгроWarcraft III — не канонАвтокликерДонат в игры из РоссииАрхидьявол (Герои 3)Лесные тени (Герои 3)Это собака?Blizzard измеряет соцсправедливостьЭто игра?Дроп (видеоигры)Надо, чтобы на КЧ напалПол это лаваКоллекционная играШахматная доскаВизуальная новеллаКонсольТяжёлые танки (World of Tanks)САУФлеш-игрыЛёгкие танки (World of Tanks)Консоле-холопыСредние танки (World of Tanks)Кризис переводов современных видеоигрКомпьютерное зрениеТокенОтсутствие МефистоБоязнь женской грудиSteam для пиратовБонусЗахват движенияПазлЗаконы жанраA-Life 2.0DxvkVkd3dСэм ХаузерClaw EngineCuckpointMi hermano no estáO3DEВыбор зомбиЧувак (Postal)Евгений ГришаковКрипыBaba YetuWarhammerСписок персонажей Sword Art OnlineГовноигрыБронечайка (Гвинт)ShovelwareШахматный рендерингDirectStorageAdventureЭкшн-триллерШутерыШутерыCRPGRTSTBS
ЯвленияЖульничество в шахматахРусская кибердеревняОткрытый мирКастомизация персонажаElden Ring против The Witcher 3ПапкаDarksiders GenesisЧекпоинтCheat EngineРед (персонаж)Speedrun.comМоей сестры нетЕврейские корни BioshockМитаСтиль миллениаловFextralifeДжонатан РоджерсМетание шахмат в оппонентаСломанная механикаПрокачкаПешкаЗемля свободныхФарм клоуновБольшая чёрная светящаяся сфераВойдзонаТень ОробиссаРаспуджовкаWho's Lila?Убийство АрхимондаПочему не ВайперНейтан ДрейкR.G. МеханикиГенеральский эффектОгромный боссЭпоха ремейковАлексей Воктаков (Катков)Травля Илона Маска псевдогеймерамиААА-игрыОптимизацияТройная буферизацияRTXSpeedrunБетрезенПацификаАльваро КалметTerminals.ioCs.rin.ruGaiminВайфугеймКвадратные кроссвордыПочему титаны слишком большого размера? (Хроники Хаоса)Души тьмыSegaФоллаут-онлайнГейлендКамень, ножницы, бумагаBASKACombats.ruАббревиатуры имени МедоксаОлег СтавицкийМобильные игрыАвтобаттлерОнлайн-игрыMOBABeat 'em upСкурвившиеся игрыТанки free-to-playZumaLuxorТапалки в ТелеграмеGLaDOSХейтеры про Ведьмак 3Деградация Equestria at War
ЭпическоеНайди отличияУльтаГриферыКрестики-ноликиДонатная помойкаМультиплеерГамблингАзартные игрыСеранаArdub92СасикSupermassive GamesСтарый богХагги ВаггиИл-2Шахматная партияВнутриигровая валютаГриндилкаКатсценаБэктрекингГлорхМясной жукВидениеRMTEMPRESSМемные карточки ХСЕкатерина СтадниковаЦарь Соломон и шахматыМасонские шахматыАвтошахматыСигма-гармонайзерЧёрная стражаTeam SpiritНиколай АрмоникБойкот лаунчеровАвтохукБуст аккаунта в ДотеДота как медитацияWraith KingFFAДмитрий РоммельДэвид МайерсБагоюзерствоАчивкаВетераны ВОВРуслан ДиденкоМоршуОлег ЯворскийЧерноруссияRagDollСаня ТропинGiboSteam MachinesЭльф-торговецHD-изданиеИнди-хитыМидирGrimtoolsИгра в настольные игрыМетарабыПавел БурзаNetHackГюнтер о'ДимКирилл Баранов (Пятёрка)FunpayКанобуТюрягаРенфриКастомизация оружияГенератор случайных чиселDisable Core 0HvHРомхакингИгры из репозиториев
ЛегендарноеТактические шутерыВиртономикаE3Настольные ролевые игрыМеркиSonyChris-chanSourceНастольная играГнилецБорьба с задницей ТрейсераКамбиВпук Дагона на рядДагон на токенахКотовухаБерашна а, бегашийна аДелает ли прокачка титана его сильнее или слабее? (Хроники Хаоса)Нужен ли Тесак? (Хроники Хаоса)На чём ездит Марта? (Хроники Хаоса)КибердемонЩитспавнRedotAsset FlipФайтингиMoswar.ruXbox Турция: Алярм, суки, аккаунты горят!Игру убилиЖенщина на корабле к бедеУправление рандомомИвентТрассировка фотоновHZB OcclusionTressFXОбъективный обзор игрПлотваChangedПочему плотва это лошадь?Расстрел НильфгаардаОрден смертного бденияУроборукКолдовские богиМусилакШтормовая плетьАнастерияНадзиратель ПотустороннегоЗвук пердежа в видеоиграхФракции Grim DawnКлючникКейранДевятая силаPay2WinБитва против 7 противников в Red Alert 2Гача-игрыMMORPGARPGRTSКвестFatCatDDrawCompat
Моды, карты и васянствоЛегенда о ТильдеParagonHorn of the AbyssJebus CrossX-PiratezOpenXComJebus OutcastThe World of Terrifying Silence6lm10a (шаблон)VANOMAS DEMO5 ночей с Тимохой 2: ДеревняСильная прокачкаSteampassФреймрейтNVidiaВзрыв лутаGTA: Криминальная Россия
Игры реалаLEGOMagic: The GatheringБерсеркГоДоминоКамень-ножницы-бумагаКубик РубикаМонополияНа раздеваниеПокерПреферансРусская рулеткаСтрайкбол / Пейнтбол / ХардболШахматыЭкономические игры с выводом средств
App.png Весьма полезная вещь, позволяет машинам работать с помощью коммандычей
МетаПрограммаDRM (SecuROMStarForceАналоговая дыра) • БагБот (Автоответчик) • Варез (Repack) • ГлюкГуйДонатКопирайт (By design) • ЛогНюкРут (Не работай под рутом) • Спортивное программированиеМегапиксельКомпьютерВерсия 2.0КодОбфускацияСкриншотДатамайнПлагинТекстовый файлБольшие данныеАльфа и бета-тестыТаймстампКэшШаблоныHello WorldНейросетиФайлИнсталляцияВидеоМощный сбой Microsoft 19 июля 2024 годаCrowdStrikeПроект GNUUserscriptDxvkVkd3dБратан хорош давай давай впередКонечный автоматLumenЗаступник (приложение)NeeUnreal MCPОптимизацияДрайверТестированиеТройная буферизация
ФичиБагрепорт12309BSODCookiesEmbrace, extend and extinguishFL StudioSheep.exeWinlogon.exeБубенЗащита от дуракаКостыльМашинный переводПасхальные яйцаСвистелки и перделкиСм. рис. 1Съешь ещё этих мягких французских булокTermuxGNU MetroИндусский кодНескучные обои • Сжатие (За сжатие ДжипегаШакалШкала) • Работает — не трогайРандомайзерPDF (Распознавание PDF) • Дело Google в ФАСЧат-ботXMLМакросКритическая ошибкаФреймворкСинонимайзерSourceТрёхмерное отслеживаниеТрассировка фотоновHZB OcclusionДаунгрейд RTX 4070TressFXАвтопереводчикVSCodiumThorium BrowserShovelwareФайл подкачки
ВредоносноеБотнетБрутфорсВинлокЗвонилкаКитайские пингвиныПиксель смертиТроянЧервь МоррисаBonziBuddyMediaGetBrowser hijackingTinderМиссис МажорУтечка буфера обменаWin 10 TweakerОпараш Mozilla FirefoxЯндекс.МузыкаКрэкерБезопасность через умолчаниеGrifter.aviTrojan.Winlock.DeathМиссис МажорСредаDirectStorageDriverpackГенератор случайных чиселDisable Core 0РомхакингDDrawCompatWingetCreateWinGetCoowonЯндекс МессенджерVCPkgSELinuxXfireYouTube Auto-ResumeTape OperatorBotFatherMTProtoSignalDoubleClickFixGitee
КомпанииApple / Apple (AppleScript) • GoogleMicrosoftSAPЯндексExiled Exchange 2BraveAdNauseamСкурвление FirefoxCafe BazaarAMD FEMFXPPSSPPАвтохукQuick machine recoveryMAXBypassNROWizTreeJTubeGallium NineFalconRu-WireGuardМобильное приложениеWebRenderСмс-бомбер
Движения8-bitOpen source (КрасноглазикиЛинуксоиды) • Вирусная сценаДаунгрейдДемосценаМоддингMMDDirectDrawЛагиБлокировка Дискорда в РоссииOpera GXНесоответствие MIME-типаRenoisePygameLs (UNIX)МетаданныеПатчNginxПиксельЭмуляторSearxТамТамMallocСвязный списокSOLIDGreasemonkeyПлатные сообщенияFlatpakNouveauFuse.js
Офис3DS MAXGIMPGNU EmacsMovie MakerMS Paint • OpenOffice • PowerPointviMicrosoft WordExcelБлокнотФотошопАнтивирус КасперскогоAvast!TikZShareXAlternativeToСкрепышMicrosoft OfficeТекстовый редакторWeChatZoomДиспетчер задачMicrosoft CortanaWinampBallonTranslatorKerish DoctorОбщая ошибкаFirefox: Как один баг сломал весь YouTubeМеждулициеMeld StudioLadybirdCheat EngineTotal Commander
ОСAndroidBSDDOSMenuetOSReactOSWindows (Phone 7Phone 878Vista) / МаздайЛинуксРусская ОСФантом ОСIndex.phpCompassУход мэйнтейнера NouveauБойкот лаунчеровAria2cNoiceMinecraft-Installer.exe
БраузерыInternet ExplorerОпера / Opera • Тормозилла (ОгнелисLolifoxMozilla FirefoxFirefoxFirefox Klar) • Хром (шпионаж) • SafariЯндекс.БраузерУведомления в браузереVivaldiTor-браузерЗосимаФронтенд
ИнтернетAdobe Systems (Flash) • I2PLow Orbit Ion CannonTorTunatic • Чат−клиенты (MirandaQIPSkypeЖабберDiscordVIPole) • HTTPSПрокси-сервер (Proxifier) • Торрент (Magnet-ссылкаΜTorrent) • JavaScriptCSSHTMLБаннермейкерИзменение TTL сетевых пакетовКапчаICQFiddlerViberZonaSteamSillyTavernWickr Me
РазработкаBrainFuckCC++C#JavaHaskellАссемблерChaos ConstructionsBATMySQLGitHubAutoHotKey (AutoHotInterception) • Sublime TextAPK (APKPureзапрет) • BASICPerlPythonPHPФоркUnity3DSAISIPСАПРФлагUTAUФласк макросАуработRaidCallAdobe MingОфициальный™ список кошерных программDevOpsНиколай Дуров
ЛюдиВеб-мастерLovinGODБалмерГейтсГенерал ФейлорДжобсМитникПоттерингде РаадтСпольскиСтоллманТорвальдсШахиджанянAche666Марк ЦукербергЕвгений ПоповДенис КумпонМассовая компьютерная безграмотность
КостылиCygwin • PunkBusterT9WineWishmasterАнтивирусыХакинтошСборки WindowsDenuvoЧистая установкаКалькулятор Consul WarMicrosoft StoreUBlock OriginLightshotAdBlockSearchApp.exeCPU-ZГуглPhotoshopКаптча с пчёламиВзлом Windows через MetasploitЩЩ Мессенджер
Команды^H^WAlt+F4Ctrl+Alt+Delman/me/quitrm -rf