打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Unity 材质设置属性优化

一般我们修改材质球参数是直接拿对于材质球来设置参数,不过还有优化空间

使用材质球属性块来代替直接修改材质球属性

材质球属性块

材质属性块被用于Graphics.DrawMesh和Renderer.SetPropertyBlock两个API,当我们想要绘制许多相同材质但不同属性的对象时可以使用它。例如你想改变每个绘制网格的颜色,但是它却不会改变渲染器的状态。

我们来看看Renderer这个类,它包含了Material,SharedMaterial这两个属性;GetPropertyBlock,SetPropertyBlock这两个函数,其中两个属性是用来访问和改变材质的,而两个函数是用来设置和获取材质属性块的。我们知道,当我们操作材质共性时,可以使用SharedMaterial属性,改变这个属性,那么所有使用此材质的物件都将会改变,而我们需要改变单一材质时,需要使用Material属性,而在第一次使用Material时其实是会生成一份材质拷贝的,即Material(Instance),而使用材质属性块不会拷贝一份材质球,从而效率更高

下面写个简单的使用方法

  1. int propertyId = Shader.PropertyToID("shader变量");
  2. MaterialPropertyBlock p = null ;
  3. r.GetPropertyBlock(p);
  4. p.SetInt(propertyId, 1);
  5. r.SetPropertyBlock(p);

优化是一点一滴积累出来,为了兼容更多玩家,必须尽可能优化

这里只是记录一下优化

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
金属材料属性 - Material Properties
关于threeJS加载模型的坑(obj+mtl)
摄像机目标渲染纹理targetTexture
map、mesh、texture、material 和 shader 的联系
three.js 源码注释(五十八)Material /RawShaderMaterial.js
如何使用“Fragment material
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服