1)海外设备上偶现的报错处理方式
​2)Shader冗余则ShaderLab占用大小问题
3)URP Renderer Feature实现二次元描边,Cutout的处理问题
4)Unity中视频播放的解决方案


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

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

Android

Q:近期项目在海外设备上偶现图片中的报错:

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

Shader

Q:Shader冗余则ShaderLab占用也会变大吗?

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

Rendering

Q:之前我们的卡通渲染是在Shader里写多个Pass来绘制的描边,最近尝试用SRP Batcher优化时发现,SRP Batcher不支持多个Pass的Shader。于是我尝试用URP Renderer Feature来渲染所有角色的描边。

实现起来很简单,但有一个问题解决不了,就是Cutout的问题。

裙子的下边缘是用贴图的Alpha控制的,并不是真正的顶点。以前的Pass写在角色渲染的Shader里,可以用贴图来控制,但用Renderer Feature来处理后,所有角色模型的描边是用的同一个材质,不能再用模型各自的贴图的通道来处理了。显示效果就是Cutout的描边部分无法处理:

边缘比较复杂,但是控制的顶点就只有几个,感觉不太好实现。

现在模型顶点的颜色信息我已经用过了,RGB是描边颜色,A是描边粗细。我能想到的办法是用A的一些特殊值来特殊处理一下某些顶点(相当于Clip掉一些顶点,但肯定没有相关API),但又感觉似乎不太可行。不知道大家有没有遇到过,或者有没有什么好办法呢?

自己尝试了用顶点信息标记点,但有瑕疵,点关联的边会受影响,描边没了:

让美术加了一些点,基本也能解决(其实外边缘还是不会显示全,但已经看不太出来了):

但这方法还是不好。最好在Renderer Feature里可以获取到正在渲染的模型的材质信息。

是否可以把一个多Pass的Shader里的某个Pass弄到单独的Renderer Feature里画,而不是重新画一遍?比如画第一遍的时候禁用这个Pass,Renderer Feature画的时候再启用它?

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

感谢题主仇磊@UWA问答社区提供了回答

Video

Q:需要在游戏内播放视频,满足一些基本的需求,比如播放远程视频,边下边播,设置视频播放速度,视频进度条,暂停之类的。

目前已知的可以用自带的Video Player、AVPro和Sofdec2这三款,想问下有没大佬系统研究过视频播放这一块的,可以分享一点经验,不胜感激。

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

封面图来源于网络


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

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

03-05 16:20