- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 纹理过滤
前言当纹理贴到具体的像素上时,纹理中心不一定位置上刚好对应着像素坐标的中心,因此在贴图时会产生一定的偏差,会产生模糊错位等问题。这时我们就需要纹理的映射过程进行一定的处理时,这就是纹理过滤。最近点采样(Nearest Point Sampling)这是一种最简单的采样过滤方式,它对于纹理采样点texel与最终画面上的pixel不对应时,会采样离这个pixel最近的texel进行采样。这...
2018-04-01 00:34:19 3398
原创 AssetBundle
开发阶段创建AssetBundle文件使用BuildPipeline类的BuildAssetBundle进行文件创建public static AssetBundleManifest BuildAssetBundles(string outputPath, BuildAssetBundleOptions assetBundleOptions, BuildTarget targe
2018-01-09 01:16:37 294
原创 Unity 3D协程
Unity3D 是单线程的StartCoroutine 开启协程Coroutine StartCoroutine(IEnumerator routine);Coroutine StartCoroutine(string methodName, object value = null);yield 暂停协程执行yield return null //暂停一帧,
2018-01-08 23:36:45 350
原创 Unity 3D优化
前言优化对游戏开发有很重要的意义,它主要分为三个方面的优化:CPU方面,GPU方面和内存方面的优化CPU优化DrawCallDrawCall是CPU调用底层图形接口,每渲染一次都要调用一次DrawCall,这对CPU无疑是巨大的开销。所以我们主要减少每个对象的渲染次数,多个物体最好一起渲染。主要有以下几个措施:Static Batching静态批处理。主要针对状态不会
2018-01-08 00:11:08 311
原创 C#实现List
前言使用泛型和索引器来自己实现一个集合类MyList,我们主要实现功能如下:1.Capacity获取容量大小2.Add()方法添加元素3.Insert()方法插入元素4.[index]访问元素(索引器)5.Count属性访问元素个数6.RemoveAt()方法移除指定位置的元素7.IndexOf()方法取得一个元素所在列表中的索引位置LastIndexOf()上面的方法是从前往后搜索,这个是从后往前
2017-11-01 19:07:48 764
原创 C#异常与调试
1. 错误信息打印 IDE 操作 VS Console.Write(); Console.WriteLine(); Unity Debug.Log(“”); Debug.LogError(“”); Debug.LogWarn(“”)2. 断点点击调试-窗口-断点,这个窗口显示了所有断点。3. 监视变量在中断模式下,通过调用堆栈和即时窗口查看 窗口 描述 调
2017-10-26 00:10:53 532
原创 Unity Shader入门精要总结--光照衰减
通过纹理实现光照衰减Unity在内部使用一张名为_LightTexture0的纹理来计算光源衰减。我们通常只关心_LightTexture0对角线上的纹理颜色值,这些值表明了再光源空间中不同位置的点的衰减值。例如(0,0)点表明了与光源位置重合的点的衰减值,而(1,1)点表明了再光源空间中所关心的距离最远的点的衰减。具体应用float3 lightCoord = mul(_LightMatrix0,
2017-08-05 17:25:55 3318
原创 Unity Shader入门精要总结--渲染路径
前向渲染路径原理 每进行一次完整的前向渲染,我们需要渲染该对象的渲染图元,并计算两个缓冲区的信息:一个是颜色缓冲区,一个是深度缓冲区。我们利用深度缓冲来决定一个片元是否可见,如果可见就更新颜色缓冲区中的颜色值。我们可以用下面的伪代码来描述前向渲染路径的大致过程:Pass { for(each primitive in this model){ for(each
2017-07-29 03:57:06 1397
原创 Unity Shader入门精要总结--透明效果
前言透明度测试:它采用一种“霸道极端”的机制,只要一个片元的透明度不满足条件(通常是小于某个阈值),那么它对应的片元就会被舍弃。被舍弃的片元将不会再进行任何处理,也不会对颜色缓冲产生任何影响;否则,就会按照普通的不透明物体的处理方式来处理它,即进行深度测试、深度写入等。也就是说,透明度测试是不需要关闭深度写入的,它和其他不透明物体最大的不同就是它会根据透明度来舍弃一些片元。虽然简单,但是它产
2017-07-29 01:50:58 6301
原创 Unity Shader入门精要总结--基本光照
环境光(ambient)除了直接光照,物体也可以被间接光照照亮,间接光照是光线经过多个物体之间反射,最后进入摄像机。在标准光照模型中,我们用环境光近似模拟间接光照。环境光计算简单,通常是一个全局变量,场景中所有物体都使用这个环境光。下面等式是环境光的计算: cambient=gambientc_{ambient}=g_{ambient}自发光(emissive)这部分用于描述给定
2017-07-28 18:26:02 1802
原创 树的性质
树的性质树中结点数等于所有结点的度数加1;度为m的树中第i层上至多有mi−1m^{i-1}个结点;高度为h的m叉树至多有mh−1m−1\frac {m^h-1} {m-1};具有n个结点的m叉树的最小高度为 ⌈logm(n(m−1)+1)⌉\lceil log_m(n(m-1)+1) \rceil;总分支数就是所有结点的度数;二叉树的性质非空二叉树上叶子结点数等于度为2的结点数加1,
2017-07-17 12:34:24 1202
原创 常用变换矩阵总结
前言在软渲中需要各种变换的应用,这里列出了几种常见的变换矩阵。虽然并不一定要知道每一步的推导过程,但看一下推导过程对于这些变换可以有更好的理解和记忆。变换矩阵1. 平移变换 具体推导⎡⎣⎢⎢⎢100dx010dy001dz0001⎤⎦⎥⎥⎥ \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ dx&dy
2017-04-11 17:46:01 3808
原创 BRDF
前言现实世界中的表面绝大多数都是凹凸不平的。在这种情况下,可以把表面看成是大量朝向各异的微小光学平面的集合,我们肉眼可见的每个点都包含了很多个这样的微小光学平面。 光线照射到这些微小表面上时,同样一部分在表面发生反射。这些朝向不同的微表面把入射光线反射到不同的方向。另一部分光线发生折射,折射光线何去何从取决于物质的组成成分。 对于金属,折射进表面的光线的能量会立即被金属中的自由电子吸收,转换成电
2017-03-29 22:23:23 12841
转载 C++ 异常机制分析
转载自:http://www.cnblogs.com/QG-whz/p/5136883.htmlC++异常机制概述异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异常对象。异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统为程序设置当前异常对象,然后执行程序的当前异常处理代码块,在包含了异常出现点的最内层的try块,依次匹配ca
2017-03-27 17:43:43 819
转载 GC基本算法及C++GC机制
转载自:http://www.cnblogs.com/QG-whz/p/5079638.html前言垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配的块,这些块也称为垃圾。在程序员看来,垃圾就是不再被引用的对象。自动回收垃圾的过程则称为垃圾收集(garbage collection)。在一个支持垃圾收集的语言中,程序显式地申请内存,但从不需要显式的释放它们。垃圾收集器会定期识别垃圾块,
2017-03-22 18:06:01 988
原创 GPU渲染管线
几何阶段:主要负责顶点坐标变换、光照、裁剪、投影以及屏幕映射,该阶 段基于 GPU 进行运算,在该阶段的末端得到了经过变换和投影 之后的顶点坐标、颜色、以及纹理坐标 光照计算属于几何阶段,因为光照计算涉及视点、光源和物 体的世界坐标,所以通常放在世界坐标系中进行计算;从 object space 到 world space将一个与其他物体没有任何参照关系的转移到一个统一的世界坐标中,
2017-03-22 17:10:05 1645
原创 桥模式
结构桥模式强调接口与实现的解耦 具体操作确定域中是否存在两个正交维度。这些概念可以是:抽象/平台,域/基础设施,前端/后端或接口/实现思考客户想要什么,平台提供什么设计一个面向平台的接口。它的目的是将抽象与平台分离为每个平台定义该接口的派生类创建一个“has”平台对象的抽象基类,并将面向平台的功能委托给它如果需要的话,定义抽象类的特化案例#include <iostream
2017-02-20 15:52:58 781
原创 观察者模式
描述观察者模式就是MVC模式中的View部分,所以应用也比较多。观察者模式定义了一种一对多的依赖关系,当一个对象的状态改变时,就自动通知并更新依赖关系。其实观察者这种一对多的关系就像拍卖。每个竞标者都有一个编号牌用来竞价。一旦拍卖开始,当一个竞标者(Observer)举牌,拍卖人(Subject)就会提高出价,并将新的价格告诉所有的竞标者(Observer)已进行新一轮的竞价。 结构Subject
2017-02-19 14:44:40 834
原创 装饰模式
结构当客户端只在意CoreFunctionality.doThis(),对OptionalOne.doThis()或OptionalTwo.doThis()并不关心。这时这些类会被Decorator基类所委托,而Decorator基类会以包含wrappee对象的方式进行委托。具体操作通常需要确保有一个核心控件,多个可选的装饰类以及一个接口创建一个通用的接口创建第二级基类(Decorator)用
2017-02-19 00:38:59 696
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人