Тёмный
Alexander Sannikov
Alexander Sannikov
Alexander Sannikov
Подписаться
O(1) precomputed raymarching
1:00
5 месяцев назад
Wave equation solver
1:16
3 года назад
Thermodynamics simulation v2: pistons
1:09
4 года назад
Sound wave simulation
0:55
4 года назад
Office after ExileCon
0:22
4 года назад
Simple GPU hydrodynamics
0:47
5 лет назад
Комментарии
@StanislavMarchevsky
@StanislavMarchevsky 5 часов назад
Для одной 2D картинки обычно используется трилинейная фильтрация 4 соседних пикселя * 2, с соседнего мипмапа (8 texel fetch). В этом случае нужно блендить между собой 4 соседних пикселя внутри текущего кубмапа * 2 (соседний мипмап кубмапа) * 4 соседних кубмапа * 2 (столько же соседнего каскада). Получается 4 * 2 * 4 * 2 = 8 * 8 = 256 тексельфетчей. Вроде и много, с другой стороны, всего в 8 раз больше обычной трилинейной картинки. Прикольно, надо брать)
@StanislavMarchevsky
@StanislavMarchevsky 5 часов назад
А, ну разве что, чтоб дойти до самого дальнего каскада, надо проитерировать ближайшие.
@Alexander_Sannikov
@Alexander_Sannikov 3 часа назад
нет, оно не так работает. каждый каскад -- это одна выборка в четырёхмерном пространстве. четырёхмерное -- потому что 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 Час назад
@@StanislavMarchevsky в идеале да, объём информации должен скейлиться пропорционально площади, а не объёму. в PoE2 каскады используются для SSAO, SSGI и для screenspace reflections. glossy reflections приближённо реализуются семплингом из низких каскадов (у которых угловое разрешение ниже, чем у высоких). диффузный GI собирается из нулевого каскада (с самым низким угловым разрешением) в SH1 сферические гармоники.
@StanislavMarchevsky
@StanislavMarchevsky Час назад
@@Alexander_Sannikov доволен, что думал в правильном направлении :D Буду подглядывать, что у вас интересного) 🤨
@StarContract
@StarContract 3 дня назад
Hi Alexander, did this demo make it into the Legit repository? Would be nice to see how it's implemented.
@Alexander_Sannikov
@Alexander_Sannikov 3 дня назад
no, but we now have lots of shadertoy implementations like this one www.shadertoy.com/view/4ctXD8
@StanislavMarchevsky
@StanislavMarchevsky 5 дней назад
Какая крутая концепция.
@Capewearer
@Capewearer 7 дней назад
Блин, эти шейдер-боллы смотрятся максимально красиво. Какое уравнение освещения используете, не подскажете? Особенно красивые хромированный голубой и медный.
@Alexander_Sannikov
@Alexander_Sannikov 7 дней назад
самый убогий в мире GGX IBL, реализован максимально совместимым с "Real Shading in Unreal Engine 4". разве что фейковый specular occlusion (на основе ambient occlusion) добавлен.
@Capewearer
@Capewearer 7 дней назад
@@Alexander_Sannikov да ладно вам скромничать, 99% комментирующих ваши видео (включая меня), не смогут даже этого реализовать. Возможно, у меня просто фетиш на зеркальные поверхности, но глазу приятно.
@Capewearer
@Capewearer 9 дней назад
Самое интересное, что техника изобретена еще в 2008 году, как вы сами указываете. То есть множество подобных оптимизаций могли быть реализованы ещё тогда, и, таким образом, можно было бы, например, побороть вечную проблему рендеринга больших массивов травы в играх. Я в курсе вашего решения через предрасчитанный raymarching, но, как я понял, сделать сложные шейдеры вроде расходящихся в разные стороны травинок, будет сложно, если не невозможно.
@Capewearer
@Capewearer 11 дней назад
Насколько эта техника масштабируется на большие расстояния? Является ли таковая исключительно screen-space?
@Alexander_Sannikov
@Alexander_Sannikov 10 дней назад
никак эта техника не масштабируется. она в light space, а не screenspace. ещё у неё нет никаких вторичных теней. это был мой первый опыт реализации одной и самых базовых техник.
@suslikan___001
@suslikan___001 12 дней назад
хотелось бы сделать это для Unity или Unreal Engine, но это слишком сложно для меня :/
@GTGTRIK
@GTGTRIK 21 день назад
How does it look on a convex shape?
@CodeParticles
@CodeParticles 22 дня назад
@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 22 дня назад
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 23 дня назад
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 Месяц назад
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 Месяц назад
@@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 Месяц назад
@@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 Месяц назад
@@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 Месяц назад
oh god you also play noita you are next level dude
@mcchickengrip423
@mcchickengrip423 Месяц назад
isnt this the tech path of exile 2 will use? :O wow amazing work
@djmips
@djmips Месяц назад
This is rather unique. Would be a fun virtual toy
@SaidMetiche-qy9hb
@SaidMetiche-qy9hb Месяц назад
أنت تذكرني بإبن هيثم ممكن تكون إبن هيثم الروسي هههه
@SaidMetiche-qy9hb
@SaidMetiche-qy9hb Месяц назад
Science is so sweet
@attractivegd9531
@attractivegd9531 Месяц назад
modern time wizard
@spencer__
@spencer__ Месяц назад
First time feeling inspired by a genius novel idea since Carmack
@ewerybody
@ewerybody Месяц назад
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 Месяц назад
cheers. i often like to design continuum shaders to look like they're made of particles, just to confuse vfx artists :D
@datgame
@datgame Месяц назад
Infinite Detail!
@HazzyDevil
@HazzyDevil Месяц назад
This is phenomenal ❤ Is this demo available somewhere? Like GitHub or something?
@Merthalophor
@Merthalophor 2 месяца назад
looks georgious!
@Merthalophor
@Merthalophor 2 месяца назад
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 2 месяца назад
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 Месяц назад
@@Alexander_Sannikov Distance... from the object being rendered? If you moved away from the plane the quality would decrease?
@hnlo
@hnlo 2 месяца назад
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 2 месяца назад
this is explained in the paper
@wlatol6512
@wlatol6512 2 месяца назад
Александр, недавно ютуб начал рекомендовать ваши видео, а затем подкаст с вами в роли гостя и видео с экзайл кон'а. Очень вдохновляет! Интересно ваше мнение, может ли быть эта новая технология с каскадами полезна для рассчета поведения жидких и газообразных сред? Или если заглянуть еще глубже - для приблизительного, но быстрого рассчета каустик?
@Alexander_Sannikov
@Alexander_Sannikov 2 месяца назад
У нас на сервере есть деятель, который использует RC для спектрального расчёта плазмы. Если цель -- считать каустики, то это можно сделать гораздо проще (и эффективнее).
@jeremyashcraft2053
@jeremyashcraft2053 2 месяца назад
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 2 месяца назад
I dont think this is half life guys
@mmilerngruppe
@mmilerngruppe 2 месяца назад
нихуя не понял, но очень интересно
@GameDevGeeks
@GameDevGeeks 2 месяца назад
this was done 6 years ago and game engines still suck at doing this
@Alexander_Sannikov
@Alexander_Sannikov 2 месяца назад
poe2 has a much stronger GI than this
@perkele1989
@perkele1989 2 месяца назад
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!
@perkele1989
@perkele1989 2 месяца назад
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 2 месяца назад
now I also wonder what that slider did, because it makes no sense :D
@perkele1989
@perkele1989 2 месяца назад
The halflife refs are clearly due to your phenomenal HL voice and production quality
@Stimes
@Stimes 2 месяца назад
Make a fork of blender and try to implement it in blender !
@Stimes
@Stimes 2 месяца назад
Make a fork of blender and try to implement it in blender !
@JamesAidanKing
@JamesAidanKing 2 месяца назад
yea i dont know what any of this is but it looks cool
@avotini4400
@avotini4400 2 месяца назад
А где нота "ку"?
@Alexander_Sannikov
@Alexander_Sannikov 2 месяца назад
как это где? на 0:47, на седьмом ладу. у меня все ходы записаны!
@Visigoth_
@Visigoth_ 2 месяца назад
Cool video (Game Dev)... YT sees my interest in "digital volumes" and recommended this.
@melody3741
@melody3741 2 месяца назад
This is the first time I have ever comprehended these, because everyone else basically just called it black box. Thank you!!!
@codymitchell4114
@codymitchell4114 2 месяца назад
Absolutely gorgeous rendering
@greypsyche5255
@greypsyche5255 2 месяца назад
Why does this look pixelated/low res compared to 2D?
@skicreature
@skicreature 2 месяца назад
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 2 месяца назад
@@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 2 месяца назад
digital hologram, finally great work! keep it up
@Alexander_Sannikov
@Alexander_Sannikov 2 месяца назад
i have a video on actual simulated holograms. check my community page to see what it looks like.
@LoraHannike
@LoraHannike 2 месяца назад
@@Alexander_Sannikov I will <3
@LukeGeaney
@LukeGeaney 2 месяца назад
Subbed - found your channel via the SimonDev video on radiance cascades then your ExileCon video :)
@TheAncientLich
@TheAncientLich 2 месяца назад
your perf graph widget is awesome. I’ll look it up in your github, cheers!
@alegthephilosopher4429
@alegthephilosopher4429 2 месяца назад
Гениальный фильм, гениальная музыка. Что больше всего меня удивляет - как мог Данелия вовлечь во всё это таких актеров и сделать такой фильм. Ну и музыка - нет слов.
@lemonjumpsofficial
@lemonjumpsofficial 2 месяца назад
IT'S A HOLIGRAM!!!!!
@dougbeard7624
@dougbeard7624 2 месяца назад
Audio is pretty bad. You need to compress.
@Jianju69
@Jianju69 2 месяца назад
Interesting effect, somewhat like glitter immersed in plastic. How much memory does this demo use? Seems too resource intensive for complex real-time scenes.
@NerasW
@NerasW 2 месяца назад
Hey, iirc u doing it in Unreal Engine? Is it possible you gonna do guides on how one can reproduce this technique? also interested if it is possible to use in Godot engine so far? note that im noob in gamedev and don't know if my questions are lame, thanks!
@Lucsueus
@Lucsueus 2 месяца назад
Saw this video on my homepage recommendations, no relation to Half-life at all (haven't looked at source/half-life content in forever). To be honest I have no clue what this even means, but I'm very intrigued and I often enjoy watching people passionately explain something that to me is very niche. Thank you for sharing!