【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果

本文详细描述了如何在游戏开发中使用ParallaxBackground和ShaderMaterial为地宫场景添加雾气效果,包括设置ParallaxLayer、编写Shader代码以及在underground场景中应用。
摘要由CSDN通过智能技术生成

今天,主要是利用shader给游戏给地宫场景添加一层雾气效果,增加一下气氛,先看一下效果:
请添加图片描述

一、新建ParallaxBackground根节点

新建场景,根节点选择ParallaxBackground,命名为Fog,然后将该场景保存到Component文件夹下。ParallaxBackground 使用一个或多个 ParallaxLayer 子节点来创建视差效果。每个 ParallaxLayer 可以使用 ParallaxLayer.motion_offset 以不同的速度移动。这在 2D 游戏中可以创造一种深度错觉。如果没有与 Camera2D 一起使用,你必须手动计算 scroll_offset。
请添加图片描述

在其检查器面板中Scroll -> Ignore Camera Zoom属性勾选,表示该节点的子元素不受相机缩放的影响。Layer->Layer设置为2,表示该节点浮于其他节点之上。
请添加图片描述

二、添加ParallaxLayer子节点。

ParallaxLayer 必须是 ParallaxBackground 节点的子节点。每个 ParallaxLayer 都可以设置为相对于相机移动或 ParallaxBackground.scroll_offset 值。该节点的子节点将受其滚动偏移量的影响。
请添加图片描述

在其检查器窗口,将Motion->Mirroring设置为(320,180)。
给节点添加ColorRect子节点。
请添加图片描述

添加完该子节点后,主编辑器中会出现四个白色的矩形,如下的样子:
请添加图片描述

在ColorRect节点的检查器中,将size属性设置为(320,180),这样就会铺满整个屏幕,如下:
请添加图片描述

三、给ColorRect节点添加shader材质。

在ColorRect节点属性面板中,找到CanvasItem -> Material->Material属性,单击后方的下拉菜单小箭头选择新建ShaderMaterial。
请添加图片描述

选中刚才新建的ShaderMaterial,然后单击其Shader属性后方的下拉菜单小箭头选择新建新建着色器。
请添加图片描述

在弹出的创建着色器对话框中,类型选择Shader;模式选择Canvas Item(表示2D游戏着色器);路径选择Component文件夹下,其他不变,单击创建。
请添加图片描述

这样就可以在着色器编辑器中编辑代码了。
请添加图片描述

四、编写着色器(Shader)代码

shader_type canvas_item;
//噪声纹理
//uniform用于逻辑语言(GDScript/C#等)和着色器之间传递数据。
//注意:这个传递是单向的,即只能由逻辑语言传给着色器,反之不行。
uniform sampler2D noise_teture:repeat_enable,filter_nearest;
//设置云层透明度,值越接近1越不透明
uniform float density:hint_range(0.0, 1.0, 0.1)=0.25;
//云层移动速度
uniform vec2 speed = vec2(0.02,0.01);
void fragment() {
	//设置云层移动
	vec2 uv = UV + speed * TIME;
	//从噪声纹理采样
	float noise = texture(noise_teture,uv).r;
	//将噪声的范围(0.0,1.0)范围调整到(-1.0,1.0)
	float fog = noise*2.0-1.0;
	//将范围在调整回(0.0,1.0)目的是不是云层的地方变为透明
	fog = clamp(fog,0.0,1.0);
	//应用薄雾效果
	COLOR.a *=fog*density;
}

uniform的定义表示传递给着色器参数,定义的noise_teture为传入的纹理,定义完成后会在检查器面板出现该参数
请添加图片描述

单击noise_teture后方的下拉按钮选择新建NoiseTexture2D选项。
请添加图片描述

对其属性进行设置:width:320;Hieght:180;Seamless启用,表示该纹理可以无缝衔接;seamless_blend_skirt设置为0.75,表示接缝混合的距离;Noise选择新建FastNoiseLite。
请添加图片描述

FastNoiseLite的Frequeny属性设置为0.0075,表示噪声的频率,值越大产出的噪声越粗糙,颗粒越大。
请添加图片描述

这样就完成了。

五、underground引入薄雾

进入underground场景,单击实例化子场景,将我们刚才新建的场景实例化到underground场景。
请添加图片描述

这样我们的地宫就有了雾气效果。如下:
请添加图片描述

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游戏自学

生活不易,打赏随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值