FencerDevLog

joined 2 years ago
 

Hi everyone! This time, we’ll take a short break from shaders and look at an equally interesting technology — particle systems in Godot 4. It's not the first time I’ve showcased something like this — for example, the fire and smoke we had here quite recently. In this tutorial, we’ll create a quite useful effect: a trail behind a moving 3D object, with the trail based on the same shape as the object itself.

 

Hi everybody! Do you remember the tilted square grid shader we created here some time ago? If you liked it and would like to try something similar but more irregular, you might be interested in this tutorial, where we’ll create an effect similar to a stone mosaic — which can be a very interesting feature in many games.

 

Hi everybody. This is the sixth part of our tutorial dedicated to rendering 3D scenes using shaders and raymarching technology. This time, I’d like to try improving the materials by adding textures, which we’ll pass into the shader using new uniform parameters, and briefly explain how so-called triplanar mapping works.

 

Hey everyone! Today's tutorial is a little bit special because it covers an effect that has been part of my Godot Shader Pack for several weeks now. However, I believe it deserves a more detailed explanation for those who not only want to use this shader but also understand how it works. So, let’s get into it.

 

Hi everybody. Let's continue our series on modeling 3D scenes using shaders and raymarching technology. In the previous fourth part, we managed to render the scene from any position and at any angle, which is very useful in itself, but we were still rendering each object in the same monotonous color. This time, we'll fix that detail and rewrite our code so that we can assign a different material to each object.

 

Hi everyone! I think every shader developer has at some point found themselves in a situation where they needed to determine certain values in the fragment function, especially when the shader wasn't behaving as expected. The problem is that the shader runs on the GPU, so we don't have anything like an output console available. So, how can we solve that? There are some options, and I’ll demonstrate one of them in this tutorial.

[–] FencerDevLog@programming.dev 1 points 1 month ago

0.9.3 (2025-05-25): Added ray_marching_6 (scene, shader, and texture). Added voronoi_mosaic (scene and shader).

[–] FencerDevLog@programming.dev 1 points 1 month ago

I see. Good idea.

[–] FencerDevLog@programming.dev 1 points 1 month ago (2 children)

I think Bevy uses WGSL that has a different syntax. But your friend can at least extract the algorithms and rewrite them. 😎

[–] FencerDevLog@programming.dev 1 points 1 month ago

0.9.2 (2025-05-21): Added print_number (scene and shader) and its usage in paper_burn (script and shader). Added ray_marching_5 (scene and shader).

 

Hi everyone! We've already had a spiral tunnel, a circular tunnel, and a triangular tunnel. How about trying a square or rectangular one this time, which could resemble a classic dungeon-style game? It's pretty simple, so let's get to it.

[–] FencerDevLog@programming.dev 8 points 1 month ago

This is what happens when a programmer tries to create some graphics. 😀

 

Many people asked for it, so I created and released a new product: 80 shaders from my collection, ready to use in any project. Plus bonuses. 😎

 

Hi everybody. You might remember that the fire effect created using particles in Godot 4 was one of the first tutorials I published on this channel. Since then, more than a year has passed, the Godot Engine has evolved a lot, and many things have changed in the editor as well, so the original video is no longer very usable with the latest version of Godot (currently 4.4). That's why I decided to create a new, up-to-date, and improved tutorial, which we're about to dive into.

 

Hey everybody! Let's go back to two dimensions, and take a look at how to create the effect you're currently seeing in the background of this video. It's basically something like a kaleidoscope, for which we need a source image and parameters like the number of segments, or the rotation speed. So let's go ahead and program this shader.

 

Hey everyone! This time, we'll be playing with fire. It's not the first time I've created a fire shader, but back then, I used a noise texture and a curve as a parameter, which significantly simplified the whole process. Now, we'll try it without such tools and generate a candle flame, which, as always, will have plenty of parameters for further adjustments. So let's get to it.

 

Hey everybody! Recently, we created a shader that simulated an analog clock using polar coordinates, and we'll stick with this type of display a little longer. This time, I'll demonstrate how to program a fully customizable spinner based on similar principles. So, let's start coding!

[–] FencerDevLog@programming.dev 4 points 3 months ago

You are welcome! Glad to help.

[–] FencerDevLog@programming.dev 1 points 5 months ago

Thanks! The offset of UV coordinates works like refraction, localized to the corresponding cell of the defined grid. Without using a noise texture, such light refraction would be circular, similar to the magnifying glass effect. However, this approach creates slightly irregular shapes, which better simulate droplets on a window pane. If you reduce the drop_layer function to its absolute minimum, you should see the mentioned grid before the shaping and movement of the droplets.

Like this:

vec2 drop_layer(vec2 uv, float time) {
	vec2 grid = vec2(grid_x, grid_y);
	vec2 drop_uv = fract(uv * grid);
	drop_uv = 2.0 * drop_uv - 1.0;
	vec2 drop_size = drop_uv / grid;
	return drop_size;
}

[–] FencerDevLog@programming.dev 2 points 6 months ago

Thanks! About a year ago, I was experimenting with decals, but I don’t remember if it led to anything. Maybe I’ll revive this subproject.

[–] FencerDevLog@programming.dev 1 points 7 months ago

Yes, you are right. Fixed.

[–] FencerDevLog@programming.dev 4 points 11 months ago

Assemble your objects from smaller, independent 3D meshes, which you can control separately after destroying an enemy. That's how I do it in my space shooter game.

view more: next ›