美文网首页
Unity 3D 贴图材质与Shader

Unity 3D 贴图材质与Shader

作者: IT白鸽 | 来源:发表于2017-01-09 14:44 被阅读0次

    物体呈现在我们面前除了形体外,还包括“固有颜色”与“质地”(质感与光学性质)

    固有颜色:表面看起来是什么颜色,而质感决定改物质是使用什么材质制成的。

    三维建模中,一般使用三维建模工具创作物质的形体,使用贴图表现物体的固有颜色,使用变现物质的“质感”。

    Unity3D中所有的材质都是有着色语言编写出来的。有着色器语言编程的程序成为着色器。

    每个物质除了形体,都具备“固有颜色”、“质感”、“光学性质”,这三种属性决定了该物质在视觉上的自身物理外观,以及在光线下呈现出的各种质感。

    贴图

    贴图一般分为以下几种:

    1.二维贴图:就是一张普通的贴图

    2.立方体贴图

    3.视频贴图

    4.渲染贴图

    5.程序贴图

    随着试试渲染技术的逐渐成熟,是贴图越来越倾向于变现物体固有颜色,而高光和光学特性的表现则分配给着色语言来完成

    Unity3D支持的图片格式:PSD、TIFF、JPG、TGA、PNG、BMP、IFF、PICT。我们一般使用PSD、TIFF、TGA等无压缩或者无损压缩的高质量高分辨图片文件格式来制作贴图。

    贴图尺寸。制作游戏模型是,建议贴图的尺寸为2的n次幂,比如2、4、8、16、32、64、128、256、512、1024、2048、pixels等

    材质

    材质主要用于表现物体的质地。

    材质主要构成要素;固有颜色、质感、光学性质。

    内置材质类型

    1.标准材质类型

    1.1顶点着色材质(Lertex Lit)

    1.2漫反射材质  (Diffuse)

    1.3高光材质(Specular)

    1.4凹凸漫反射(Bumped Diffuse)

    1.5凹凸高光(Bumped Specular)

    1.6视差漫反射(Parallax Diffuse)

    1.7视差凹凸高光(Parallax Specular)

    1.8贴花 (Decal)

    1.9漫反射细节 (diffuse Detail)

    2.0透明材质类型

    2.1透明顶点着色(TrasnsparentVertex—Lit)

    2.2透明漫反射(Trasnsparent Diffuse)

    2.3透明高光

    2.4透明法线贴图

    2.5透明法线高光

    2.6透明视差

    2.7透明视差高光

    备注:透明效果是有一张带Alpha透明通道的图片决定,黑色表示全透明,白色表示不透明。灰色表示半透明。带有Alpha通道的贴图文件格式有PSD TIFF PNG 和32位的TGA等等

    3.0自发光材质类型(子类与上基本相同)

    自发光材质hi类型通过使用带有Alpha通道的贴图来控制材质的发光部分。白色表示发光强度最大,黑色表示不发光,灰色介于两者之间。

    4.0反射材质

    反射贴图使用立方体贴图Cubemap来模拟反射效果

    着色器

    Unity3D内置材质都是有着色器语言(Shader language)编写实现的。

    Unity3D提供已经封装好的着色器功能API来方便用户编写着色器,同时也支持Direct3D的HLSl着色器语言和OpenGL的GlSL着色器语言以及CG(NVIDIA公司)语言。

    目前图形渲染都是按照一定的运行流程来进行的,这种流程叫渲染管线

    三维场景处理流程

    Shader的分类

    按管线分类一般分

    固定渲染:标准的几何&光照(Trasnsforming&Lighting)管线。功能固定,控制世界、视、投影变换级固定光照控制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。功能比较有限。基本所有的显卡都能正常运行。

    可编程渲染管线:对渲染管线中的顶点运算和像素运算分别进行编程处理,而无须像固定渲染管线那样套用一些股低昂函数,取代设置参数来控制管线。

    Unity3D的三种着色器

    Fixed function shader 属于固定渲染管线Shader 基本用语高级shader在老显卡无法显示的Fallback。使用ShaderLab语言,语法与微软的FX file 或者NVDIA的CgFX类似。

    Vertex and Fragment Shader(顶点和片云) 最强大的Shader类型,属于可编程渲染管线。使用的事CG/HLSl语法。

    Surface Shader(表面着色器)Unity3D推崇的Shader类型,使用Unity预制的光照模型来进行光照运算,使用的也是CG、HLSL语法。

    ShaderLab着色语言

    ShaderLab是Unity3D专门组织的着色器代码的中语言。除了ShaderLab提供的功能外,还可以调用CG与HlSL的着色器代码。

    注:表面着色器与顶点和片云着色器是用CG或者HLSL语言编写的,而固定功能着色器则万千是ShaderLab着色编写的。


    示例

    相关文章

      网友评论

          本文标题:Unity 3D 贴图材质与Shader

          本文链接:https://www.haomeiwen.com/subject/gwmtbttx.html