紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图、透明度混合、顶点动画、后期特效处理等操作。如果有什么地方有错,请指出更正,谢谢。本文的代码主要来自开源书:unity入门精要

一、Unity shader中的纹理

  1、简单纹理  

      在unity shader中,纹理的主要作用是用来给模型贴上一个外表,这样得到的模型颜色就具有纹理的颜色混合。在常见的一些shader上,都会有一个_MainTex的选项,这就是我们常常用的主纹理贴图。对于纹理贴图,其对应的需要有纹理坐标。在应用阶段,unity就会将模型的纹理坐标进行整理,存储在语义为TEXCOORD的语义中,通常我们会在shader中定义应用阶段到顶点计算阶段的结构体:

struct a2v{
     vertex:POSITION;  
     texcoord:TEXCOORD;  
}

  其中的texcoord就是纹理坐标,注意这是模型上顶点的原始纹理坐标,还需要在顶点着色器上进行坐标转换操作:

TRANSFORM_TEX(i.texcoord,_MainTex)  =  i.texcoord.xy * _MainTex.Scale + _MainTex.Offset

  如果模型的贴图没有缩放和偏移,则可以直接采用原生的顶点纹理坐标。

网友评论