Simple Fractal rendering

Поделиться
HTML-код
  • Опубликовано: 28 фев 2023
  • Github of the project github.com/johnBuffer/JuliaRe...
    Made using C++ and SFML
  • НаукаНаука

Комментарии • 340

  • @OlofNisshagen
    @OlofNisshagen Год назад +674

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

  • @owlroseproductions8876
    @owlroseproductions8876 Год назад +341

    You are a gem in the programming space of RUclips. 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 7 месяцев назад

      @@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.

  • @felixmerz6229
    @felixmerz6229 Год назад +86

    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.

  • @karolciszek8550
    @karolciszek8550 Год назад +8

    That zoom with the music was just magical

  • @_miobrot_603
    @_miobrot_603 Год назад +47

    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.

  • @chochochon5464
    @chochochon5464 Год назад +4

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

  • @mmd-wt5eq
    @mmd-wt5eq Год назад +13

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

  • @brayden1562
    @brayden1562 Год назад +14

    Came for the programming. Stayed for the existential crisis.

  • @jonasdaverio9369
    @jonasdaverio9369 Год назад +53

    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.

  • @dasjulian3
    @dasjulian3 Год назад +18

    Fractals are quite nice.

  • @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

  • @2_Elliot
    @2_Elliot Год назад +8

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

  • @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!

  • @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!

  • @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!

  • @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.

  • @hippopotamus86
    @hippopotamus86 Год назад +8

    Perfect. Love your work.

  • @Ener-G
    @Ener-G 3 месяца назад

    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!

  • @JohnR436
    @JohnR436 Год назад +1

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

  • @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.

  • @tonyb5536
    @tonyb5536 6 месяцев назад

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

  • @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

  • @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.

  • @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

  • @QuentinVaresano
    @QuentinVaresano Год назад +1

    Your videos go better and better, please never end

  • @sickbale
    @sickbale Год назад +1

    That's pure madness. I love it.

  • @84homey
    @84homey 7 месяцев назад

    Beautiful fractals. Beautiful numbers.

  • @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: ruclips.net/video/PD1ZlkNf7GQ/видео.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...

  • @bergolho
    @bergolho Год назад +1

    Congratulations on this awesome video man!

  • @CelestialityRW
    @CelestialityRW Год назад +2

    Videos like this make me want to learn C#

  • @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" 😎

  • @firkinflamer8604
    @firkinflamer8604 Год назад +1

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

  • @raushankumar2336
    @raushankumar2336 Год назад +1

    This is absolutely dope👌

  • @DRUYD
    @DRUYD Год назад +1

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

  • @absence9443
    @absence9443 Год назад +2

    Definitely need more simplified coding channels like these!

  • @saniancreations
    @saniancreations Год назад +5

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

  • @olbluelips
    @olbluelips Год назад

    I never get tired of fractals!

  • @Msatthew
    @Msatthew 11 месяцев назад

    Well, that last bit was existentially terrifying. Bravo!

  • @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 !!

  • @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

  • @mayankthakur2158
    @mayankthakur2158 Год назад

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

  • @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 :)

  • @Micro-Moo
    @Micro-Moo 4 месяца назад

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

  • @doolee5704
    @doolee5704 Год назад

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

  • @Syp64
    @Syp64 Год назад +1

    Thanks for sharing this. Hope this inspires future talent!

  • @SoDamnMetal
    @SoDamnMetal Год назад

    Ooo pretty colors!

  • @pauls5745
    @pauls5745 Год назад

    mesmerizing!

  • @RayznGames
    @RayznGames Год назад +1

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

  • @ruthvikas
    @ruthvikas Год назад

    Really amazing work. 👏

  • @mathman0569
    @mathman0569 Год назад +1

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

  • @tirterra1222
    @tirterra1222 Год назад

    Magnifique !

  • @Analog_isnt_dead
    @Analog_isnt_dead Год назад

    This is so awesome

  • @novygaming5713
    @novygaming5713 Год назад +13

    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

  • @guigazalu
    @guigazalu Год назад +1

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

  • @IncroyablesExperiences
    @IncroyablesExperiences Год назад

    Toujours aussi intéressant 😉

  • @AlleBalle54
    @AlleBalle54 Год назад

    nicely done, very interesting

  • @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).

  • @curiouspers
    @curiouspers Год назад

    this is really cool! Thank you!

  • @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!

  • @blupblupking
    @blupblupking Год назад

    j'adore tes vidéos mec continue

  • @nauotit577
    @nauotit577 Год назад

    incroyable !!! vraiment impressionant

  • @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.

  • @encryptedlove
    @encryptedlove Год назад

    Amazing video and channel!!! Thanks!!

  • @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 :)))

  • @JakeSeeber
    @JakeSeeber Год назад +1

    Beautiful work, thank you for the video pezzza

  • @valv_
    @valv_ Год назад

    Great as always !

  • @teebs2721
    @teebs2721 Год назад

    i love when you upload!

  • @puddleglum5610
    @puddleglum5610 Год назад +11

    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

  • @doom5747
    @doom5747 27 дней назад

    looking at this video motivated me to give this a try in python, fractals are just amazing....

  • @zekecochran2695
    @zekecochran2695 Год назад

    Incredible 😮‍💨

  • @brynshannon6692
    @brynshannon6692 Год назад +1

    the infinity of cosmic shrimp

  • @blumbomium
    @blumbomium Год назад +1

    Might have been the quickest 11 minutes of my life

  • @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.

  • @NIGGAKILLA2009
    @NIGGAKILLA2009 Год назад

    that's incredible

  • @killyGHILLIE
    @killyGHILLIE 6 месяцев назад

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

  • @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.

  • @zelimirfedoran9720
    @zelimirfedoran9720 Год назад +1

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

  • @phpART
    @phpART Год назад

    absolutely epic

  • @travisc8406
    @travisc8406 Год назад +2

    Awesome video! 👍

    • @PezzzasWork
      @PezzzasWork  Год назад

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

  • @punk3900
    @punk3900 2 месяца назад

    magic! thank you!

  • @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.

  • @cmilkau
    @cmilkau Год назад +1

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

  • @thebeckett2814
    @thebeckett2814 Год назад

    bro you are amazing

  • @AlexanderDiaz-kp5jt
    @AlexanderDiaz-kp5jt Год назад

    You are amazing 👏👏👏

  • @shadow-ht5gk
    @shadow-ht5gk Год назад

    Your English has improved so much since the phalanx video

  • @matiaslehtinen3941
    @matiaslehtinen3941 Год назад

    Great content, keep it up mate!

  • @fabianportero3563
    @fabianportero3563 Год назад

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

  • @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.

  • @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!

  • @Dricou61
    @Dricou61 8 месяцев назад

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

  • @Octo_Fractalis
    @Octo_Fractalis Год назад +1

    Amazing ❤️👏👏👏

  • @enzoharquin1543
    @enzoharquin1543 Год назад +1

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

  • @guigazalu
    @guigazalu Год назад +1

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

  • @zetmor1337
    @zetmor1337 Год назад +1

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

  • @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

  • @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

  • @OppressedSince1997
    @OppressedSince1997 Год назад +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

  • @BuffRobotiX
    @BuffRobotiX Год назад

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

  • @groverkiinmuppetborn714
    @groverkiinmuppetborn714 Год назад +1

    Thanks! I can now make my own memetic agent

    • @crakhaed
      @crakhaed Год назад

      Just wanted to say, incredible username and good luck

  • @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.