discuz!cms
Unity3D 初识Shader (一)-Unity3D 初识Shader (一)下载-免费下载3D模型库-汇宝盆
汇宝盆 > 免费分享区 > CG教程 > Unity > Unity3D 初识Shader (一)
Unity3D 初识Shader (一)

最好一点凉光

资源数:63个

目录CONTENTS

一、Unity3D 初识Shader (一)

在线预览PREVIEW

Unity3D 初识Shader (一)

Unity3D 初识Shader (一)

 我们都知道在unity中,Shader是担当着一个重要的角色,整个引擎的渲染是需要依靠Shader,今天小编就和大家一起来学习一下这个神奇的Shader吧!

    

    1.首先从意义上认识Shader:

          Shader(着色器)是一段能够针对3D对象进行操作,并被GPU所执行的程序;例如在一个3D场景中,一般会有多个的Shader,这些Shader中有的负责对3D对象进行表面的处理,有的负责对3D对象的纹理进行处理。


    2.在Unity中 Shader一般有三种类型:

       2.0 基本定义:

         2.0.0 Fixed Function Shader:(固定渲染管线着色器)基于用于高级Shader 在老显卡死无法显示的Fallback,可以使用ShaderLab语言;(固定渲染管线:就是功能固定的管线,比如物体表面光的折射,反射的算法是无法修改的,我们只能对这些功能进行配置,比如开启或关闭反射效果、雾化效果,然而这种管线功能固定,无法在程序上对物体细节的表现给予更多自由的控制)

         2.0.1 Vertex and Fragment Shader:最强大的Shader类型,属于可编程渲染管线,使用CG/HLSL语法;(可编程渲染管线:可以根据特定的需求实现更多自己想要的特效)

         2.0.2 Surface Shader:是现在unity中最常用的Shader类型,使用中预制的光照模型来进行光照运算,使用CG/HLSL语法;


        2.1 三种Shader类型的共同点:

          2.1.0 只有唯一一个根Shader 开始;

          2.1.1 Properties 参数部分、作用及语法是完全相同的;

          2.1.2 具体功能都在SubShader子着色器里面,并且Shader 会自上而下运行第一个硬件能支持的子着色器,主要是为了对不同硬件的适配;

          2.1.3 都可以打标签,例如 Tags{"RenderType"="Opaque"} LOD 300 

          2.1.4 都可以使用Fallback

          2.1.5 都可以处理基本功能,例如光照慢反射、镜面反射,当然Vertex and Fragment Shader 和Surface Shader都能实现Fixed Function Shader实现不了的高级功能,例如基于UV的计算效果;

       2.2 三种Shader类型的不同点:

           2.2.0 Fixed Function Shader 和 Vertex and Fragment Sahder 在SubShader  下面还有pass{},但是Surface  Shader 由于具体内容已经打包在光照模型,不能加pass{},否则会报错的;

           2.2.1 Fixed Function Shader 每句代码之后没有分号";",但是Vertex and Fragment Sahder和 Surface Shader 每句代码后必须要加";";

           2.2.2 代码结构不同

                Fixed Function Shader 中SubShader结构:

                Material{}

                ......

                SetTexture[_MainTex]{......}

                Vertex and Fragment Shader结构:

                CGPROGRAM

                #pragma vertex vert

                #pragram fragment frag

                ......

                #include "UnityCG.cginc"

                ENDCG

                Surface Shader 的结构:

                CGPROGRAM

                #pragma surface surf Lambert

                ......

                ENDCG

      3.认识Shader 开发的语言

         CG(Nvida 公司开发的c for graphics 计算机图形C语言超集):CG 程序可以根据运行时的需要或者事先编译成GPU汇编代码;

         HLSL(基于DirectX的High Level Shading Language):只能供微软Direct3D 以及XNA使用,移植性差;

         GLSL(基于OpenGL的OpenGL Shading Language):只能OpenGL使用,具有良好跨平台和移植性;

         ShaderLab(UnityShader):unity3d 上自带的一套Shader语言,核心顶点和片段程序是由CG/HLSL语言编写,可以对外提供一系列属性的输入接口(在UnityEditor材质Inspector 面板中用图形化方式设置属性和选择资源),输入的参数最终还是由CG/HLSL 程序来处理。

      4.谈谈Shader和Material 之间的关系

        我们都知道在unity中Shader和Material两者是紧密联系的,Shader 包含定义属性和资源使用种类的代码,Material 是调整属性和分配资源;

        再简单来说:Shader(着色器)是代码,可以定义输入的属性和资源;而材质需要关联一个着色器,并且通过材质Inspector面板,可以图形化的选择资源(如纹理)或者调整属性;

       Shader常用属性:

       2D: _MainTex("Base(RGB)",2D)=" White"{}  //定义2D纹理(2次方)属性,资源可以在材质里面选择,{}表示选择纹理属性

       Color:_Color("Main Color",Color)={1,1,1,1} //定义颜色属性,RGB+Alpha

       Range:_RangeValue("RangeValue",Range(0,1))=0.5 //定义一个浮点数属性

       Rect:_RectMap("Rect Map",Rect)=""{} //定义长方形(非2次方)纹理属性

       Cube:_CubeMap("Cube Map",Cube)=""{}  //定义立方体贴图纹理属性

       Float:_FloatValue("FloatValue",float)=100 //定义一个浮点数属性

       Vector:_VectorValue("VectorValue",vector)=(1,1,1,1) //定义一个四元素的容器属性

预览结束,完整教程请 购买下载
资源参数
    教程名称:Unity3D 初识Shader (一) 语       言:中文 页数/时长: 4页
    软件版本: unity 上传时间:2018/02/27 价格:¥0
    文件格式: docx 文件大小:15kb
下载

使用说明:

1. 本站所有资源(包括3D模型、CG教程、插件软件、材质贴图、工程文件等)由设计师上传,仅供学习、参考,请勿用于非法用途。

2. 本站付费类资源第一次需有偿下载,重复下载不再收费。

3. 若出现3d模型类资源打不开,请确认您的软件版本是否过低。

4. 本站欢迎设计师注册开店,上传作品进行交流、交易。

5. 如在使用过程中,遇到任何问题,请下拉页面至评论区留言,或咨询QQ:2353487910。

关键词: Shader

您还未登录

全部评论: 0