• Shader结构


    Shader "Custom/BasicDiffuse" {
    Properties
     {
      _EmissiveColor ("Emissive Color", Color) = (1,1,1,1)
      _AmbientColor  ("Ambient Color", Color) = (1,1,1,1)
      _MySliderValue ("This is a Slider", Range(0,10)) = 2.5
     } 
     
     SubShader
     {
      Tags { "RenderType"="Opaque" }
      LOD 200
     
      CGPROGRAM
     
      #pragma surface surf BasicDiffuse  
     
      float4 _EmissiveColor;  
      float4 _AmbientColor;
      float  _MySliderValue;
     
      inline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3 lightDir, fixed atten)
      {
       float difLight = max(0, dot (s.Normal, lightDir));  
       
       float4 col;
       col.rgb = s.Albedo * _LightColor0.rgb * (difLight * atten * 2);
       col.a = s.Alpha;
       return col;
      }
     
      struct Input
      {
       float2 uv_MainTex;
      };
     
      void surf (Input IN, inout SurfaceOutput o)
      {
       float4 c;
       c =  pow((_EmissiveColor + _AmbientColor), _MySliderValue);
       
       o.Albedo = c.rgb;
       o.Alpha = c.a;
      }
     
      ENDCG
     }
     
     FallBack "Diffuse"
     
    }
     
    1.SubShader表示针对不同显卡的实现
    2.Tags表示引擎如何认证这个SubShader
        Queue类型(指定渲染顺序队列)
            Background(1000)
            Geometry(2000)
            AlphaTest(2450)
            Transparent(3000)
            Overlay(4000)
            RenderType类型
        Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。
            Transparent:用于半透明着色器(透明着色器、粒子着色器、字体着色器、地形额外通道的着色器)。
            TransparentCutout: 蒙皮透明着色器(Transparent Cutout,两个通道的植被着色器)。
            Background: Skybox shaders. 天空盒着色器。
            Overlay: GUITexture, Halo, Flare shaders. 光晕着色器、闪光着色器。
            TreeOpaque: terrain engine tree bark. 地形引擎中的树皮。
            TreeTransparentCutout: terrain engine tree leaves. 地形引擎中的树叶。
            TreeBillboard: terrain engine billboarded trees. 地形引擎中的广告牌树。
            Grass: terrain engine grass. 地形引擎中的草。
            GrassBillboard: terrain engine billboarded grass. 地形引擎何中的广告牌草
     

    3.LOD 200 (Shader Level of Detail ),描述细节程度限制

    4.#pragma surface 告诉着色器将使用哪个光照模型来计算
    5.Properties块定义属性必须再声明一次才能使用  
    6.声明一个新的光照模型函数来创建新的光照模型,格式:Lighting<任何名字>
    7.点积是两个向量空间比较,返回(-1 1)。 1表示向量方向完全相反,-1表示向量方向完全一致,0垂直。
    8.Shader表现属性
        Albedo,是漫反射颜
        Normal,法线坐标
        Emission,自发光颜色
        Specular,镜面反射系数
        Gloss,控制光泽
        Alpha,控制透明
    9.如果用户所有的SubShader都失败了,Unity会通过FallBack调用自己预制的Shader实现。
     
  • 相关阅读:
    Mybatis之动态构建SQL语句(转)
    清理docker大日志文件
    删除一直处于deleting状态的数据卷
    kvm虚拟化平台搭建
    交换机的Access口与Trunk口
    linux命令tee用法
    openstack之镜像管理
    Sword redis存取二进制数据
    Sword STL迭代器prev,next相关函数
    C++ 拷贝构造函数之const关键字
  • 原文地址:https://www.cnblogs.com/JimmyCode/p/4580350.html
Copyright © 2020-2023  润新知