Hello again! The repo has now been updated to work in version 4.1. The changes I made are as follows: Added a second viewport to act as a buffer, this removed the error spam but doesn't fix the core issue. Set MaxFPS in the render settings to 60. Unlocked FPS caused the shader to update so fats you could barely see the ripples. I'm going to investigate fixing the effect without capping framerate, but for now the effect works again.
Thank you for the update, such a cool shader you've got going on there! I will likely use it in my current project in the future. Shame you've run into issues, but such is the way of software dev, eh?
So the good news is, the updated version of the project works flawlessly. Stumbling hazard for people wanting to re-create the tutorial: *There is currently a bug in Godot regarding how viewport textures are passed to a shader.* For whatever reason, if you set the sampler in the Godot GUI, it passes the *Viewport,* not the *Viewport Texture,* and there's no way to get the texture. The *ONLY* way to get the actual viewport *texture* in a way that the shader can use is to use the script technique in the example repository. If you do it wrong, the texture will update in the Godot editor and look perfectly normal, but once you start the actual game, it won't work at all. You'll know you've done it right because the texture *won't* update in the editor, but it'll update correctly inside the game.
I made some water ripple effects in Godot before, but this is just outright better. Using a viewport texture in a shader inside the same viewport is nice trick.
Hey all! I've just updated the github project to get it working with 4.0 RC 5. The changes required were all in the Visual Shader, essentially the manual calculation of depth from the DEPTH_TEXTURE is no longer needed as there's now a node that does it for you! the expression node only calculates the murkiness via beer's law now.
Really great tutorial ❤ thoroughly explained, thank you! In 4.0 there is Skala SceneDepth node I added in my PR but I suppose if you wanted to add Beers Law to it, you had to write that Expression node
Nice tutorial, I would suggest adding caustics to really sell the effect! Since you have the wave texture it shouldn't be hard to project them on the bottom of the pool (I guess?) Anyway, thanks a lot. I look forward to more videos like this!
One bonus point coming to my mind - haven't tried it, so not sure how good it would look: One might be able to use the waves texture together with a light to add light caustics and/or shadows for the waves to everything under the water, too. Might be an interesting attempt to improve the effect even further.
For those whose shader parameters don't appear, just copy the code identical to their shader, my shader parameters appeared. Here's the code you need to paste into the shader: shader_type canvas_item; uniform sampler2D sim_text; void fragment() {
Some notes: The issue connecting your sampler inputs to your shader is not a bug, it's a limitation of Vulkan, and the fact that you can bypass the check by assigning the connection in code *is* a bug, which has since been fixed in later versions of Godot. The correct way to fix this is to create a second viewport to act as a buffer. Plug the simulation image into the new viewport, plug the viewport output into the simulation. (What exactly goes on inside the buffer viewport is left as an exercise to the reader, I used a do-nothing shader that just draws whatever sampler2D it receives.) You may, as I did, find yourself in a frustrating situation where the shader output only appears in a tiny corner of the viewport. To fix this, go to the your ColorRect, in the Layout controls, and set "Anchors Preset" from "Top Left" to "Full Rect." I was able to get the shader itself working, and it looks nice, but I can't get whats' in the viewport to draw onto the surface of the water. Inside the editor, it works fine, but the moment I tell Godot to run the scene, all I get is a blank purple sheet. I went ahead and plugged in the vertex shader as well, and that doesn't produce any ripples either. I'm not sure what the issue is there.
I've updated the repo to get it working in 4.1, unfortunately I never had an issue with a purple texture being displayed. Maybe it will work for you now?
@@crigzI'll be sure to take a look. There's a nonzero possibility it's a driver issue or another bug with Godot, as I'm currently running a positively ancient AMD card on Linux, and it can be a little sketch at times. [edit]Update works flawlessly. Now I need to go through and figure out what I did wrong with my version.
I made a water simulation where you can fully interact with it in 2D I tried 3D but its too process intensive for more than a few particles and I used the PhysicsServer in both. This however is something I'd definitely use🤩
Great vid! Would you be willing to share the Godot project with the final result, the one where you have the capsule moving around it at the end? It would be a great reference, plus we could check out your buoyancy script as well.
You should consider adding a constant to the entire normal map, to not only skew waves but make everything just beneath the water look skewed like in real life
Amazing tutorial. Really creative use of viewports and cameras to have shader interaction. My only question is how expensive this is in terms of GPU use. I've been trying shaders on my machine but then try my game on other machines and some wreck the frame rate.
could this shader be better improved by adding foam to the ripples themselves? oh would i be possible to add some sort of caustics or shadows for the water right now, 11:00 theres only the shadow of the capsule spinning
i tried to follow through this entire project, from scratch but sadly couldnt get it to replicate a splash effect :(, downloaded the end files and it works there for me maybe i missed the point where you made the camera background black and thats why.. but i already over writen what i've done to test if it would work x) frick might have to do it from scratch again to try understand it better, you honestly go through things soo damn quickly i have to slow down, and when you're not saying what you're doing i can sometimes miss steps, like writing the bit in the shader for creating a sample texture paramater i completly missed on 1st attempt
I'm new to godot, I'm facing some difficulties to scale this, I want to do a much bigger scenario with water, can you explain where I need to change, I'm not geting it, thank you, nice video!
Errors evry frame : draw_list_bind_uniform_set: Attempted to use the same texture in framebuffer attachment and a uniform (set: 1, binding: 1), this is not allowed.
Btw instead of using a second viewport as a hack for the double-buffer hack, you can instead try screen texture as such: uniform sampler2D sim_tex: hint_screen_texture, repeat_disable, filter_nearest; Godot has internally backbuffer copy implementation. This works for me. What do you think?
Hi, nice vid and shader! Would it be possible to extract the height values of the water surface to implement bouyancy forces depending on the ripples? Did something similar in Unity, but I stuck at reading height values from the simulation colorrect (if this is even correct).
This look awesome! I tried to replicate it, but unfortunately I can't make it work. My log get's spammed with "ERROR: Attempted to use the same texture in framebuffer attachment and a uniform set, this is not allowed" as soon as I select the Simulation Viewport in the Shader. This might be a Godot 4 beta issue, though. I also never get any waves. Everything just stays red. :-/ Could you, by any chance, provide a demo Project please?
That error is normal in Godot 4.0 beta, it doesn't stop anything from working though. I'll try and get something uploaded later! For the time being, a few things to try: 1) Ensure the simulation viewport has it's clear mode set to NextFrame. 2) Make sure your collision mesh is on same layer of the cull mask for the water camera. Be sure it's material is unshaded, or the camera under the water won't see it. Also make sure the camera is pointing up and it's far plane reaches the surface of the water. 3) In Godot 4.0, be sure to assign the viewport textures to the shaders via script, assigning them in the editor doesn't work. Hope this helps!
@@crigz Thanks for your efforts! I checked all of your points but had no luck. I think I boiled it down to some issue with the visual shader on my machine. No matter what I do, it seems to be unable to use any data from the Texture2DParameter node. It always returns black no matter what you put in. Anyways, I might try again in Godot 3 and wait for a demo. This is probably not the right mediumk to discuss those issues. :-)
@@ThomasHempel I realised a step I missed in the video, unfortunately I can't add an annotation so I'll just have to update the description. On your Water Collision Camera, Add an environment. In the background section, set the mode to Custom Color and then make the Clear color black. i.imgur.com/XGAnauQ.png
@@crigz Well, I did that already on my own. That doesn't help, though. As I said earlier. It seems it's some issue with the simulation texture in the visual water shader that does not work for me. I will play around a little more, and see if I can find anything.
Thank you for sharing the information. However unlike most here, I actually found this very difficult to follow as you frequently made cuts where you had updated settings without telling us and I had to play spot the difference between frames. 1:48 - about a quarter of a second where you can spot the checkbox being enabled and not mentioned 2:38 - the scene has transformed 3:02 - Ask a gamedev friend to follow all the steps at this point. They will likely need to slow the video down to 25% speed and still have to rewind parts. Also the github code is quite a bit different to what you showed in the video. When you mentioned bugs in Godot v4 it would be great if you linked to the Github issue (if one exists). You are spot on when you said that setting it to 512, 512 triggers the bug, however I couldn't find the github issue as I wasn't sure what to search for. Having said this, the effect is fantastic.
"When you set up your water collision camera, add an environment to it and make the background clear color black: i.imgur.com/XGAnauQ.png " I think "Clear Color" is a typo and you likely meant "Custom Color" as shown in your helpful screenshot.
This is great so far, but DEPTH_TEXTURE has been removed from Godot 4 rc1 in favor of something called "hint_depth_texture", and I'm still getting a few odd bugs... does anyone know how hint_depth_texture works in an expression? They kind of try to spell it out in the error, saying I can add "uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap;" to the top; but this does not work in an expression. Dropping a uniform declaration in just gives me a different error.
It seems I can set up an input and tie a LinearSceneDepth node to it, for the same data; but I still have a ways to go in porting this to rc1. So far it's still just black.
Hi Crigz! Can you save me in a project please man? Would you know how to create just a small little island surround by ocean with waves breaking at the shore PLEASE? ( sonthing like Zelda wind waker) I need a tutorial to make sonthing like tht because Im trying to make a game with this scene.
is this a a 2D surface in 3D space, what im asking is, is there a change in the z, or the plane is alwasy on the same height creating the illusion of 3D water?
wait, if it’s c# like unity uses can you just download the c# version of Godot. and if you don’t have that version downloaded you can have it as an add on and just type in c#. so you don’t have the gdscript
Shader code isn't written in languages like C#. It's written in more specialized languages like GLSL, HLSL, or Vulkan. I believe Godot's shader language is primarily GLSL-based, with a few tweaks. Unity meanwhile uses HLSL, as he stated in the video.
Pretty useful video, but the music is quite annoying. Tutorials with annoying music seem to be a trend these days, for some odd reason... I've seen quite a few recently.
It's meant to make you chill and enjoy yourself even if you aren't paying attention. I'm afraid this trend won't go anywhere so you either starr enjoying study beats or enable subtitles and mute the video.
Godot Engine v4.2.2.stable.official scene/resources/material.cpp:1147 - res://tile.tres (albedo res://tile_albedo.png): Height mapping is not supported on triplanar materials. Ignoring height mapping in favor of triplanar mapping.
Hello again!
The repo has now been updated to work in version 4.1.
The changes I made are as follows:
Added a second viewport to act as a buffer, this removed the error spam but doesn't fix the core issue.
Set MaxFPS in the render settings to 60. Unlocked FPS caused the shader to update so fats you could barely see the ripples.
I'm going to investigate fixing the effect without capping framerate, but for now the effect works again.
thank you!!!
Thank you for the update, such a cool shader you've got going on there!
I will likely use it in my current project in the future. Shame you've run into issues, but such is the way of software dev, eh?
So the good news is, the updated version of the project works flawlessly.
Stumbling hazard for people wanting to re-create the tutorial: *There is currently a bug in Godot regarding how viewport textures are passed to a shader.* For whatever reason, if you set the sampler in the Godot GUI, it passes the *Viewport,* not the *Viewport Texture,* and there's no way to get the texture. The *ONLY* way to get the actual viewport *texture* in a way that the shader can use is to use the script technique in the example repository.
If you do it wrong, the texture will update in the Godot editor and look perfectly normal, but once you start the actual game, it won't work at all. You'll know you've done it right because the texture *won't* update in the editor, but it'll update correctly inside the game.
This is probably the best 11 minute course on Godot shaders period.
you are on your period? but yes, it was a great tutorial.
yes, extremely realistic with the "i dont know how this works but i copied it off a github repo"
I made some water ripple effects in Godot before, but this is just outright better. Using a viewport texture in a shader inside the same viewport is nice trick.
Me: *Struggles with basic things*
Crigz: Yeah sure, let's put a fucking water simulation in there.
Go struggle with basic things a bit more, don't get discouraged by pretty but ultimately useless tech. Just make good games and the rest will follow.
its not a real water simulation
@@coolmanthecool603 I know, still plenty impressive though.
Hey all! I've just updated the github project to get it working with 4.0 RC 5.
The changes required were all in the Visual Shader, essentially the manual calculation of depth from the DEPTH_TEXTURE is no longer needed as there's now a node that does it for you! the expression node only calculates the murkiness via beer's law now.
Hi and many thanks for the great tutorial! Do you have the same tutorial for unity?
I would love to see this improved upon with realistic caustics and making waves! Very cool tutorial, makes me want to use godot myself.
Really great tutorial ❤ thoroughly explained, thank you! In 4.0 there is Skala SceneDepth node I added in my PR but I suppose if you wanted to add Beers Law to it, you had to write that Expression node
I filed it for Godot 4 for my 2D needs. It works perfectly.Thank you.
Nice tutorial, I would suggest adding caustics to really sell the effect! Since you have the wave texture it shouldn't be hard to project them on the bottom of the pool (I guess?) Anyway, thanks a lot. I look forward to more videos like this!
Proper caustics require raytracing. Unfortunately not easy. You'd have to find some method to create an approximate effect.
@@TastyMunkyjust put normals
Wow.. amazing tutorial.. thank you so much! You're the best 😁
One bonus point coming to my mind - haven't tried it, so not sure how good it would look: One might be able to use the waves texture together with a light to add light caustics and/or shadows for the waves to everything under the water, too. Might be an interesting attempt to improve the effect even further.
For those whose shader parameters don't appear, just copy the code identical to their shader, my shader parameters appeared. Here's the code you need to paste into the shader:
shader_type canvas_item;
uniform sampler2D sim_text;
void fragment() {
}
amazing as always, you are the best bro. very well done and informative
Some notes:
The issue connecting your sampler inputs to your shader is not a bug, it's a limitation of Vulkan, and the fact that you can bypass the check by assigning the connection in code *is* a bug, which has since been fixed in later versions of Godot. The correct way to fix this is to create a second viewport to act as a buffer. Plug the simulation image into the new viewport, plug the viewport output into the simulation. (What exactly goes on inside the buffer viewport is left as an exercise to the reader, I used a do-nothing shader that just draws whatever sampler2D it receives.)
You may, as I did, find yourself in a frustrating situation where the shader output only appears in a tiny corner of the viewport. To fix this, go to the your ColorRect, in the Layout controls, and set "Anchors Preset" from "Top Left" to "Full Rect."
I was able to get the shader itself working, and it looks nice, but I can't get whats' in the viewport to draw onto the surface of the water. Inside the editor, it works fine, but the moment I tell Godot to run the scene, all I get is a blank purple sheet. I went ahead and plugged in the vertex shader as well, and that doesn't produce any ripples either. I'm not sure what the issue is there.
I've updated the repo to get it working in 4.1, unfortunately I never had an issue with a purple texture being displayed. Maybe it will work for you now?
@@crigzI'll be sure to take a look. There's a nonzero possibility it's a driver issue or another bug with Godot, as I'm currently running a positively ancient AMD card on Linux, and it can be a little sketch at times.
[edit]Update works flawlessly. Now I need to go through and figure out what I did wrong with my version.
@@ClokworkGremlin Yeah I had the same issue. DId you ever already figure it out?
I made a water simulation where you can fully interact with it in 2D I tried 3D but its too process intensive for more than a few particles and I used the PhysicsServer in both. This however is something I'd definitely use🤩
I'd like to see that edit: you have it on your channel. Cool
best water simulation video in Godot 4.
Awesome video Sir!
Finally, I can now make drowned simulator where you just lay still floating in the water.
This is very cool effect!
and how to make a larger capture size, when the camera increases in size, the texture in the viewport decreases very much and there is no simulation
I went from looking for a simple sky shader that work on a phone with little effort to learn off it to now looking at water shader.
Great vid! Would you be willing to share the Godot project with the final result, the one where you have the capsule moving around it at the end? It would be a great reference, plus we could check out your buoyancy script as well.
Sure thing! Would just have to clean it up a bit first.
This is soo beautiful. thank you!
You should consider adding a constant to the entire normal map, to not only skew waves but make everything just beneath the water look skewed like in real life
Dang, this was solid.
I think you'll find, it was liquid.
Omg... Todas i was searchinf for water tutorials in godot... And you've postes It i less than one hour Ago...
Amazing, thank you so much.
Very valuable tutorial, thank you!
this looks better than the water in the gta remastered games
couldnt you also do mud or snow like this ? though how would you handle the curvature ? and wouldnt a 2d viewport be more performant ?
Did you considered using soft body physics? An invisible mesh to simulate objects floating in the water.
Looks incredible! Any way you'd be able to show us how to add shadows of the ripples themselves on the bottom of the pool?
That looks insanely cool!
Leaving a comment for the algorithm. I'd subscribe, if I didn't do that already before…
Amazing tutorial. Really creative use of viewports and cameras to have shader interaction. My only question is how expensive this is in terms of GPU use. I've been trying shaders on my machine but then try my game on other machines and some wreck the frame rate.
would have love dif you had added info about the foam shader aswell but great tutorial regardless
Love your videos ! Thanks
Great Tutorial!
Have you done anything with underwater scenes following this, including caustics etc. I'm interested in your approach.
could this shader be better improved by adding foam to the ripples themselves?
oh would i be possible to add some sort of caustics or shadows for the water
right now, 11:00 theres only the shadow of the capsule spinning
this is very useful
looks good!
i tried to follow through this entire project, from scratch but sadly couldnt get it to replicate a splash effect :(, downloaded the end files and it works there for me maybe i missed the point where you made the camera background black and thats why.. but i already over writen what i've done to test if it would work x) frick might have to do it from scratch again to try understand it better, you honestly go through things soo damn quickly i have to slow down, and when you're not saying what you're doing i can sometimes miss steps, like writing the bit in the shader for creating a sample texture paramater i completly missed on 1st attempt
Thanks, that fixed my problem as well
I'm new to godot, I'm facing some difficulties to scale this, I want to do a much bigger scenario with water, can you explain where I need to change, I'm not geting it, thank you, nice video!
Errors evry frame : draw_list_bind_uniform_set: Attempted to use the same texture in framebuffer attachment and a uniform (set: 1, binding: 1), this is not allowed.
I've updated the repo with a fix for this error spam
Hey, great tutorial. I noticed that the simulation changes based on frame-rate. How would one fix this?
I've not tried it myself but changing the DeltaUV uniform by delta time should help
@@crigz Tried that but it doesn't seem to help at all unfortunately
This method cannot really work in a frame independent manner since you can't calculate an arbitrary state into the future using deltatime.
wow..thnks for shering
I do not have shader parameters section =(
I had the same problem, but when I copied the code identical to his shader, my shader parameters appeared
The code: shader_type canvas_item;
uniform sampler2D sim_text;
void fragment() {
}
Btw instead of using a second viewport as a hack for the double-buffer hack, you can instead try screen texture as such:
uniform sampler2D sim_tex: hint_screen_texture, repeat_disable, filter_nearest;
Godot has internally backbuffer copy implementation. This works for me. What do you think?
Add caustics to the water shader.
Is there a way to have shader replacement effect from unity in Godot?
nice one ... would the simulation still work if you would move the texture instead of the object ? to simulate a river with flow for example ?
Hi, nice vid and shader! Would it be possible to extract the height values of the water surface to implement bouyancy forces depending on the ripples? Did something similar in Unity, but I stuck at reading height values from the simulation colorrect (if this is even correct).
thanks for the video!
Can you make a video about water caustics shader in Godot?
Some important detail is missing. It works in original github project, but once copy to other project, it stops working.
Thanks, it's cool
This look awesome! I tried to replicate it, but unfortunately I can't make it work. My log get's spammed with "ERROR: Attempted to use the same texture in framebuffer attachment and a uniform set, this is not allowed" as soon as I select the Simulation Viewport in the Shader. This might be a Godot 4 beta issue, though.
I also never get any waves. Everything just stays red. :-/
Could you, by any chance, provide a demo Project please?
That error is normal in Godot 4.0 beta, it doesn't stop anything from working though. I'll try and get something uploaded later!
For the time being, a few things to try:
1) Ensure the simulation viewport has it's clear mode set to NextFrame.
2) Make sure your collision mesh is on same layer of the cull mask for the water camera. Be sure it's material is unshaded, or the camera under the water won't see it. Also make sure the camera is pointing up and it's far plane reaches the surface of the water.
3) In Godot 4.0, be sure to assign the viewport textures to the shaders via script, assigning them in the editor doesn't work.
Hope this helps!
@@crigzPlease, I have tried it three times so far. At least I get the same error 😅 the water mesh gets full red.
@@crigz Thanks for your efforts! I checked all of your points but had no luck.
I think I boiled it down to some issue with the visual shader on my machine. No matter what I do, it seems to be unable to use any data from the Texture2DParameter node. It always returns black no matter what you put in.
Anyways, I might try again in Godot 3 and wait for a demo. This is probably not the right mediumk to discuss those issues. :-)
@@ThomasHempel I realised a step I missed in the video, unfortunately I can't add an annotation so I'll just have to update the description.
On your Water Collision Camera, Add an environment. In the background section, set the mode to Custom Color and then make the Clear color black.
i.imgur.com/XGAnauQ.png
@@crigz Well, I did that already on my own. That doesn't help, though. As I said earlier. It seems it's some issue with the simulation texture in the visual water shader that does not work for me.
I will play around a little more, and see if I can find anything.
is it me or water interaction looks better in godot than unity
Thank you for sharing the information. However unlike most here, I actually found this very difficult to follow as you frequently made cuts where you had updated settings without telling us and I had to play spot the difference between frames.
1:48 - about a quarter of a second where you can spot the checkbox being enabled and not mentioned
2:38 - the scene has transformed
3:02 - Ask a gamedev friend to follow all the steps at this point. They will likely need to slow the video down to 25% speed and still have to rewind parts.
Also the github code is quite a bit different to what you showed in the video.
When you mentioned bugs in Godot v4 it would be great if you linked to the Github issue (if one exists). You are spot on when you said that setting it to 512, 512 triggers the bug, however I couldn't find the github issue as I wasn't sure what to search for.
Having said this, the effect is fantastic.
"When you set up your water collision camera, add an environment to it and make the background clear color black: i.imgur.com/XGAnauQ.png "
I think "Clear Color" is a typo and you likely meant "Custom Color" as shown in your helpful screenshot.
is it possible to do on mobile devices? | how would wind and water run at the same time?
Hey! Yes this is definitely possible to run on mobile, in-fact the game I made this for targets mobile.
Hi, this is really cool!, what is its license?
Very nice. Thanks
So, is that a touch = displace, thing, like in blender? or something compleaty diffrent?
Does it work also with Godot 3.5?
This is great so far, but DEPTH_TEXTURE has been removed from Godot 4 rc1 in favor of something called "hint_depth_texture", and I'm still getting a few odd bugs... does anyone know how hint_depth_texture works in an expression?
They kind of try to spell it out in the error, saying I can add "uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap;" to the top; but this does not work in an expression. Dropping a uniform declaration in just gives me a different error.
It seems I can set up an input and tie a LinearSceneDepth node to it, for the same data; but I still have a ways to go in porting this to rc1. So far it's still just black.
How big can I make the water plane before getting performance issues?
Hi Crigz! Can you save me in a project please man? Would you know how to create just a small little island surround by ocean with waves breaking at the shore PLEASE? ( sonthing like Zelda wind waker) I need a tutorial to make sonthing like tht because Im trying to make a game with this scene.
Very nice!!!
is this a a 2D surface in 3D space, what im asking is, is there a change in the z, or the plane is alwasy on the same height creating the illusion of 3D water?
The vertex shader modifies the height of the planes vertices.
What a chad.
It's cool !!!
wait, if it’s c# like unity uses can you just download the c# version of Godot. and if you don’t have that version downloaded you can have it as an add on and just type in c#. so you don’t have the gdscript
Shader code isn't written in languages like C#. It's written in more specialized languages like GLSL, HLSL, or Vulkan. I believe Godot's shader language is primarily GLSL-based, with a few tweaks. Unity meanwhile uses HLSL, as he stated in the video.
Hello, I have a question, can you help me?
so good
Looks good but the water looks too thick for my liking. More like the boat is sailing in watery jelly rather than water.
Tweak it.
Oh, hell yeah …
I want to play your boat game, it is nice,
Henlo mister dev guy, can you please make an fps swimming tutorial? Thank you :(
if your gf complained on why you are spending money on silly game mechanics and assets, show her this video
ONE DEMOS FOR GODOT 3.5 ?
Cool
how much fps this cost? on mobile too
Theoretically low, it's a shader
I`m in Godot 3.0...
yup followed to a T and yet, 100% did not work for me , godot 4,1
I'll get it working in 4.1 and provide the details soon.
Repo has been updated to 4.1
My other toy Unreal is better but takes up a lot of space
Pretty useful video, but the music is quite annoying. Tutorials with annoying music seem to be a trend these days, for some odd reason... I've seen quite a few recently.
It's meant to make you chill and enjoy yourself even if you aren't paying attention. I'm afraid this trend won't go anywhere so you either starr enjoying study beats or enable subtitles and mute the video.
Godot Engine v4.2.2.stable.official
scene/resources/material.cpp:1147 - res://tile.tres (albedo res://tile_albedo.png): Height mapping is not supported on triplanar materials. Ignoring height mapping in favor of triplanar mapping.