OpenGL中Shader LOD失效

OpenGL中Shader LOD失效

1)OpenGL中Shader LOD失效
2)DoTween的GC优化
3)开发微信小程序游戏有没有类似Debug真机图形的方法
4)射线和Mesh三角面碰撞检测的算法


这是第418篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Rendering

Q:我切换为OpenGL之后,发现切换Shader LOD的功能不能用了,切换为Vulkan没问题,但是OpenGL就不行。同样的Shader代码,同样的LOD配置。有什么解决思路吗?

切换为OpenGL之后,Frame Debugger抓帧,都看不到那些本来要绘制的物体,感觉是完全没有找到对应的LOD SubShader。

A:Unity引擎里没有处理好关于CBuffer变量的问题。如果CBuffer中有Shader用不到的变量,并且这个变量没有在Properties中定义,那么就会导致对应的Pass直接不渲染。

修改方法就是,要么直接去掉这些不用的CBuffer中的变量,要么增加对应Properties中的定义。

感谢付炳楠@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6784ada03d306f3e9d594e0f


Script

Q:为什么DoTween中的APIGetTweener会有GC?因为没有DoTween的源码,不知道有什么替代方案吗?

A1:可以参考以下文章:
Demigiant/dotween: A Unity C# animation engine. HOTween v2

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

A2:可以参考以下文章:
AnnulusGames/LitMotion: Lightning-fast and Zero Allocation Tween Library for Unity

感谢菜鸟@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/676698093d306f3e9d594dd0


Rendering

Q:开发微信小程序游戏有什么科学的Debug真机图形的方法吗?比如RenderDoc?

A1:推荐Frame Debugger,团结可用。

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

A2:1. 游戏可以在浏览器跑的话,可以用SpectorJS

  1. RenderDoc曾经也可以抓Chrome,但后来官方禁了,可能需要自己魔改编译一个RenderDoc。
  2. 也可以用MuMu模拟器+RenderDoc抓微信,MuMu需要开启Vulkan模式,RenderDoc开全局Hook,Attach到MuMu的进程上,但是抓到的是Vulkan的API。

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

A3: RenderDoc可以考虑,但需要旧版本的RenderDoc。

或者配合模拟器截帧,或者Root的手机都可以,或者用浏览器都行,方式很多,个人推荐模拟器+截帧。

感谢司马老师@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/677250003d306f3e9d594de3


Physics

Q:请问有没有射线和Mesh所有三角面碰撞检测的算法?

A:非常古早的DX9官方示例里面就有:
https://www.tutorialspoint.com/directx/directx_picking.htm

感谢Dang@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6784b469682c7e5cd61bf9f2

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859