[UnityShader基础]06.#pragma multi_compile
参考链接:
https://blog.csdn.net/qq826364410/article/details/81774741
https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html
1.#pragma multi_compile MY_multi_1 MY_multi_2
定义了两个shader关键字,一个是MY_multi_1,另一个是MY_multi_2
MultiCompile.shader
Shader "Custom/MultiCompile"
{
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile MY_multi_1 MY_multi_2 #include "UnityCG.cginc" struct appdata
{
float4 vertex : POSITION;
}; struct v2f
{
float4 vertex : SV_POSITION;
}; v2f vert (appdata v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
return o;
} fixed4 frag (v2f i) : SV_Target
{
fixed4 col = fixed4(, , , );
#ifdef MY_multi_1
col = fixed4(, , , );
#endif
#ifdef MY_multi_2
col = fixed4(, , , );
#endif
return col;
}
ENDCG
}
}
}
测试如下,来回按下QW,即可以看到两种颜色的切换
using UnityEngine;
public class MultiCompile : MonoBehaviour {
void Update ()
{
if (Input.GetKeyDown(KeyCode.Q))
{
Shader.EnableKeyword("MY_multi_1");
Shader.DisableKeyword("MY_multi_2");
}
else if(Input.GetKeyDown(KeyCode.W))
{
Shader.EnableKeyword("MY_multi_2");
Shader.DisableKeyword("MY_multi_1");
}
}
}
2.#pragma multi_compile __ MY_multi_3
定义了一个shader关键字,MY_multi_3
MultiCompile2.shader
Shader "Custom/MultiCompile2"
{
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile __ MY_multi_3 #include "UnityCG.cginc" struct appdata
{
float4 vertex : POSITION;
}; struct v2f
{
float4 vertex : SV_POSITION;
}; v2f vert (appdata v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
return o;
} fixed4 frag (v2f i) : SV_Target
{
fixed4 col = fixed4(, , , );
#ifdef MY_multi_3
col = fixed4(, , , );
#endif
return col;
}
ENDCG
}
}
}
测试如下,来回按下ER,即可以看到两种颜色的切换
using UnityEngine;
public class MultiCompile2 : MonoBehaviour {
void Update ()
{
if (Input.GetKeyDown(KeyCode.E))
{
Shader.EnableKeyword("MY_multi_3");
}
else if (Input.GetKeyDown(KeyCode.R))
{
Shader.DisableKeyword("MY_multi_3");
}
}
}
[UnityShader基础]06.#pragma multi_compile的更多相关文章
- javaSE基础06
javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...
- javascript基础06
javascript基础06 splice var del_arr = del.splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返 ...
- [UnityShader基础]08.UI-Default.shader
参考链接: https://zhuanlan.zhihu.com/p/32561155 https://blog.csdn.net/WuShangLZ/article/details/80401441 ...
- [UnityShader基础]07.MaterialPropertyDrawer
参考链接: https://blog.csdn.net/e295166319/article/details/60141677 https://docs.unity3d.com/ScriptRefer ...
- Flask基础(06)-->视图常用逻辑
Flask基础(06)-->视图常用逻辑 返回json 重定向:url_for 自定义状态码 返回json:在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中 ...
- [UnityShader基础]03.透明度混合
如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "Ig ...
- PHP语言基础06 MySql By ACReaper
上篇介绍了如用PHP连接上MySql进行,并进行sql语句的执行.但是我们没有介绍,如何输出处理的结果,如何获得处理的结果. 这里要先说明Mysql有两种查询处理模式,一种是有缓冲的查询处理模式,一种 ...
- [UnityShader基础]05.模板测试
参考链接: https://blog.csdn.net/u011047171/article/details/46928463 https://blog.csdn.net/JohnBlu/articl ...
- [UnityShader基础]04.ColorMask
语法如下: ColorMask RGB | A | 0 | 其他R,G,B,A的组合 ColorMask R,意思是输出颜色中只有R通道会被写入 ColorMask 0,意思是不会输出任何颜色 默认值 ...
随机推荐
- SQL语句删除和添加外键、主键的方法
--删除外键 语法:alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter ...
- zoj 1649 bfs
Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M ...
- 渗透测试学习 三、Linux基础
Linux发行版本 内核+应用程序 打包在一起 一.优点: 完全免费 完全兼容POSIX 1.0标准 多用户,多任务 良好的界面 可靠安全稳定的性能 支持多种平台 丰富的网络功能 安全性更好(针对 ...
- Linux第二节课学习笔记
虚拟机不一定要安装12版本,但仅有12版本支持RHCE模拟考试环境,激活码可以百度. 在创建新的虚拟机过程中,安装客户机操作系统时需要选择稍后安装操作系统,否则会默认最小化安装导致后面课上很多命令不能 ...
- Python爬取今日头条段子
刚入门Python爬虫,试了下爬取今日头条官网中的段子,网址为https://www.toutiao.com/ch/essay_joke/源码比较简陋,如下: import requests impo ...
- edgedb 基本试用
环境准备 使用docker-compose 运行 docker-compose 文件 version: "3" services: db: image: edgedb/edgedb ...
- 手写SpringMVC实现
设计自己的MVC架构 1.读取配置通过web.xml中加载我们自己写的MyDispatcherServlet和读取配置文件. 2.初始化九大组件只需实现基本的:1).加载配置文件:2).扫描用户配置包 ...
- 【SQL触发器】类型 FOR 、AFTER、 Instead of
1.AFTER(for)触发器 (操作后) after触发器是指在操作成功后,所采取的一些动作! 比如:下面是我创建好的一个after触发器 creat trigger [dbo].[T_Carego ...
- vs2015 无法连接到已配置的开发web服务器
问题一:vs2015 无法连接到已配置的开发web服务器 最靠谱方法如下:(和防火墙开启无关联, 注册表增加什么键值无关联 , 缺失asp.net core.Dll文件无关联 ) 分析,因为前提是你的 ...
- JAVA 注解和反射
通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } ...