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

这篇具有很好参考价值的文章主要介绍了【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天,主要是利用shader给游戏给地宫场景添加一层雾气效果,增加一下气氛,先看一下效果:
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

一、新建ParallaxBackground根节点

新建场景,根节点选择ParallaxBackground,命名为Fog,然后将该场景保存到Component文件夹下。ParallaxBackground 使用一个或多个 ParallaxLayer 子节点来创建视差效果。每个 ParallaxLayer 可以使用 ParallaxLayer.motion_offset 以不同的速度移动。这在 2D 游戏中可以创造一种深度错觉。如果没有与 Camera2D 一起使用,你必须手动计算 scroll_offset。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

在其检查器面板中Scroll -> Ignore Camera Zoom属性勾选,表示该节点的子元素不受相机缩放的影响。Layer->Layer设置为2,表示该节点浮于其他节点之上。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

二、添加ParallaxLayer子节点。

ParallaxLayer 必须是 ParallaxBackground 节点的子节点。每个 ParallaxLayer 都可以设置为相对于相机移动或 ParallaxBackground.scroll_offset 值。该节点的子节点将受其滚动偏移量的影响。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

在其检查器窗口,将Motion->Mirroring设置为(320,180)。
给节点添加ColorRect子节点。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

添加完该子节点后,主编辑器中会出现四个白色的矩形,如下的样子:
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

在ColorRect节点的检查器中,将size属性设置为(320,180),这样就会铺满整个屏幕,如下:
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

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

在ColorRect节点属性面板中,找到CanvasItem -> Material->Material属性,单击后方的下拉菜单小箭头选择新建ShaderMaterial。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

选中刚才新建的ShaderMaterial,然后单击其Shader属性后方的下拉菜单小箭头选择新建新建着色器。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

在弹出的创建着色器对话框中,类型选择Shader;模式选择Canvas Item(表示2D游戏着色器);路径选择Component文件夹下,其他不变,单击创建。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

这样就可以在着色器编辑器中编辑代码了。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

四、编写着色器(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为传入的纹理,定义完成后会在检查器面板出现该参数
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

单击noise_teture后方的下拉按钮选择新建NoiseTexture2D选项。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

对其属性进行设置:width:320;Hieght:180;Seamless启用,表示该纹理可以无缝衔接;seamless_blend_skirt设置为0.75,表示接缝混合的距离;Noise选择新建FastNoiseLite。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

FastNoiseLite的Frequeny属性设置为0.0075,表示噪声的频率,值越大产出的噪声越粗糙,颗粒越大。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

这样就完成了。

五、underground引入薄雾

进入underground场景,单击实例化子场景,将我们刚才新建的场景实例化到underground场景。
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader

这样我们的地宫就有了雾气效果。如下:
【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果,Godot4自学手册,着色器,游戏,godot,游戏引擎,Godot4,shader文章来源地址https://www.toymoban.com/news/detail-859362.html

到了这里,关于【Godot4自学手册】第三十九节利用shader(着色器)给游戏添加一层雾气效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第三十九讲:神州无线AC基础管理配置

          瘦AP零配置上线,对AP的管理和配置都在AC上进行。AC的基础管理包括AC的无线地址指定及无线功能开启、AP的注册、AP用户数管理、自动信道调整等。 一、配置AC 无线IP 地址 设置静态的无线IP地址 查看AC选取的无线IP地址   3.开启无线功能 二、AP 注册 1 .二层模式注册

    2023年04月08日
    浏览(39)
  • 第三十九章 Unity 图像 (Image) UI

    本章节,我们介绍一下“Image”UI元素,首先我们创建一个新场景“SampleScene2.unity”。然后我们点击菜单栏“GameObjec”-“UI”-“Image”,如下所示 我们将其放置到了中间位置,检视面板中的参数如下  默认情况下,这个“Image”的尺寸是100 * 100像素。 这里,我们主要介绍它的

    2024年02月10日
    浏览(50)
  • C语言第三十九弹---预处理(上)

    ✨ 个人主页:   熬夜学编程的小林 💗 系列专栏:   【C语言详解】   【数据结构详解】 预处理 1、预定义符号 2、#define定义常量 3、#define定义宏 4、带有副作用的宏参数 5、宏替换的规则 6、宏和函数的对比 总结 在C语言中,预处理阶段是代码执行之前的一个重要步骤,负

    2024年04月09日
    浏览(42)
  • 第三十九章 青格郎当(青衣弹灵诞生)

    “巴哥奔,我们诚挚邀请你加入金马弹灵,着青衣,事渲染,你愿意么?” 蓝衣弹灵话音刚落,大家一齐睁开眼睛,直愣愣的盯着巴哥奔。 “唔~~~可~” 好半天,巴哥奔才憋出这个字,刚一出口,便忘了刚才是谁提出怎样的问题。 脑海里唯有丁忍的三句叮嘱在不停打转,仿

    2024年02月06日
    浏览(44)
  • Godot4 C# vscode开发环境搭建

    Godot .Net版本: 下载链接 vscode :自行下载 .netcore7:.netcore6可能也行 vscode插件: 1.配置文件用VSCode打开 2.生成C#项目 项目–工具–C#-Create C# Solution, 项目文件如下: 1.打开工程目录 2.创建launch.json与task.json:按.netcore配置,godot插件不顶用 ctrl+shift+p launch.json :\\\"program\\\"换成自己路径

    2024年02月14日
    浏览(82)
  • 【LeetCode75】第三十九题 二叉树的右视图

    目录 题目: 示例: 分析: 代码: 题目给我们一棵二叉树,让我们返回站在二叉树右边从上到下看到的节点。 那实际上就是要我们对二叉树进行层序遍历,然后把每层的最右边的一个节点拿出来。 所以问题实际上就是要我们对二叉树进行层序遍历,所以我们这边介绍两种层

    2024年02月10日
    浏览(45)
  • 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent

    尽管 IRIS 通常以根用户身份安装,但在 UNIX®/Linux 和 macOS 系统上,实例可能会被其他用户安装和运行。 非根实例的 ISCAgent 由安装用户在后台运行 ISCAgentUser 脚本启动,该脚本位于 IRISSYS 环境变量定义的目录中,例如: 虽然可能无法将 ISCAgent 配置为在系统启动时自动启动,但

    2023年04月26日
    浏览(67)
  • Godot引擎 4.0 文档 - 手册 - 最佳实践

      本系列是一系列最佳实践,可帮助您高效地使用 Godot。 Godot 在构建项目代码库并将其分解为场景方面提供了极大的灵活性。每种方法都有其优点和缺点,在您使用该引擎足够长的时间之前,很难权衡它们。 总是有很多方法来构建代码和解决特定的编程问题。不可能在这里

    2024年02月09日
    浏览(53)
  • MongoDB(三十九)

    目录 一、概述 (一)相关概念 (二)特性 二、应用场景 三、安装 (一)编译安装 (二)yum安装 1、首先制作repo源 2、软件包名:mongodb-org 3、启动服务:systemctl start mongod 4、监听端口:mongod 5、端口号:27017 四、目录结构 (一)rpm -ql mongodb-org-server 1、MongoDB的配置文件 2、

    2024年02月12日
    浏览(43)
  • Python工具箱系列(三十九)

    现实世界中,大量存在着对数据压缩的需求。为此,python内置了zlib压缩库,可以方便的对任意对象进行压缩。 下述代码演示了对字符串进行压缩: 运行上述代码后,会发现压缩并不一定会减少字节数,压缩的效率取决于压缩内容中的冗余程度。对于第一句的中文压缩后反而

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包