UnityShader 基础(2)-图像-添加一个自定义颜色并且正片叠底

本文介绍了在Unity中自定义Shader实现颜色相乘混合的效果,并展示了如何定义材质球菜单路径、属性和不同数据类型。通过Shader代码示例,解释了颜色混合原理以及如何使用滑块、颜色选择器等属性类型。此外,还提到了数据类型如float、half、int、fixed在Shader中的应用。
//定义材质球菜单路径位置与名称 Shader "CRLuo/CRLuo_Teaching01_ColorMultiply" { Properties { //定义面板属性,获取外部输入颜色 _Color("颜色",Color)=(1,0,0,1) _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag // make fog work #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; //自定定义颜色变量(如果名称与属性表中一致,获取外部属性值) fixed4 _Color; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex, i.uv); //把自定义颜色乘给颜色 col *=_Color; // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }
创建材质球
指向自定义Shader
使用效果
这里使用了相乘的方法完成了颜色混合。
混合的常用算法是 “+” 和 “*”,“+”对应灯光类发光物体,“*”对应油墨类,不发光物体。
第二个红框中新加了一个 颜色 Color类型属性。其余所有属性为:
Shader "CRLuo/CRLuo_Teaching02_AllAttribute"{ Properties{ //数据 _Int ("整型",Int)=0 _Float("浮点",Int)=0.1 _Range("滑块",Range(0.0,1.0))=0.5 _Color("颜色",Color)=(1,1,1,1) _Vector("四维数",Vector)=(0,0,0,1) //贴图 _2D ("2D贴图",2D)="white"{} _Cube ("环境球贴图",Cube)="white"{} _3D ("3D坐标系贴图",3D)="black"{} } //无定义时使用的备用Shader FallBack "Diffuse" }
使用结果:
定义数据时使用了 fixed(短浮点数)来定义颜色,因为颜色都是0~1的数据,节省显卡数据空间的开销。
所有数据类型
1、float,32位浮点数据
2、half,16位浮点数据
3、int,32位整形数据
4,fixed,12位浮点数
5、bool,布尔数据
6、sampler,纹理对象的句柄,分为sampler、sampler1D、sampler2D、sampler3D、samplerCUBE和samplerRECT。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值