UnityShader-重建世界坐标 UnityShader-重建世界坐标最近在学习屏幕后处理相关的知识,其中很重要的一个技巧就是通过深度纹理重建像素的世界坐标,通过它可以实现很多酷炫的效果,比如烟雾效果,扫描效果等。我目前已知两种方法,一种是通过逆矩阵的方式重建,另一种是通过屏幕射线插值的方式实现,本文主要介绍第二种 通过屏幕射线插值重建核心原理:计算摄像机的位置加上像素点到摄像机的偏移得到世界坐标 其中用到的数学原理如下图所示: 2023-01-10 Unity #Unity #Shader #postprocess
UnityShader-高级纹理 高级纹理立方体纹理立方体纹理(Cubemap)是环境映射的一种实现形式,可以用于模拟物体周围的环境,或者模拟金属反射周围的环境 原理: 立方体纹理包含6个图像,在进行纹理采样时,计算从立方体中心出发的矢量和立方体的交点,然后对该交点进行像素采样 优点: 实现快速,效果良好 缺点: 当场景中引入新的物体、光源,或者物体本身需要移动时,立方体纹理也需要重新生成 不能反射使用了该立方体纹理的物体本身, 2023-01-10 Unity #Unity #Shader #Texture
UnityShader-边缘检测 UnityShader-边缘检测卷积卷积操作指使用一个卷积核(kernel)对一张图像中的每个像素进行一系列操作。卷积核通常是一个四方形的网格结构,该区域内的每个方格都有一个权重值,当对图像中的某个像素进行卷积时,会把卷积核的中心放置到该像素上,翻转核之后再依次计算核中每个元素和其覆盖的图像像素的乘积并求和,得到结果就是该点的新像素值 基于像素差值的边缘判定如果相邻像素之间存在差别明显的颜色、亮 2023-01-10 Unity #Unity #Shader #postprocess
Unity-协程 Unity-协程基本使用方法123456789IEnumerator CoroutineFunc(){ code...; yield return ...; code...;}StartCoroutine(CoroutineFunc);StopCoroutine(CoroutineFunc); 函数会在yield return处停止,并把控制权转交给Unit 2023-01-10 Unity #Unity #协程
Unity-Animation Unity-AnimationEditor 动画片段集(Animation Clips) 动画数据被存放在动画片段集中,如人物的跑动、跳跃,路灯的亮度变化等数据。动画片段集分为两个部分: Values:某个属性的值 Bindings:该动画片段集绑定的对象物体的属性,如位置,旋转,光照强度等 编辑窗口 注:动画只有附着在一个具体的游戏对象上(该动画有上下文)才可以被编辑关键帧 改变时 2023-01-10 Unity #Unity #Animation
Unity-Physics Unity-Physics2DPhysics 2D Settings用于设置一些全局属性,如重力大小,层与层之间的碰撞关系 Rigidbody 2D设置面板如下: Body Type: Dynamic:受到力的影响 Kinematic:不会受到力的影响(包括重力),物体运动受代码控制 Static:永不移动,只会与动态刚体碰撞,除非设置useFullKinematicContacts,它将和 2023-01-10 Unity #Unity #Physics
Unity-Serialize Unity-SerializeXMLSerializerC#序列化对象为XML条件: 对于类,要使其实例可以序列化,必须保证其自己、成员以及父类都有[Serializable]标记 对象数组序列化时,无参构造函数不可少 XML序列化 12345678public static string XMLSerialize<T>(T entity){ StringBuild 2023-01-10 Unity #Unity #Serialize
RSA RSA简介一种基于大合数因子分解困难性的公开密钥密码,用于加密和数字签名 特点: 非对称:有一个公钥对和私钥对,公钥对可以公开,减少了密钥传递的风险 分组加密 理论基础RSA加解密算法的步骤如下: 随机选择两个大素数p和q且保密 计算n=pq, 将n公开 计算$$\varphi(n)=(p - 1)(q - 1)$$ 随机地选取一个正整数e, $$1 < e &l 2023-01-10 密码学 #RSA #非对称密码
OrangeOS-定义速查表 OrangeOS-定义速查表主要放置一些结构体定义,寄存器定义和中断定义等 保护模式段式寻址过程 段描述符 描述符属性P位:存在(Present)位。P=1表示段在内存中存在;P=0表示段在内存中不存在。DPL :描述符特权级(Descriptor Privilege Level)。特权级可以是0、1、2或者3。数字越小特权级越大。S位 :指明描述符是数据段/代码段描述符(S& 2023-01-10 操作系统 #操作系统
Orange OS-从0xaa55到kernel Orange OS-从0xaa55到kernel这篇文章梳理一下从启动程序到加载内核的过程,主要是为了将原书中的操作流程抽象出来,不被一些过于具体的寄存器使用和结构体定义所干扰。浅色部分为补充内容,可以跳过,具体细节参考分博客(有时间再写,鸽了o(╥﹏╥)o),有错误请指出 启动boot程序计算机在加电后,需要一个入口从硬件层面进入软件层面,该程序就是BIOS,之后,BIOS进行各种硬件自检和初始 2023-01-10 操作系统 #操作系统