- 博客(65)
- 资源 (3)
- 收藏
- 关注
原创 Unity优化篇之SRP Batching
是 Unity 在 URP 和 HDRP 渲染管线中提供的一种批处理优化机制。它的目标是:✅减少 CPU 与 GPU 之间频繁的材质状态(Shader 常量)设置,从而降低 SetPass Call 数量,提升渲染效率。优点描述✅ 极大减少 SetPass Calls同一 Variant 的材质只上传一次结构描述✅ 保留每个材质独立参数不需要合并网格、材质等✅ 和 GPU Instancing 可并用双重优化,性能爆发✅ 无需修改场景结构比 Static Batching 灵活、安全。
2025-06-08 06:03:49
1132
原创 Unity优化篇之GPU Instance
GPU Instancing 是 Unity 引擎中用于优化绘制大量相同物体的渲染技术,它可以只发出一次 Draw Call,就让 GPU 同时绘制多个相同 Mesh 和材质的对象。大量相同模型仅需 1 次 Draw Call(通常是减少 CPU 到 GPU 的绘制命令传输压力支持每个实例自定义属性(如颜色、缩放、偏移)GPU Instancing 是 Unity 提供的一项重要性能优化技术,特别适用于重复渲染大量对象的场景。
2025-06-08 02:11:20
1902
原创 Unity优化篇之DrawCall
在 Unity 中,每渲染一个物体,CPU 就会向 GPU 发送一个 Draw Call(绘制调用)。Draw Call 多意味着 CPU 压力大,可能引起帧率下降,特别是在移动端和 WebGL 平台。Unity 为了优化性能,会尝试自动将多个渲染调用合并为一次 Draw Call,这就是“合批(Batching)”。项目静态合批动态合批触发方式构建时运行时是否勾选 Static✅ 必须❌ 不需要Mesh 顶点限制❌ 无限制✅ ≤ 300运行时性能开销极低较高(每帧打包)
2025-06-07 00:10:07
1013
原创 【Unity Shader编程】之让画面动起来
最终用于由于uv.y是负值,这意味着超出了纹理坐标范围Clamp:超出部分会重复边界值(边缘拉伸)。Repeat:会根据小数部分循环(模 1 处理)。Mirror:镜像重复。广告牌Shader通过法线→向上→右向数值稳定性:智能选择避免零向量正交性保证:两次叉乘确保坐标系正交视角自适应:始终面向摄像机这是实现广告牌效果的标准数学流程,广泛应用于粒子系统、特效渲染等领域。再模型空间下进行的空间动画,批处理往往会破坏这种动画效果。
2025-06-06 19:44:50
867
原创 Unity Shader编程】之高级纹理
在unity中有一种特殊的pass,GrabPass,定义后,unity会把当前屏幕的图像绘制在一张纹理中。文件本身就会保存在你的项目里,可以直接拖入 Shader 中的 Cubemap 属性上。转换为 Cubemap 使用,适用于天空盒、环境反射等。这样 Unity 就会自动将它作为 Cubemap 处理。在 Unity 中创建和保存一个。将六张图拖入 Unity 的。你可以通过 Shader 中。获取它,或绑定到材质里。Unity 也支持将。
2025-06-03 21:44:21
1071
原创 Unity接入SDK之修改Unity启动页面
本文介绍了如何在Unity项目中通过Android Studio修改启动页面的方法。首先,在Android Studio中新建一个项目,并创建一个Android Library类型的模块。将Unity的classes.jar文件复制到lib文件夹,并在Android Studio中将其加入Library。接着,在com.unity.player包下新建MainActivity.java文件,继承UnityPlayerActivity,并在AndroidManifest.xml中设置启动页面为MainActi
2025-05-11 05:22:44
626
原创 Unity打包Android APK详解
问题原因解决方法Unity 报找不到缺少通过 Android Studio 或手动方式安装安装了还是不识别Unity 指向 SDK 路径错误检查 Unity Preferences 中的 SDK 路径SDK 目录结构错误没有创建正确结构并手动复制工具包打包的时候遇到SDKPlatform tools version 0.0<32.0.0.提示,这是说明Command-line Tools版本过低或不符合条件这边选择对应版本进行安装,然后。
2025-05-01 05:04:56
1511
原创 关于Android Studio的Gradle各项配置2
希望这些解释对你理解这些文件有所帮助!中非常重要的一部分,它们各自有不同的作用,涉及项目的构建配置、Gradle 环境、系统配置等方面。接下来我会为你详细解释每个文件的作用,并提供具体的例子和注释。是一个重要的功能,它允许你在没有全局安装 Gradle 的情况下构建项目。它用于定义一些全局的属性和设置,这些设置可以影响到 Gradle 构建过程中的各种行为,如性能、依赖项、Gradle 守护进程等。这将确保你使用的是项目中指定的 Gradle 版本,而不依赖于系统中全局安装的 Gradle。
2025-04-27 22:55:00
1157
原创 关于Android Studio的Gradle各项配置
配置插件仓库和插件获取策略。配置项目的依赖解析方式,确保依赖从官方仓库获取,避免本地仓库问题。设置了项目名称。表示项目包含一个名为app的子模块,适用于多模块项目。在国内可能会遇到的问题,就是网络问题,导致我们没法正常下载到所需的插件和以来,因而我们通常会添加镜像源google() // Google仓库,主要用于 Android 相关的插件mavenCentral() // Maven 中央仓库gradlePluginPortal() // Gradle 官方插件仓库。
2025-04-26 10:26:18
8468
原创 Unity Shader编程】之FallBack
回退到Unity标准PBR Shader,适用于希望保持物理渲染效果但主Shader失效的情况(需兼容Built-in管线)。在不同渲染管线(如Built-in、URP、HDRP)中,某些Shader可能失效。支持漫反射+高光反射(Blinn-Phong模型),适用于金属、塑料等需镜面反射的材质。支持透明度测试(Alpha Test),适用于树叶、镂空贴图等需硬边缘裁剪的物体。针对移动端优化的漫反射Shader,去除非必要计算(如动态阴影)。仅支持漫反射光照,适用于无高光需求的材质(如布料、纸张)。
2025-03-27 21:33:05
615
原创 Unity Shader编程】之复杂光照
在Unity Shader的LightMode标签中,除了前向渲染和延迟渲染外,还支持多种渲染模式设置。以下是主要分类及用途:一、核心渲染路径模式前向渲染相关ForwardAdd延迟渲染相关Deferred二、辅助功能模式3. 阴影处理三、特殊用途模式5. 无条件渲染AlwaysVertexVertexLM四、选择建议DeferredForwardAdd。
2025-03-24 20:56:17
1035
原创 【Unity Shader编程】之透明物体渲染
unity shader的透明物体渲染,主要是要控制好渲染队列以及是否开启深度写入,当遇到透明渲染队列需要关闭深度写入,以防半透明或者透明物体写入的时候,导致后面的不透明物体因为深度写入的判断杯丢弃,并且半透明或者透明物体,需要在不透明物体之后渲染,而半透明物体渲染,需要渲染前后两面,因而,需要两个pass,一个先渲染背面,另外一个再渲染正面,达到双面渲染的状态。第一个 Pass 的深度写入为第二个 Pass 提供了逐像素的深度基准,而第二个 Pass 仅依赖此基准进行混合(不修改深度缓冲)。
2025-03-24 01:38:58
592
原创 Unity Shader 的编程流程和结构
渲染顺序:在不透明物体之后渲染(光照模式:处理主光源和环境光(投影器影响:不受 Projector 影响(渲染类型:标记为透明物体(这种组合非常适合需要透明效果的 Shader,例如玻璃、粒子或水面。Unity Shader Tags 是控制渲染行为的核心工具。通过合理设置 Tags,你可以调整物体的渲染顺序、光照处理方式以及其他特性。希望这个回答能帮到你!如果有更具体的问题,请告诉我,我会进一步解答。Pass:每个 Pass 定义一次渲染过程,包含顶点着色器和片段着色器。
2025-03-21 23:56:04
1264
原创 Unity Shader编程】之透明物体渲染
查看 Pass:通过 Shader 代码或 Frame Debugger 分析。多个 Pass 影响:增加 Draw Call 和复杂性,需优化。Pass 含义:一次渲染操作,可实现多阶段效果。渲染流程:初始化 → 剔除 → 排序 → 渲染 → 输出。多物体处理:通过 Tags 和 Queue 控制顺序,结合 Alpha 混合/裁剪优化效果。
2025-03-21 23:51:31
1156
原创 Unity Shader编程】之渲染流程之深度及pass详解
手动不通过深度测试的方式可以通过禁用深度测试、控制深度写入、在片段着色器中使用discard,或者手动修改深度值等方法来实现。你可以根据具体需要选择其中一种或多种方式来控制渲染的行为。你有什么具体的应用场景或效果需要实现吗?我可以帮你提供更详细的实现建议。在物体通过测试之后才会进行深度写入玻璃在墙前面时,通过深度测试的像素会被绘制。绘制时,玻璃的颜色与背景颜色通过混合,而不是简单相加。混合公式是加权和,权重由玻璃的 Alpha 值决定,确保透明效果自然且符合视觉预期。
2025-03-19 16:26:45
1282
原创 Unity Shader编程】之基础纹理
切线空间特性:切线空间由顶点切线(T)、副切线(B)、法线(N)构成,法线贴图存储的是该空间下的法线偏移。在此空间下,法线方向无需依赖模型姿态,仅需将光照方向、视角方向等外部向量转换到切线空间,即可直接参与计算13。
2025-03-08 01:09:49
1034
原创 【Unity Shader编程】之常见函数及变量总结
以上列表涵盖了 Unity Shader 中最常用的函数和变量,以及基础运算函数。这些工具广泛应用于光照计算(如dotreflect)、纹理采样(如tex2D)、矩阵变换(如mul)和动画效果(如_Time掌握这些函数和变量,可以帮助你高效实现各种视觉效果。
2025-03-06 13:43:37
1019
原创 【Unity Shader编程】之光照模型
高光反射,主要是利用,摄像机和反射角的夹角来判断,但夹角越小,说明名高光反射越强,所以利用点乘来计算,假设一下,你看着镜子,反射光直照射你的眼睛,是不是代表着反射强度越大,所以第一种phone模型一种是先求出光线反射角,然后计算光线反射角与摄像机视角的点积,但可能因夹角超过 90° 导致高光断层。漫反射光强 = S_diff * m_diff * max(dot(n, l), 0)基于菲涅尔效应:rim=pow(1.0-dot(N,V),_RimPower)S_diff:光源漫反射颜色(含强度)3。
2025-03-04 22:16:41
964
原创 【Unity Shader编程】之图元装配与光栅化
示例:gl.drawArrays(gl.TRIANGLES, 0, 3)自动生成三角形。会自动自动裁剪超出屏幕范围(NDC空间外)的三角形,仅保留可见部分。顶点坐标存入装配区 → 按绘制模式连接顶点 → 生成完整几何图元。
2025-02-18 17:00:20
316
原创 【Unity Shader编程】之顶点着色器
在shader编程中,定义的结构体,有些是会被自动赋值,有些是必须要手动赋值的,这就涉及到了例如结构体里面定义的两个变量 vertex和uv,后面加了POSITION和TEXCORD0两个语义,就赋予了他们不同的特殊功能,他们会被自动赋值,而vertex2就是一个普通的变量了。下面是语义表**
2025-02-13 18:21:51
435
原创 【Unity Shader编程】之GPU编程前言
之前一直不懂,为什么写一个shader代码,然后整个模型就会动,因为之前都是cpu编程思路,比如说cpu控制一个人物行走,就是控制一个人物,要控制10个人物,就要循环10次,分别控制他们,但是在gpu不一样,因为gpu编程是并行性,你写完gpu的编程,写完shader,是直接挂在单一物体上,这个时候,我们控制的是这个物体,但是控制的是这个物体的什么呢?1,顶点。
2025-02-13 17:27:07
353
原创 《大规模动画优化(一):GPU 顶点动画的生成》
步骤代码操作作用获取角色网格选择要烘焙的角色启动动画模式让 Unity 进入动画编辑模式逐帧采样动画让角色停留在特定动画帧获取顶点数据采集当前帧的蒙皮网格数据存储到纹理SetPixel()将动画帧存入 Texture2D保存文件导出动画数据纹理✅ 烘焙后的动画纹理可以直接用于 GPU 渲染,实现海量动画角色的高效渲染!附上完整代码/// GPU 顶点动画烘焙窗口public class 角色动画烘焙窗口类 : EditorWindow。
2025-02-07 16:01:31
1072
原创 Unity导出Android studio项目遇到的aar无法打包问题
传递依赖也会有问题,例如 a.aar->module A->module B,就算module B依赖了module A,module A依赖了a.aar,这时候依旧会出问题正确的办法是要a.aar->module B 且 a.aar->module A,即无论moduleA moduleB都依赖a.aar。解决方法:将引入的aar包变成一个module,让其他需要的模块可以随时引用,这样的好处在于,不需要将aar包复制来复制去,每个module都copy一份到libs中。也不会出现重复依赖的问题。
2024-02-19 10:05:31
989
1
原创 【Unity嵌入Android原生工程】
工作需要嵌入原生工程,并实现热更,记录一下工具,Unity2023.3.14,Android Studio 2022.3.1 patch3Unity嵌入Andorid原理就是把Unity导出的Andorid项目当成一个module导入原生工程里面,从而实现嵌入。前面有不少教程,但是总有漏掉那么一两部,要么作者没写,要么没有明确标注,踩了两天坑,发了这个想对自己看的懂的教程,自己踩的坑,记录一下。
2024-01-02 10:36:20
2072
原创 Unity之更新资源(手动造轮子)
1,我们首先要知道我们需要是否第一次安装,如果是那则直接从服务器下载配置文件和本地配置文件对比,进行资源更新。第一次安装本地是没有配置文件的,所以就相当于把服务器所列出的所有资源全部下载。2,对比配置文件并保存需要下载的文件列表,启动下载器,下载全部完成再更新配置文件,不要提前更新配置文件,避免文件更新完缺导致我们要下载的东西没下载完。"QFramework/生成配置文件,位于StreamingAssets"下载需要自己搭建个本地服务器,ip地址自己改下。下载下来之后就可以加载了。这是一个下载的管理器。..
2022-08-11 17:39:15
781
原创 Unity路径点相关,会持续更新
1.在windows pc上可以使用www直接读取streamingAssetsPath路径下的文件。也可以使用File直接读取。2.android上www可以读取streamingAssetsPath,但是使用file是读取不到的。3.mac上使用www读取不到streamingAssetsPath,可以使用file读取。4.ios上使用www读取不到streamingAssetsPath,可以使用file读取。1,streamingAssetsPath 可读不可写。2. IOS中读取目录下的ab包。..
2022-08-09 18:01:56
1151
原创 Unity 之UGUI Text组件坚排显示(改进)
复制了不知道谁的代码进行了改进,现在为居中显示居中对齐模式。pos来控制,可视化的配置改进后续会贴出。更改对齐模式主要由以下代码控制。"字和字之间的距离"
2022-07-20 15:12:39
798
原创 Android studio 导入AAR文件,并打包AAR文件
首先创建一个android工程,之后新建文件夹,和app平级任意取名,我这边随便取了个ss把要导入的aar文件拖入,并在ss文件夹内新建build.gradle文件build.gradle文件输入以下内容configurations.maybeCreate("default")artifacts.add("default",file('sharelibrary_v2.0.0.aar'))点击导入完成,导出和普通aar导出一样,导出的时候新导出的aar文件会包含该aar文件...
2022-01-17 19:27:44
3234
1
原创 使用android studio打包aar和Unity导入aar详解
1,使用android studio新建项目之后,新建一个moudel。File - new -new module,选择android library,取名为myapplication在myapplication下的目录,src/main/java 下新建Java文件StringUtilspackage com.example.myapplication;public class StringUtils { private static StringUtils instance = nu
2022-01-12 14:07:01
2195
1
原创 Unity之移动设备之IOS调整输入框位置
1,需求:当玩家点击输入框的,会弹出虚拟键盘,如果我们的输入框靠下,那么便会被挡住,这个时候如果想要调整输入框位置。2,思路:这边上移移动的是所有UI的父物体(偷懒了),如果想要移动较小的物体,则可以自行代码调整,就需要判断一下当前输入框所在位置,会不会被虚拟键盘挡住,如果会,则需要上移,上移高度应该上移多少。3,实现:3.1 实现的辅佐工具:1,DOTween插件;2,事件管理器(自行封装)。3.2 虚拟键盘各类信息using UnityEngine;using UnityEngine.Eve
2022-01-11 14:55:42
5202
原创 Git教程
https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304
2021-09-12 21:27:48
96
7000汉字加所有特殊符号.txt
2019-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人