u3d_shader_surface_shader_6

主题:1.膨胀效果;2.surface shader实际生成的代码;

o(︶︿︶)o  粘贴复制代码易,理解透彻代码难...

一:膨胀效果

1.在#pragma 编译指令里添加vertex:vert以告知进行vertex的处理;在VertexShader最前;

    #pragma surface surf Lambert vertex:vert                                                                                                              

2.本次膨胀即依据normal方向进行vertex的worldspace下的扩充:

      void vert (inout appdata_full v) {
v.vertex.xyz += v.normal * _Amount;
}

二:点击u3d编译器中"show generated code"

发现:surface shader的vert()在VS最上面,surf()在PS的最上面,

// vertex shader
v2f_surf vert_surf (appdata_full v) {
v2f_surf o;
vert (v); //此 surface里我们使用的vert函数,来操作worldSpace下的膨胀效果
....
} // fragment shader
fixed4 frag_surf (v2f_surf IN) : SV_Target { SurfaceOutput o; surf (surfIN, o);
...
}
上一篇:C# 通用数据库配置界面,微软原生DLL重整合


下一篇:oracle分组取第一条