[UnityShader基础]07.MaterialPropertyDrawer
参考链接:
https://blog.csdn.net/e295166319/article/details/60141677
https://docs.unity3d.com/ScriptReference/MaterialPropertyDrawer.html
1.Toggle
a.[Toggle] _Invert ("Invert?", Float) = 0
勾选时,表示使shader关键字_INVERT_ON生效,关键字格式为:name_ON(全部大写)
取消勾选时,表示使对应的关键字失效
要注意的是,这个关键字是要去定义的,否则Toggle无效
Shader "Custom/TestMaterialProperty"
{
Properties
{
[Toggle] _Invert ("Invert?", Float) =
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile __ _INVERT_ON #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 _INVERT_ON
col = fixed4(, , , );
#endif
return col;
}
ENDCG
}
}
}
效果如下,来回勾选就可以看到颜色在切换了

b.[Toggle(ENABLE_FANCY)] _Fancy ("Fancy?", Float) = 0
勾选时,表示使shader关键字ENABLE_FANCY生效
取消勾选时,表示使对应的关键字失效
Shader "Custom/TestMaterialProperty"
{
Properties
{
[Toggle(ENABLE_FANCY)] _Fancy ("Fancy?", Float) =
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile __ ENABLE_FANCY #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 ENABLE_FANCY
col = fixed4(, , , );
#endif
return col;
}
ENDCG
}
}
}
2.KeywordEnum
[KeywordEnum(None, Add, Multiply)] _Overlay ("Overlay mode", Float) = 0
当选择None时,表示使shader关键字_OVERLAY_NONE生效,关键字格式为:属性名_枚举名(全部大写)
Shader "Custom/TestMaterialProperty"
{
Properties
{
[KeywordEnum(None, Add, Multiply)] _Overlay ("Overlay mode", Float) =
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _OVERLAY_NONE _OVERLAY_ADD _OVERLAY_MULTIPLY #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(, , , );
#if _OVERLAY_NONE
col = fixed4(, , , );
#elif _OVERLAY_ADD
col = fixed4(, , , );
#elif _OVERLAY_MULTIPLY
col = fixed4(, , , );
#endif
return col;
}
ENDCG
}
}
}
效果如下,选择不同的选项即显示不同的颜色

[UnityShader基础]07.MaterialPropertyDrawer的更多相关文章
- javaSE基础07
javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...
- javascript基础07
javascript基础07 1.节点 元素.childNodes : 属性 只读 属性 子节点列表集合 元素.childNodes 只包含子节点,不包含孙节点 DOM节点的类型有很多种,w3c标准有 ...
- python基础07 函数
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后 ...
- [UnityShader基础]03.透明度混合
如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "Ig ...
- C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法
连载目录 [已更新最新开发文章,点击查看详细] 介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的.但是在编译代码时,查询语法必须转换为针对 .NET ...
- Django基础07篇 ORM操作
1.新增(类似数据库操作的insert) # 新增 #方式一: models.Category.objects.create(name='MySQL') #方式二: c = models.Catego ...
- node基础07:写文件
1.writeFile //server.js var http = require("http"); var writefile = require("./writef ...
- php基础07:流程控制
<?php //1.PHP foreach循环只适用于数组,并用于遍历数组中的每个键/值对. $colors = array("red","green", ...
- MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)
事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...
随机推荐
- webpack打包和gulp打包工具详细教程
30分钟手把手教你学webpack实战 阅读目录 一:什么是webpack? 他有什么优点? 二:如何安装和配置 三:理解webpack加载器 四:理解less-loader加载器的使用 五:理解ba ...
- day1||python
测试题: 0. Python 是什么类型的语言? Python是一种面向对象.解释型.动态类型计算机程序设计语言解释型:程序无需编译成二进制代码,而是在执行时对语句一条一条编译动态类型:在程序执行过程 ...
- Mybatis:resultMap的使用总结
resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中. resultMap包含的元素: <!--column不做限制,可以为任意 ...
- MySQL和MySQL的注释方式
MySQL的注释方式 mysql 服务器支持如下几种注释方式: (1) # 到该行结束 # 这个注释直到该行结束 mysql> SELECT 1+1; (2)-- 到该行结束 ...
- 反向Ajax:WebSocket
郭晨 软件151 1531610114 WebSocket 在HTML5中出现的WebSocket是一种比Comet还要新的反向Ajax技术,WebSocket启用了双向的全双工通信信道,许多浏览器( ...
- 在windows上编译apr库
环境: win7_x64旗舰版.VS2015企业版.CMake3.8 一.下载apr相关库 1.1)expat下载地址:https://github.com/libexpat/libexpat/rel ...
- magento 1.9 nginx 404
原来的nginx 配置 lnmp 环境默认的 location ~ [^/]\.php(/|$) { fastcgi_param SCRIPT_FILENAME $document_root$fast ...
- jumpserver+Keepalived中一些配置
haproxy的配置 这里只代理了luna coco的2222端口暂时没代理.后期有需求再改造 (py3) [root@dawn-jump-2 /app]# cat /etc/haproxy/hapr ...
- [转]Python机器学习笔记 异常点检测算法——Isolation Forest
Isolation,意为孤立/隔离,是名词,其动词为isolate,forest是森林,合起来就是“孤立森林”了,也有叫“独异森林”,好像并没有统一的中文叫法.可能大家都习惯用其英文的名字isolat ...
- Ubuntu安装ssh 与samba
1.安装ssh服务 sudo apt-get install openssh-server 2.开启ssh(/etc/init.d文件夹) sudo service ssh start 2.安装sam ...