赞
踩
内容说明: 1.混合(blend)说明 2.在OpenGL中的使用 3. Unity中的使用 1. 什么是混合 混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。 假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将要绘制上去的红色和原来的绿色进行混合,于是得到一种新的颜色,看上去就好像玻璃是半透明的。 2. 在OpenGL中使用Blend 2.1 初始化说明 要使用OpenGL的混合功能,只需要调用:glEnable(GL_BLEND);即可。 要关闭OpenGL的混合功能,只需要调用:glDisable(GL_BLEND);即可。 注意:只有在RGBA模式下,才可以使用混合功能,颜色索引模式下是无法使用混合功能的。 混合需要把原来的颜色和将要画上去的颜色找出来,经过某种方式处理后得到一种新的颜色。这里把将要画上去的颜色称为“源颜色”,把原来的颜色称为“目标颜色”。 2.2 公式说明 数学公式来表达一下这个运算方式。 假设源颜色的四个分量(指红色,绿色,蓝色,alpha值)是 (Rs, Gs, Bs, As), 目标颜色的四个分量是(Rd, Gd, Bd, Ad), 又设源因子为(Sr, Sg, Sb, Sa), 目标因子为 (Dr, Dg, Db, Da)。 则混合产生的新颜色可以表示为:
如果颜色的某一分量超过了1.0,则它会被自动截取为1.0,不需要考虑越界的问题。 2.3 在OpenGL中的使用 选择源混合因子和目标混合因子的方式: 第一种方式是调用函数glBlendFunc(),并指定两个混合因子, 其中第一个参数为源RGBA的混合因子, 第二个参数为目标RGBA的混合因子. 第二种方法是调用glBlendFuncSeparate()并指定4个混合因子, 这样可以用不同的方式来混合RGB和alpha值 第二种方式就不在说了,说下第一种当时中的混合因子的枚举表:
3. unity中的说明 3.1 unity中混合简介 混合常用在透明物体渲染中。如下图说明:PipelineBlend.png (26.19 KB, 下载次数: 49) 2016-11-16 17:29 上传 在所有着色器执行完毕,所有纹理都被应用,所有像素准备被呈现到屏幕之后,使用Blend命令来操作这些像素进行混合。 3.2 blend的语法 BlendOff:关闭blend混合(默认值) BlendSrcFactor DstFactor :配置并启动混合。产生的颜色被乘以SrcFactor. 已存在于屏幕的颜色乘以DstFactor,并且两者将被叠加在一起。 BlendSrcFactor DstFactor, SrcFactorA DstFactorA:同上,但是使用不同的要素来混合alpha通道 BlendOpBlendOpValue:不是添加混合颜色在一起,而是对它们做不同的操作。 BlendOpOpColor, OpAlpha:同上,但是使用不同的操作来处理alpha通道 AlphaToMaskOn:里面新添加的,常用在开启多重渲染(MSAA)的地表植被的渲染。 Unity中的混合因子(和OpenGL的差不多):
混合的操作符(Blend operations)
下列是最经常使用的混合类型 Blend SrcAlpha OneMinusSrcAlpha // Alphablending alpha混合 Blend One One // Additive 相加混合 Blend One OneMinusDstColor // Soft Additive柔和相加混合 Blend DstColor Zero // Multiplicative 相乘混合 BlendDstColor SrcColor // 2x Multiplicative 2倍相乘混合 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。