当前位置: 首页 > news >正文

【Godot4自学手册】第四十四节用着色器(shader)实现溶解效果

本小节,我将自学用用着色器(shader)实现溶解效果,最终效果如下:
请添加图片描述

一、进行shader初始设置

首先我们进入Player场景,选择AnimatedSprite2D节点,在检查器中找到CanvasItem属性,并在Material->Material后方选择下拉按钮选择新建ShaderMaterial。然后选中新建的材质球,在Shader属性选择新建着色器,在弹出框内进行如下设置:
请添加图片描述

然后创建保存。

二、编写代码

我编写如下代码:

shader_type canvas_item;  //表示2D类型的着色器
uniform sampler2D nosise_texture;  //声明一个名为 noise_texture 的纹理采样器(sampler2D)。这个声明告诉编译器,`noise_texture` 是一个用于从 2D 纹理中提取颜色值的采样器。
uniform sampler2D burn_texture;
uniform float intergrity:hint_range(0.0, 1.0)=1.0;//声明一个float参数,取值范围0到1,用于燃烧进度
uniform float burn_size:hint_range(0.0, 1.5)=1.3;//声明变量,表示燃烧大小范围
//inverse_lerp函数是线性插值(lerp)的反函数,用于计算目标值在指定范围内对应的索引位置。
float inverse_lerp(float a,float b,float v){return(v-a)/(b-a);
}void fragment() {float noise = texture(nosise_texture,UV).r;//从名为 noise_texture 的纹理中,根据当前的 UV 坐标采样颜色值,并从采样的颜色值中提取红色通道(.r)的值,将其赋给名为 noise 的浮点变量。简而言之,它是在使用纹理生成噪声值。vec4 base_color = texture(TEXTURE,UV) * step(noise,intergrity);//会从TEXTURE指定的纹理中,根据UV提供的坐标,采样一个颜色值。//step() 函数是一个阶跃函数,如果其第一个参数小于第二个参数,则返回 0,否则返回 1。vec2 burn_uv = vec2(inverse_lerp(intergrity,intergrity*burn_size,noise),0.0);//- 计算 noise 在 [integrity, integrity*burn_size] 值域中的位置。
将这个位置值作为vec2向量的第一个分量。将0.0作为vec2向量的第二个分量。这个表达式可以用于创建各种效果,vec4 burn_color = texture(burn_texture,burn_uv)*step(noise,intergrity*burn_size)*texture(TEXTURE,UV);//从burn_texture指定的纹理中采样颜色值。将这个颜色值与step(noise, integrity * burn_size) 的结果相乘。然后,从TEXTURE指定的纹理中采样另一个颜色值。最后,将这两个颜色值相乘的结果作为最终的颜色值。COLOR = mix(burn_color,base_color,base_color.a);
//从burn_texture指定的纹理中采样颜色值,并将这个颜色值存储在burn_color变量中。从base_texture指定的纹理中采样颜色值,并将这个颜色值存储在base_color变量中。使用mix函数burn_color 和base_color按base_color.a的比例混合。将混合后的颜色值存储在 `COLOR` 变量中,这个值将被用于后续的渲染过程。
}

重要知识点说明:
inverse_lerp 函数会返回一个介于 01 之间的值,这个值表示目标值在值域中的位置。 假设你有一个连续的值域 [0, 100],并且你想知道一个目标值 60 在这个值域中的位置。你可以使用 inverse_lerp 函数来找到这个位置。inverse_lerp 返回的值可能是 0.6,这意味着目标值 60 在值域 [0, 100] 中的位置是 60% 处。

三、代码中调用

首先进入项目设置中添加一个快捷键“diss”,与t对应。在键盘上按下t就表示diss。
请添加图片描述

切换到player的代码中
在顶部输入“@onready var animated_sprite_2d = $AnimatedSprite2D”获取AnimatedSprite2D节点。在_physics_process函数中添加如下代码:

if Input.is_action_just_pressed("diss"):var tween = get_tree().create_tween()		tween.tween_property(animated_sprite_2d.material,"shader_parameter/intergrity",.0,.8)

运行游戏,单击字母t,将会进入溶解效果。最后效果如下:
请添加图片描述

相关文章:

【Godot4自学手册】第四十四节用着色器(shader)实现溶解效果

本小节,我将自学用用着色器(shader)实现溶解效果,最终效果如下: 一、进行shader初始设置 首先我们进入Player场景,选择AnimatedSprite2D节点,在检查器中找到CanvasItem属性,并在M…...

【画流程图工具】

画流程图工具 draw.io draw.io(现称为 diagrams.net)是一款在线图表绘制工具,可以用于创建各种类型的图表,如流程图、网络图、组织结构图、UML图、思维导图等。以下是关于它的一些优点、应用场景及使用方法: 优点&a…...

Revit二次开发选择过滤器,SelectionFilter

过滤器分为选择过滤器与规则过滤器 规则过滤器可以看我之前写的这一篇文章: Revit二次开发在项目中给链接模型附加过滤器 选择过滤器顾名思义就是可以将选择的构件ID集合传入并加入到视图过滤器中,有一些场景需要对某些构件进行过滤选择,但是没有共同的逻辑规则进行筛选的情况…...

【Linux】进程概念—环境变量

目录 一、冯诺依曼体系结构 二、操作系统(Operator System) 1 .概念 2 .设计OS的目的 3 . 定位 4 . 系统调用和库函数概念 三、进程 1 .基本概念 2 .描述进程-PCB(process control block)进程控制块 3 . 组织进程 4 . 查看进程 5 .通过系统调用获取进程…...

第十二章 Spring MVC 框架扩展和SSM框架整合(2023版本IDEA)

学习目标 12.1 Spring MVC 框架处理JSON数据12.1.1 JSON数据的传递处理12.1.2 JSON数据传递过程中的中文乱码和日期问题12.1.3 多视图解析器 12.2 Spring MVC 框架中的数据格式转换12.2.1 Spring MVC 框架数据转换流程12.2.2 编写自定义转换器12.2.3 使用InitBinder装配自定义编…...

js中的全局函数有这些

js中的全局函数有这些,记忆规则 6个编译 escape、‌‌unescape、decodeURI、decodeURIComponent、encodeURI、encodeURIComponent 2个数据处理 Number()、String() 4个数字处理 ‌isFinite、isNaN、‌parseFloat、parseInt 1个特殊情况 eval()...

Android SurfaceFlinger——重绘闪烁处理(四十六)

在帧数据准备完成后,下一步是调用 devOptRepaintFlash() 函数处理显示输出设备的可选重绘闪烁问题,这里我们就来看一下重绘闪屏问题的处理方案。 1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行…...

罗马数字转整数 C++

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#x…...

Day20_2--介绍同步加载和异步加载

同步加载和异步加载是处理程序或数据的两种不同方式,它们在处理任务的方式、效率和用户体验上有显著差异。下面是对这两种加载机制的详细介绍。 1. 同步加载(Synchronous Loading) 定义: 同步加载是一种加载数据或资源的方式&am…...

sftp做成一个池子

前言:开发中的需求要去对方的 ftp 服务器下载文件,这里下载文件采用 ftp 方式,下载之后程序再去解析文件的内容,然后再存数据库。下载过来的文件默认是 zip 格式,需要解压 unzip 一下,然后里面有一个 csv 文…...

全网最全-Netty从入门到精通

XiaoYongCai/2024/8/6 一:Netty入门 1.Netty概述 A.Netty的定义 Netty是一个提供异步事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。在Java领域,Netty被认为是除了Java原生NIO之外的最佳网络…...

C#知识|文件与目录操作:对象的创建、保存、读取

哈喽,你好啊,我是雷工! 面向对象编程的特点就是一切皆对象,操作的也是对象,本节学习文件与目录操作中,对象的保存; 以下为学习笔记。 01 对象的特点 ①:对象运行在内存中&#xff…...

自定义 SwiftUI 中符号图像的外观

文章目录 前言大小颜色渲染模式单色分层调色板多色 可变值设计变体示例代码结论 前言 符号图像是来自 Apple的SF Symbols 库的矢量图标,设计用于在 Apple 平台上使用。这些可缩放的图像适应不同的大小和重量,确保在我们的应用程序中具有一致的高质量图标…...

循环神经网络和自然语言处理一

目录 一.分词 1.分词工具 2.分词的方法 3.N-gram表示方法 二.向量化 1.one-hot编码 2.word embedding 3.word embedding API 4.数据形状改变 既然是自然语言,那么就有字,词,句了 一.分词 1.分词工具 tokenization,jie…...

CSS技巧专栏:一日一例 20-纯CSS实现点击会凹陷的按钮

本例图片 案例分析 其实这个按钮非常的简单啊,主要就是利用了box-shadow的inset。 布局代码 <button class="base">凹下的按钮</button> 基础样式 :root{--main-bg-color: #dcdcdc; /* 将页面背景色调整为浅灰色 */--color:#000;--hover-color:#99…...

20240807 每日AI必读资讯

&#x1f468;‍&#x1f4bc;马斯克再发难、OpenAI 高层巨变&#xff1a;两大核心人物离职&#xff0c;总裁休长假到年底 - OpenAI 联合创始人 John Schulman 官宣离职&#xff0c;加入原是竞品公司的 Anthropic - 陪伴 OpenAI 共同成长 9 年的总裁兼联合创始人 Greg Brockm…...

海外社媒账号如何让防关联?账号隔离的5大要点

在跨境电商迅速发展和全球化营销的背景下&#xff0c;海外社交媒体平台成为外贸人拓展市场的关键阵地。因此&#xff0c;为了保障账号安全&#xff0c;实现高效推广&#xff0c;账号隔离以及安全防关联对外贸人来说至关重要。本文将盘点引起海外社媒账号关联的原因及其五大解决…...

下一代 AI 搜索引擎 MindSearch:多智能体 + 系统2,模拟人类认知过程的 AI 搜索引擎

下一代 AI 搜索引擎 MindSearch&#xff1a;多智能体 系统2&#xff0c;模拟人类认知过程的 AI 搜索引擎 提出背景解法拆解实验评估开放集封闭集问答 论文大纲怎么进一步改进 MindSearch&#xff1f;1. 组合&#xff08;Combination&#xff09;2. 拆开&#xff08;Disassembl…...

一键生成专业PPT:2024年AI技术在PPT软件中的应用

不知道你毕业答辩的时候有没有做过PPT&#xff0c;是不是也被这个工具折磨过。没想到现在都有AI生成PPT的工具了吧&#xff1f;这次我就介绍几款可以轻松生成PPT的AI工具吧。 1.笔灵AIPPT 连接直达&#xff1a;​​​​​​​https://ibiling.cn/ppt-zone 这个工具我最早是…...

Godot学习笔记8——PONG游戏制作

目录 一、小球 二、地图 三、积分系统 四、玩家场景 五、导出与发布 PONG是1972年由雅达利公司推出的游戏&#xff0c;主要玩法为玩家控制两个可以上下移动的板子击打屏幕中不断运动的球 一、小球 我们首先创建一个“Area2D”场景&#xff0c;在它下方创建“Collisi…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...