使用multi_compile编译Shader的多个版本



主要参考:

http://www.66acg.com/?post=81


一、新建一个Shader和一个Material


Shader "Custom/Multi_Compile" {
	SubShader {
		Pass {
		CGPROGRAM
		#pragma vertex vert
		#pragma fragment frag
		#pragma multi_compile MY_multi_1 MY_multi_2 //告诉Unity编译两个不同版本的Shader
		#include "UnityCG.cginc"
		struct vertOut {
			float4 pos:SV_POSITION;
		};
		vertOut vert(appdata_base v)
		{
			vertOut o;
			o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
			return o;
		}
		float4 frag(vertOut i):COLOR
		{
			float4 c = float4(0, 0, 0, 0);
			#ifdef MY_multi_1
			c = float4(0, 1, 0, 0);//输出绿色
			#endif
			#ifdef MY_multi_2
			c = float4(0, 0, 1, 0);//输出蓝色
			#endif
			return c;
		}
		ENDCG
		}
	} 
	FallBack "Diffuse"
}


二、新建个Cube, 挂上脚本Multi_Compile.cs


using UnityEngine;
using System.Collections;
 
public class Multi_Compile : MonoBehaviour {
 
	public bool multi_1;
	// Use this for initialization
	void Start () {
		if (multi_1) {
			Shader.EnableKeyword ("MY_multi_1");
			Shader.DisableKeyword ("MY_multi_2");
		} else {
			Shader.EnableKeyword ("MY_multi_2");
			Shader.DisableKeyword ("MY_multi_1");
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值