多媒体和建模Unity Shader分享

Unity Shader学习—入门知识点总结一

2017-11-07  本文已影响72人  一个有味道的名字

关于 unity shader 的入门知识点网上还是有很多的,那这里进行一下简单的总结,当然只是对语法结构上的总结。

shader,也叫着色器,是GPU渲染管线中的一部分,只是这部分是可编程的,也就是可以通过编程进行控制。

而在unity中进行的shader编写与传统意义上的shader还是有一些不同的,因为unity相当于做了一层封装,我们需要按照unity给定的语法结构进行shader编写,如果直接像是OpenGL或者Direct3D那样编写是行不通的。

当然,这里只对unity shader进行总结,OpenGL与Direct3D可以自行百度。

OK,对于unity shader而言,更准确的说是unityshaderlab,其有两种常用的结构:

可能有的朋友还听说过固定渲染管线shader,这是一种已经被弃用的shader,但是在一些老式的显卡上还是有这样的shader的。这里不做过多的介绍。

那么,我们来看一下关于shader的语法结构:

Paste_Image.png

整个shader,大致可以分为两个部分:

OK,下面是Shader的语法:

Shader "name"{
      Properties{
        ....
      }
      SubShader{
        Tags{...}
        [CommonState]
        Pass{
            //也可以有Tags{}
            CGPROGRAM
            ...
            ENCG
          }
       // Fallback "name"
      }
}

大致的语法结构就是这样。
解释一下:

关于shader的输入:

至于能在shader中定义的属性,有如下几种:

Paste_Image.png

下面介绍一些关于SubShader中的知识点:

Paste_Image.png
  1. RenderType
    渲染模式,其实它主要是用在处理camera特效上的,ShaderPeplacement是会用到渲染模式的。通常情况下,我们也就会在当渲染透明物体时用 "RenderType"="Transparent",在渲染不透明物体时用"RenderType"="Opaque"。

  2. IgnoreProjector
    忽略投影,在一些特效上,可能需要忽略投影所造成的效果。
    更多关于Tags的内容

OK,第一部分就先介绍到这里。

上一篇 下一篇

猜你喜欢

热点阅读