update! WhtLotus (discord: whtlotus) very kindly made a visual shader version of the project from this video 🥳 It's also up for free in my latest Patreon post (along with some life updates) Cheers everyone! 🥂
I think you finally got VFX shaders to click for me. I haven't come across anything where people broke it down into atomic effects before so it makes a lot more sense.
Polar coordinates is a bit unintuituve until you know atan is a function used for everything, if you want to get the direction of your joystick controller, you use atan(2) as well. However the erosion shader is quite unintuituve, feels like those off by one errors when programing, and I don't think if programing languages arrays started at 1 would be easier either, sadly
You've saved my life thank you so much! I'll need to do some tooling around with this info to suit what I'm trying to do but this has been incredibly helpful.
Great info! Thank you for the video, if I may ask, in a future video can the background music be less distracting? Made it hard to focus on the voice/explanation in some parts, otherwise great video ^^ thanks again.
thank you so much ! 🥳 i do have a couple more shaders i use but I want to understand them enough first before i can make a video about those the next videos will be breakdowns of the last 2 godot vfx i made 🙇♂
Could you implement an open ocio lut as a shader? I use Linear values for film vfx. If my sprites were 16k Lin images could a shader act as a 2D lut on the whole screen?
hi ! you can add a -0.5 to the float noise_tex i showed in the video 👌this just remaps the noise value from (0 -> 1) to (-0.5 -> 0.5) code: float noise_tex = texture(noise, noise_uv).r - 0.5;
so I basically need to add techniques on top of techniques?... for example, to make a 2d top-down clouds shaders I just adds erosion on top of tilling a nois texture?
yes :D i haven't tried personally but that could be one way to do it ! you could also even try layering noises on top of each other with different offset speeds so it doesn't look too uniform 🤔
@@onetupthree Thanks for the insight! Your videos got me into shaders, but I found it quite difficult to glue math with visuals, but one day I'll wrap my head around it :)
hi ! thanks for the kind words 🙇♂ for 2D sprites it should be around the same but you're working with the 'canvas_item' shader_type as opposed to the 'spatial' type ALBEDO built_in would be replaced with COLOR and to access the texture you set in the Sprite2D Inspector, you use TEXTURE using the tiling and offset as example --- A. spatial uniform sampler2D your_custom_texture; uniform vec2 tiling; uniform vec2 offset; void vertex() { UV = UV * tiling + offset; } void fragment() { ALBEDO = texture(your_custom_texture, UV); } B. canvas_item uniform vec2 tiling; uniform vec2 offset; void vertex() { UV = UV * tiling + offset; } void fragment() { COLOR = texture(TEXTURE, UV); // TEXTURE from inspector value } --- there might be some mistakes in the code here but hopefully gets the point across ! :D hope this helps
hi ! if you mean the polar coordinates, if you follow the steps to get the polar UVs it should also work for CanvasItem shaders 🤔 can you try this line after calculating for polar_uv? COLOR = texture(TEXTURE, polar_uv); TEXTURE is the dedicated texture variable for canvas items when a texture is assigned in a control node :D make sure to set Repeat as Enabled 👌 hope this helps !
@@onetupthree sorry for not being clear. For the first demo you showed, I wanted just an offset animation with a sprite with no tiling for cavas item. Thanks
@@ThisIsFez normal offset will also work for CanvasItem :O with the same COLOR = texture(TEXTURE, base_uv) if that still isn't what you need, might be better if we talk on discord if you want :D you can shoot me an email of your username so I can add you :)
havent tried making that but I imagine it has something to do with screen-space UVs 🤔 you can search it up on google images to see what i mean sample with screen-space UVs on a separate scene with your galaxy environment
Thank you, but I still can't solve certain problems. In 2D with tilemap I would like to use clip children but it doesn't work. Would you like to create a shader?@@onetupthree
@@simonw.1223 it's short for OpenGL Shading Language :D can't say much about it tho because I haven't used it outside of Godot and VFX so I learn about it on the fly im sure there are lots of tutorials about there about it 🤔
I did not get what the fuck is happening in distortion. I could make it work but how exactly is the noise defining the uv coordinates in the main texture
yo let's calm down a bit 😭 the base UVs are laid out as values that go from 0 to 1 from the upper left to the bottom right (as seen in 3:40) adding noise to the base UVs will offset our 0 to 1 values (and everything in between) by a little bit so when our texture is mapped to the modified UVs, it'll appear distorted if it still isn't clear you can DM me on twt and i can explain further with pictures :O
@@onetupthree hey bro, thank u. After some tweaking I could kinda of figure this out! Yet it is kinda strange at first. Your explanation now is nice to close it all too, thanks!