zoukankan      html  css  js  c++  java
  • Shader之ShaderUI使用方法

    shader中的宏定义在material中Inspector中打开

    Shader "Custom/Redify" {
    	Properties{
    		_MainTex("Base (RGB)", 2D) = "white" {}
    	}
    		SubShader{
    		Tags{ "RenderType" = "Opaque" }
    		LOD 200
    
    		CGPROGRAM
    #pragma surface surf Lambert addshadow
    #pragma shader_feature REDIFY_ON
    
    		sampler2D _MainTex;
    
    	struct Input {
    		float2 uv_MainTex;
    	};
    
    	void surf(Input IN, inout SurfaceOutput o) {
    		half4 c = tex2D(_MainTex, IN.uv_MainTex);
    		o.Albedo = c.rgb;
    		o.Alpha = c.a;
    
    #if REDIFY_ON//可通过Materal中的Inspetcor面板打开
    		o.Albedo.gb *= 0.5;
    #endif
    	}
    	ENDCG
    	}
    		CustomEditor "CustomShaderGUI"
    }
    

      

    using UnityEngine;
    using UnityEditor;
    using System;
    
    public class CustomShaderGUI : ShaderGUI
    {
        public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
        {
            // render the default gui
            base.OnGUI(materialEditor, properties);
    
            Material targetMat = materialEditor.target as Material;
    
            // see if redify is set, and show a checkbox
            bool redify = Array.IndexOf(targetMat.shaderKeywords, "REDIFY_ON") != -1;
            EditorGUI.BeginChangeCheck();
            redify = EditorGUILayout.Toggle("Redify material", redify);
            if (EditorGUI.EndChangeCheck())
            {
                // enable or disable the keyword based on checkbox
                if (redify)
                    targetMat.EnableKeyword("REDIFY_ON");
                else
                    targetMat.DisableKeyword("REDIFY_ON");
            }
        }
    }
    

      

  • 相关阅读:
    C++ 类 构造函数 constructor
    数据库——关系代数
    海明码
    C++ this指针
    C++ 类的定义与实现
    C++ 函数 内联函数
    C++ 函数 函数的重载 有默认参数的函数
    2017年第八届蓝桥杯【C++省赛B组】
    2018年第九届蓝桥杯【C++省赛B组】
    C++ 函数 参数传递方式
  • 原文地址:https://www.cnblogs.com/mttnor/p/9324117.html
Copyright © 2011-2022 走看看