自由学习记录(45)

顶点片元着色器(important)

1.需要在Pass渲染通道中编写着色器逻辑
2.可以使用cG或HLSL两种shader语言去编写Shader逻辑
3.代码量较多,灵活性较强,性能消耗更可控,可以实现更多渲染细节
4.适用于光照处理较少,自定义染效果较多时(移动平台首选)

表面着色器是Unity对顶点/片元着色器的封装
可以用更少的代码实现复杂的逻辑
但是性能和可控性较差
它的特点是
1.直接在subshader语句块中书写着色器逻辑
2.我们不需要关心也不需要使用多个Pass,每个Pass如何染,Unity会在内部帮助我们去处理
3.可以使用cG或HLSL两种shader语言去编写shader逻辑
4.代码量较少,可控性较低,性能消耗较高
5.适用于处理需要和各种光源打交道的着色器,但是在移动平台上需要注意性能表现

表面着色器 和顶点/片元着色器这两种unity Shader形式都使用了可编程管线
而对于一些老设备(Dx7.0、0penGL1.5或OpenGLES1.1):它们不支持可编程管线着色器
这时就需要使用固定函数着色器来进行渲染
这些着色器只能实现一些非常简单的效果
它的特点是:
1.需要在Pass染通道中编写着色器逻辑
2.需要使用shaderLab语法中的染设置命令来编写,而非cG和HLSL着色器语言
但是由于这些旧设备目前市面上几乎已经没有了
所以固定函数着色器我们几乎不会再使用
只做了解即可
即使我们现在在unity中使用固定函数着色器来编写Shader,在内部也会被编译为顶点/片元着色器
因此真正意义的固定函数着色器已经不存在了

subshader语句块


渲染标签

通过标签来确定什么时候以及如何对物体进行渲染

渲染队列(Render Queue)优化渲染效率、正确处理透明物体、减少渲染错误

队列名队列值(Queue)渲染顺序(从小到大)用途
Background1000最早渲染用于背景物体,通常比不透明物体更早渲染
Geometry2000渲染大部分不透明物体绝大多数 3D 模型、地面、建筑
AlphaTest2450用于透明裁剪(如叶子、栅栏)用于 clip() 处理的材质,如草丛、栅栏
Transparent3000后渲染(需要正确混合透明效果)玻璃、水、烟雾等需要 Alpha 混合的对象
Overlay4000最晚渲染UI、HUD、特效等最前景的物体

(Opaque) → 应该先渲染,因为它们会遮挡后面的物体,减少 GPU 计算量

(Transparent) → 必须后渲染,否则无法正确混合(比如玻璃、水等)透明物体依赖前面已经渲染好的背景

特效、后处理 → 可能需要在所有物体之后渲染。

  • 你有 半透明水,希望它在透明物体 之后 渲染,但又不想晚于 UI → 可以设定 "Queue" = "Transparent + 10"
  • 你有 特效 Shader,希望它比普通透明物体 稍早渲染,避免遮挡问题 → 可以设定 "Queue" = "Transparent - 1"

RenderType方便 Unity 进行批量优化,

渲染管线(Render Pipeline)或后处理效果(Post Processing)可以识别、管理和优化不同类型的 Shader

一个 SubShader 只能有一个 RenderType

当使用批处理时,模型会被变换到世界空间中,模型空间会被丢弃
这可能会导致某些使用模型空间顶点数据的shader最终无法实现想要的结果
可以通过开启禁用批处理来解决该问题


 

渲染状态

通过状态来确定渲染时的剔除方式、深度测试方式、混合方式等等内容

Shader 间接控制片元,光栅化阶段(Rasterization) 生成GPU 底层的片元

Shader 控制的片元是 GPU 片元的“表现层”

片元(Fragment)主要由片元着色器(Fragment Shader)或像素着色器(Pixel Shader)控制,表示屏幕上即将被渲染的像素信息(颜色、深度等)

剔除,就是不渲染,背面剔除就是背面不渲染,正面剔除就是正面不渲染,不剔除就是都渲染

Cull Back背面剔除
Cull Front正面剔除
Cull off不剔除
不设置的话,默认为背面剔除

深度缓冲(Depth Buffer):
深度缓冲是一个与屏幕像素对应的缓冲区,用于存储每个像素的深度值(距离相机的距离)。
在渲染场景之前,深度缓冲被初始化为最大深度值,表示所有像素都在相机之外。
最后留在深度缓冲中的信息会被染
ZWrite on写入深度缓冲
Zwrite off不写入深度缓冲
不设置的话,默认为写入
一般情况下,我们在做透明等特殊效果时,会设置为不写入

当前像素的深度值小于深度缓冲中的值,说明当前像素在其他物体之前,它会被绘制,并更新深度缓冲。
当前像素的深度值大于等于深度缓冲中的值,说明当前像素在其他物体之后,它会被丢弃,不会被绘制,并保持深度缓冲不变。

当前深度缓冲中的值

ZTest Less
ZTest Greater
ZTest LEqual 小于等于
ZTest GEqual 大于等于
ZTest Equal
ZTest NotEqual不等于当前深度缓冲中的值,就通过测试,写入到深度缓冲中
ZTestAlways 始终通过深度测试,写入深度缓冲中
不设置的话,默认为LEqual

深度缓冲(Z-Buffer)用于存储每个像素的深度值(Z 值),片元的深度值由 投影变换后的位置 计算得出

混合是在深度测试之后去进行的,混合过后它就会把颜色存入到一个颜色缓冲区当中,颜色缓冲区其实就是一个内存空间,

混合(Blending)决定当前片元的颜色如何与已经存储在颜色缓冲区的颜色进行合成,常用于半透明材质、特效(如火焰、光晕、烟雾)

混合发生在 深度测试(Z-Test)之后,颜色写入(Color Write)之前:先检查 当前片元(Fragment) 是否应该被渲染,如果当前片元被挡住(ZTest 失败) → 直接丢弃,不执行混合

如果通过,获取当前片元的颜色(源颜色,SrcColor),获取颜色缓冲区(Framebuffer)中的颜色(目标颜色,DstColor)

常见的混合模式(Blend Mode)

混合模式公式用途
Alpha 混合FinalColor = SrcColor * SrcAlpha + DstColor * (1 - SrcAlpha)玻璃、烟雾、透明物体
Additive(加法混合)FinalColor = SrcColor * 1 + DstColor * 1光效、火焰、魔法特效
Multiplicative(乘法混合)FinalColor = SrcColor * DstColor阴影、滤镜效果

Shader "Custom/LODExample"
{
    SubShader
    {
        LOD 100
        Pass { /* 低 LOD 的 Shader 代码 */ }
    }

    SubShader
    {
        LOD 300
        Pass { /* 高 LOD 的 Shader 代码 */ }
    }
}

ColorMask 配置用途
ColorMask RGB忽略 Alpha 通道,避免透明度影响
ColorMask A仅写入 Alpha,用于特效
ColorMask 0只影响深度缓冲,不影响颜色(Shadow Map)

一个Shader设定之后,执行顺序

步骤执行阶段Shader 相关代码作用
① 解析 Shader 标签Shader 解析阶段Tags { "Queue"="Geometry" }确定渲染顺序、是否透明
② 选择 SubShader运行时自动匹配LOD 300选择适合当前硬件的 Shader
③ Pass 开始GPU 处理Pass {}进入渲染 Pass
④ 处理渲染状态设置 GPU 状态Cull BackZTest Less控制渲染面、深度计算方式
⑤ 片元着色器执行GPU 计算颜色frag()计算颜色值
⑥ 深度测试片元写入前ZTestZWrite确保正确的片元渲染
⑦ 颜色混合颜色计算Blend计算透明度混合
⑧ 颜色写入最终像素写入ColorMask RGB控制通道写入

在subshader语句块中使用渲染状态会影响之后的所有渲染通道Pass
在Pass语句块中使用渲染状态只会影响当前Pass渲染通道,不会影响其他的Pass

渲染通道

具体实现着色器代码的地方(每个subshader语句块中至少有一个渲染通道,可以有多个)

Unity内部会把Pass名称转换为大写字母
因此在使用usePass命令时必须使用大写形式的名字

在其他shader中复用该Pass代码时
UsePass "TeachShader/Lesson4/MYPAss"

但是subshader语句块中的 渲染标签 不能够在Pass中使用
Pass当中有自己专门的标签

1.Tags{"LightMode”=“标签值"}
主要作用
指定了该Pass应该在哪个阶段执行
可以将着色器代码分配给适当的渲染阶段,以实现所需的效果

Always
始终渲染:不应用光照
ForwardBase
在前向渲染中使用:应用环境光、主方向光、顶点/SH光源和光照贴图
ForwardAdd
在前向染中使用:应用附加的每像素光源(每个光源有一个通道)
Deferred
在延迟渲染中使用;渲染G缓冲区
Shadowcaster
将对象深度染到阴影贴图或深度纹理中
MotionVectors
用于计算每对象运动矢量
PrepassBase
在旧版延迟光照中使用;渲染法线和镜面反射指数
PrepassFinal
在旧版延迟光照中使用:通过组合纹理、光照和反光来渲染最终颜色
Vertex
当对象不进行光照贴图时在旧版顶点光照谊染中使用;应用所有顶点光源
VertexLMRGBM
当对象不进行光照贴图时在旧版顶点光照渲染中使用;在光照贴图为 RGBM 编码的平台上(PC 和游戏主机)
VertexLM
当对象不进行光照贴图时在旧版顶点光照渲染中使用;在光照贴图为双LDR编码的平台上(移动平台)

2.Tags{“RequireOptions”=“标签值”}
主要作用
用于指定当满足某些条件时才渲染该Pass

3.Tags{"PassFlags"="标签值"}
主要作用:
一个染通道Pass可指示一些标志来更改染管线向Pass传递数据的方式

目前unity仅支持
Tags{"PassFlags"="OnlyDirectional"}

意味着非重要光源的数据将不会传递到顶点光源或球谐函数着色器变量

备用shader的语法非常简单
Fallback "shader名"
或者
FallbackOff
它的主要作用就是提供“救命稻草”
我们一般会使用较为低级的效果作为备用shader
确保对象在低端设备上也能够正常渲染

-------------------

Shader的属性主要就是三种类型
数值、颜色和向量、纹理贴图
我们只需要掌握属性声明的基础语法即可
它的主要是:
1.可以在材质面板被编辑
2.可以在后续当作输入变量提供给所有子着色器使用

纹理贴图属性的定义

1.颜色
Name("Display Name",Color) =(number1,number2,number3,number4)
注意:颜色值中的RGBA的取值范围是0~1(映射e~255)
2.向量
Name("Display Name",Vector)=(number1,number2,number3,number4)
注意:向量值中的XYZW的取值范围没有限制

Shader选择的路径

1.直接修改shader文件中Shader后的名字即可
2.Shader的名字决定了在材质面板的选择路径

可以选择对应的图形接口,生成查看(方便根据不同平台的情况去查看Shader生成的对应代码)

PBR 参数(Metallic、Smoothness、Albedo)FX Shader(特效 Shader)

一般的使用流程是
Shader---材质----赋值给GameObject对象上依附的MeshRenderer等相关渲染器组件上进行使用

为什么 Unity 需要 ShaderLab?

ShaderLab 是 Unity 专用的着色器(Shader)编写语言,用于定义 Unity 渲染管线如何处理 材质、光照、特效 等。它的作用类似于 OpenGL 的 GLSL、DirectX 的 HLSL,但 ShaderLab 不是单纯的编程语言,而是一个着色器封装框架,允许你在 Unity 里编写 Shader 代码,同时管理材质参数和渲染状态。

提供了 结构化的写法可以用 HLSL(高阶着色器语言) 来写 Shader

管理 Pass、渲染状态、ShaderLab 里定义 Shader 变量、HLSL 计算最终颜色

Unity 默认的所有 Shader 都是 ShaderLab 结构

Unity 的核心设计理念是 跨平台 + 可扩展、允许开发者自定义 Shader、兼顾不同的渲染后端(如 DirectX、OpenGL、Vulkan、Metal)

Windows(DirectX)、Mac(Metal)、安卓(Vulkan)、WebGL(OpenGL)每个平台的 Shader 语言都不一样

ShaderLab 的核心作用就是对各个平台的 Shader 语言进行封装和统一,让开发者在 Unity 里写 Shader 时不需要直接面对不同的底层 API(DirectX、Metal、Vulkan、OpenGL),而是通过 ShaderLab 提供的统一结构来管理和适配不同平台。

Technical Artist核心技能要求:

Shader & 渲染优化(最核心)第 1 阶段:3-5 周】

为什么先学 Shader?
Shader 是 TA 的核心技能,它控制了画面的最终呈现,而且学 Shader 能直接出作品,有利于建立信心和作品集。

学习 Shader 编程

  • HLSL(Unity) → Unity Shader Graph + ShaderLab
  • GLSL(OpenGL)(如果以后想研究 OpenGL)
  • Unreal Shader(USF)(如果想做 Unreal 开发)
  • 练习:写几个基础 Shader(溶解、描边、透明效果)

理解现代渲染管线

  • 先学 Unity SRP(URP/HDRP)
  • 再学 Unreal 渲染架构(Deferred / Forward)
  • 练习:用 Unity URP/HDRP 写一个 PBR Shader

性能优化

  • Draw Call 优化
  • GPU Profiler 调试
  • LOD、贴图优化
  • 练习:优化一个小场景(减少 Draw Call,提升 FPS)

美术工具 & 资产管线第 2 阶段:3-4 周】

为什么第二步学美术工具?
Shader 只是渲染的一部分,但模型、贴图、动画 都由美术资源决定,你要学会如何处理这些资源,提高美术生产效率。

熟悉 3D 美术工具

  • Maya / Blender(基本建模、绑定)
  • Photoshop(贴图处理)
  • ZBrush(雕刻,次世代角色管线)
  • 练习:制作一个简单的 3D 角色(带 UV 和贴图)

资产管线(Art Pipeline)

  • 如何高效导入游戏资源(FBX、USD、GLTF)
  • 练习:导出 FBX,并正确在 Unity / Unreal 里显示

材质 & 贴图

  • UV 贴图、法线贴图、光照贴图(Lightmap)
  • 练习:给一个 3D 物体制作完整材质

编程能力(技术美术必备)第 3 阶段:4-6 周】

为什么第三步学编程?
Shader 和美术技能都有了之后,就需要写工具来提升工作流效率,比如自动化模型导入、Shader 调试工具等。

掌握一门编程语言

  • C++(Unreal Engine)
  • C#(Unity,SRP、Editor Tool)
  • Python(Maya / Blender 插件,工具开发)
  • 练习:用 Python 写一个 Maya 插件(自动导出 FBX)

图形 API(进阶,选学)

  • OpenGL / DirectX / Vulkan(如有更深入需求)
  • 练习:用 OpenGL 画一个简单的模型渲染

工具开发

  • 用 Python/C++ 编写插件,提升美术工作效率
  • 练习:制作一个 Unity 编辑器工具(批量修改 Shader 参数)

美术基础 & 审美 -----长期积累

为什么美术基础放到第四步?
因为审美是长期积累的东西,你需要在 Shader、美术管线、工具开发的过程中不断锻炼它。

良好的色彩、光影、构图感

  • 练习:调整一个 3D 场景的光照,让它更好看
  • 练习:用后处理(Post Processing)做出电影感

了解动画、绑定

  • 角色管线:绑定、蒙皮(Maya / Blender)
  • 动画导入导出、IK 处理
  • 练习:绑定一个角色,并在游戏中正确播放动画

加分项(可选学习)

这些内容可以在 掌握了基础之后 选择性学习。

VFX(特效)

  • Unity VFX Graph、Unreal Niagara
  • 粒子系统、流体模拟(Houdini)
  • 练习:制作一个魔法特效

后处理(Post Processing)

  • Bloom、DOF、Motion Blur、Color Grading
  • 练习:制作一个高质量的后处理特效

机器学习(次世代游戏优化)

  • AI 生成贴图、智能 LOD 优化
  • 了解 NVIDIA DLSS、AI Upscaling
  • 练习:用 AI 生成贴图并优化资源

30 天计划快速入门:

第 1-2 周(Shader 基础)

✅ 了解 Unity ShaderLab / HLSL
✅ 做一个溶解 Shader、描边 Shader
✅ 了解光照模型(PBR)

第 3-4 周(渲染优化 + 美术管线)

✅ 了解 Unity SRP / HDRP
✅ 了解 Draw Call 优化、GPU Profiler
✅ 掌握 Maya、PS 的基础,能导入 3D 资源

第 5-6 周(编程 + 自动化工具)

✅ 掌握 C++ / C#(Unity / Unreal)
✅ 用 Python 写一个工具,优化美术管线
✅ 用 C# 在 Unity 里开发一个小插件

第 7 周(整合作品)

✅ 制作一个 Shader + VFX 效果
✅ 导出 FBX,优化资源,并展示在游戏中
✅ 用 GPU Profiler 进行优化

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

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

相关文章

Quartus + VScode 实现模块化流水灯

文章目录 一、通过VScode编写Verilog代码二、模块化编程三、代码示例 一、通过VScode编写Verilog代码 1、下载Vscode 2、下载相关插件 搜索Verilog就会弹出有如图所示的插件,下载并安装 3、创建Quartus项目 4、创建完成后点击Tools,选择Options 然后在…

tryhackme——The Lay of the Land

文章目录 一、网络基础设施1.1 内网1.2 DMZ区1.3 网络枚举(Network Enumeration) 二、域环境三、用户和组管理四、安全解决方案4.1 基于主机的安全解决方案4.1.1 防病毒软件4.1.2 Microsoft Windows Defender4.1.3 主机防火墙4.1.4 安全事件记录与监控4.…

STM32---FreeRTOS消息队列

一、简介 1、队列简介: 队列:是任务到任务,任务到中断、中断到任务数据交流的一种机制(消息传递)。 FreeRTOS基于队列,实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量…

2025年了,5G还有三个新变化

最近舆论开始讨论5G为什么不火了?5G是不是停滞发展了。 实际上,5G不仅在发展,还迎来了它的升级版5G-A。 在今年西班牙举行的世界移动通信大会上,5G-A就是焦点之一。 被誉为全球通信领域风向标的MWC,汇聚了华为、中兴通…

SQLMesh SCD-2 时间维度实战:餐饮菜单价格演化追踪

场景背景:动态菜单价格管理 考虑某连锁餐厅的菜单管理系统,需要记录食品价格的历史变更轨迹。业务需求包括: 记录每次价格调整的时间点支持历史价格查询(如"2020年1月2日汉堡多少钱")维护当前有效价格清单…

失物招领|校园失物招领系统|基于Springboot的校园失物招领系统设计与实现(源码+数据库+文档)

校园失物招领系统目录 目录 基于Springboot的校园失物招领系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、 管理员功能实现 (1) 失物招领管理 (2) 寻物启事管理 (3) 公告管理 (4) 公告类型管理 2、用户功能实现 (1) 失物招领 (2) 寻物启事 (3) 公告 …

基于BClinux8部署Ceph 19.2(squid)集群

#作者&#xff1a;闫乾苓 文章目录 1.版本选择Ceph版本发布历史目前官方在维护的版本 2.部署方法3.服务器规划4.前置配置4.1系统更新4.2配置hosts cat >> /etc/hosts << EOFssh-keygenssh-copy-id ceph01ssh-copy-id ceph02ssh-copy-id ceph034.5 Python34.6 Syst…

安装React开发者工具

我们在说组件之前&#xff0c;需要先安装一下React官方推出的开发者工具&#xff0c;首先我们分享在线安装方式 首先打开谷歌网上应用商店(针对谷歌浏览器)&#xff0c;在输入框内搜索react&#xff0c;安装如下插件&#xff1a; 注意安装提供方为Facebook的插件&#xff0c;这…

linux中如何修改文件的权限和拥有者所属组

目录标题 chmod指令八进制形式权限修改文件拥有者所属组的修改umask有关内容 chmod指令 chmod指令可以用来修改人员的权限其形式如下&#xff1a; u代表的是拥有者&#xff0c;g代表的是所属组&#xff0c;o代表的是其他人&#xff0c;a表示所有人&#xff0c;如果你想增加权…

三主热备架构

1.要求 角色主机名软件IP地址用户client192.168.72.90keepalivedvip192.168.72.100masterserverAkeepalived, nginx192.168.72.30backupserverBkeepalived, nginx192.168.72.31backupserverCkeepalived, nginx192.168.72.32webtomcat1tomcat192.168.72.41webtomcat2tomcat192.1…

windows 10 系统配置Node

目录 什么是Node.js 什么是Npm Node.js环境搭建 下载 解压 配置环境变量 npm配置 如何运行下载的Node.js项目 什么是Node.js 在 Node.js 之前&#xff0c;JavaScript 只能运行在浏览器中&#xff0c;作为网页脚本使用&#xff0c;为网页添加一些特效&#xff0c;或者和…

Windows Server 2025 使用 IIS 搭建 ASP.NET 3.5 网站

开启远程桌面 参考文章Windows server开启远程桌面教程打开服务管理器。ECS 配置安全组&#xff0c;开启 3389Telnet 验证网络联通性 telnet x.x.x.x 338安装 Windows App&#xff0c;登录验证 安装 ASP.NET 3.5 1.参考文章Windows Server 2012安装 .NET Framework 3.5和 Wi…

开源模型应用落地-shieldgemma-2-4b-it模型小试-多模态内容安全检测(一)

一、前言 在人工智能迅速发展的过程中,内容安全成为AI应用中的一个重要挑战。谷歌团队于2025年3月推出了一款名为ShieldGemma-2-4B-IT的模型,它以创新的多模态安全检测能力,为行业树立了新的开源责任AI标准。 与早期的仅支持文本审核的版本相比,ShieldGemma-2-4B-IT在谷歌的…

【数据预测】基于遗传算法GA的LSTM光伏功率预测 GA-LSTM光伏功率预测【Matlab代码#91】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 遗传算法GA2. 长短期记忆网络LSTM3. 基于GA-LSTM的光伏功率预测4. 部分代码展示5. 运行结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 …

openEuler24.03 LTS下安装Hadoop3完全分布式

目录 Linux准备 openEuler24.03 LTS简介 下载openEuler24.03 LTS 安装openEuler24.03 LTS Linux基本设置 关闭及禁用防火墙 修改主机名 静态ip 映射主机名 创建普通用户 目录准备 克隆主机 配置机器之间免密登录 编写分发脚本 安装Java 下载Java 解压 设置环…

【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告

【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告 一、Shell脚本介绍1.1 Shell脚本简介1.2 Shell脚本特点二、脚本要求三、检查本地环境3.1 本地环境规划3.2 检查本地系统3.3 检查系统内核版本四、编辑脚本五、执行及测试脚本5.1设置定时任务5.2 执行效果六、总…

坦克大战(c++)

今天我给大家分享一个c游戏。 废话不多说&#xff0c;作品展示&#xff1a; #include <stdio.h> #include <windows.h> #include <time.h> //里规格&#xff1a;长39*278 &#xff08;真坐标&#xff09;(假坐标宽为39) 高39 //外规格&#xff1a;长…

node-ddk, electron组件, 自定义本地文件协议,打开本地文件

node-ddk 文件协议 https://blog.csdn.net/eli960/article/details/146207062 也可以下载demo直接演示 http://linuxmail.cn/go#node-ddk 安全 考虑到安全, 本系统禁止使用 file:/// 在主窗口, 自定义文件协议,可以多个 import main, { NODEDDK } from "node-ddk/m…

论文阅读:2023 arxiv Provable Robust Watermarking for AI-Generated Text

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Provable Robust Watermarking for AI-Generated Text https://arxiv.org/pdf/2306.17439 https://github.com/XuandongZhao/Unigram-Watermark https://www.doubao.com/chat/211092…

一条sql语句在mysql中的执行流程(Mysql基础架构)

mysql基础架构 MySQL 主要分为 Server 层和 存储引擎层&#xff1a; Server 层&#xff1a;主要包括 连接器、查询缓存、分析器、优化器、执行器等&#xff0c;所有跨存储引擎的功能都在这一层实现&#xff0c;比如存储过程、触发器、视图&#xff0c;函数等&#xff0c;还有一…