Unity - 记录解决 部分手机设备上 浮点精度 不足 导致 UV 采样断层严重的 BUG

news2024/11/20 10:36:54

文章目录

  • 环境
  • 目的
  • 问题
  • 解决
  • Project


环境

Unity : 2020.3.37f1
Pipeline : BRP


目的

备忘,便于日后索引


问题

正常手机显卡芯片的浮点解析进度上的效果(其实不用手机上,PC 上将 uv * scale 一个巨大的值也会出现的)
在这里插入图片描述

异常手机显卡芯片的浮点解析进度上的效果(其实不用手机上,PC 上将 uv * scale 一个巨大的值也会出现的)
在这里插入图片描述


解决

诊断发现是: UV 精度 scale 之后溢出了

这个 shader 是 网上的一位TA大佬 (听说是叫: 猫大 的TA大佬 写的,下面的 shader 可以看到是使用 ASE 连连看 生成的代码)

// Made with Amplify Shader Editor
// Available at the Unity Asset Store - http://u3d.as/y3X 
Shader "VFX/PandaShaderSampleV1.0"
{
	Properties
	{
		[Enum(UnityEngine.Rendering.BlendMode)]_Scr("Scr", Float) = 5
		[Enum(UnityEngine.Rendering.BlendMode)]_Dst("Dst", Float) = 10
		[Enum(UnityEngine.Rendering.CullMode)]_CullMode("CullMode", Float) = 0
		_MainTex("MainTex", 2D) = "white" {}
		[Toggle]_MainTexAR("MainTexAR", Float) = 0
		[HDR]_MainColor("MainColor", Color) = (1,1,1,1)
		_MainTexUSpeed("MainTexUSpeed", Float) = 0
		_MainTexVSpeed("MainTexVSpeed", Float) = 0
		[Toggle]_CustomMainTex("CustomMainTex", Float) = 0
		[Toggle(_FMASKTEX_ON)] _FMaskTex("FMaskTex", Float) = 0
		_MaskTex("MaskTex", 2D) = "white" {}
		[Toggle]_MaskTexAR("MaskTexAR", Float) = 1
		_MaskTexUSpeed("MaskTexUSpeed", Float) = 0
		_MaskTexVSpeed("MaskTexVSpeed", Float) = 0
		[Toggle(_FDISTORTTEX_ON)] _FDistortTex("FDistortTex", Float) = 0
		_DistortTex("DistortTex", 2D) = "white" {}
		[Toggle]_DistortTexAR("DistortTexAR", Float) = 1
		_DistortFactor("DistortFactor", Range( 0 , 1)) = 0
		_DistortTexUSpeed("DistortTexUSpeed", Float) = 0
		_DistortTexVSpeed("DistortTexVSpeed", Float) = 0
		[Toggle]_DistortMainTex("DistortMainTex", Float) = 0
		[Toggle]_DistortMaskTex("DistortMaskTex", Float) = 0
		[Toggle]_DistortDissolveTex("DistortDissolveTex", Float) = 0
		[Toggle(_FDISSOLVETEX_ON)] _FDissolveTex("FDissolveTex", Float) = 0
		_DissolveTex("DissolveTex", 2D) = "white" {}
		[Toggle]_DissolveTexAR("DissolveTexAR", Float) = 1
		[HDR]_DissolveColor("DissolveColor", Color) = (1,1,1,1)
		[Toggle]_CustomDissolve("CustomDissolve", Float) = 0
		_DissolveFactor("DissolveFactor", Range( 0 , 1)) = 0
		_DissolveSoft("DissolveSoft", Range( 0 , 1)) = 0.1
		_DissolveWide("DissolveWide", Range( 0 , 1)) = 0.05
		_DissolveTexUSpeed("DissolveTexUSpeed", Float) = 0
		_DissolveTexVSpeed("DissolveTexVSpeed", Float) = 0
		_MainAlpha("MainAlpha", Range( 0 , 10)) = 1
		[Toggle(_FFNL_ON)] _FFnl("FFnl", Float) = 0
		[Toggle(_FDEPTH_ON)] _FDepth("FDepth", Float) = 0
		[HDR]_FnlColor("FnlColor", Color) = (1,1,1,1)
		_FnlScale("FnlScale", Range( 0 , 2)) = 0
		_FnlPower("FnlPower", Range( 1 , 10)) = 1
		[Toggle]_ReFnl("ReFnl", Float) = 0
		[Enum(Alpha,0,Add,1)]_BlendMode("BlendMode", Float) = 0
		_DepthFade("DepthFade", Range( 0 , 10)) = 1
		[HideInInspector] _texcoord2( "", 2D ) = "white" {}
		[HideInInspector] _texcoord( "", 2D ) = "white" {}
		[HideInInspector] __dirty( "", Int ) = 1
	}

	SubShader
	{
		Tags{ "RenderType" = "Transparent"  "Queue" = "Transparent+0" "IsEmissive" = "true"  }
		Cull [_CullMode]
		ZWrite Off
		ZTest LEqual
		Blend [_Scr] [_Dst], One OneMinusSrcAlpha
		
		CGPROGRAM
		#include "UnityShaderVariables.cginc"
		#include "UnityCG.cginc"
		#pragma target 3.0
		#pragma shader_feature_local _FDISSOLVETEX_ON
		#pragma shader_feature_local _FDISTORTTEX_ON
		#pragma shader_feature_local _FFNL_ON
		#pragma shader_feature_local _FMASKTEX_ON
		#pragma shader_feature_local _FDEPTH_ON
		#pragma surface surf Unlit keepalpha noshadow noambient novertexlights nolightmap  nodynlightmap nodirlightmap nofog nometa noforwardadd 
		#undef TRANSFORM_TEX
		#define TRANSFORM_TEX(tex,name) float4(tex.xy * name##_ST.xy + name##_ST.zw, tex.z, tex.w)
		struct Input
		{
			float4 vertexColor : COLOR;
			float2 uv_texcoord;
			float4 uv2_texcoord2;
			float3 worldPos;
			half3 worldNormal;
			float4 screenPos;
		};

		uniform half _Dst;
		uniform half _CullMode;
		uniform half _BlendMode;
		uniform half _Scr;
		uniform float4 _MainColor;
		uniform sampler2D _MainTex;
		uniform half _MainTexUSpeed;
		uniform half _MainTexVSpeed;
		uniform half _CustomMainTex;
		uniform float4 _MainTex_ST;
		uniform half _DistortMainTex;
		uniform half _DistortTexAR;
		uniform sampler2D _DistortTex;
		uniform half _DistortTexUSpeed;
		uniform half _DistortTexVSpeed;
		uniform float4 _DistortTex_ST;
		uniform half _DistortFactor;
		uniform float4 _DissolveColor;
		uniform half _CustomDissolve;
		uniform half _DissolveFactor;
		uniform half _DissolveWide;
		uniform half _DissolveSoft;
		uniform half _DissolveTexAR;
		uniform sampler2D _DissolveTex;
		uniform half _DissolveTexUSpeed;
		uniform half _DissolveTexVSpeed;
		uniform float4 _DissolveTex_ST;
		uniform half _DistortDissolveTex;
		uniform half _MainAlpha;
		uniform half _ReFnl;
		uniform half4 _FnlColor;
		uniform half _FnlScale;
		uniform half _FnlPower;
		uniform half _MainTexAR;
		uniform half _MaskTexAR;
		uniform sampler2D _MaskTex;
		uniform half _MaskTexUSpeed;
		uniform half _MaskTexVSpeed;
		uniform float4 _MaskTex_ST;
		uniform half _DistortMaskTex;
		UNITY_DECLARE_DEPTH_TEXTURE( _CameraDepthTexture );
		uniform float4 _CameraDepthTexture_TexelSize;
		uniform half _DepthFade;

		inline half4 LightingUnlit( SurfaceOutput s, half3 lightDir, half atten )
		{
			return half4 ( 0, 0, 0, s.Alpha );
		}

		void surf( Input i , inout SurfaceOutput o )
		{
			float Scr106 = _Scr;
			half2 appendResult4_g42 = (half2(_MainTexUSpeed , _MainTexVSpeed));
			float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw;
			half2 temp_output_3_0_g39 = uv_MainTex;
			half2 appendResult4_g33 = (half2(_DistortTexUSpeed , _DistortTexVSpeed));
			float2 uv_DistortTex = i.uv_texcoord * _DistortTex_ST.xy + _DistortTex_ST.zw;

			// jave.lin : 修复前
			//half2 panner5_g33 = ( 1.0 * _Time.y * appendResult4_g33 + uv_DistortTex);
			// jave.lin : 修复后
			half2 panner5_g33 = ( 1.0 * frac(_Time.y * appendResult4_g33) + uv_DistortTex);

			half4 tex2DNode7_g33 = tex2D( _DistortTex, panner5_g33 );
			half Distort148 = ( ( _DistortTexAR == 0.0 ? tex2DNode7_g33.a : tex2DNode7_g33.r ) * _DistortFactor );
			#ifdef _FDISTORTTEX_ON
				half2 staticSwitch316 = ( _DistortMainTex == 0.0 ? temp_output_3_0_g39 : ( temp_output_3_0_g39 + Distort148 ) );
			#else
				half2 staticSwitch316 = uv_MainTex;
			#endif
			half2 appendResult330 = (half2(i.uv2_texcoord2.x , i.uv2_texcoord2.y));
			// jave.lin : 修复前
			//half2 panner5_g42 = ( 1.0 * _Time.y * appendResult4_g42 + (( _CustomMainTex )?( ( staticSwitch316 + appendResult330 ) ):( staticSwitch316 )));
			// jave.lin : 修复后
			half2 panner5_g42 = ( 1.0 * frac(_Time.y * appendResult4_g42) + (( _CustomMainTex )?( ( staticSwitch316 + appendResult330 ) ):( staticSwitch316 )));
			half4 tex2DNode7_g42 = tex2D( _MainTex, panner5_g42 );
			half4 MainTexColor215 = ( _MainColor * tex2DNode7_g42 );
			half temp_output_275_0 = (-_DissolveWide + ((( _CustomDissolve )?( i.uv2_texcoord2.z ):( _DissolveFactor )) - 0.0) * (1.0 - -_DissolveWide) / (1.0 - 0.0));
			half temp_output_277_0 = ( _DissolveSoft + 0.0001 );
			half temp_output_272_0 = (-temp_output_277_0 + (( temp_output_275_0 + _DissolveWide ) - 0.0) * (1.0 - -temp_output_277_0) / (1.0 - 0.0));
			half2 appendResult4_g41 = (half2(_DissolveTexUSpeed , _DissolveTexVSpeed));
			float2 uv_DissolveTex = i.uv_texcoord * _DissolveTex_ST.xy + _DissolveTex_ST.zw;
			half2 temp_output_3_0_g40 = uv_DissolveTex;
			#ifdef _FDISTORTTEX_ON
				half2 staticSwitch314 = ( _DistortDissolveTex == 0.0 ? temp_output_3_0_g40 : ( temp_output_3_0_g40 + Distort148 ) );
			#else
				half2 staticSwitch314 = uv_DissolveTex;
			#endif
			// jave.lin : 修复前
			//half2 panner5_g41 = ( 1.0 * _Time.y * appendResult4_g41 + staticSwitch314);
			// jave.lin : 修复后
			half2 panner5_g41 = ( 1.0 * frac(_Time.y * appendResult4_g41) + staticSwitch314);
			half4 tex2DNode7_g41 = tex2D( _DissolveTex, panner5_g41 );
			half temp_output_308_20 = ( _DissolveTexAR == 0.0 ? tex2DNode7_g41.a : tex2DNode7_g41.r );
			half smoothstepResult264 = smoothstep( temp_output_272_0 , ( temp_output_272_0 + temp_output_277_0 ) , temp_output_308_20);
			half Alpha337 = _MainAlpha;
			half4 lerpResult223 = lerp( MainTexColor215 , _DissolveColor , ( _DissolveColor.a * ( 1.0 - smoothstepResult264 ) * Alpha337 ));
			#ifdef _FDISSOLVETEX_ON
				half4 staticSwitch298 = lerpResult223;
			#else
				half4 staticSwitch298 = MainTexColor215;
			#endif
			half4 temp_cast_0 = (0.0).xxxx;
			half Refnl339 = _ReFnl;
			float3 ase_worldPos = i.worldPos;
			half3 ase_worldViewDir = normalize( UnityWorldSpaceViewDir( ase_worldPos ) );
			half3 ase_worldNormal = i.worldNormal;
			half fresnelNdotV279 = dot( ase_worldNormal, ase_worldViewDir );
			half fresnelNode279 = ( 0.0 + _FnlScale * pow( 1.0 - fresnelNdotV279, _FnlPower ) );
			half temp_output_283_0 = saturate( fresnelNode279 );
			half4 FnlMainColor286 = ( _FnlColor * temp_output_283_0 * _FnlColor.a );
			half4 temp_cast_1 = (0.0).xxxx;
			#ifdef _FFNL_ON
				half4 staticSwitch300 = ( Refnl339 == 0.0 ? FnlMainColor286 : temp_cast_1 );
			#else
				half4 staticSwitch300 = temp_cast_0;
			#endif
			float4 MainColor98 = ( i.vertexColor * ( staticSwitch298 + staticSwitch300 ) );
			float MainTexAlpha138 = ( _MainColor.a * ( _MainTexAR == 0.0 ? tex2DNode7_g42.a : tex2DNode7_g42.r ) );
			half2 appendResult4_g44 = (half2(_MaskTexUSpeed , _MaskTexVSpeed));
			float2 uv_MaskTex = i.uv_texcoord * _MaskTex_ST.xy + _MaskTex_ST.zw;
			half2 temp_output_3_0_g43 = uv_MaskTex;
			#ifdef _FDISTORTTEX_ON
				half2 staticSwitch312 = ( _DistortMaskTex == 0.0 ? temp_output_3_0_g43 : ( temp_output_3_0_g43 + Distort148 ) );
			#else
				half2 staticSwitch312 = uv_MaskTex;
			#endif
			// jave.lin : 修复前
			//half2 panner5_g44 = ( 1.0 * _Time.y * appendResult4_g44 + staticSwitch312);
			// jave.lin : 修复后
			half2 panner5_g44 = ( 1.0 * frac(_Time.y * appendResult4_g44) + staticSwitch312);
			half4 tex2DNode7_g44 = tex2D( _MaskTex, panner5_g44 );
			#ifdef _FMASKTEX_ON
				half staticSwitch291 = ( _MaskTexAR == 0.0 ? tex2DNode7_g44.a : tex2DNode7_g44.r );
			#else
				half staticSwitch291 = 1.0;
			#endif
			half temp_output_270_0 = (-temp_output_277_0 + (temp_output_275_0 - 0.0) * (1.0 - -temp_output_277_0) / (1.0 - 0.0));
			half smoothstepResult256 = smoothstep( temp_output_270_0 , ( temp_output_270_0 + temp_output_277_0 ) , temp_output_308_20);
			half DissolveAlpha212 = smoothstepResult256;
			#ifdef _FDISSOLVETEX_ON
				half staticSwitch299 = DissolveAlpha212;
			#else
				half staticSwitch299 = 1.0;
			#endif
			half ReFnlAlpha318 = ( 1.0 - temp_output_283_0 );
			#ifdef _FFNL_ON
				half staticSwitch319 = ( Refnl339 == 0.0 ? 1.0 : ReFnlAlpha318 );
			#else
				half staticSwitch319 = 1.0;
			#endif
			float4 ase_screenPos = float4( i.screenPos.xyz , i.screenPos.w + 0.00000000001 );
			half4 ase_screenPosNorm = ase_screenPos / ase_screenPos.w;
			ase_screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? ase_screenPosNorm.z : ase_screenPosNorm.z * 0.5 + 0.5;
			float screenDepth348 = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE( _CameraDepthTexture, ase_screenPosNorm.xy ));
			half distanceDepth348 = abs( ( screenDepth348 - LinearEyeDepth( ase_screenPosNorm.z ) ) / ( _DepthFade ) );
			#ifdef _FDEPTH_ON
				half staticSwitch350 = saturate( distanceDepth348 );
			#else
				half staticSwitch350 = 1.0;
			#endif
			float MainAlpha97 = saturate( ( MainTexAlpha138 * staticSwitch291 * i.vertexColor.a * Alpha337 * staticSwitch299 * staticSwitch319 * staticSwitch350 ) );
			o.Emission = ( Scr106 == 5.0 ? MainColor98 : ( MainColor98 * MainAlpha97 ) ).rgb;
			half temp_output_100_0 = MainAlpha97;
			o.Alpha = temp_output_100_0;
		}

		ENDCG
	}
	CustomEditor "SampleGUI"
}

上面的 shader 代码中,搜索: “修复后”,机可查看到类似下面的代码:


...
			// jave.lin : 修复前
			//half2 panner5_g33 = ( 1.0 * _Time.y * appendResult4_g33 + uv_DistortTex);
			// jave.lin : 修复后
			half2 panner5_g33 = ( 1.0 * frac(_Time.y * appendResult4_g33) + uv_DistortTex);
...
			// jave.lin : 修复前
			//half2 panner5_g42 = ( 1.0 * _Time.y * appendResult4_g42 + (( _CustomMainTex )?( ( staticSwitch316 + appendResult330 ) ):( staticSwitch316 )));
			// jave.lin : 修复后
			half2 panner5_g42 = ( 1.0 * frac(_Time.y * appendResult4_g42) + (( _CustomMainTex )?( ( staticSwitch316 + appendResult330 ) ):( staticSwitch316 )));
...
			// jave.lin : 修复前
			//half2 panner5_g41 = ( 1.0 * _Time.y * appendResult4_g41 + staticSwitch314);
			// jave.lin : 修复后
			half2 panner5_g41 = ( 1.0 * frac(_Time.y * appendResult4_g41) + staticSwitch314);
...
			// jave.lin : 修复前
			//half2 panner5_g44 = ( 1.0 * _Time.y * appendResult4_g44 + staticSwitch312);
			// jave.lin : 修复后
			half2 panner5_g44 = ( 1.0 * frac(_Time.y * appendResult4_g44) + staticSwitch312);
...

这种优化方式也有局限性的,因为我们的 sampler 的 filer mode 是 repeat,所以 uv 值域可以控制再 -1 ~ 1 即可,因为可以使用 frac 来优化,也可以 fmod(val, 1.0) 但是这个过于费,因为使用 frac 就OK

这个问题的是100%必现的,最终发布到出问题的手机上验证,修复了


其实这个解决方法,我以前在学习 B站上的 庄懂 TA巨佬 就有分享过
现在想起帮助还是挺大的


Project

backup : Testing_Effect_Error_4_RenderDoc_UV精度不足、断层的修复.rar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySql Order by 字段出现重复导致 limit 分页后的数据错乱

问题描述 select * from standard_process order by event_time desc 此条sql查询的结果如下: 共有28条数据,确实是按照event_time排序的。 但是加了limit以后就出现问题了,原本以为是截取的前10条,结果出现了数据错乱的情况。 …

安装VTK8.2.0-win 实际操作

Windows下安装VTK8.2.0 1、依赖 VS2017 Qt5 cmake 2、前期准备 2.1、访问vtk官方下载VTK8.2.0源码 VTK源码下载地址:https://vtk.org/download/ 2.2、配置环境变量 配置CMAKE_PREFIX_PATH,值为Qt的bin路径 2.3、新建2个文件夹一个用于存放cmake编…

Fourier分析入门——第14章——Fourier光学

目录 第14章 Fourier光学 14.1 引言 14.2 物理光学和图像形成(Physical optics and images formation) 14.3 Fourier光学域(The Fourier optics domain) 14.4 图像形成的线性系统描述(Linear Systems Description of Image Formation) 第14章 Fourier光学 14.1 引言 Four…

操作系统-进程和线程-进程和线程

目录 一、进程的概念、组成、特征 二、进程的状态与转换、组织 2.1进程状态 2.2进程转换关系 2.3进程的组织 链接方式 索引方式 三、进程控制 3.1进程的创建 3.2进程的终止 3.3进程的阻塞和唤醒 3.4进程的切换 ​编辑 四、进程通信 4.1共享存储 4.2消息传递 直接通信…

C++算法刷题--2023/6/2

源代码&#xff08;C&#xff09;&#xff1a; #include<iostream> using namespace std; struct Road{char way[100]{}; }; int main(){int t;cin>>t;struct Road *p new Road[t];int right0,left0;for(int i0;i<t;i){cin>>p[i].way;} for(int i0;i&…

力扣刷题【第一期】

文章目录 1.爬楼梯2.求两数的和&#xff08;283&#xff09;3.移动零&#xff08;283&#xff09;3.1 题目描述3.2 算法描述3.3具体实现 4.合并有序连表&#xff08;21&#xff09;4.1 题目描述4.2 算法思想4.3 代码实现 5.删除连表中重复的值&#xff08;83&#xff09;5.1 题…

CodeEditor之sublimetext:sublimetext的简介、安装、使用方法之详细攻略

CodeEditor之sublimetext&#xff1a;sublimetext的简介、安装、使用方法之详细攻略 目录 sublimetext的简介 sublimetext的安装 1、安装教程如下所示 sublimetext的使用方法 sublimetext的简介 Sublime Text 是一个文本编辑器&#xff08;收费软件&#xff0c;可以无限期试…

javascript基础十五:说说new操作符具体都干了什么?

一、是什么 在JavaScript中&#xff0c;new操作符用于创建一个给定构造函数的实例对象 举个粟子 function Parent (name,age){this.name name;this.age age; } undefined Parent.prototype.sayName function(){console.log(this.name) } ƒ (){console.log(this.name) } c…

佛朗斯冲击港交所IPO:叉车租赁的未来是数字化?

佛朗斯“三战”IPO。 图源&#xff1a;佛朗斯 近日&#xff0c;广州佛朗斯股份有限公司&#xff08;下文简称为“佛朗斯”&#xff09;正式向港交所递交招股书&#xff0c;拟于港交所主板挂牌上市。 值得注意的是&#xff0c;这并不是佛朗斯首次冲击IPO。2019年6月和2020年7月…

操作系统-计算机系统概述-特性发展分类分层结构

目录 一、定义 1.1特征 二、操作系统的分类和发展 2.1手工操作阶段 2.2批处理阶段 2.2.1单道批处理系统 2.2.2多道批处理系统 2.3分时操作系统 2.4实时操作系统 2.5 网络操作系统 2.6分布式操作系统 2.7 个人计算机操作系统 三、操作系统的运行与机制 内核态和用…

【Python】函数 ⑤ ( 函数说明文档 | 函数说明文档内容建议 | 代码示例 )

文章目录 一、函数说明文档1、函数说明文档简介2、函数说明文档内容建议2、代码示例 - 函数说明文档 一、函数说明文档 1、函数说明文档简介 函数说明文档 就是 通过 注释 对 函数的作用进行解释说明 ; 函数说明文档 用法 : 在 函数定义 后 , 函数体的第一行位置 , 输入六个双…

Linux:Linux基础网络设置

ifconfig ifconfig #查看网卡信息 inet---网络接口的ip地址 netmask---子网掩码 broadcast---广播地址 ether----物理地址&#xff08;mac地址&#xff09; hostname hostname #查看主机名 hostnamectl set-hostname 自定义主机名 route route # 查看网卡网关 destination-…

华为OD机试真题B卷 Java 实现【检查是否存在满足条件的数字组合】,附详细解题思路

一、题目描述 给定一个正整数数组&#xff0c;检查数组中是否存在满足规则的数字组合 规则&#xff1a;A B 2C 二、输入描述 第一行输出数组的元素个数。 接下来一行输出所有数组元素&#xff0c;用空格隔开。 三、输出描述 如果存在满足要求的数&#xff0c;在同一行…

Ubuntu使用ssh连接两个主机

前提&#xff1a;两者连接同一个WiFi&#xff08;局域网&#xff09; ssh安装&#xff1a; sudo apt-get install openssh-client sudo apt-get install openssh-server 首先在两个主机分别终端输入&#xff1a;ifconfig 查询两者的ip 用户名是前面的那个&#xff1a; …

【算法系列 | 1】深入解析排序算法之冒泡排序

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 决定开一个算法专栏&#xff0c;希望能帮助大…

大湾区C++模拟题

大湾区信息学创新大赛模拟题 一、单项选择题&#xff08;15题共30分&#xff09; 1.计算机的运算速度取决于给定的时间内&#xff0c;它的处理器所能处理的数据量。处理器一次能处理的数据量叫字长。已知64位奔腾处理器一次能处理64个信息&#xff0c;相当于&#xff08; A …

厨电「前浪」压「后浪」

作者 | 辰纹 来源 | 洞见新研社 俗话说&#xff0c;姜是老的辣。说的是老年人有经验&#xff0c;办事稳重老练。 俗话也说&#xff0c;长江后浪推前浪。说的是经过历练的新人新事胜过旧人旧事。 这两句话看似矛盾&#xff0c;实则充满哲理&#xff0c;老而弥坚的老手与初生牛…

网关如何让非Matter设备快速加Matter网络?

作为连接智能家居设备的重要桥梁&#xff0c;网关是所有命令请求的入口&#xff0c;并完美充当起“翻译官”的角色。它能够精准“翻译”拥有不同通信协议、数据传输格式及网络地址里所包含的信息&#xff0c;将数据重新打包&#xff0c;以适应目的系统的需求。 虽然网关对于智…

matlab学习笔记(十)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 matlab学习笔记&#xff08;十&#xff09; 一、实验目的二、实验原理和实验内容三、案例运行例1&#xff1a;电磁波传输问题的动态仿真&#xff0c;编写 MATLAB 程序实现线极…

Maven高级——分模块设计与开发

Maven的定义: 一个用来构建和管理java项目的工具。 分模块设计 一个大型项目通常需要有很多功能实现&#xff0c;这些功能分成多个模块&#xff0c;卸载一个项目里面最后只会导致这个项目越来越大。不便于维护&#xff0c;以及组件难以复用。 在项目设计的时候就可以将不同的…