Unity Shader常用信息

1.UnityObjectToClipPos(float4 pos)

把pos从object space 转换到 clip space.


2.把法线从局部控件转换到世界空间

(1)UnityObjectToWorldNormal(float3 normal)

(2)mul(i.normal, unity_WorldToObject);


3.片元-->模版测试-->深度测试-->混合-->颜色缓冲区


4.透明度测试

指定片元的透明度不满足条件,那么这个片元就会被丢弃,被丢弃的片元不做任何处理,也就没有上面第3点中片元之后的任何操作。使用clip函数来进行测试


5.WorldSpaceViewDir

输入模型空间坐标,返回一个世界空间中该点到摄像机的观察方向


6.ObjSpaceViewDir

输入模型空间坐标,返回一个模型空间中该点到摄像机的观察方向


7.WorldSpaceLightDir

输入模型空间坐标,返回一个世界空间中该点到光源的光照方向


8.ObjectSpaceLightDir

输入模型空间坐标,返回一个模型空间中该点到光源的光照方向


9.UnityWorldSpaceViewDir

输入一个世界空间坐标,返回一个世界空间中该点到摄像机的观察方向


10.UnityWorldSpaceLightDir

输入一个世界空间坐标,返回一个世界空间中该点到光源的光照方向


11.UnityObjectToWorldDir

把向量从模型空间转换到世界空间


12.UnityWorldToObjectDir

把向量从世界空间转换到模型空间


13.Unity中的uv原点坐标是在左下角


14.环境光颜色

UNITY_LIGHTMODEL_AMBIENT


15.如何写入深度到屏幕空间的depth texture 

(1)shader中有LightMode 为 ShadowCaster的pass, 该pass可以自定义或者存在与Fallback中

(2)Render Queue <= 2500

(注:对于透明clip的,我们要自定义ShadowCaster来剔除掉对应片元,阻止写入depth texture中)


16._WorldSpaceCameraPos(float3)

摄像机的世界空间下的坐标


17._ProjectionParams

x  1.0f或者是-1.0,如果当前渲染使用的是翻转矩阵

y  摄像机的近裁剪面

z  摄像机的远裁剪面

w 1/farplane


18._ScreenParams

x 摄像机渲染目标纹理的宽度(像素单位)

y 摄像机渲染目标纹理的高度(像素单位)

z 1.0 + 1.0/width

w 1.0 + 1.0/height


19.float4x4等类型变量是按行优先的方式存储


猜你喜欢

转载自blog.csdn.net/qweewqpkn/article/details/80670737