【Unity Shader】4.Unity Shader基本知识学习(混合 Blending )
来源:互联网 发布:条码数据采集系统 编辑:程序博客网 时间:2024/06/05 00:14
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"}
本篇到此为止,若有不对,欢迎指教。。谢谢大家
0 0
- 【Unity Shader】4.Unity Shader基本知识学习(混合 Blending )
- Unity Shader Alpha混合 Blending
- Unity Shader之Blending
- 【Unity Shader】2.Unity Shader基本知识学习(渲染序列 )
- 【Unity Shader】3.Unity Shader基本知识学习(剔除 & 深度测试 )
- 【Unity Shader】Blend混合
- Unity Shader 学习笔记(十一) 混合纹理Shader实例
- unity shader的一些基本知识
- Unity shader学习资料
- Unity Shader 学习开发
- Unity Shader 效果学习
- Unity Shader 学习
- unity shader 学习一
- unity shader 学习记录
- unity shader学习参考文献
- unity shader
- Unity Shader
- Unity-Shader
- debian 常见问题
- 进程与线程
- 【51nod】1011 最大公约数GCD - 辗转相除法
- Appium在IOS的应用
- 访问权限控制
- 【Unity Shader】4.Unity Shader基本知识学习(混合 Blending )
- IOS学习(十四)城市级联操作(两个tabview)
- strstr函数的实现
- 数据库中冗余字段的作用
- 第二章-用户需求分析
- 记录一个问题
- C3P0的三种配置方式以及基本配置项详解
- 集合框架---ArrayList中去除重复的方法
- Android 7.0源码编译