unity 5.6.6f1
深度值是对象距离摄像机距离的一个参考值,在制作一些场景效果时会经常用得到。深度值是在顶点着色器之后的像素着色器之前的深度测试阶段生成的,所以获取深度值就得在像素着色器中获取。下面创建了一个简单的场景来显示深度信息
unity 5.6.6f1
深度值是对象距离摄像机距离的一个参考值,在制作一些场景效果时会经常用得到。深度值是在顶点着色器之后的像素着色器之前的深度测试阶段生成的,所以获取深度值就得在像素着色器中获取。下面创建了一个简单的场景来显示深度信息
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轴向量的积得出