unity 4.7.1f1
MemoryPool主要是对内存分配的碎片化和频繁分配和释放进行优化。
结构
MemoryPool的设计结构如下:
1 |
|
unity 4.7.1f1
MemoryPool主要是对内存分配的碎片化和频繁分配和释放进行优化。
结构
MemoryPool的设计结构如下:
1 |
|
unity 4.7.1f1
Phong和BlinnPhong反射类型光照模型
Phong
Phong模型是基于光照(图中1 Light向量)的方向和用户的视角(图1 View向量)方向进行计算的。通过计算Light的反射向量与用户的视角方向向量的向量积作为光照的强度因子。
计算公式:
代码方法:
1 |
|
BlinnPhong
BlinnPhong可以看作是堆Phong模型的简化版,它是通过视角方向(View)和光照方向(Light)构成的半角向量(Half)来计算光照的。直接使用半角向量而不用计算光照的反射向量的方式更加高效。
计算公式:
代码方法:
1 |
|
挤压效果
这种挤压的效果的原理是将顶点沿发现方向进行投影,用代码表示就是这样:
1 |
|
_Amount 是挤压的因子
还可以通过额外添加一个纹理(或者使用主要纹理的alpha通道)来表示挤压的程度:
1 |
|
从顶点修改器中采样一个纹理,应该使用texDlod而不是tex2D。
抓取功能
原理是结合vertex和fragment着色器以及抓取通行技术,然后对抓取纹理进行采样,在对其UV值做一点修改来制作出一些细微的变形效果。
1 |
|
unity 4.7.1f1
之前了解Unity的setpass call和batches时把顺道把渲染这块的代码(4.7.f1)也阅读了下,先利用一个思维导图把渲染的几个大的步骤记下来,以便有个整体的脉络(这里只记录Forward渲染)。
注1:由Camera的投影矩阵和对象的Z轴向量的积得出
今天在项目中发现了一个UI的性能消耗比较异常的问题。在Unity的Profiler里面我看到一项Canvas.SendWillRenderCanvasesCPU消耗持续比较高,但是查看游戏的UI界面好像动态变化的UI并没有。在逐个关闭UI才定位到有一张图片一直在做渐变效果,所以才导致UI一直在重建。这里写个简单的例子模拟下,在场景中创建一张Image,然后挂载一个测试脚本,在这个脚本里面一直更新这个Image的alpha通道就可以看到这种现象。
1 |
|