Unity--Shader(一)

作者: Lamzz | 来源:发表于2016-12-12 23:31 被阅读57次

    一、Shader的介绍

    Shader(着色器)
    Shader是专门用来渲染3D图形的一种技术,他分为Vertex Shader(顶点着色器) & Pixel Shader(像素着色器)

    二、Shader的种类

    Shader分三类:
    1、HLSL(High Level Shading Language):
    微软的DirectX图形API继承的Shader。
    2、GLSL(OpenGL Shading Language):
    用于OpenGL系列图形集的Shader。
    3、CG(C for Graphics):
    一种可以被OpenGL和Direct3D广泛支持的图形处理器编程语言。是OpenGL和DirectX的上层语言,CG程序运行在OpenGL和DirectX标准顶点和像素着色器的基础上的。

    Unity所有的渲染都需要shader来完成,内置的着色器超过80个,可以轻松利用其内置的着色器来完成各种画面效果,并且还提供了自定义shader,方便扩展。Unity使用shaderLab开发语言来组织shader内容,并会针对不同的平台进行编译,类似微软的FX文件或者NAIDIA的CgFX.

    三、内建Shader的分类:

    1、普通(Normal):用于不透明对象
    2、透明(Transparent):用于半透明和全透明对象
    3、透明镂空效果(TransparentCutOut):用于完全透明和完全不透明部分组成(不含半透明部分)的对象,像栅栏一样。
    4、自发光(Self-llluminated shader Family):用于能反射环境立方体贴图的不透明对象
    5、反射(Reflective Shader Family):用于能反射环境立方体贴图的不透明对象
    每个类别下包含若干复杂性各异的shader

    四、几种常用的Shader

    1、Bumped Diffuse 漫反射


    Paste_Image.png

    2、Bumped Specular 法线高光效果



    Paste_Image.png
    法线高光效果可以让物体的凹凸效果更加明显

    图中左边为漫反射bumped diffuse,右边为高光、凸凹效果bumped specular

    3、StandardShader 标准着色器

    StandardShader是基于物理的着色器,也就是说不管你选择什么样的贴图都会与光照产生反应,这些贴图可以是同一张图片,Unity会使用必要的资源进行计算。


    Paste_Image.png Paste_Image.png

    一个简单的Shader脚本:


    Paste_Image.png
    Paste_Image.png

    这个shader定义颜色属性的默认值(1,0.5,0.5,1)_Color(将在Unity3D的材质检索器中作为主要颜色属性显示)。然后一个单一的subshader定义。该subshader组成一个渲染通道,打开顶点照明,并设置了它的基本材质属性。

    相关文章

      网友评论

        本文标题:Unity--Shader(一)

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