Simple Fractal rendering

Поділитися
Вставка
  • Опубліковано 24 лис 2024

КОМЕНТАРІ • 339

  • @OlofNisshagen
    @OlofNisshagen Рік тому +693

    You're like a more math-focused Sebastian Lague, great content!

  • @owlroseproductions8876
    @owlroseproductions8876 Рік тому +345

    You are a gem in the programming space of UA-cam. You've inspired a lot of other successful programmers on here and also me (just as a hobbyist, but still).
    Keep making what you love and we'll love it

    • @spaztor7723
      @spaztor7723 Рік тому

      where does an idiot such as myself begin in making somthing like this, a hobby??

    • @owlroseproductions8876
      @owlroseproductions8876 Рік тому

      @@spaztor7723 well, as a starter for visualizations like this I recommend processing/p5.js. it's not the fastest, the sturdiest or prettiest, but the ease of use is unparalleled. I have spent countless hours in it and I've loved every second

    • @Jake_Gotthard
      @Jake_Gotthard Рік тому

      @@spaztor7723i dont even know what “constant;” does but i have adhd, autism, the determination of someone trying undertale for the 1st time and doing true genocide, an ungodly amount of love for cool stuff like fractals, a BEAST of a computer and i am going to do this.

  • @karolciszek8550
    @karolciszek8550 Рік тому +9

    That zoom with the music was just magical

  • @thecakeredux
    @thecakeredux Рік тому +88

    Writing a fractal render was one of my favorite projects of all times. I hope you making this as accessible as you did with this video opens allows others to experience the awe when their code creates beauty in front of their eyes.

  • @_miobrot_603
    @_miobrot_603 Рік тому +52

    In a highschool programming class right now, and seeing this has raised motivation to the max.
    Still going over the basics (in python), but one day I will make something like this.
    Thank you Pezzza for the inspiration and I hope my comment is meaningful in some way.

    • @therealsemechki
      @therealsemechki Рік тому +2

      Good luck on your journey! If I were to make a suggestion, use a language that supports multithreading, like C++! Or, you could learn a shader language🙂 (GPUs aren't *quite* as bad at using double-precision as it might sound, although they are still pretty slow at it. There are techniques to mitigate this, though!)

    • @karolciszek8550
      @karolciszek8550 Рік тому +3

      You could absolutely plot a Julia set like this in Python. It would be a great project for a high school student. Good luck.

    • @blaze_arch6864
      @blaze_arch6864 Рік тому +2

      Try Nim language
      Nim has syntax of Python
      And speed of C

    • @josephastier7421
      @josephastier7421 Рік тому +3

      Go for it! The output of these fractal images looks really complex, but the math is simple. Some of the biggest bang for the buck is to be had displaying a color palette instead of a grayscale gradient. Then your renders will come to life.

  • @brayden1562
    @brayden1562 Рік тому +17

    Came for the programming. Stayed for the existential crisis.

  • @jonasdaverio9369
    @jonasdaverio9369 Рік тому +55

    If you want arbitrary precision while using your GPU, you can use perturbative techniques by computing only a few points with high precision on your CPU, and then computing all other points in low precision on the GPU. Choosing the points is tricky, though

    • @AiRde
      @AiRde Рік тому +4

      Yes this is the methode use by Kalles Fraktaler, an amazing fracal render

    • @jonasdaverio9369
      @jonasdaverio9369 Рік тому +3

      @@AiRde I once tried to implement but the result was awful and glitchy. I would really have to make something smarter to pick the point.

    • @thingthingthingthingthingthing
      @thingthingthingthingthingthing 4 місяці тому

      I used that for rendering Mandelbrot set, but only the center part which takes the most time

  • @mmd-wt5eq
    @mmd-wt5eq Рік тому +14

    The more fascinating thing is your video. Thanks so much for you awesome content.

  • @chochochon5464
    @chochochon5464 Рік тому +5

    Since I was a kid, I've been fascinated by the fractals... I could spend HOURS watching zooming videos about fractals XD

  • @fabienherry6690
    @fabienherry6690 Рік тому +12

    That is fascinating to watch ! I love how the background of the fractal is still indicating some sort of position despite the infinite similarity

  • @dasjulian3
    @dasjulian3 Рік тому +22

    Fractals are quite nice.

  • @crackedemerald4930
    @crackedemerald4930 Рік тому +1

    Because of the way our brain processes grays, the fractal had a lot of detail on the borders of the greys that made them very interesting.

  • @doggo9757
    @doggo9757 Рік тому +18

    Came across this channel a few days ago, and I must say this is one of the best channels for programming and math. I have an exam, after that, I plan to binge watch all you videos. The Cool Chicken is a very cool guy.

  • @2_Elliot
    @2_Elliot Рік тому +8

    Criminally underrated, your content always amazes me in its complex simplicity. Keep it up!

  • @jaydevsr2536
    @jaydevsr2536 Рік тому +8

    Your videos are always inspiring. I remember the time I was myself trying to render Julia sets, I was really happy to see the results. I hope other people try this as well as this is very rewarding!

  • @spudd86
    @spudd86 Рік тому +10

    I have written a program that renders Julia Sets by using texture mapping to do the inverse iteration method. Basically if you compute the inverse of the function and map the entire plane backwards it will eventually converge to the Julia Set.
    I'm using this for a music visualizer so we blend the frames together and the Julia Set emerges as the points with colour. I have video of it running. I blends a sort of oscilloscope visualization on top of the frame and then uses that as input to do the Julia Set inverse iteration in the next frame. You can see how the copies of the scope shrink and copy around to build up the shape of the set.
    The nice thing about doing the inverse iteration with texture mapping is that you *actually* compute the forward function to determine the source pixel for the texture map operation, the texture mapping to the output effectively makes it doing the inverse.
    The other nice thing about this is that precision isn't really critical and GPUs are REALLY good at texture mapping. I have written the same thing for both CPU and GPU (via OpenGL 2.1, so it runs on a potato), can't do a zoom though, the algorithm requires you to keep an image of the entire circle that the Julia Set might be in (that is the same circle you use as the escape radius).
    I have explained this poorly I know.
    Video of it running: ua-cam.com/video/PD1ZlkNf7GQ/v-deo.html
    It's open source so code is at: github.com/Spudd86/julia-vis

    • @jonasdaverio9369
      @jonasdaverio9369 Рік тому

      Oh, you didn't write in Julia... What a missed opportunity :p

    • @spudd86
      @spudd86 Рік тому

      @@jonasdaverio9369 Julia didn't exist when I started...

  • @Maus_Indahaus
    @Maus_Indahaus Рік тому +2

    The only thing missing from this masterpiece is a quick zooming out at the end to show everything in its full glory

  • @ajs1998
    @ajs1998 Рік тому +4

    I love this, man. Programming is the coolest hobby ever and I'm so happy to be here. Awesome video, keep it up!

  • @kalelsoffspring
    @kalelsoffspring Рік тому +6

    I've always seen Mandelbrot used for these types of videos, very neat to see another type used. The difference in where the pixel coordinates go in the looping equation seems to be the only real difference, being C for Mandelbrot, and Z_0 for this. Very nice video

    • @tjavado
      @tjavado Рік тому

      this is actually a julia set of the mandelbrot iirc

    • @kalelsoffspring
      @kalelsoffspring Рік тому

      @@tjavado yeah, that's what was said in the video, I just thought it was a nice alternative. Tbh I probably would've clicked off if it was Mandelbrot again :P

  • @novygaming5713
    @novygaming5713 Рік тому +14

    There's another cool fractal you can make called the mandelbrot set using the same equation. You're currently rendering julia sets. For julia sets, you set c to a fixed position on the plane while changing z for every pixel. Instead for the mandelbrot set, you just set c so it also changes with z. I personally think the mandelbrot set looks way better than the julia sets since it's a combination of all possible julia sets for every pixel.

    • @crakhaed
      @crakhaed Рік тому +1

      Lol I thought this was a mandelbrot set until this comment 😂 ty for teaching

  • @saniancreations
    @saniancreations Рік тому +6

    You really had me for a second there with the logo showing up at the end.

  • @tm001
    @tm001 Рік тому +4

    The one thing that keeps blowing my mind every time in his videos is how he can optimize the shit out of the rendering time with just "simple" logic and few lines of code, and then he basically says "I can optimize it even more but I don't want to" 😎

  • @vitalys5076
    @vitalys5076 Рік тому +2

    After watching the video this comment section is continuously zooming out for me. My eyes and brain can't keep up with fractals!

  • @puddleglum5610
    @puddleglum5610 Рік тому +12

    You can also pull out an extra 4x to 8x performance (depending on your cpu) by using SIMD instructions instead of your normal floating point math. It’s a lot of effort to manually code with SIMD instructions, but worth it for the better perf.

    • @Henrix1998
      @Henrix1998 Рік тому

      There's some compiler flags that probably could make use of SIMD without any extra effort

    • @puddleglum5610
      @puddleglum5610 Рік тому

      @@Henrix1998 unfortunately, its too complex for compilers to translate into SIMD instructions as you have to change the code logic quite a bit from regular Mandelbrot code in order to make full use of the SIMD instructions

    • @user-sl6gn1ss8p
      @user-sl6gn1ss8p Рік тому

      @@puddleglum5610 Maybe by creating a "computeNextFor8pixels" which does just that (taking also 8 times the input and returning a struct or something like that), and turning optimizations up?
      I've had good luck doing that with random number generators (like pcg64), don't see why this should be any harder for the compiler.

    • @INT41O
      @INT41O Рік тому +2

      @@user-sl6gn1ss8p Just use SSE/AVX intrinsics, not too complicated in this case. If you have to rewrite the code just for the compiler to better optimize, you might as well optimize it manually.

    • @user-sl6gn1ss8p
      @user-sl6gn1ss8p Рік тому

      @@INT41O fair enough, I'll look into it

  • @Tann114
    @Tann114 Рік тому +1

    Excellent as always Pezzza! Amazing coincidence that there's a chicken in the fractal too.

    • @PezzzasWork
      @PezzzasWork  Рік тому +1

      Yes I was very surprised myself !!

  • @kubstoff1418
    @kubstoff1418 Рік тому +1

    That was a very intriguing dive into the subject, whenever you post something I'm immediately hooked to try that myself. Great Work as always!

  • @hippopotamus86
    @hippopotamus86 Рік тому +9

    Perfect. Love your work.

  • @Micro-Moo
    @Micro-Moo 9 місяців тому

    It is a really nice idea to perform the sub-pixel computations.

  • @Ener-G
    @Ener-G 8 місяців тому

    Thank you so much for this! I'm in a rush but I wanted to express that your simple, straightforward explanation and approach to fractal rendering has opened my mind to the possibility of doing something similar myself! I've been hoping for this knowledge for a long time. Thank you so much for creating this video as a vessel by which I can begin my journey of understanding!

  • @wallywutsizface6346
    @wallywutsizface6346 Рік тому +1

    The fractals here are Julia Sets. If anyone following along wants to generate the Mandelbrot set instead, it’s quite easy. Instead of an arbitrary C value, for each pixel, set C equal to the complex coordinate of that pixel. So, instead of Z(n+1) = Z(n)^2 + C, replace C with Z(0).

  • @absence9443
    @absence9443 Рік тому +2

    Definitely need more simplified coding channels like these!

  • @Msatthew
    @Msatthew Рік тому

    Well, that last bit was existentially terrifying. Bravo!

  • @RayznGames
    @RayznGames Рік тому +1

    I'm amazed about how far double precision goes In comparison to float. Great content!

  • @WorldWeaver
    @WorldWeaver Рік тому +2

    Kid: "What if it's made of dragons? And the dragons are made of even SMALLER dragons? And those are made of even SMALLER dragons? And it's just that, forever?"
    Parent: "Fractal."
    Kid: :O
    I think we've all asked the "what if it's made of more of it" question before.

  • @novygaming5713
    @novygaming5713 Рік тому +2

    A quick tip for getting more detail in the fractal: instead of making the gradient have more range, you can just use a mod function or a sin function to color it based on the iteration count. Kind of like how Wikipedia does it.

  • @firkinflamer8604
    @firkinflamer8604 Рік тому +1

    My favorite channel. Every video you post makes me at least raise my eyebrows

  • @tonyb5536
    @tonyb5536 10 місяців тому

    This is one of the coolest things I have ever seen.

  • @Delta0001-y
    @Delta0001-y Рік тому +1

    I love this!!! Great videos. Love the easy to follow code examples & visual output (like the multithreaded rendering), very cool!

  • @sickbale
    @sickbale Рік тому +1

    That's pure madness. I love it.

  • @crakhaed
    @crakhaed Рік тому

    Very beautiful video! All the aspects were so well done. Especially underrated is the sound mixing and the music that follows the camera down at the end. Thank you very much for making this! For 11 minutes of watch time it probably took much longer than that to make and produce. I appreciate the time and effort you took.

  • @QuentinVaresano
    @QuentinVaresano Рік тому +1

    Your videos go better and better, please never end

  • @eugienepeters1608
    @eugienepeters1608 Рік тому +1

    Thank you so much for making this video. I was always interested in making a fractal render but just didnt know what to do or the steps involved, I felt paralysed. This was really helpful. I need to learn to problem solve on my own too without being baby fed :)

  • @CelestialityRW
    @CelestialityRW Рік тому +2

    Videos like this make me want to learn C#

  • @brynshannon6692
    @brynshannon6692 Рік тому +1

    the infinity of cosmic shrimp

  • @Graverman
    @Graverman Рік тому

    love this content! Keep improving and it’ll be amazing. Also love when you show all the optimizations you’ve made and their downsides

  • @olbluelips
    @olbluelips Рік тому

    I never get tired of fractals!

  • @BuffRobotiX
    @BuffRobotiX Рік тому

    This is a great example of why double precision is overkill for most applications.

  • @raushankumar2336
    @raushankumar2336 Рік тому +1

    This is absolutely dope👌

  • @84homey
    @84homey Рік тому

    Beautiful fractals. Beautiful numbers.

  • @MxMxffin
    @MxMxffin Рік тому +1

    i made a program in 9th grade creating the mandelbrot set using 255 iterations. it had terrible performance but i liked it. made it with turbo pascal back then

  • @bergolho
    @bergolho Рік тому +1

    Congratulations on this awesome video man!

  • @imnotjesper
    @imnotjesper Рік тому +1

    I think basically everyone here knows about the Mandelbrot set and Julia sets, but those who don't should check out Numberphile's video about it with Ben Sparks. It's amazing.

  • @Dricou61
    @Dricou61 Рік тому

    It could be so fun to build a game in which you control a character that coule navigate into fractale structures

  • @blumbomium
    @blumbomium Рік тому +1

    Might have been the quickest 11 minutes of my life

  • @guigazalu
    @guigazalu Рік тому +1

    I love how the video takes it's time at around 1:25.

  • @shrimpoffthebarbie
    @shrimpoffthebarbie Рік тому +3

    Not giving yourself enough credit by saying it's simple. Great work. Staring into infinite similarly. Love fractals and will get round to trying program some for myself.

  • @DRUYD
    @DRUYD Рік тому +1

    wonderful content as always, is so well explained it seems super easy, barely an inconvenience.

  • @BarneyCodes
    @BarneyCodes Рік тому +13

    Great video! I've made a fractal renderer using a shader in WEBGL (there's a video on my channel if you're interested) and ran into the same issue of not having double precision, I'd love to find a way around this. I haven't tried animating my fractals yet! I'll have to try it, thanks for the inspiration!

    • @kaiprzadka6896
      @kaiprzadka6896 Рік тому +1

      Is there anything like fixed precision? (Python for instance has the decimals module for that)

    • @BarneyCodes
      @BarneyCodes Рік тому +2

      @@kaiprzadka6896 Not as far as I can tell. Since I made mine with JavaScript, and therefore WebGL, the specification for GLSL is pretty bare bones (it's not even required by the spec to have high-precision floats!). I'll have to look into it further though, thanks for the lead!

    • @ladyravendale1
      @ladyravendale1 Рік тому +1

      @@BarneyCodesMy first instinct is to preform some terrible bodging with frankensteined ints or arrays to make a very slow but functional high precision number.

    • @BarneyCodes
      @BarneyCodes Рік тому

      @@ladyravendale1 I had wondered about trying that too, even just somehow trying to use two floats for each number (two floats == double precision right??).. Haven't actually attempted it though. Let me know if you give it a go!

    • @ladyravendale1
      @ladyravendale1 Рік тому +1

      @@BarneyCodes I most likely wouldn’t use two floats, instead just a bunch of ints. I can’t really imagine how you would string together floats for higher precision since by nature the decimal point floats, and since you would have 2+ I don’t really see how that would work. A big issue with most non int numerical classes in JS type languages is a lack of easy bit manipulation/reading. At least to my mind it would be far easier to use 1 int as an x bit mantissa, then however many more ints as the actual value. Write some bastardized version of the normal float implementation, treating your ints as registers, and there you go.

  • @cmilkau
    @cmilkau Рік тому +1

    Got a loading spinner right at the RIP float moment, which was quite funny xD

  • @mathman0569
    @mathman0569 Рік тому +1

    I love your content I hope you get more subs and such and I hope to watch your wonderful channel grow

  • @multiarray2320
    @multiarray2320 Рік тому +5

    is it true that there is a chicken at that point in the fractal, or have you edited it in?

    • @d00dEEE
      @d00dEEE Рік тому +6

      I believe it's chickens all the way down.

  • @HenrichAchberger
    @HenrichAchberger Рік тому +2

    God makes incredible things I always watch his videos when he makes one

    • @brianmiller4614
      @brianmiller4614 Рік тому

      The pronoun in the second sentence seems to be referring to God, and it looks like you forgor :skull: the periods.

    • @HenrichAchberger
      @HenrichAchberger Рік тому +2

      @@brianmiller4614 this was supposed to offend religious people not grammer nazis

    • @michaeldamolsen
      @michaeldamolsen Рік тому +1

      @@HenrichAchberger Thanks, that reply made me laugh way harder than it should have! :D

  • @shadow-ht5gk
    @shadow-ht5gk Рік тому

    Your English has improved so much since the phalanx video

  • @zetmor1337
    @zetmor1337 Рік тому +1

    You can use that "smooth_iteration" as an elevation, and render it in (false) 3D

  • @guigazalu
    @guigazalu Рік тому +1

    OBS video transition examples while explaining the Xaos method? So cool!

  • @Syp64
    @Syp64 Рік тому +1

    Thanks for sharing this. Hope this inspires future talent!

  • @enzoharquin1543
    @enzoharquin1543 Рік тому +1

    Ohhhh cet accent Français je reconnais :)
    Nice work Pezza !!

  • @killyGHILLIE
    @killyGHILLIE 11 місяців тому

    This is cool god teir maths. I wish I listened more in school and now I need to become a computer programmer!

  • @АлександрТарасов-щ1г

    Кажется, я заглянул в бездну.

  • @zelimirfedoran9720
    @zelimirfedoran9720 Рік тому +1

    Awesome! I’d love to see this in 3d next 😅

  • @Pyrografpl
    @Pyrografpl Рік тому +1

    Nice! I always wanted to code my own fractal diver

    • @Pyrografpl
      @Pyrografpl Рік тому

      You inspired me that much so I just finished my Julia explorer in C++SDL. It is 1am 😅 with 16 threads on my i7 6gen it is not super fast. I have idea of caching images and showing them until next frame is finished being rendered. Bit it wont help with animated fractals.

  • @IncroyablesExperiences
    @IncroyablesExperiences Рік тому

    Toujours aussi intéressant 😉

  • @groverkiinmuppetborn714
    @groverkiinmuppetborn714 Рік тому +1

    Thanks! I can now make my own memetic agent

    • @crakhaed
      @crakhaed Рік тому

      Just wanted to say, incredible username and good luck

  • @nikitademodov3446
    @nikitademodov3446 Рік тому +2

    Nice video! But I don't understand why you resorted to CPU execution.. Most GPUs actually support double precision (at least all that support OpenGL 4.0.0 [natively! looking at you, Apple M1 :/]).
    I wrote a clumsy unoptimized fractal renderer once too and it ran flawlessly on GPUs (smooth motion/zooming) with full double-precision (max zoom ca. by factor one quadrillion) and I'm sure there's some optimizations that would make it much better if I had the time (and intelligence) to implement them.
    Anyways love how polished yours turned out! Congrats on (almost) 100k!

  • @clementdato6328
    @clementdato6328 Рік тому +2

    Impossible. I don't believe you can zoom in and actually find a Pezzza's Work icon in the Julie Set rendering. And it prints out exactly "Thanks for watching!" right when your video ends. I refuse to believe.

  • @StuartGilbert
    @StuartGilbert Рік тому +2

    That was mesmerizing. What is the music?

    • @brianmiller4614
      @brianmiller4614 Рік тому

      It sounds like DM Dokuro, but this is the first time I have heard this song.

  • @JakeSeeber
    @JakeSeeber Рік тому +1

    Beautiful work, thank you for the video pezzza

  • @travisc8406
    @travisc8406 Рік тому +2

    Awesome video! 👍

    • @PezzzasWork
      @PezzzasWork  Рік тому

      Sorry for my late reply, didn't see your comment! Thank you very much for your support!

  • @Luke-me9qe
    @Luke-me9qe Рік тому +1

    Well can you zoom out as well? All fractal videos always zoom in...

  • @thatprogramer
    @thatprogramer Рік тому

    Your really good at making simulations!
    I have a suggestion.
    You should try making a simulation like the powder toy "TPT" for short but in 3D!
    That would be pretty cool.

  • @don.3s
    @don.3s Рік тому

    I wouldn't be amazed if fractals had something to do with dna and everyone is like a slight variation of a different fractal

  • @otrocanalmas8096
    @otrocanalmas8096 11 днів тому

    thank you so much , sir . this is simply beautiful

  • @petepete4981
    @petepete4981 Рік тому +1

    COOL stuff!!!!
    Tried to compile your project, but where to get /res? there was a cmake error...

    • @PezzzasWork
      @PezzzasWork  Рік тому +2

      There was indeed a problem with the cmakelists, should be better now

  • @chonnberdosh3834
    @chonnberdosh3834 Рік тому +1

    In the final zooming-in-sequence the spot seems to be picked very nicely to allow a nice view the entire time. If one ends up in a dark-spot or bright-spot I think zooming in further would be pointless. As I could not see any camera-movement my question is: How does one pick such a spot? Is it just a bit of trying-around by hand until it fits or is there a more clever way to do it?

  • @graham8316
    @graham8316 Рік тому

    would be a good explanation of why double precision isn't necessary in most situations

  • @michaellundgren6949
    @michaellundgren6949 Рік тому +1

    I feel like you made this whole video so you could put the chicken at the bottom of the fractal.

  • @Tianeptine1062
    @Tianeptine1062 Рік тому +1

    nice video i wish you would have talked about the fact that there was colour banding tho because only 8 bits per channel were used instead of 10 or higher

  • @mayankthakur2158
    @mayankthakur2158 Рік тому

    absolutely amazing video, very cool stuff !!!❤️

  • @fabianportero3563
    @fabianportero3563 Рік тому

    This is amazing, thanks! more about fractals in graphics please

  • @actravaz
    @actravaz Рік тому

    We did it, we finally found the end of a fractal:
    *Thanks for watching!*

  • @anoobis117
    @anoobis117 Рік тому +1

    4:54 (makes 420 green). Nice.

  • @AbsolutelyPlasmadic
    @AbsolutelyPlasmadic Рік тому

    i just wanted to let u know that u have my sub :) cause i really liked ur ants and stuff :))
    thank u for ur continued dedication to the cause :)))

  • @wglint7509
    @wglint7509 Рік тому +1

    Hello i love your video and i'm asking what did you use for make animation like 0:59 moment of the video ?

  • @doolee5704
    @doolee5704 Рік тому

    I love your content, please keep them coming!!!

  • @daphenomenalz4100
    @daphenomenalz4100 Рік тому +4

    What softwares and modules do you use for visualizing? I know C++ but never knew how to do stuff like this. Can you make a tutorial video to get it to stuff like this. PLS. Really love your videos.
    I can probably do this in JS tho pretty hard (i am still learning), by learning the concepts used in this video. But i want to know how to do it in C++
    My laptop will prolly blow up tho xD, i don't have any GPU ad its not a gaming laptop lol

    • @INT41O
      @INT41O Рік тому

      SDL2 is quite simple to use (it's even in the name)

    • @daphenomenalz4100
      @daphenomenalz4100 Рік тому

      @@INT41O thnx

  • @SoDamnMetal
    @SoDamnMetal Рік тому

    Ooo pretty colors!

  • @mathpuppy314
    @mathpuppy314 Рік тому +3

    May I ask what platform/language you do all of this in? I really love your projects and ideas and I want to try my hand at some of my own but I don't know where to start.

    • @DanDeebster
      @DanDeebster Рік тому +2

      Judging by the variables being initialised like i{0}, it's C++

  • @lievenpetersen
    @lievenpetersen Рік тому

    after watching this, my screen now continuously appears to be shrinking :D

  • @cmilkau
    @cmilkau Рік тому +1

    Julia sets, like many other fractals, are highly self similar. I wonder if there have been attempts to exploit that, particularly for recursive escape sequences. Instead of just stopping after n iterations, you could look what number you ended up with. This number could be used as an index into a coarser version of the fractal. Doing this you doubled your number of iterations with a virtually unnoticeable loss of precision. You can also use this technique as a replacement of supersampling for anti-aliasing. Particularly on the GPU, using the pre-rendered version as a texture, this should be highly efficient and simple to implement.
    Iterating this technique for performance seems straightforward, but requires some extra work. Regions near the border of the fractal can't be used for indexing because complete copies of the entire fractal lie inside a single pixel. On the other hand, regions far from the border are smooth and there is little point rendering them to higher precision. What you want to do is some kind of sparsely populated multiresolution texture, i.e. some areas are low-resolution and some areas are high-resolution, and some areas are "not yet computed". You could fill this by increasing the resolution each time you start over, while only computing regions with unknown behaviour. For julia sets, initially only the behaviour outside the radius 2 disc is known. In the second step, you would calculate one or a few iterations for points inside the disc. If you end up with a point outside the disc, you can update that texel with the new value. In the third step, you know have more known values in your texture. For the others, again you compute a few values until you end in a known smooth area (texel is known and similar to its surroundings) then you can add the iterations of that known texel to the iterations it took to get there, updating the "unknown region" more. As you keep doing this, you increase the resolution occasionally.
    Now some Julia sets, like the Mandelbrot set, have a true interior (rather than just an exterior and a border). For escape sets, interior usually means convergence to a stationary/cyclic sequence, like the exterior is escape to infinity, while the border is chaotic. In that case you need an "escape" region (a region with known behaviour of the sequence) for the interior as well, because you only want high resolution for the border.

  • @pauls5745
    @pauls5745 Рік тому

    mesmerizing!