O(1) precomputed raymarching
1:00
Wave equation solver
1:16
3 жыл бұрын
Sound wave simulation
0:55
4 жыл бұрын
Office after ExileCon
0:22
5 жыл бұрын
Simple GPU hydrodynamics
0:47
5 жыл бұрын
Пікірлер
@taliesinbeynon
@taliesinbeynon 2 күн бұрын
Reminds me a bit of lenticular holograms? But also, a funny analogy to the Heisenberg uncertainty principle. While that’s about arbitrary non-commuting operators, for position versus momentum it turns out to be about the 1/sigma that the Fourier transform does to the width of a Gaussian. But my point is: it is a constraint between spatial and temporal resolution, in some sense. Radiance cascades represent a spectrum of tradeoffs between spatial and angular resolution, right?
@Alexander_Sannikov
@Alexander_Sannikov 2 күн бұрын
i guess it is an analogy in mathematical sense, but i don't see how it's analagous in terms of physics
@SonNguyen-ew6nh
@SonNguyen-ew6nh 3 күн бұрын
how to implement it in c++. Can you show step-by-step?
@ArtificialDjDAGX
@ArtificialDjDAGX 14 күн бұрын
Could it be possible to combine this with a destructible environment? Like, precalculating all of the static and destructible objects as "transparent" models, so that no matter how they're destroyed, they render in a way that makes them accurate even if you were to noclip into them?
@p0146
@p0146 15 күн бұрын
bro has probably save us
@theshadowcult
@theshadowcult Ай бұрын
Can we get puddles and water to run the characters through in poe 2 with this? I'd probly spend hours just doing that over and over :D
@StanislavMarchevsky
@StanislavMarchevsky 2 ай бұрын
Для одной 2D картинки обычно используется трилинейная фильтрация 4 соседних пикселя * 2, с соседнего мипмапа (8 texel fetch). В этом случае нужно блендить между собой 4 соседних пикселя внутри текущего кубмапа * 2 (соседний мипмап кубмапа) * 4 соседних кубмапа * 2 (столько же соседнего каскада). Получается 4 * 2 * 4 * 2 = 8 * 8 = 256 тексельфетчей. Вроде и много, с другой стороны, всего в 8 раз больше обычной трилинейной картинки. Прикольно, надо брать)
@StanislavMarchevsky
@StanislavMarchevsky 2 ай бұрын
А, ну разве что, чтоб дойти до самого дальнего каскада, надо проитерировать ближайшие.
@Alexander_Sannikov
@Alexander_Sannikov 2 ай бұрын
нет, оно не так работает. каждый каскад -- это одна выборка в четырёхмерном пространстве. четырёхмерное -- потому что 2д выборка по пространству и 2д по направлению. в самой наивной реализации с четырёхлинейной интерполяцией (это как билинейная-трилинейная-четырёхлиненая) это 2^4=16 выборок на каскад. мипы с этой техникой использовать смысла нет, потому что максимально эффективно память используется на фиксированном отдалении камеры, поэтому запекается один соответствующий этому направлению мип. однако, в пространствах высокой размерности есть гораздо более эффективные методы интерполяции -- вместо 2^N мультилинейной интерполяции, можно использовать симплекс-интерполяцию, для которой нужно N+1 выборок. это становится особенно полезно для интерполяции в многомерных пространствах N>5.
@StanislavMarchevsky
@StanislavMarchevsky 2 ай бұрын
@@Alexander_Sannikov 🤔 Ага, слегка понял, на если уж докапываться - то уже у шейдертое) Кстати, ведь из-за больших пустых областей можно хорошо сжать текстуру, сделав её размер пропорциональным не объему, а приблизить к количеству вокселей вблизи поверхности, что пропорционально площади поверхностей запекаемой сцены. Ещё любопытно, что каскады - это и GI probes, и как reflection cubemap-ы в одном) Интересно, а для достижения шероховатости можно ли обойтись без мультисемплинга или шума? 🤔 Я как-то носился с мыслью о GI, только думал запекать в сферические гармоники (через Фурье). Потом подумал, что это сложно и передумал) Короче, спасибо за видео, познавательно)
@Alexander_Sannikov
@Alexander_Sannikov 2 ай бұрын
@@StanislavMarchevsky в идеале да, объём информации должен скейлиться пропорционально площади, а не объёму. в PoE2 каскады используются для SSAO, SSGI и для screenspace reflections. glossy reflections приближённо реализуются семплингом из низких каскадов (у которых угловое разрешение ниже, чем у высоких). диффузный GI собирается из нулевого каскада (с самым низким угловым разрешением) в SH1 сферические гармоники.
@StanislavMarchevsky
@StanislavMarchevsky 2 ай бұрын
@@Alexander_Sannikov доволен, что думал в правильном направлении :D Буду подглядывать, что у вас интересного) 🤨
@StarContract
@StarContract 2 ай бұрын
Hi Alexander, did this demo make it into the Legit repository? Would be nice to see how it's implemented.
@Alexander_Sannikov
@Alexander_Sannikov 2 ай бұрын
no, but we now have lots of shadertoy implementations like this one www.shadertoy.com/view/4ctXD8
@StanislavMarchevsky
@StanislavMarchevsky 2 ай бұрын
Какая крутая концепция.
@Capewearer
@Capewearer 2 ай бұрын
Блин, эти шейдер-боллы смотрятся максимально красиво. Какое уравнение освещения используете, не подскажете? Особенно красивые хромированный голубой и медный.
@Alexander_Sannikov
@Alexander_Sannikov 2 ай бұрын
самый убогий в мире GGX IBL, реализован максимально совместимым с "Real Shading in Unreal Engine 4". разве что фейковый specular occlusion (на основе ambient occlusion) добавлен.
@Capewearer
@Capewearer 2 ай бұрын
@@Alexander_Sannikov да ладно вам скромничать, 99% комментирующих ваши видео (включая меня), не смогут даже этого реализовать. Возможно, у меня просто фетиш на зеркальные поверхности, но глазу приятно.
@Capewearer
@Capewearer 2 ай бұрын
Самое интересное, что техника изобретена еще в 2008 году, как вы сами указываете. То есть множество подобных оптимизаций могли быть реализованы ещё тогда, и, таким образом, можно было бы, например, побороть вечную проблему рендеринга больших массивов травы в играх. Я в курсе вашего решения через предрасчитанный raymarching, но, как я понял, сделать сложные шейдеры вроде расходящихся в разные стороны травинок, будет сложно, если не невозможно.
@Capewearer
@Capewearer 2 ай бұрын
Насколько эта техника масштабируется на большие расстояния? Является ли таковая исключительно screen-space?
@Alexander_Sannikov
@Alexander_Sannikov 2 ай бұрын
никак эта техника не масштабируется. она в light space, а не screenspace. ещё у неё нет никаких вторичных теней. это был мой первый опыт реализации одной и самых базовых техник.
@suslikan___001
@suslikan___001 2 ай бұрын
хотелось бы сделать это для Unity или Unreal Engine, но это слишком сложно для меня :/
@GTGTRIK
@GTGTRIK 2 ай бұрын
How does it look on a convex shape?
@CodeParticles
@CodeParticles 2 ай бұрын
@Alexander_Sannikov, Hello sir this is very mind blowing to me. Is there any way you have a tutorial on how the equations and bi-directional reflective distribution works? I've been tinkering with PBR which I assume is very antiquated now? I'm utterly fascinated and I use OpenGL C++ for my particle demos and side projects.
@Alexander_Sannikov
@Alexander_Sannikov 2 ай бұрын
This demo uses the standard GGX BRDF and a full PBR pipeline. The difference compared to conventional renderers is that instead of calculating it for every pixel every frame, it pre-calculates it into radiance cascades and then just reads the results every frame.
@modus_ponens
@modus_ponens 2 ай бұрын
I have never understood holograms, but as you said it, wave equations are reversible, and that with your illustration, it made perfect sense.
@ChristianKahler
@ChristianKahler 3 ай бұрын
Hi, great work! How do you render the parabolic cube maps and what pixel resolution do you start with? Looks already very high at the lowest level and you render all cube maps in realtime?
@Alexander_Sannikov
@Alexander_Sannikov 3 ай бұрын
@@ChristianKahler maps are path traced offline. the total resolution of all cascades combined into a single image was something like 4k x 4k lowest cascade probe resolution is something like 4x4
@ChristianKahler
@ChristianKahler 3 ай бұрын
@@Alexander_Sannikov Thanks for the info! So for realtime we need something more simple? I was just wondering how path of exile 2 does this step? ;-)
@Alexander_Sannikov
@Alexander_Sannikov 3 ай бұрын
@@ChristianKahler this demo demonstrates the fact that the data inside of RC is completely decoupled from the way you acquire it. Path tracing this takes minutes, but once it's baked into RC, I can render it in realtime in one millisecond. PoE2 uses screenspace raymarching to fill the data in cascades, so it's much faster to get the data. But the way the data is stored is mostly the same.
@maximeduchalet4662
@maximeduchalet4662 3 ай бұрын
oh god you also play noita you are next level dude
@mcchickengrip423
@mcchickengrip423 3 ай бұрын
isnt this the tech path of exile 2 will use? :O wow amazing work
@djmips
@djmips 3 ай бұрын
This is rather unique. Would be a fun virtual toy
@SaidMetiche-qy9hb
@SaidMetiche-qy9hb 3 ай бұрын
أنت تذكرني بإبن هيثم ممكن تكون إبن هيثم الروسي هههه
@SaidMetiche-qy9hb
@SaidMetiche-qy9hb 3 ай бұрын
Science is so sweet
@attractivegd9531
@attractivegd9531 3 ай бұрын
modern time wizard
@spencer__
@spencer__ 3 ай бұрын
First time feeling inspired by a genius novel idea since Carmack
@ewerybody
@ewerybody 3 ай бұрын
I'm just blown away by how FLAMEY this looks!! 😍 from a VFX perspective I'd see the flames form from sprite sheets and flipbooks but these seem to form by the space BETWEEN the particles! Super interesting!!! :O
@Alexander_Sannikov
@Alexander_Sannikov 3 ай бұрын
cheers. i often like to design continuum shaders to look like they're made of particles, just to confuse vfx artists :D
@datgame
@datgame 4 ай бұрын
Infinite Detail!
@HazzyDevil
@HazzyDevil 4 ай бұрын
This is phenomenal ❤ Is this demo available somewhere? Like GitHub or something?
@Merthalophor
@Merthalophor 4 ай бұрын
looks georgious!
@Merthalophor
@Merthalophor 4 ай бұрын
What I gather: We're "storing" in some way how the 3d model looks like if viewed through a plane from any angle, without keeping the 3d model. The most obvious way to do that is to store for each pixel of the plane what the pixel would look like if viewed from every angle. We could store, say, 200 different angles, which would mean that we have to store for _every_ pixel 200 different colors. Then, when rendering, we could check what angle we're looking at a pixel, then linarly interpolate between the colors associated with similar angles. What this paper shows is that this is not necessary, and we can make the image still look decent while storing much less information. The key idea is that while we want to store a _few_ angles for _every_ pixel, we only need a _few_ pixels that store a _lot_ of angles. So for example, we could store 4 angles for _every_ pixel - then have a separate map that stores 8 angles for every 16th pixel - then another map that stores 16 angles but only every 36 pixels, and so on. By cleverly interpolating this information, we get a really life-like image, while only storing a fraction of the information (and, conversely, while only having to _calculate_ a fraction of the information, if running in real time).
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
the really important part is that the tradeoff of spatial:angular density is only possible for a given distance range. that's why RC stores radiance intervals, because they capture light coming from a certain distance range.
@Merthalophor
@Merthalophor 4 ай бұрын
@@Alexander_Sannikov Distance... from the object being rendered? If you moved away from the plane the quality would decrease?
@hnlo
@hnlo 4 ай бұрын
Great work! I'm really interested to find out how to encode the radiance cascade data into a texture, can you give me some pointers?
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
this is explained in the paper
@wlatol6512
@wlatol6512 4 ай бұрын
Александр, недавно ютуб начал рекомендовать ваши видео, а затем подкаст с вами в роли гостя и видео с экзайл кон'а. Очень вдохновляет! Интересно ваше мнение, может ли быть эта новая технология с каскадами полезна для рассчета поведения жидких и газообразных сред? Или если заглянуть еще глубже - для приблизительного, но быстрого рассчета каустик?
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
У нас на сервере есть деятель, который использует RC для спектрального расчёта плазмы. Если цель -- считать каустики, то это можно сделать гораздо проще (и эффективнее).
@jeremyashcraft2053
@jeremyashcraft2053 4 ай бұрын
Really clever stuff! I know PoE 2 will be shipping with this lighting technique, and I can't wait to see it in action!
@Ray_Gun_lol
@Ray_Gun_lol 4 ай бұрын
I dont think this is half life guys
@mmilerngruppe
@mmilerngruppe 4 ай бұрын
нихуя не понял, но очень интересно
@GameDevGeeks
@GameDevGeeks 4 ай бұрын
this was done 6 years ago and game engines still suck at doing this
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
poe2 has a much stronger GI than this
@perkele1989
@perkele1989 4 ай бұрын
This, without denoiser, is absolutely perfect for particle fx, gunfire, explosions etc. where things happen fast or you dont notice details so much. Fantastic work, as always!
@fruitygranulizer540
@fruitygranulizer540 26 күн бұрын
haha this is kinda like looking at an f22 raptor and saying "this is perfect for short interstate flights!" this, to some extent, solves global illumination which has been an ongoing research topic for decades. it would be overkill to use radiance cascades for tiny particle fx. explosions, however, you're right,
@perkele1989
@perkele1989 4 ай бұрын
you didnt even touch the roughness slider :( please, go into more tehcnical detail about how this works ! graphics programmer in me is amazed
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
now I also wonder what that slider did, because it makes no sense :D
@perkele1989
@perkele1989 4 ай бұрын
The halflife refs are clearly due to your phenomenal HL voice and production quality
@Stimes
@Stimes 4 ай бұрын
Make a fork of blender and try to implement it in blender !
@Stimes
@Stimes 4 ай бұрын
Make a fork of blender and try to implement it in blender !
@JamesAidanKing
@JamesAidanKing 4 ай бұрын
yea i dont know what any of this is but it looks cool
@avotini4400
@avotini4400 4 ай бұрын
А где нота "ку"?
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
как это где? на 0:47, на седьмом ладу. у меня все ходы записаны!
@Visigoth_
@Visigoth_ 4 ай бұрын
Cool video (Game Dev)... YT sees my interest in "digital volumes" and recommended this.
@melody3741
@melody3741 4 ай бұрын
This is the first time I have ever comprehended these, because everyone else basically just called it black box. Thank you!!!
@codymitchell4114
@codymitchell4114 4 ай бұрын
Absolutely gorgeous rendering
@greypsyche5255
@greypsyche5255 4 ай бұрын
Why does this look pixelated/low res compared to 2D?
@johngddr5288
@johngddr5288 13 күн бұрын
you need another exponent dimension of x^3 for 3D space instead of 2d. So, it'll look more blocky and take more processing power.
@skicreature
@skicreature 4 ай бұрын
Your mention of the accuracy of penumbras makes me wonder if this same technique could be modified in the calculation of radiation dose calculation in radiation therapy. Basically we do a bunch of complex ray tracing or kernel convolutions to perform dose calculations in radiation therapy and calculate the interactions based on a fluence maps from particular angles. For us however reflectivity isn't so important. Mostly we just have attenuation (simple calculation), and a couple different types of scattering interactions (much more complex requiring monte carlo interactions). However, our accuracy in dose calculation tends to decrease at the edge of beams (at the penumbra) as the calculation becomes most difficult there with scattering interactions beginning to dominate over the attenuation interactions.
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
@@skicreature people are already applying RC to a bunch of non-light radiative transfer processes. any process where energy is propagated in rays is suitable.
@LoraHannike
@LoraHannike 4 ай бұрын
digital hologram, finally great work! keep it up
@Alexander_Sannikov
@Alexander_Sannikov 4 ай бұрын
i have a video on actual simulated holograms. check my community page to see what it looks like.
@LoraHannike
@LoraHannike 4 ай бұрын
@@Alexander_Sannikov I will <3
@LukeGeaney
@LukeGeaney 4 ай бұрын
Subbed - found your channel via the SimonDev video on radiance cascades then your ExileCon video :)
@TheAncientLich
@TheAncientLich 4 ай бұрын
your perf graph widget is awesome. I’ll look it up in your github, cheers!
@alegthephilosopher4429
@alegthephilosopher4429 4 ай бұрын
Гениальный фильм, гениальная музыка. Что больше всего меня удивляет - как мог Данелия вовлечь во всё это таких актеров и сделать такой фильм. Ну и музыка - нет слов.