头图

URP管线下如何查看Overdraw

1)URP管线下如何查看Overdraw
​2)Lua局部函数调用回收机制
3)AssetBundle如何使用二次压缩算法缩减包体
4)URP的三角形面片数统计不准确


这是第262篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Rendering

Q:Unity内置管线里自带了Overdraw模式,但是在URP里面看不到Overdraw模式,请问有什么方便的方式来实现吗?

非URP如下图:

A:推荐参考这个做法:https://github.com/ina-amagam...

感谢Xuan@UWA问答社区提供了回答</font>

Lua

Q:在用插件LuaProfiler检测时发现,每次调用这个函数,其内存都会增加,不会减少。是我测试的问题吗?还是局部函数申请的作用域不会像局部变量一样随着函数调用结束而回收?

比如这样一个函数:

function MainWindow:RefreshAll()
local function func()
end
end

A:Lua使用GC方式是增量标记法,并不会直接回收内存。回收的时机和collectgarbage(“setpause”)、collectgarbage(“setstepmul”)这2个参数有关。

满足这2个参数的时候才会触发Stop the world然后进行GC,当然也可以直接运行collectgarbage(“collect”)来进行强制GC。

感谢萧小俊@UWA问答社区提供了回答</font>

AssetBundle

Q:AssetBundle太大,缩减包体使用什么二次压缩算法比较好?C#版7-Zip LZMA会不会冲高托管内存,请做过的大佬帮忙解答下,谢谢。

A1:二次压缩的做法并不常见,因为一个本身就是压缩文件的二次压缩,所能带来的体积缩小性价比并不高。同时,还要再搭上一次解压的时间,如果你是在C#中进行解压,很有可能会带来较高的堆内存分配,所以这种做法,绝大部分场景下都是得不偿失的。

该回答由UWA提供

A2:不是很推荐去做解压,时间成本和空间成本都比较高。建议检查一下资源的依赖关系 ,可以用UWA的在线AssetBundle检测服务分析一下资源有没有冗余,去掉冗余资源应该会小很多。然后图片的压缩格式一定要选“压缩率越高”,最后图片打包AssetBundle的时候就会越小。

感谢萧小俊@UWA问答社区提供了回答

Editor

Q:大家有没有遇到过URP下Editor里面Statistics面板的三角形统计不准确的情况?

A:这个是Unity的Bug,测试了Unity 2019.4.10下的URP,Editor下的Statistics里面的统计是不对的,需要把Graphics API从Direct3D 11切换到其他的平台,如Vulkan、OpenGLCore或者DirectD12,这样统计的三角形数量是准确的,同时也在Unity 2020.3.3f1版本中做了测试,Direct3D 11平台下也能准确统计三角形面片了。

感谢羽飞@UWA问答社区提供了回答

20210809
更多精彩问题等你回答~

1.Vulkan与OpenGL的选择是否会对内存大小产生影响
2.Unity层透明Render over native UI
3.如何实现AAB包的增量更新

封面图来源于:URP Geometry Shader Example
URP中的几何着色器的示例。


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

UWA官网:[链接]

33 声望
12 粉丝
0 条评论
推荐阅读
URP Shader FrameBuffer Fetch Mali Crash
1)URP Shader FrameBuffer Fetch Mali Crash​2)Unity模型Lightmap UV相关的疑问3)动画上下半身融合问题4)AnimatorControllerPlayable.PrepareFrame函数在什么情况下调用

侑虎科技阅读 61

封面图
Redis分布式锁的实现
很多新手将 分布式锁 和 分布式事务 混淆,个人理解:锁 是用于解决多程序并发争夺某一共享资源;事务 是用于保障一系列操作执行的一致性。我前面有几篇文章讲解了分布式事务,关于2PC、TCC和异步确保方案的实现...

KerryWu4阅读 7.2k评论 2

CesiumJS 源码杂谈 - 从光到 Uniform
之前对实时渲染(RealTimeRendering)的殿堂就十分向往,也有简单了解过实时渲染中的光,无奈一直没能系统学习。鉴于笔者已经有一点 CesiumJS 源码基础,所以就抽了一个周末跟了跟 CesiumJS 中的光照初步,在简单...

岭南灯火阅读 721

封面图
一文讲透 Redis 事务 (事务模式 VS Lua 脚本)
准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本。先说结论:Redis 的事务模式具备如下特点:保证隔离性;无法保证持久性;具备了一定的原子性,但不支持回滚;一致性的概念有分歧,假设在一致性的核心...

勇哥java实战分享阅读 526

封面图
什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?
简单地说,LuaJIT 是 Lua 这种编程语言的实时编译(JIT,Just-In-Time Compilation)器的实现。对于不太了解 LuaJIT 的读者,我们可以将 LuaJIT 拆成 Lua 和 JIT 两个部分来理解。

API7_技术团队阅读 459

发布了新插件,基于editor创作的富文本编辑器
因为项目需要@谁来看的功能,所以根据官方editor二次封装了一个富文本编辑器,想着可能你们希望自己定义编辑器按钮,所以把按钮组件提出来了,你可以自由更换,想着你可能更希望基于api自己设计编辑器,所以把功...

shanjunLi阅读 326

如何在运行时优雅地Reset DOTS
1)如何在运行时优雅地Reset DOTS​2)用顶点着色器进行旋转的Shader放在Image上不能正常工作3)FrameBuffer Fetch在确定支持的手机上显示全紫4)Unity系统中,Android端判断GamePad文件在不在

侑虎科技阅读 280

封面图

UWA官网:[链接]

33 声望
12 粉丝
宣传栏