【Unity Shader】4.Unity Shader基本知识学习(混合 Blending )
2016-12-09 23:39
711 查看
1.Blending 的基本概念
我们先来看一张图片:图片来自网络截图,由图可知,混合操作最常见的用途便是用来制作透明物体、进行纹理的混合,它是Shader渲染的最后一步。
混合操作有两个对象:源和目标,因此也有两个对应的因子,即源因子和目标因子
2.语法
Blend off 关闭混合 Blend SrcFactor DstFactor 这个也就是上面混合操作中介绍的源和目标,这个操作的作用就是配置和启用混合,生成的颜色乘以 DstFactor ,已在屏幕上的颜色乘以DstFactor然后再两者想加 Blend SrcFactorA DstFactorA 混合Alpha通道 BlendOp Add|Min|Sub|RevSub 此操作不是Blend操作一样添加混合颜色在一起,而是对它们做不同的操作。
BlendOp参数:
Add 将源像素和目标像素相加. Min 取目标像素和源像素颜色的较小者作为结果 Max 取目标像素和源像素颜色的较大者作为结果 Sub 用源像素减去目标像素 RevSub 用目标像素减去源像素
Blend 参数:
One 值为1 用它可使远颜色或者目标颜色完全显示出来 Zero 值为0 用它可删除远颜色或者目标颜色 SrcColor 这个阶段的值乘以源颜色 SrcAlpha 这个阶段的值乘以源Alpha值 DstColor 这个阶段的值乘以帧缓存源颜色值 DstAlpha 这个阶段的值乘以帧缓存源Alpha值 OneMinusSrcColor 这个阶段的值乘以(1-源颜色之间的值) OneMinusSrcAlpha 这个阶段的值乘以(1 -帧缓冲区源颜色Alpha分量的值) OneMinusDstColor 这个阶段的值乘以(1 –目标颜色值) OneMinusDstAlpha 这个阶段的值乘以(1 –目标Alpha分量的值)
常见的混合类型:
Blend SrcAlpha OneMInusSrcAlpha //Alpha混合 Blend one one //相加
实战:
我们在unity中创建一个plane和一个cube ,将cube置于plane下面我们从上往下看的时候是看不到cube的:
进行Blend操作后的效果
Blend one one //两个都显示出来
再来看一个:
Blend zero one //只显示下面的Cube
shader代码:
Shader "Custom/BlendTest" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _Glossiness ("Smoothness", Range(0,1)) = 0.5 _Metallic ("Metallic", Range(0,1)) = 0.0 } SubShader { Tags { "Queue" = "Transparent" "RenderType"="Opaque" } LOD 200 Blend zero one CGPROGRAM // Physically based Standard lighting model, and enable shadows on all light types #pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting #pragma target 3.0 sampler2D _MainTex; struct Input { float2 uv_MainTex; }; half _Glossiness; half _Metallic; fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) { // Albedo comes from a texture tinted by color fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; // Metallic and smoothness come from slider variables o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
本篇到此为止,若有不对,欢迎指教。。谢谢大家
相关文章推荐
- Unity Shader 学习笔记(十一) 混合纹理Shader实例
- 【Unity Shader】1.Unity的基本Shader框架学习(颜色,光照,材质)
- unity shader 之 CG(C for graphics) 入门(1)——CG基本知识
- OpenGL入门学习[九] OpenGL混合的基本知识
- UnityShader入门精要学习笔记(二):数学知识
- WPF学习笔记--基本知识
- [C++学习]基本知识
- JSP基本知识学习
- 关于OpenGL混合的基本知识
- 学习CEGUI基本知识
- 存储过程学习笔记三---T-SQL基本知识
- xpath基本知识学习
- 基本知识学习:时钟周期 机器周期 总线周期 指令周期
- 学习ASP.NET需求的基本的c#知识(转帖+已修改)
- RPG学习笔记(基本知识了解)
- 网球的学习要点-基本知识正手击球
- 学习贯穿Oracle的25条基本知识
- java基本知识学习
- 学习ASP.NET需求的基本的c#知识
- 关于OpenGL混合的基本知识