Shader更新 Day0822

作者: 段然丶 | 来源:发表于2017-08-22 12:17 被阅读0次

    Mesh Filer与MeshRender与Material?

    答:(了解就行了)

    包含顺序:MeshRender->Material->Shader

    MeshFilter 组件存储一个网格(模型由哪些三角形组成,组成了什么样子)

    MeshRender 组件用来渲染模型的外观按照meshFilter给的mesh 来给她皮肤颜色

    MeshRender中的有一个属性:Material,Materials由贴图和shader构成

    Material:控制模型渲染的样子;

    Material下的一个属性:shader



    OpenGL与  DX   是什么   ?

    答:shader可以认为是一种渲染命令,用OpenGl和DX进行解析,从而渲染出图形使用CG(英伟达)语言来编写shader(以为CG的shader是跨平台的)

    在unity 中使用shaderLab 来编写Unity中的shader 


    shader分类?

    1.顶点/片段着色器 vertex/Fragmengt shader

    比表面着色器要复杂,但是质量好

    2.表面着色器  surface shader

    可以理解成对顶点片段着色器的一种封装,比顶点片段着色器要简单,它的设计初衷是为了让用户仅仅使用一些指令(#pragma)就可以完成很多事情,并且封装了很多常用的光照模型和函数。相比底层的Vertex And Fragment Shader,Suface Shader的限制比较多,它只能有一次Pass。如果做一些常规的功能又需要光照,可以用Surface Shader写,比较快速便捷。如果要写比较高级的Shader还是建议使用Vertex Shader 和 Fragment


    Unity创建shader?

    Creart->shader->Standard Surface Shader


    编写shader ,Unity 可以用Vs编写shader

    shader的结构

    Shader"Myshader/01myshader"{                //这里指定shader的名字

        Properties{              //属性

      //变量名(“变量显示在unity编辑器中的名子”,变量类型)=初始值

                       _Color("颜色",Color)=(1,1,1,1)

                         _Vector("Vector",Vector)=(1,2,3,4)

                       _Int("Int",Int)=3333

                         _Float("Float",Float)=4.5

                       _Range("Range",Range(1,11))=6

                         _2D("Texture",2D)="red"{}

                        _Cube("天空盒“,cube)=""{}

                         _3D("Texture",3D)="black"{}

        }

        //SubShader 可以写多个,显卡运行的时候第一个不行执行第二个

        SubShader{

                       //至少有一个Pass

                     Pass{

                    //在这里编写shader代码

                   CGPROGRAM

                    //使用CG语言编写shader代码

                     //重新定义Properties中的变量

                    float4  _Color;

                    float4  _Vector;

                    float  _Int;

                   float _Float;

                   float _Range;

                   sampler2D _2D;

                   samplerCube  _Cube;

                 sampler3D  _3D;

                ENDCG

                        } 

         }

        Fallback"VertexLit"// 备胎

    }

    总结:shader中属性Properties的类型有哪些?

    答:_Color("颜色",Color)=(1,1,1,1)

    _Vector("Vector",Vector)=(1,2,3,4)

    _Int("Int",Int)=3333

    _Float("Float",Float)=4.5

    _Range("Range",Range(1,11))=6

    _2D("Texture",2D)="red"{}

    _Cube("天空盒“,cube)=""{}

    相关文章

      网友评论

        本文标题:Shader更新 Day0822

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