unity-表面着色器基础备忘录

目录

1.表面着色器

2.定义入口函数

3.其它可选参数

4.Input 结构附加数据

5.SurfaceOutput 结构体

6.unity坐标系转换

7.LOD

8.渲染队列

9.混合模式

10.Alpha 测试

11.深度测试

12.通道遮罩

13.面剔除

 


1.表面着色器

1:表面着色器包括4个函数:  

 (1): 顶点变换函数;  

 (2): 表面着色函数;    

 (3): 光照模型;    

 (4): 最终颜色修改函数;

2: 表面着色器最终会被编译为一个复杂的顶点着色程序;

2.定义入口函数

1:#pragma surface 入口函数名称 光照模型  [Options]

2: suface 后面跟 表面着色的入口函数  surf(Input IN, inout SurfaceOutput o);

3: 光照模型:      

(1)系统内置 Lambert(漫反射光照) BlinnPhong (高光光照)      

(2)自定义光照: 名字为Name            

half4 Lighting<Name>(SurfaceOutput s, half3 lightDir, half atten);          

half4 Lighting<Name>(SurfaceOutput s, half3 lightDir, half3 viewDir, half atten);          

half4 Lighting<Name>(SurfaceOutput s, half4 light); 可选参数:

4: vertex: name vertex入口函数:

void <Name> (inout appdata_full v) 只需改顶点着色器中的输入顶点数据;

half4 <Name>(inout appdata_full v, out Input o) 修改输入顶点数据,以及为表面着色器传递数据;

5: finalcolor: name 最终颜色修改函数:    

void <Name>(Input IN, SurfaceOutput o, inout fixed4 color);

3.其它可选参数

1:alpha: Alpha 混合模式,用户半透明着色器;

2: alphatest: varirableName Alpha测试模式,用户透明镂空着色器。

3: exclude_path:prepass 使用指定的渲染路径;

4: addshadow: 添加阴影投射器和集合通道;

5: dualforward: 将双重光照贴图用于正向渲染路径中;

6: fullforwardshadows 在正向渲染路径中支持的所有的阴影类型;

7: decal: add 附加印花着色器;

8: decal: blend 附加半透明印花着色器;

9: softvegetation 使用表面着色器,仅在Soft Vegetation 开启时被渲染;

10: noambient 不使用任何光照

11: novertexlights 在正向渲染中不适用球面调和光照或逐点光照;

12: nolightmap 在这个着色器上禁用光照贴图;

13: nodirlightmap 在这个着色器上禁用方向光照贴图;

14: noforwardadd 禁用正向渲染添加通道;

15: approxview: 对于有需要的着色器,逐顶点而不是逐像素计算规范化视线方向。

16: halfasview:  将半方向传递到光照函数中。

4.Input 结构附加数据

Input:包含着色所需要的纹理坐标 uv纹理名字;使用第二张纹理是uv2纹理名字;

附加数据:

1:float3 viewDir  视图方向。

2:float4 color 每个顶点的颜色插值

3: float4 screenPos 屏幕空间中的位置。

4: float3 worldPos 世界坐标空间;  

5: float3 worldRef1 世界空间中的反射向量;

6: float3 worldNormal 世界空间中的法线向量;

7: float3 worldRef1; INTERNAL_DATA 世界坐标反射向量, 但必须表面着色写入o.Normal参数;

8: float3 worldNormal; INTERNAL_DATA 世界坐标法线向量, 但必须表面着色写入o.Normal参数;

5.SurfaceOutput 结构体

SurfaceOutput:

1: half3 Albedo: 漫反射的颜色值;

2: half3 Normal: 法线坐标;

3: half3 Emission; 自发光颜色;

4: half Specular;  镜面反射系数;

5: half Gloss; 光泽系数;

6: half Alpha; 透明度系数; SurfaceOutputStandard:

7: half Smoothness;    // 0=粗糙, 1=光滑

8: half Metallic;    //

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值