Segment 0 回顾
surf和litmodel传进去的参数
1, surf 的参数主要有两个,一个是结构体作为input, 里面主要包含了fragment着色器所需要的材质信息(材质本身以及材质坐标,材质坐标的方式很奇异,是直接把uv加材质前面的方式—uv_Texture);另外一个就是inout SurfaceOutput s,SurfaceOutput的类型是Unity自己定义的,其中包含了每一个点的空间位置信息和颜色信息(具体可以去Unity的Lighting.cginc里面看,Unity Shaders and Effects Cookbook page18)2, litmodel传进去的参数是有指定方式的,一共有三种(Unity shader manual里面有),其基本的意思就是处理材质点s,入射光,camera视点这三个东西(还有一个是attenuation参数,作为衰减用的)。因此litmodel带的参数也就是 SurfaceOutput s, fixed3 lightDir, fixed3 viewDir, half atten。
此处还存在一个问题就是诸如lightDir,viewDir,atten这些东西都是从哪里来的。只能理解为从Unity的场景Object带进来的(其中atten有可能是定义在Lighting.cgin里面,但是我没看)。
- litmodel里面的_LightColor0是怎么传进去的?从哪里定义的?
是定义在Lighting.cginc里面,表示光源颜色,有一种说法说_LightColor0是反射光颜色,我觉得太