美文网首页
Shader 学习之路-简述Shader常用语言(六)

Shader 学习之路-简述Shader常用语言(六)

作者: AnimeKing | 来源:发表于2019-04-21 00:37 被阅读0次

    1、Shader

    Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。

    Unity Shader 不等于真正的Shader,Unity Shader 实际上是指Shaderlab 文件,在硬盘上以.shader 为后缀的一种文件。

    2、传统 Shader 与 Unity Shader相比

    传统Shader:

    仅可以编写特定类型的Shader,如顶点着色器颜色、片元着色器等

    无法设一些渲染设置,如是否开启混合、深度测试

    需要设置着色器输入和输出,并注意对应关系

    Unity Shader:

    可以在同一文件内同时包含着色器和片元着色器的代码

    通过一行特定指令就可以完成设置

    需要在特定语句块中声明一些属性,也可以依靠材质修改这些属性,数据(顶点位置、 uv坐标、法线),也可以直接访问的方法

    3、Shader Lab

    Shader Lab 作为一种专门Unity Shader 服务语言,我们可以编写Shader Lab  来生成Unity Shader。

    4、着色器语言,作为中间语言(Intermediate Language),即交给CPU 可以理解的语言。

    Cg(C for Graphic)

    HLSL(High Level Shading Language)

    GLSL(OpenGL Shading Language)

    Cg/HLSL 实际是同一种语言(Microsoft 和NVIDIA合作)

    ShaderLab 内部可以嵌套 Cg/HLSL 语言编写着色器代码,需要嵌套在命令CGPROGRAM 和ENDCG 之间,代码如下:

    Pass

    {

    //Pass 的标签和状态设置

    CGPROGRAM

    //编译指令

    #pragma vertex vert

    #pragma fragment frag

    //CG 代码

    ENDCG

    //其他设置

    }

    相关文章

      网友评论

          本文标题:Shader 学习之路-简述Shader常用语言(六)

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