几年前在公司内部KM分享过如何方便的将RenderDoc内嵌到内部版本中从而方便调试,以及如何向下兼容更低版本的Android系统(RenderDoc Android最低系统要求是6.0)。
手法其实非常简单: 直接将libVkLayer_GLES_RenderDoc.so这个打包进apk中然后手动加载下即可; 这样做额外的好处是不需要依赖其hook系统的机制,所以不需要interceptor-lib,进而压低系统版本要求。
阅读全文
时隔多年重新编译angle,主要是为了PC上能模拟ES3.1,特别是最好能支持VT相关操作。本来不抱希望,毕竟angle文档上写的很清楚,目前GL/GLES/Vulkan Backend都只支持到ES 3.1,ES 3.2还处于in progress。
但是突然发现EXT_copy_image这个扩展在Vulkan Backend上已经被支持Vulkan: Add support for EXT_copy_image,瞬间觉得有戏就折腾了下。
阅读全文
最近抽空研究了下Unity的SRPBatcher,根据官方文档说法这货能极大降低DrawCall代价,从而达到提升性能的目的,而且这个行为大多数情况下对于使用者是透明的。正好对这块比较感兴趣其实是最近在尝试优化这块,看看有什么思路可以白嫖,抓了帧稍微研究了下原理。
阅读全文
最近看的一个问题,最后想通很简单但一开始自己狠坑了自己一把,简单记录一下。
为了实现运行时喷涂,直接动态RT解决问题:
喷涂时利用2uv直接绘制到一张RenderTexture
模型正常渲染的时候采样这张RenderTexture。
阅读全文
这个话题其实已经连着好几次了orz(之前博客分享过Metal 2.1中的新关键字invariant和奇妙的Shader精度),但昨天有朋友又遇到PreZ挂了的情况: D3D11下如果关掉Shader Optimize后PreZ和Shading Pass的深度又对不上,但打开Shader Optimize就显示正常。
阅读全文
最近尝试利用UE4自带的功能生成物理简模,参考Setting Up Collisions With Static Meshes有几种模式:
直接生成简单的包围盒/球/胶囊体;
利用DOP(discrete oriented polytopy)即若干对齐轴平面向内挤压;
Auto Convex自动生成。
此外可以将多个简模组合使用,这里不再赘述。我们一开始是批量Auto Convex,结果发现对于一些”规则”网格生成的结果非常诡异。例如题图中的一个长方形盒子,生成的Auto Convex似乎只有一个表面。
阅读全文
这次是有几个同事遇到的一个问题: release版本编译引擎没问题,但是debug下会在链接步骤挂掉:
[arm64-v8a] SharedLibrary : libGame.soD:\SDK\android-ndk-r21\toolchains\llvm\prebuilt\windows-x86_64\bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin\ld: final link failed: File truncatedclang++: error: linker command failed with exit code 1 (use -v to see invocation)
阅读全文
最近一段时间突然发现打包机上编译引擎安卓版本极慢,正好有现成的IncrediBuild所以研究下能不能用来加速。IB本身是商业软件,对Visual Studio的支持已经非常好了: 既可以使用Extension形式直接调用,又可以使用命令行传参sln。但是网上关于结合NDK使用的资料就非常少,这周花了大半天终于跑通流程,就此记录一下。
阅读全文