zoukankan      html  css  js  c++  java
  • Shader的自定义特性使用

    使用自定义特性关键字,可以动态对Shader某一部分代码进行开关操作

    shader(定义了KEYWORD1特性):

    定义:#pragma shader_feature KEYWORD1

    判断:#ifdef KEYWORD1

    Shader "Custom/NewSurfaceShader" {
        Properties {
            _Color ("Color", Color) = (1,1,1,1)
            _MainTex ("Albedo (RGB)", 2D) = "white" {}
            _Glossiness ("Smoothness", Range(0,1)) = 0.5
            _Metallic ("Metallic", Range(0,1)) = 0.0
        }
        SubShader {
            Tags { "RenderType"="Opaque" }
            LOD 200
            
            CGPROGRAM
            // Physically based Standard lighting model, and enable shadows on all light types
            #pragma surface surf Standard fullforwardshadows
    
            // Use shader model 3.0 target, to get nicer looking lighting
            #pragma target 3.0
    
            #pragma shader_feature KEYWORD1
    
            sampler2D _MainTex;
    
            struct Input {
                float2 uv_MainTex;
            };
    
            half _Glossiness;
            half _Metallic;
            fixed4 _Color;
    
            void surf (Input IN, inout SurfaceOutputStandard o) {
                // Albedo comes from a texture tinted by color
                fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
    #ifdef KEYWORD1
                o.Albedo = float3(0,0,0);
    #else
                o.Albedo = float3(1,1,1);
    #endif
                // Metallic and smoothness come from slider variables
                o.Metallic = _Metallic;
                o.Smoothness = _Glossiness;
                o.Alpha = c.a;
            }
            ENDCG
        }
        FallBack "Diffuse"
    }

    脚本:

    using UnityEngine;
    using System.Collections;
    
    public class ShaderKeywordTest : MonoBehaviour
    {
        public Material mat;
    
    
        void OnEnable()
        {
            mat.EnableKeyword("KEYWORD1");
        }
    
        void OnDisable()
        {
            mat.DisableKeyword("KEYWORD1");
        }
    }

    测试效果如下:

  • 相关阅读:
    HDU 1288 Hat's Tea
    一二三 湖南第七届省赛
    报数游戏 湖南省第七届省赛
    FZOJ--2221-- RunningMan 福建第六届省赛
    Problem 2214 Knapsack problem 福建第六届省赛
    FZU 2212 Super Mobile Charger 第六届福建省赛
    FZU 2213 Common Tangents 第六届福建省赛
    1002: Prime Path
    wampserver apache2.4.9允许外网访问
    SCU 4438 字符串哈希
  • 原文地址:https://www.cnblogs.com/hont/p/5933540.html
Copyright © 2011-2022 走看看