Unity教程合集Unity Shader分享

Shader更新 Day0822

2017-08-22  本文已影响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)=""{}

上一篇下一篇

猜你喜欢

热点阅读