Shader面板上常用的内置Enum有哪些
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章给大家分享的是有关Shader面板上常用的内置Enum有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。今天打算把一个shad
千家信息网最后更新 2025年01月23日Shader面板上常用的内置Enum有哪些
本篇文章给大家分享的是有关Shader面板上常用的内置Enum有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
今天打算把一个shader的ZTest属性暴露在材质面板上让美术可以方便调节,因为也不是很重要的一个shader就懒得专门写一个UI了,按照ZTest关键字找半天没找到,最后发现原来叫CompareFunction。
所以顺便把shader里常用的一些都整理了一下,(另外发现现在也可以使用自定义的Enum了,印象中老版本的unity是不支持的,不知道是记错了还是unity后来支持了)
代码如下
Shader "Mya/EnumTest"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
[Header(Custom)]
[Enum(CustomEnum)] _CustomEnum ("CustomEnum", Float) = 1.0
[Header(Option)]
[Enum(UnityEngine.Rendering.BlendOp)] _BlendOp ("BlendOp", Float) = 1.0
[Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Float) = 1.0
[Enum(UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Float) = 0.0
[Enum(Off, 0, On, 1)]_ZWriteMode ("ZWriteMode", float) = 1
[Enum(UnityEngine.Rendering.CullMode)]_CullMode ("CullMode", float) = 2
[Enum(UnityEngine.Rendering.CompareFunction)]_ZTestMode ("ZTestMode", Float) = 2
[Enum(UnityEngine.Rendering.ColorWriteMask)]_ColorMask ("ColorMask", Float) = 2
[Header(Stencil)]
[Enum(UnityEngine.Rendering.CompareFunction)]_StencilComp ("Stencil Comparison", Float) = 8
[IntRange]_StencilWriteMask ("Stencil Write Mask", Range(0,255)) = 255
[IntRange]_StencilReadMask ("Stencil Read Mask", Range(0,255)) = 255
[IntRange]_Stencil ("Stencil ID", Range(0,255)) = 0
[Enum(UnityEngine.Rendering.StencilOp)]_StencilPass ("Stencil Pass", Float) = 0
[Enum(UnityEngine.Rendering.StencilOp)]_StencilFail ("Stencil Fail", Float) = 0
[Enum(UnityEngine.Rendering.StencilOp)]_StencilZFail ("Stencil ZFail", Float) = 0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
BlendOp [_BlendOp]
Blend [_SrcBlend] [_DstBlend]
ZWrite [_ZWriteMode]
ZTest [_ZTestMode]
Cull [_CullMode]
ColorMask [_ColorMask]
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
Pass [_StencilPass]
Fail [_StencilFail]
ZFail [_StencilZFail]
}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
return col;
}
ENDCG
}
}
}
自定义Enum的代码
public enum CustomEnum{ Enum1 = 0, Enum2 = 1, Enum3 = 2}
效果如下
ZWriteMode是没有内置的,实际上也只有on和off两个状态,所以用Toogle其实也可以,我这里是直接用[Enum(Off, 0, On, 1)]这样的写法声明了个新的自定义Enum
[IntRange]我记得以前好像也是没有的,这个可以绘制一个整形输入的滑杆
想要知道unity还有哪些shader里可以用的Attributes可以看看MaterialPropertyDrawer.cs这个文件,或者继承MaterialPropertyDrawer后自己写一个。
以上就是Shader面板上常用的内置Enum有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
常用
面板
代码
更多
知识
篇文章
支持
实用
重要
两个
关键
关键字
写法
印象
只有
实际
实际上
就是
属性
工作会
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
光网络技术考试试题
苏州冬青树软件开发
无源光纤网络技术概念
江西智能化网络技术推荐咨询
网络安全应急工作的要点
学计算机网络技术以后就业率好吗
网络安全含义包括什么
网络安全画图工具
vs sql软件开发教程
首届厦门青少年网络安全
99传奇服务器
金融交易软件开发系统
长沙软件开发官网
精益管理 软件开发
数据库asp怎么运行
手机软件开发英语
完美世界服务器安全吗
app软件开发制作
数据库查表中所有数据语句
sun服务器认不到硬盘
国外关于网络技术的app
西安软件开发培训学校要多久
无法给服务器取得安全连接
要素类 导入地理数据库失败
mdb数据库模板
java 把对象存到数据库
软件开发中的四个建模
3线城市做软件开发公司吗
局域网搭建ssl服务器
幼儿园网络安全内容包括