当前位置:   article > 正文

Unity Shader(一)_unityshader 获得range的最大最小值

unityshader 获得range的最大最小值

初识 Shader

本篇介绍了在Unity中创建Shader的基本步骤,以及Shader的结构分析。
上篇连接(Shader基础篇)

0x00 概述


  1. 启动Unity并创建一个新项目: File>New Project
  2. 创建Shader:Project(也就是Asset栏中)>右键>creat>Shader>UnlitShader((顶点片元着色器),SurfaceShader(表面着色器)) >根据自己的需求编辑内容>保存。
  3. 创建材质并添加Shader

  • Project>右键>creat>Material
  • 选中刚创建的Material在Inspector里选着对应的shader
  • 将材质附加到游戏对象:

    物体要带有三角网格

    • 创建游戏物体:在Hierarchy>右键>GameObject>3D Object>任意选择。
    • 将材质附加到物体上有一下几种方式:
      • 1、在Hierarchy中选中物体,在Project中拖动material到Inspector面板中。
      • 2、在Project中拖动material到Scene中的物体上(如果找不到物体,在Hierarchy中选中,然后在Scene中移动鼠标(不要单击)后按“F”键)。


  • 整体步骤图(从左到右):

    0x01 结构分析

    一个Unity Shader的基本结构如下所示:

    `  
    Shader "Unlit/MyShader"
    {
     Properties
     {
        //属性
        _Name("Display Name",PropertyType)=DefaultValue
     }
     SubShader//子着色器
     {
    
        Tags { "RenderType"="Opaque" }
        LOD 100
    
        Pass
        {
            CGPROGRAM
            ....
            ENDCG
        }
     }
    }`  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    接下来逐个介绍一下。
    • Shader "Unlit/MyShader"{}

      MyShader是创建时候自己起的名字。 Unlit是Inspector选择shader类型时候当前shader所在的文件夹(可以自行修改),如图:


    • Properties
      {
      //属性
      _Name("Display Name",PropertyType)=DefaultValue
      }

      _Name: 属性名,在代码中使用该名获取该属性的内容。
      Display Name:在外部Inspector上显示的名称(后面会附图)
      PropertyType:属性的类型,如下表:

      属性类型例子详解
      Color_Color(“Color”,Color)=(1,1,1,1)颜色属性,由RGBA(红黄蓝透明)四个变量来定义
      Vector_Vector(“Vector”,Vector)=(2,3,5,1)四维向量(x,y,z,w)
      Cube_Cube(“Cube”,Cube)=”while”{}立方体纹理,简单说就是6张有联系的2D贴图的组合
      2D_2D(“2D”,2D)=”“{}一张2的阶数大小(256,512之类)的贴图。
      3D_3D(“3D”,3D)=”black”{}
      Int_Int(“Int”,Int)=2数字类型的属性,一个整数
      Float_Float(“Float”,Float)=1.5数字类型的属性,一个浮点数
      Range(min,mix)_Range(“Range”,Range(0.0,5.0))=3.0一个介于最小值和最大值之间的浮点数

      DefaultValue定义了这个属性的默认值。Color:以0~1定义的rgba颜色。比如(1,1,1,1)。2D,3D,Cube:可以是空字符窜或者是”white”,”black”,”gray”,”bump”中的一个。

    Tags标签,是一个键值对它的键和值都是字符串类型,Tags{“TagName”=”Valuel”“TagName2”=”Value2”}如下表:

    标签类型说明例子
    Queue控制渲染顺序,指定该物体属于哪一个渲染队列Tags{“Queue”=”Transparent”}
    RanderType对着色器进行分类Tags=”RanderType=”Opaque”
    DisableBatching通过该标签来直接证明是否对该SubShader使用批量处理Tags=”DisableBatching”=”True”
    ForceNoShadowCasting控制使用该SubShader的物体是否会投影Tags=”ForceNoShadowCasting”=”True”
    IgnoreProjector通常用于半透明物体Tags=”IgnoreProjector”=”True”
    CanUseSpriteAtlas当该SubShader是用于Sprites时,将该标签设为“false”Tags=”CanUseSpriteAtlas”=”True”
    PreviewType指明材质面板将如何预览该材质,默认情况下,材质将显示为一个球体。但我们可以自行设置Tags=”PreviewType”=”Plane”

    LOD: 这个数值决定了我们能用什么样的Shader
    Pass:Cg的代码片段都写在里面。

    整体如下所示:

    0x02 摘要

    本篇为Unity Shader篇的最基础篇。主要讲述如何去创建Shader,如何创建材质球并附加Shader到材质,如何创建游戏对象并将材质附加到游戏对象。Shader的结构分析,会持续更新,欢迎一起学习。随时欢迎各位大佬前来指教,提出意见!!!☺☺☺

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号