码迷,mamicode.com
首页 > 其他好文 > 详细

u3d_shader_surface_shader_6

时间:2015-08-28 14:53:53      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

主题: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); ... }

 

u3d_shader_surface_shader_6

标签:

原文地址:http://www.cnblogs.com/sun-shadow/p/4766214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!