表面着色器Surface Shader2

1)

必须放在CGPROGRAM ENDCG 中

2)

#program surface 表面函数 光照模型 [可选参数]


//========

光照模型 可选参数为 Lambert   |    BlinnPhong   


//=======

表面函数形式:

vodi surf (Input IN,inputSurfaceOutput o)


//======


structSurfaceOutput{

half3 Albedo;//反射光

half3 Normal;//法线

half3 Emission;//自发光

half Specular;//高光

half Gloss;//光泽度

half Alpha;//透明度


}

接下来是是一个编译指令:#pragma surface surf Lambert,它声明了我们要写一个表面Shader,并指定了光照模型。它的写法是这样的

#pragma surface surfaceFunction lightModel [optionalparams]

  • surface - 声明的是一个表面着色器
  • surfaceFunction - 着色器代码的方法的名字
  • lightModel - 使用的光照模型。

我们声明了一个表面着色器,实际的代码在surf函数,使用Lambert(也就是普通的diffuse)作为光照模型。


Surface Shader的核心

(1)这套用的是Unity3d自带光照模型Lambert,也不做顶点处理,那么只需要一个表面处理函数surf即可

CGPROGRAM
#pragma surface surf Lambert
ENDCG
或者(2)这套表示使用的是自己写的光照模型 lsyLightModel,并且使用了顶点处理函数vert

CGPROGRAM
//      surface 表面处理函数   光照模型函数      顶点处理:函数
#pragma surface  surf         lsyLightModel      vertex:vert

//执行顺序   顶点处理函数 -> 表面处理函数 -> 光照模型函数 ->颜色值
ENDCG     



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值