辅助理解https://zhuanlan.zhihu.com/p/67004396
辅助理解https://zhuanlan.zhihu.com/p/67004396
其实这里
UnpackNormal()函数可以使用
UnpackNormalWithScale()进行代替
下面一句
tangentNormal.xy *= _BumpScale;就可以去掉了,将_BumpScal参数传进去就行
本人unity版本2020.3.30
辅助理解https://blog.csdn.net/janestar/article/details/44244849
补充理解
https://blog.csdn.net/rabbitguiming/article/details/3964140
关于
fixed halfLambert = dot(worldLightDir,i.worldNormal)*0.5+0.5; fixed3 rampRgb = tex2D(_RampTex, fixed2(halfLambert,halfLambert)).rgb;
这两句代码理解:
1、当光源与法线夹角为0时(光线垂直照射),采样的纹理VU为(1,1),也就是获取纹理最右上角的颜色;当光源与法线夹角为90度时(光线平行照射),采样的纹理VU为(0.5,0.5)也就是中心点
2、也就是说当前渐变纹理的采样为从(0.5,0.5)到(1,1)的直线uv坐标的进行采样
3、本人尝试将
fixed halfLambert = dot(worldLightDir,i.worldNormal)*0.5+0.5;
改为
fixed halfLambert = dot(worldLightDir,i.worldNormal);
然而会使其颜色过渡较大导致不自然
详情见409
//高光遮罩 fixed3 specularMask = tex2D(_SpecularMask,i.maskUv).g*_MaskScale;
老师在高光中使用的遮罩贴图所显示的效果并不明显
个人使用贴图如下(在贴图中我将四周涂黑,使其rgb值都为0):并且将其使用为遮罩纹理效果如下:
与未使用遮罩贴图对比:
渲染顺序:
Properties
{
}
开启深度写入的话,透明物体前面有个不透明物体的话,不透明物体渲染不出来。
做顶点变换的shader不能进行合批操作。
Tags { "Queue"="Transparent"//渲染顺序 "RenderType"="Opaque"//着色器替换功能 "DisableBatching" = "True"//是否进行合批 "ForceNoShadowCasting" = "True"//是否投射阴影 "IgnoreProjector"="True"//受不受Projector的影响,通常用于透明物体 "CanUseSpriteAltas" = "False"//是否用于图片的Shader,通常用于UI "PreviewType"="Plane"//用作shader面板预览的类型 }
1.如果Pass内外都定义了相同的Tag类型,当值不同时,外面的优先。
//Render设置 可选
Cull off/back/front //选择渲染那个面
ZTest Always/Less Greater/LEqual/GEqual/Equal/NotEqual //深度测试
Zwrite off/on //深度写入
Blend SrcFactor DstFactor//混合
LOD 100 //不同情况下使用不同的LOD,达到性能提升
1.Name "Default" //自定义Pass通道名称
2.使用已定义通道时,用Use,名字首字母大写。
余弦定理。
三个基向量构成一个基矩阵,向量a*此基矩阵=在基矩阵空间的向量
左手坐标系中,旋转的正方向为沿着手指指向的坐标轴方向顺时针旋转方向。
1.降维操作。
1.叉乘也可以用基向量和两个向量做成的行列式来表示。