Shader 编程优化技巧
"Shader 编程优化技巧 if else 优化 例1 if (x == 0) { y += 5; } vec4 when_eq(vec4 x, vec4 y) { return 1.0 - abs(sign(x - y)); } y += 5 * when_eq(x, 0); 如果使用HLSL,则应用 step 函数取代GLSL中的 sign 函数 ..."
"Shader 编程优化技巧 if else 优化 例1 if (x == 0) { y += 5; } vec4 when_eq(vec4 x, vec4 y) { return 1.0 - abs(sign(x - y)); } y += 5 * when_eq(x, 0); 如果使用HLSL,则应用 step 函数取代GLSL中的 sign 函数 ..."
"移动GPU TBDR 传统GPU管线 全屏只拥有一个全尺寸的工作集。只要消耗集中在任何片段都需要访问全工作集带来的巨大的带宽压力 foreach( primitive ) foreach( fragment ) render fragment mali TBDR 目标:减少渲染期间所需的功耗巨大的外部内存访问 不再以primitive为单位,执..."
"SDF 几何 SDF 的全称是 Signed Distance Field(有符号距离场),用于表示空间中各点到物体表面的距离。 有符号:指的是正数和负数,正数代表在物体外,负数代表在物体内。 距离场:其中的 数值正是代表到物体表面的距离,0就代表物体表面。 例如数值5就代表当前点在物体外,距离表面还有5的距离,负数则相反。 ..."
"网络流量监控 哪个 进程 消耗的流量 哪个 线程 消耗的流量 哪个 业务 消耗的流量 消耗流量的具体 调用栈 常见方案对比 TrafficStats/NetworkManagerService: Android 提供的 Public API 只能够查询自身应用 整体的流量 无法区分不同进程的流量 tcpdu..."
"cast 常用的类型转换 reinterpret_cast:没有任何cast,即内存内容不变,换种类型 去解析 static_cast:编译期cast,常用 dynamic_cast:运行期cast,有性能开销,对多重继承的cast或父转子的cast可使用,不过需要注意,如果你不希望core,不用cast成reference,而是pointer,代码在调用后再校验 con..."
"PAK 热更新 文件名的内置逻辑规则 该命名为内置的逻辑,非必要规范,但需注意闭坑 name_VERSION_P.pak 大小写不敏感 if (PakFilename.EndsWith(TEXT(\"_P.pak\"))) { // Prioritize based on the chunk..."
"Transform 内存布局的演变 Unity 5.3 Transform 在内存中并不是连续的内存 不具备 缓存命中的内存友好模型 Unity5.4 Transform的内存结构修改为连续的内存块 为场景的 每个根Transform 创建一个 TransformHierarchy structure; 需要留意的是,因为 内存模型修..."
"DerivedDataCache DDC 是 派生数据缓存 的缩写。 许多 虚幻引擎 资产都需要额外的”派生数据”才能使用(比如包含着色器的材质就是一个简单示例)。材质在渲染之前,必须为运行编辑器的平台编译着色器。 如何生成 DDC Pak (.ddp) 创建项目DDC 从 UE4/Engine/Binaries/Win64 目录运行 UE4Editor.e..."
"UE真机调试 Android 出包的环境配置参考 https://docs.unrealengine.com/5.2/zh-CN/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment/ APK + 符号表 VS + AGDB == 还没跑通 https:/..."
"什么是Cook? 资源的序列化 将资源转换为引擎定义的组织形式 在Unity中这环节是不可见的 在编辑器模式下,Editor借助 Library来完成这个环节; Resource、AssetBundle模式下都经过了序列化(源码中称为Transfer) 参与Cook的资源分类 >> \\Engine\\Sourc..."