1156人加入学习
(75人评价)
Unity Shader入门(Unity2018.3)

完成与2019-03-31

价格 ¥ 380.00

辅助理解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):并且将其使用为遮罩纹理效果如下:

与未使用遮罩贴图对比:

[展开全文]

渲染顺序:

  1. 先绘制所有不透明的东西
  2. 从远到近排序透明物体
  3. 从后到前依次绘制透明物体
[展开全文]

开启深度写入的话,透明物体前面有个不透明物体的话,不透明物体渲染不出来。

[展开全文]

做顶点变换的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)
视频(184)