EffectCookBook笔记Chapter4-11

图片稍后补上

Chapter4 Reflecting Your World
知识结构:
1、在Unity3D创建CubeMaps(环境贴图)
Go.camera.RenderToCubeMap(cubeMap);
2、在U3D中的简单CubeMap反射

IN.worldRefl:unity3d的一个内置输入项
原理如图:

求出reflect向量,想象一个球体对应的立方体,就可以知道该向量对应的6张纹理中的唯一一个像素点,texCUBE函数就是得到该像素点的rgba。
3、Unity中的可选择性反射(部分纹理反射)
没啥好说,就多了一张mask贴图来区别是否使用cubemap

黑色就是不反射的,白色是反射

4、Unity中的NormalMap 和反射
额,法线贴图和环境贴图的组合,在surface shader中,两个本来就是依靠不同参数来实现的:normal,emmision

5、Unity中的菲涅尔反射

原理:额..模拟而已

第一张:(V*N)第二张:1-(V*N)第三张:Cube第四张:Cube * (1-V*N)
6、Unity中创建一个简单的动态环境贴图系统

Chapter5 Lighting Models
知识结构:
1、Lit Sphere Light Model
一种光照模型….
主要代码:

解释:(这东西真的可以慢慢讲…)
0、Lit Sphere 是什么?自己看另一篇日报去~
1、TANGENT_SPACE_OUTPUT:

define TANGENT_SPACE_ROTATION \

float3 binormal = cross( v.normal, v.tangent.xyz ) * v.tangent.w; \
float3x3 rotation = float3x3( v.tangent.xyz, binormal, v.normal )

可以看出这东西就是切线空间(T,B,N),3*3的矩阵。
2、o.tan1 = mul(rotation,UNITY_MATRIX_IT_MV[0].xyz);
这一句是用来将切线空间转到视角空间上…
为什么可以转呢?(哼哼,先看另一篇日报去)。
将切线空间的法线转到视角空间实际上是乘以矩阵G=(M-1)T.
假设:
| a1 b1 c1 | | a1 a2 a3 |
M-1 = | a2 b2 c2 | G = | b1 b2 b3 |
| a3 b3 c3 | | c1 c2 c3 |
由于我们只是想取得T轴(x1,y1,z1),所以矩阵G唯一有用的是 a1,b1,c1
T(x,y,z) * (a1,b1,c1) = T(x1,y1,z1)
可以看出(a1,b1,c1)就是UNITY_MATRIX_IT_MV[0].xyz

3、litSphereUV.x = dot(IN.tan1,o.Normal);
这个其实就是Lit Sphere算法的核心,Lit Sphere原先得到的图就是光源在球体的某根法线上照射得到的,所以其光照效果完全就是依赖于,像素点所对应的法线和光源在的那根法线的夹角。当然去到切线空间中,这个就分为T和B了

由于IN.tan1和o.Normal都是单位向量,所以连个相乘就等于夹角了
4、剩下的就简单啦..跟其他一样

2、The diffuse convolution lighting model
就是讲CubeMap进行高斯模糊,其他跟普通cubemap差不多
3、A vehicle paint lighting model
练手用,混合体
4、The skin shader

Phone-Blling模型

BRDF使用纹理来解决

建造菲涅尔反射

高光反射

最后的结果,加上rim

Curvature:曲率
fwidth():求导
5、The cloth shader
Detail Normal map + normal variation map + detail diffuse map

关键就是这里:
最终法线 = 普通法线贴图 + 法线扰动贴图
加上菲涅尔反射

Chapter6 Transparency
知识结构:(这一章好无聊)
1、创建透明shader
跟其他非透明shader差不多:

设置一下o.alpha
2、透明剔除shader
基本同上:除了…alphatest

3、用深度对render queue进行排序
改之前,把ZWrite关掉…
4、GUI和 透明shader
利用透明shader,以及设置他们的renderqueue实现GUI….呵呵

Chapter7 Vertex Magic
知识结构:(这一章好无聊)
1、在surface shader中获得顶点颜色

慢慢对应吧

如果用DX11,要加上这句初始化:

2、在surface shader中让顶点运动

有个可爱的_Time
3、在地形上使用顶点颜色
Blending。。。。加个heightmap?

Chapter8 Mobile Shader Adjustment
知识结构:(虽然有点期待,但是这一章内容不多)
1、什么是便宜(消耗不高)的shader
1、优化属性类型,减少属性带来的内存消耗(fixed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值