Shader入门

来源:互联网 发布:松下fpxh编程样列 编辑:程序博客网 时间:2024/05/22 09:01

Shader 入门 ● 1

  • 什么是Shader?

    shader(着色器)是一款运行在GPU上的图像渲染程序。在Unity中 shader 被看做渲染过程,而Material则被看做为渲染结果。

    工作流程如下:

    Application Stage:

    3D Application or Game --> 3D API:OpenGL or Direct3D-->GPU Front End-->

    Geometry Stage:

    Vertex Shader-->Primitive Assembly-->Tessellation Shader-->Geometry Shader-->Clipping-->Screen Mapping-->

    Rasterizer Stage:

    Rasterization&Interpolation-->Fragment Shader-->Raster Operations-->Frame Buffer-->Screen-->

    对于新手入门而言,大概了解该流程,知道3D模型制作出来后的Mesh未经渲染过程为一个一个的点,点与点相互连接成线,变成一个个的三角形。如:这里写图片描述
    可见。而后将三角形计算上色渲染。这个简单的流程即可,上述步骤 此篇不作详述。
    Shader的语言支持三种:CG、HLSL、GLSL,其中CG的平台支持最广。

  • Shader的架构

shader的架构如下:

    Shader "name"{    Properties{    }    SubShader{        Pass{        }    }    }    }

其中”name”为Shader名,在Unity中可视为该shader的路径 一般为Path的形式。Properties中定义的是变量,Unity中为 Inspector中的属性列表。SubShader为运算块,同一个Shader可以有多个SubShader,但只会执行一个,第一个无法执行则执行下一个。Pass为通道,一般代码块放在此处。

  • SubShader 中的东西

模型:

SubShader{  [Tag]  [LOD]  [RenderSetup]  Pass{}}

1、Tag

SubShader的标签放在Pass外,可以不设,每个标签都有其默认值。常用标签有:
Queue(渲染次序,个人把它看做Depth深度,它的预设值为Background:1000、Geometry:2000、AlphaTest:2450、Overlay:4000,越近越先渲染,默认为Geometry)、ForceNoShadowCasting(是否投射阴影)、PreviewType(预设模型,可设为Plane、SkyBox等,预览显示)

2、LOD

LOD为”Levels of Detail”的简称,意为细节层次技术。LOD技术指根据物体模型的节点在显示环境中所处的位置与重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节数,从而获取高效率的渲染运算,可将其看为资源分配权重数。LOD存在范围、超过范围该SubShader不会被执行。作者只见过一种用法,即设立多个SubShader,每个SubShader的LOD大小不同,然后由外部程序改变最大值,shader.maximumLOD,达到不同max,物体渲染方式不同的效果。

0 0