- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 Lua中pcall与xpcall的用法
pcall 和 xpcall的用法1.pcall--[[ (flag, ret) pcall(func, args...) 参数: func:调用函数 args:func所需参数,为不定长 返回值: flag:调用成功与否,bool值 ret:当flag为true时,ret为func的返回值。当flag为false时,ret为errmsg]]-- 无报错local func = function(arg1, arg2) print(arg
2021-07-03 22:07:08 2122
原创 记一个Lua5.3中的ipairs自动查询metatable的问题
记一个Lua5.3中的ipairs自动查询metatable的问题1.问题的起因项目里使用了一个pretty的lua库,它提供了一个打印Lua table的功能,大体做法就是分别用ipairs 和 pairs分别尝试打印table中的值。但是当打印protobuf decode的table时就报错了。2.问题跟踪protobuf使用的是cloudwu的pbc。通过跟踪protobuf的代码,发现protobuf decode返回的table是有metatable的,ipairs会尝试使用整数索引遍
2021-07-03 21:40:35 158
原创 透视投影变换矩阵推导学习笔记
最近在研究透视投影,Twinsen大神的神贴有非常详细的推导过程(传送门),这里做一下学习笔记。首先是两点基础的原理:1.P经过矩阵M变换后得到P’点,如果知道P(x,y,z)和变换后的P’(x’,y’,z’),只要P’点的各个分量x’,y’,z’可以表示成原分量x,y,z的线性表示,那么就可以反推出变换矩阵M。如P(x,y,z),变换后的P’(2x+3y,7z,x+2y+3z),则可
2021-07-03 18:29:14 2094
原创 关于ZWrite ZTest 和 Alpha Blend的执行流程
前对于ZTest ZWrite Blend的概念不是很清楚,只是知道开启Blend的时候,ZWrite要关闭,但不清楚为什么,今天用实验梳理了一下流程,做下笔记。如有错误,感谢指出。上图要注意的是ZTest 如果是Off状态的时候相当于ZTest Always,即默认通过ZTest。通过这个流程可以发现,ZTest在管线中的作用是决定深度缓冲与颜色缓冲的更新与否
2021-07-03 18:28:44 958
转载 ComputeScreenPos 详解
转载自https://chengkehan.github.io/ComputeScreenPos.htmlComputeScreenPos 这个函数被定义在 UnityCG.cginc 里,作用是获得一个投影点对应的屏幕坐标点。inline float4 ComputeScreenPos (float4 pos) { float4 o = pos * 0.5f; #i
2021-07-03 18:28:15 2472
原创 SVN常用命令
svn merge1.回退 单个文件:svn merge -r [当前revision]:[目标revision] [filepath] 示例:svn merge -r 9:8 hello.lua,将当前目录下的hello.lua文件从版本r9回退到r8 整个目录:svn merge [url][当前revision]:[目标revision] [pat...
2020-03-05 20:24:45 121
原创 坐标变换的理解
要做坐标变换,首先要搞清楚坐标系之间的父子关系,搞清父子关系的关键是一个坐标系的基向量。一个坐标系的基向量是它的父坐标系中的一个普通向量。一个坐标系的原点是它的父坐标系中的一个普通的点。Coor_parent = Base_x * Coor_son_x + Base_y * Coor_son_y + Base_z * Coor_son_z + O_son一个坐标在...
2020-03-05 20:23:35 608
原创 Gama空间 和 线性空间
1 人眼对于亮度的感知是非线性的人眼感知的中灰,实际物理亮度为白色的18%纵轴是人眼的主观感受,人眼认为的亮度变化。横轴是物理上实际的亮度,即人眼输入的亮度。人眼输入了0.2,但感知为0.5广义Gamma实际上描述的就是自然现实的物理量和主观视觉灰阶的映射关系。这个关系是非线性映射。当自然亮度在0-0.2的部分,曲线斜率大,说明人眼对于亮度较暗时的变化更加敏感,而到0...
2020-03-05 20:23:00 568
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人