• Unity3D shader脚本


    Unity中的shader脚本,是用叫做shaderlab的脚本语言来写。这个unity中的shader不只是DX中HLSL写的顶点和像素shader,而应该说是对应着
    DX中的Effect脚本,定义了一个完整渲染的状态。


    一个文件,只能包含一个unity的shader


    shader文件的内容:


    简单的一个shader的内容框架大致如下:
    shader "shader name"
    {


    properties
    {
    _Color("Diffuse Color", Color) = (1,.5,.5,1)
    _Texture("Main Texture", 2D) = ""{}
    }
    SubShader
    {
    Tags{"Queue"="Transparent"}
    pass
    {
    Tags{}
    Material{}


    }
    }
    Fallback ""
    }
    框架看上去非常简洁,大致的功能也从字面意思上面就可以理解。
    properties 中定义的变量,是可以暴露出来给编辑器编辑的,在unity编辑器中选中一个材质,材质中的shader里面定义在properties 
    中的变量就会出现该材质的属性面板中,可以手动设置对应的属性。其中,纹理属性后面,还有一些可选的属性可以设置,用于设置纹理的坐标,和其他一些属性。
    当使用顶点shader的时候,该属性标记的纹理坐标无效。




    一个SubShader相当于DX中的技术,一个shader中可以出现多个subshader。在引擎渲染物体的时候,会在shader中找到第一个可以匹配硬件的SubShader,用于渲染。
    如果一个都没有找到,则用 Fallback 中的shader来渲染物体。
    Tags 标记。SubShader 和 pass都有自己的标记。先来说说SubShader的Tags,这个Tags是用来告诉引擎该什么时候渲染该物体。一般在渲染引擎中,
    渲染物体顺序为 背景物体->不透明物体->透明物体->UI。Unity给了几个保留的关键字,Background, Geometry, Transparent,Overly.也就对应着背景,不透明,透明,UI。
    在内部,这几个关键字都对应着一个数值Background = 1000, Geometry = 2000, Transparent = 3000,Overly = 4000。所以,我们也可以把tag这样写:
    Tags{"Queue"="Geometry + 1"}
    这代表着该物体时在不透明物体渲染之后,透明物体渲染之前被渲染。

  • 相关阅读:
    【第36题】2019年OCP认证12C题库062考试最新考试原题
    004 基本命令 touch cp mv 命令
    003 基本指令 mkdir rm -rf(暴力删除)
    002 文件目录类的指令 cd ls
    001 指定运行级别
    005 抽象工厂模式
    006 使用类加载器加载资源文件
    004 方法反射
    003 属性反射
    003 工厂方法模式
  • 原文地址:https://www.cnblogs.com/xpvincent/p/3165159.html
Copyright © 2020-2023  润新知