搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
程序代码艺术家
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
批处理 探测在线计算机,批处理(bat)用来监测Windows网络状态脚本
2
Python烟花(有源码)
3
何时使用 em 与 Rem_1rem = em
4
[深度学习框架]PyTorch常用代码段_class convnet(nn.module): def __init__(self, num_c
5
【狂神说Java】Docker进阶篇超详细版教程通俗易懂
6
2024美赛数学建模思路 - 案例:ID3-决策树分类算法_数学建模美赛2024
7
如何使用Docker本地部署Jupyter Notebook并结合内网穿透实现远程访问_威联通docker jupyter notebook
8
vue的8大生命周期
9
React+Antd+tree实现树多选功能(选中项受控+支持模糊检索)_antd tree 模糊不区分大小写搜索
10
隐私第一:在几分钟内部署本地大语言模型!_langchain ollama
当前位置:
article
> 正文
unity项目优化--绘制调用批处理unity3d Draw Call Batching
作者:程序代码艺术家 | 2024-01-30 19:24:54
赞
踩
unity3d2019调用预设能设定静态批处理么
在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API(iOS系统中为OpenGL ES)。每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销。
Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们。这一操作,我们称之为“批处理”。一般来说,Unity批处理的物体越多,你就会得到越好的渲染性能。
Unity中内建的批处理机制所达到的效果要明显强于使用几何建模工具(或使用Standard Assets包中的CombineChildren脚本)的批处理效果。这是因为,Unity引擎的批处理操作是在物体的可视裁剪操作之后进行的。Unity先对每个物体进行裁剪,然后再进行批处理,这样可以使渲染的几何总量在批处理前后保持不变。但是,使用几何建模工具来拼合物体,会妨碍引擎对其进行有效的裁剪操作,从而导致引擎需要渲染更多的几何面片。
材质
只有拥有相同材质的物体才可以进行批处理。因此,如果你想要得到良好的批处理效果,你需要在程序中尽可能地复用材质和物体。
如果你的两个材质仅仅是纹理不同,那么你可以通过 纹理拼合 操作来将这两张纹理拼合成一张大的纹理。一旦纹理拼合在一起,你就可以使用这个单一材质来替代之前的两个材质了。
如果你需要通过脚本来访问复用材质属性,那么值得注意的是改变Renderer.material将会造成一份材质的拷贝。因此,你应该使用Renderer.sharedMaterial来保证材质的共享状态。
动态批处理
如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。
动态批处理操作是自动完成的,并不需要你进行额外的操作。
Tips:
提醒:
1、 批处理动态物体需要在每个顶点上进行一定的开销,所以动态批处理仅支持小于900顶点的网格物体。
2、 如果你的着色器使用顶点位置,法线和UV值三种属性,那么你只能批处理300顶点以下的物体;如果你的着色器需要使用顶点位置,法线,UV0,UV1和切向量,那你只
能批处理180顶点以下的物体。
请注意:属性数量的限制可能会在将来进行改变。
4、 不要使用缩放尺度(scale)。分别拥有缩放尺度(1,1,1)和(2,2,2)的两个物体将不会进行批处理。
5、 统一缩放尺度的物体不会与非统一缩放尺度的物体进行批处理。
使用缩放尺度(1,1,1)和 (1,2,1)的两个物体将不会进行批处理,但是使用缩放尺度(1,2,1)和(1,3,1)的两个物体将可以进行批处理。
6、 使用不同材质的实例化物体(instance)将会导致批处理失败。
7、拥有lightmap的物体含有额外(隐藏)的材质属性,比如:lightmap的偏移和缩放系数等。所以,拥有lightmap的物体将不会进行批处理(除非他们指向lightmap的同一部分)。
8、 多通道的shader会妨碍批处理操作。比如,几乎unity中所有的着色器在前向渲染中都支持多个光源,并为它们有效地开辟多个通道。
9、预设体的实例会自动地使用相同的网格模型和材质。
静态批处理
相对而言,静态批处理操作允许引擎对任意大小的几何物体进行批处理操作来降低绘制调用(只要这些物体不移动,并且拥有相同的材质)。因此,静态批处理比动态批处理更加有效,你应该尽量低使用它,因为它需要更少的CPU开销。
为了更好地使用静态批处理,你需要明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放。想完成这一步,你只需要在检测器(Inspector)中将Static复选框打勾即可,如下图所示:
使用静态批处理操作需要额外的内存开销来储存合并后的几何数据。在静态批处理之前,如果一些物体共用了同样的几何数据,那么引擎会在编辑以及运行状态对每个物体创建一个几何数据的备份。这并不总是一个好的想法,因为有时候,你将不得不牺牲一点渲染性能来防止一些物体的静态批处理,从而保持较少的内存开销。比如,将浓密森里中树设为Static,会导致严重的内存开销。
静态批处理目前只支持Unity iOS Advanced。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/article/detail/48492
推荐阅读
article
【Unity】AI实战应用——Unity接入GPT和对游戏开发实际应用的展望...
同事朋友们都在恐慌AI的发展,甚至有不少人开始抗拒。我的观点是:人工智能是大势所趋,势不可挡,那就驾驭它吧!我司已经在商...
赞
踩
article
【Unity】在使用KinectSDK中遇到GUITexture或GUIText已过时的解决办法_g...
当没有错误之后,按下“CTRL”和"S"键保存源码即可, 一般出现这种已过时的错误,都需要修改好多地方,如果使用替换整个...
赞
踩
article
Unity 3D 三维模型简介||_
unity
建模...
三维模型是用三维建模软件建造的立体模型,也是构成 Unity 3D 场景的基础元素。Unity 3D 几乎支持所有主流格...
赞
踩
article
【
chatgpt
】使用
docker
运行chatglm3,原生支持工具调用(Function Call...
chatglm3,原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Age...
赞
踩
article
【04】Unity AR 2022Vuforia——虚拟按钮超详细教程【含代码】_百度搜索: uni...
Unity AR 2022Vuforia拓展之虚拟按钮,超详细教程,图文并茂(附带脚本代码)_百度搜索:
unity
v...
赞
踩
article
【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime ...
在Unity配置VScode环境时遇到了Error!.NET Acquisition Failed: Installat...
赞
踩
article
Unity
Animation
-- 使用
Animator
控制
动画
_unity animator...
在很多实际场景中,我们经常需要根据特定的事件(比如玩家输入,敌人受到攻击等)来播放不同的
动画
。这需要我们了解一下Anim...
赞
踩
article
【Unity 踩坑系列】VScode的csproj文件路径失效more errors occurre...
在VScode打开Unity项目中的脚本时在Project OutPut里会报出一大堆csproj文件路径失效的报错[w...
赞
踩
article
Unity Animancer插件(一)基本使用...
Animancer是什么?资源商店主页我们来通过Animancer实现一个最基本的
动画
播放效果。首先创建一个脚本,编写如...
赞
踩
article
Unity 从0开始编写一个技能
编辑器
_01_分析需求_技能
编辑器
unity
...
CreateAssetMenu(fileName = “New Skill”, menuName = “Skill Sy...
赞
踩
article
【Unity3D】
UI Toolkit
简介_uitoolkit...
UI Toolkit
是一种基于 Web 技术的 GUI 框架,是为了解决 UGUI 效率问题而设计的新一代 UI 系统...
赞
踩
article
Unity- 控制物体旋转、移动、缩放的功能_
unity
旋转 缩放...
本文章主要介绍Unity中控制物体旋转、左右移动、缩放的方法~_
unity
旋转 缩放
unity
旋转 缩放 ...
赞
踩
article
Unity VR 开发教程: Meta Quest 一体机开发 (一) 环境配置(基于 Oculus...
用 Unity 开发 Meta Quest 一体机应用的基础环境配置教程_quest3 oculus integrati...
赞
踩
article
Unity HDRP 粉色
材质
一键修复,以及无法自动修复的
材质
的处理方式_粉色hdrp升级无效...
Unity HDRP一键修复以及手动修复的原因和方式_粉色hdrp升级无效粉色hdrp升级无效 ...
赞
踩
article
unity
3d 制作开门
动画
以及收集钥匙实现开门_
unity
中做一个大门...
面板中以及自动为你生成了先前编辑的
动画
door,首先我们点击将door删去,右键点击Creat State->empty...
赞
踩
article
Unity3D
游戏
服务器
怎么
实现
热更新详解...
总结起来,
Unity3D
游戏
服务器
的热更新功能是通过将
游戏
的逻辑代码与资源文件分离,将逻辑代码放在
服务器
端,资源文件放在...
赞
踩
article
Unity3D
服务器
逻辑
和
传输
如何
分层
/
解
耦详
解
...
通过定义网络通信接口、
服务器
逻辑
模块、数据存储模块等不同的模块,可以使得代码更加模块化和可复用。通过使用C#语言来编写代...
赞
踩
article
Unity
零
基础
到入门 ☀️|
游戏
引擎
Unity
从0到1的
系统
学习
路线
【全面
总结
-建议收藏...
Unity
基础
知识
学习
,
Unity
学习
路线
总结
。本篇文章对
Unity
的
学习
路线
做了一个全面
系统
的
总结
,对
Unity
有兴趣...
赞
踩
article
Unity
自学成长路线总结
_
unity
学习
路线...
因为自己学了一段时间的
Unity
,因为对游戏一点兴趣也没有,可以算是被迫
学习
了,做了几个小游戏熟悉了一下,正式喜欢的是它...
赞
踩
article
Unity
基础
学习路线_
mocute052
unity
...
Unity
基础
C#程序设计 第001课初识
unity
第002课初始
unity
场景树_渲...
赞
踩
相关标签
unity
ai
游戏引擎
OpenAI
ui
c#
3d
chatgpt
docker
容器
ar
增强现实
虚拟现实
vscode
.net
Unity
动画
Animator
Animation