Shader最全 属性面板(UI显示)

  因为记不住,所以咱们都要学会做记录并做好注释,记得配合用法

枚举,最多可指定7个名称,自定义枚举,可以通过KeyWrod来控制

属性:

   

用法:

 

大家学习一定要多记录,方便以后遗忘了好翻出来看(熊猫老师就是这样的,很多东西记不住就翻出来再看看)。

上全代码:

    


// 熊猫悟道
Shader "XiongMaoWuDao/Texture01"
{
   //材质面板属性
    Properties
    {
         //内置枚举 混合模式
       [Enum (UnityEngine.Rendering.BlendOp)] _BlendOp("BlendOp",Float)=0
       [Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Float) = 1
       [Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Float) = 0
       
       /*深度开关
       ZWriteMode 是没有内置的,,实际上也只有on和off两个状态,所以用Toogle其实也可以,
       我这里是直接用[Enum(Off, 0, On, 1)]这样的写法声明了个新的自定义Enum  */
       [Enum(Off, 0, On, 1)]_ZWriteMode ("ZWriteMode", float) = 1
       //提出模式 off 开启双面  ,Front 剔除正面   Back 剔除正面
       [Enum(UnityEngine.Rendering.CullMode)]_CullMode ("CullMode", float) = 2
       // 深度测试
       [Enum(UnityEngine.Rendering.CompareFunction)]_ZTestMode ("ZTestMode", Float) = 4
     
       //自定义枚举
        [Enum(Alpha, 0, Add, 1)]_Blend ("ZWriteMode", float) = 1
         [Enum(R, 0, G, 1, B, 2)]_RGB ("ZWriteMode", float) = 1 
       
 
       /*  
        显示一个抬头名称 [Header( )]
        注意: 不支持汉字,数字和大部分符号。 
        在着色器属性之前窗前一个标题文本。   
      */          
       [Header(Stencil)]
       // 颜色通道写入遮罩 输出颜色通道
       /* 大麦用法 :  需要在 SubShader 里面写入  Blend SrcAlpha One
                                                 ColorMask  [_ColorMask]   */
       [Enum(UnityEngine.Rendering.ColorWriteMask)]_ColorMask ("ColorMask", Float) = 15   
        [Enum(UnityEngine.Rendering.CompareFunction)]_StencilComp ("Stencil Comparison", Float) = 8
        [Enum(UnityEngine.Rendering.StencilOp)]_StencilPass ("Stencil Pass", Float) = 0
        [Enum(UnityEngine.Rendering.StencilOp)]_StencilFail ("Stencil Fail", Float) = 0
        [Enum(UnityEngine.Rendering.StencilOp)]_StencilZFail ("Stencil ZFail", Float) = 0
        // 滑块
        [Header(Slider)]
        //IntRange  显示一个适用于 Range 着色器属性的整数滑动条,没有即是小数形式滑块
        [IntRange]_StencilWriteMask ("Stencil Write Mask", Range(0,255)) = 255
        [IntRange]_StencilReadMask ("Stencil Read Mask", Range(0,255)) = 255
        [IntRange]_Stencil ("Stencil ID", Range(0,255)) = 0
        /*
         显示一个具有对应于 Range 着色器属性的非线性响应的滑动条。意思就是,让Range滑杆更加方便调整细微的值。
         以[PowerSlider(1.0)]为分界,当值为1.0时,效果与range一致。当值<1.0时,值越大可调整的范围越大。
          当值>1.0时,值越小可调整的范围越大。可以更精细地在这些区间进行微调。
        */
        //总结 :PowerSlider值类似曲线的控制值,值越大,小值的范围越好调整,值越小,大值的可调整范围越大。
        [PowerSlider(3.0)] _Shininess ("Shininess", Range (0.01, 1)) = 0.08

        // 开关
       /*   
        以开关形式显示浮点值。属性值为 0 或 1,具体取决于开关状态。当开关处于打开状态时,
         将设置一个带有大写属性名称 +“_ON” 的着色器关键字,或者一个显式指定的着色器关键字。
       */
        [Header(Toggle)]
        [Toggle] _Toggle("Toggle", Float) = 0
        [MaterialToggle] _MaterialToggle("Material Toggle", Float) = 0
        
        
        [Header(KeywordEnum)]
        // 每个选项都将被设置 _OVERLAY_NONE, _OVERLAY_ADD, _OVERLAY_MULTIPLY shader keywords.
        // 配合multi_compile使用 每个名称都将 采用“属性名”+ 下划线 +“枚举名”这种形式的大写着色器关键字。最多可提供 9 个名称。
        // 注意大小写
        [KeywordEnum(None, Add, Multiply)] _Overlay ("Overlay mode", Float) = 0

        // 空间划分  在两个变量之间添加空白
        [Space] _Prop1 ("Prop1", Float) = 0
        [Space(50)] _Prop2 ("Prop2", Float) = 0


        [Header(Texture)]
        // 用来修饰贴图变量,在inspcetor 面板中不再显示该贴图的tilling/offset 属性
        [NoScaleOffset]_MainTex ("No Scale Offset", 2D) = "white" {}
        // 用来修饰贴图变量,该贴图必须是一个法线贴图
        [Normal]_NormalTex ("NormalTex", 2D) = "white" {}
        // 用来修饰贴图变量,该贴图必须是一个high-dynamic range(HDR)贴图
        [HDR]_HDRTex ("HDRTex", 2D) = "white" {}

    }
    SubShader
    {
        Tags { "RenderType"="Opaque" "RenderPipeline"="UniversalRenderPipeline" "Queue"="Geometry"}

       //注意用法
        Blend [_SrcBlend][DstBlend]
        BlendOp [_BlendOp]
        ZWrite [_ZWriteMode]
        ZTest [_ZTestMode]
        Cull [_CullMode]
        ColorMask [_ColorMask]
      

        Pass
        {
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            
            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

            struct Attributes
            {
                float4 positionOS   : POSITION;
                float2 uv           : TEXCOORD0;
            };

            struct Varyings
            {
                float2 uv           : TEXCOORD0;
                float4 positionHCS  : SV_POSITION;
            };

            TEXTURE2D(_BaseMap);
            SAMPLER(sampler_BaseMap);

            CBUFFER_START(UnityPerMaterial)
            float4 _BaseMap_ST;
            half4 _BaseColor;
            CBUFFER_END

            Varyings vert(Attributes IN)
            {
                Varyings OUT;
                OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);
                OUT.uv = TRANSFORM_TEX(IN.uv, _BaseMap);
                return OUT;
            }

            half4 frag(Varyings IN) : SV_Target
            {
                return SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, IN.uv) * _BaseColor;
            }
            ENDHLSL
        }
    }
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值