Home

unity shader编译打包丢失变体

大纲 背景 背景下解决方案 问题 背景 unity的shader_feature对于在代码中Enable或者项目中各种复杂动态坏境的情境下,打包就成了噩梦!! 如果是使用multi_compile之流,那么$n^2$的变体量就可怕了! 所以我想了一下,使用的是的multi_compile,但是利用Unity提供的一套机制,在multi_compile后生成的所有变体中尝试剔除一下不使用的shadervariant,这样从理论上应该能解决问题! 背景下解决方案 先给出一下Unity的接口 public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList<ShaderCo...

Read more

unity framedebug数据获取

大纲 背景 当前帧【event】数据获取 获取FrameDebug Window 获取FrameDebug中选中的Event数据 一次debug的所有数据 切换Event Index 获取FrameEventData的数据 play状态下的问题 update的问题 数据获取不到 背景 项目前期,基于人力和项目复杂度的情形下,我将项目使用的shader variant的采集搞成了ci化; 但是到了项目中后期,由于项目越来越复杂,ci采样的问题越发突出了!(而且由于不同项目使用的规则也有所不同。) 所以计划在年后更换...

Read more

Lua的内存管理

Lua在构建VM的时候是要求传入内存管理函数的! /* ** Type for memory-allocation functions */ typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) 说明: 需要在nsize为0的时候提供释放。 ud则是可以告知这是在哪个堆上的! 当ptr传入null时,osize的含义变成了对象的类型 一般而言,我们都不是直接使用lua_newstate去直接创建vm,而是使用 LUALIB_API lua_State *...

Read more

Lua的全局状态机

global_state里面有对主线程的引用,有注册表管理所有全局数据,有全局字符串表,有内存管理函数, 有GC需要的把所有对象串联起来的相关信息,以及一切Lua在工作时需要的工作内存。 LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) { int i; lua_State *L; global_State *g; LG *l = cast(LG *, (*f)(ud, NULL, LUA_TTHREAD, sizeof(LG))); if (l == NULL) return NULL; L = &l->l.l; g = &l->g; L->tt = LU...

Read more

unreal的UGameInstance的Tick执行问题

大纲 背景 解决方案 方案1 方案2 背景 在unreal中,UGameInstance通常会有两个,一个是在Editor World中使用的,一个是PIE中使用的! 这就导致同一个GameInstance类在运行的时候,有两个实例在跑,如果配合Tick的时候,那么EditorWorld容易因为一些运行时才初始化的对象而造成闪退! 基于上述原因,需要对Tick的执行进行一定的处理,使得,Tick能够分情况执行! 解决方案 先看看Tick的执行逻辑!(Tickable.cpp) for (const FTickableObjectEntry& TickableEntry : Statics.Tickab...

Read more

unreal的DDC简单搭建

大纲 DDC的简单说明 DDC简单搭建使用 DDC文件夹的挂载 Unreal中使用DDC DDC的简单说明 这里就直接上link就可以了!https://docs.unrealengine.com/4.27/zh-CN/ProductionPipelines/DerivedDataCache/ DDC简单搭建使用 在UnrealProject\Config\DefaultEngine.ini文件中添加 [DerivedDataBackendGraph] ; Keep files for at least 7 days MinimumDaysToKeepFile=7 ; Configure the root ent...

Read more

chrome降低cpu消耗

大纲 插件消耗 software_reporter_tool 目前遇到的chrome的消耗问题,通常都可以归类到这两类(插件消耗和software_reporter_tool)! 插件消耗 想要确认是不是插件的消耗,可以借助chrome内置的任务管理器(Shift+Esc打开) 找到对应的插件,将之kill或者卸载就可以了! software_reporter_tool 网上有两个比较常见的方法: 简单点的 在浏览器的地址栏中输入 chrome://flags/ 找到Chrome Cleanup Tool in safety check并disable重启就可以了! 如果上述的并没有成功,这个一定是可以的! 我们还...

Read more

tolua_runtime独立编译c++服务器

大纲 背景交代 编译独立的win库 问题及修改 背景交代 项目想要前端和后端使用的相通的lua文件作为逻辑处理或者是验证!这样能避免不少重复的工作量; 而c++调用lua的效率是比较高的;但是项目使用的是tolua的,为了在目前不动(少改动)的前提下,最好是将tolua编译一份放置到后端! 这里不考虑lua 多线程的问题! 编译独立的win库 下载tolua-runtime 直接从github的tolua_runtime下载就可以了! 配置生成tolua工程 因为tolua_runtime使用的的是Cross-compiling,但是我需要的是vs2019编译,所以我直接使用了cmake来生成! ...

Read more