Oh hell yes! Just one criticism, you named your variables actual useful names like 'normalizedCoord' and 'angle', its common practice to instead pick those at random. Its like you don't want the fun of having no idea how something works that you wrote barely a week ago! 😁
Thank you! And yeah it often annoyed me how a lot of shaders tend to have super short, confusing variables names. I understand that most of them likely weren't made with this in mind, but it makes them sooo much harder to dissect. I always like to lean slightly on the side of more verbose.
>>> "Me being a CGMatter ripoff for 3 minutes." You are doing a better job than CGMatter. I kind of have a grudge with his teachings, b/c when CGMatter touched on OSL in "Create Procedural Fractals Fast", he threw in bad practices just for comedic giggles. I was unable to learn from it. This on the other hand has jumpstarted me on Shadertoy, so good work.
maybe this is obvious: Why does ... length(normalizedCoord + vec2( 0.2, -0.3)) randomize? Or were you just saying these were randomly chosen? I'm assuming it's something about how length() works. I couldn't figure it out online.
It doesn't randomize, they were randomly chosen as you say. It offsets the fractal's position so the red green and blue channels have different values, similar to chromatic aberration. Length() is the same as measuring how far away a point is from 0, 0, 0.
Not necessarily--- usually in programming languages (and in fact in regular math notation) multiplication and division have the same precedence, and are evaluated left-to-right. The same applies to addition and subtraction. GLSL is consistent with this behavior. Scroll down a bit to find the precedence table: registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.html#preprocessor
@@THE_ONLY_GOD To me having multiplication and division at the same precedence kind of makes sense--- after all, division could be thought of as shorthand for multiplying by a reciprocal. The operators are so similar that it makes sense at least to me to treat their precedence as if they were one and the same. This is even more apparent for addition and subtraction imo--- subtraction is just adding a negative.
@@THE_ONLY_GOD in PEMDAS multiplication and division have the exact same precedence lmao. 1) Parenthesis 2) Exponents (square roots are literally fractionary exponents, meaning that the nth root is the inverse of the nth power, so as you can see they both have the same precedence for a good reason.) 3) Multiplication and Division (Divisions are literally the inverse of a multiplication. Multiplying by 1/x is the same as dividing by x. So, again, as you can see they both have the same precedence for a good reason) 4) Addition and Subtraction (Subtractions are the same as adding negative values, so, again, the same logic applies, subtraction is the inverse of addition, so, once again, they have the same precedence for a good reason)
beautifully concise, the amount of information you just communicated in under 3 minutes is mind blowing
Thank you! Maximizing information density was my main goal! :)
He just did that by talking at 1.5x speed. :-)
I love drugs
Amazing. I'm stunned how simple expression can generate such an interesting pattern.
Me when floating point for loops
😳
simple and fast video about glsl, keep going
Oh hell yes! Just one criticism, you named your variables actual useful names like 'normalizedCoord' and 'angle', its common practice to instead pick those at random. Its like you don't want the fun of having no idea how something works that you wrote barely a week ago!
😁
Thank you! And yeah it often annoyed me how a lot of shaders tend to have super short, confusing variables names. I understand that most of them likely weren't made with this in mind, but it makes them sooo much harder to dissect. I always like to lean slightly on the side of more verbose.
@@Radian628 bro its always fun to name variables a,b,c those fun stuff yk sometimes i like to name them LCD because the fractals reminds me of it
Omg yes people who write shader code are obsessed with terrible variable names because idk it makes them feel like a hacker or something lmao.
I guess those ppl are also code golf fans, so the shorter the solution, the cooler you are 🤷🏻♂️
>>> "Me being a CGMatter ripoff for 3 minutes."
You are doing a better job than CGMatter. I kind of have a grudge with his teachings, b/c when CGMatter touched on OSL in "Create Procedural Fractals Fast", he threw in bad practices just for comedic giggles. I was unable to learn from it. This on the other hand has jumpstarted me on Shadertoy, so good work.
CGMatter was just trying to be Ian Hubert anyway. and there’s nothing wrong with that either, everyone benefits from the tutorials
@@ufffd I don't remember Ian Hubert showing bad practices tho
Glad to catch you right after downing three pots of coffee.
Daaaaamn...and *poof* there goes the weekend. That is strong karate, Sensei.
Awesome! That was by far the best video that I've seen on the subject :)
Thanks! Nice speed run! Decided to decrease video playback from 2x for that one.
The question is how does this work, and why does this process produce fractals?
could you please use a pop screen on your mic and also add highpass filter at 100hz to your vocal channel in your movie editor? TY!
the speed at which you talk blows my mind.
Nice! It's been a while since I didn't have to increase the playback speed. 🤩
thankyouformakingthisvideoitwasreallyinteresting
Thanks for sharing this... Great...
You're amazing
This was phenomenal man
That was good content, but even as a usual speed-watcher I had to slow this down to 0,75
thanks so much for this video! I'm trying to learn hlsl and this video is a great help!
Make whole world spin under 10 seconds.
bro this speed 😭
That background noise is horrible. WHY added such dissonant annoying muzak???
Why are you using a float in the for loop? Great video btw
Presumably GPUs handle floats faster than ints?
@@MrTomas7777 that seems unlikely
maybe this is obvious: Why does ... length(normalizedCoord + vec2( 0.2, -0.3)) randomize? Or were you just saying these were randomly chosen? I'm assuming it's something about how length() works. I couldn't figure it out online.
It doesn't randomize, they were randomly chosen as you say. It offsets the fractal's position so the red green and blue channels have different values, similar to chromatic aberration.
Length() is the same as measuring how far away a point is from 0, 0, 0.
thanks !@@MysteryPancake I think it makes sense to me now.
You lost me at where you started explaining the fractal code.
❤❤❤
Thanks, but ditch the annoying background noise "music".
wow thanks
😄 💖💖💖
Brother if you're going to try to talk this quickly you need to enunciate lol
😄😄
🆕🆕🆕💣💣💣
😂
Bro Lets make Raps Instead of this!
😹😹😹🇹🇹🇹
😿 😹😹😹😍
🙎
"Don't copy and paste"...LOL
💭💭💭 🇮😺😺
😽 😨
😴😴 😅😅😅😩😩😩
multiplication happens BEFORE division. PEMDAS.
Not necessarily--- usually in programming languages (and in fact in regular math notation) multiplication and division have the same precedence, and are evaluated left-to-right. The same applies to addition and subtraction. GLSL is consistent with this behavior. Scroll down a bit to find the precedence table: registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.html#preprocessor
@@Radian628 Wow, weird. Didn't know about the left to right precedence. Seems better to avoid that.
@@THE_ONLY_GOD To me having multiplication and division at the same precedence kind of makes sense--- after all, division could be thought of as shorthand for multiplying by a reciprocal. The operators are so similar that it makes sense at least to me to treat their precedence as if they were one and the same.
This is even more apparent for addition and subtraction imo--- subtraction is just adding a negative.
@@THE_ONLY_GOD in PEMDAS multiplication and division have the exact same precedence lmao.
1) Parenthesis
2) Exponents (square roots are literally fractionary exponents, meaning that the nth root is the inverse of the nth power, so as you can see they both have the same precedence for a good reason.)
3) Multiplication and Division (Divisions are literally the inverse of a multiplication. Multiplying by 1/x is the same as dividing by x. So, again, as you can see they both have the same precedence for a good reason)
4) Addition and Subtraction (Subtractions are the same as adding negative values, so, again, the same logic applies, subtraction is the inverse of addition, so, once again, they have the same precedence for a good reason)
🇪🇪😧 🔱
🇷🇷🇷💘