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...
unity framedebug数据获取
大纲
背景
当前帧【event】数据获取
获取FrameDebug Window
获取FrameDebug中选中的Event数据
一次debug的所有数据
切换Event Index
获取FrameEventData的数据
play状态下的问题
update的问题
数据获取不到
背景
项目前期,基于人力和项目复杂度的情形下,我将项目使用的shader variant的采集搞成了ci化;
但是到了项目中后期,由于项目越来越复杂,ci采样的问题越发突出了!(而且由于不同项目使用的规则也有所不同。)
所以计划在年后更换...
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 *...
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...
unreal的UGameInstance的Tick执行问题
大纲
背景
解决方案
方案1
方案2
背景
在unreal中,UGameInstance通常会有两个,一个是在Editor World中使用的,一个是PIE中使用的!
这就导致同一个GameInstance类在运行的时候,有两个实例在跑,如果配合Tick的时候,那么EditorWorld容易因为一些运行时才初始化的对象而造成闪退!
基于上述原因,需要对Tick的执行进行一定的处理,使得,Tick能够分情况执行!
解决方案
先看看Tick的执行逻辑!(Tickable.cpp)
for (const FTickableObjectEntry& TickableEntry : Statics.Tickab...
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...
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重启就可以了!
如果上述的并没有成功,这个一定是可以的!
我们还...
tolua_runtime独立编译c++服务器
大纲
背景交代
编译独立的win库
问题及修改
背景交代
项目想要前端和后端使用的相通的lua文件作为逻辑处理或者是验证!这样能避免不少重复的工作量;
而c++调用lua的效率是比较高的;但是项目使用的是tolua的,为了在目前不动(少改动)的前提下,最好是将tolua编译一份放置到后端!
这里不考虑lua 多线程的问题!
编译独立的win库
下载tolua-runtime
直接从github的tolua_runtime下载就可以了!
配置生成tolua工程
因为tolua_runtime使用的的是Cross-compiling,但是我需要的是vs2019编译,所以我直接使用了cmake来生成!
...
159 post articles, 20 pages.