当前位置: 首页 > news >正文

建设银行指定网站动漫设计和动画设计

建设银行指定网站,动漫设计和动画设计,gif动图素材网站,网站百度秒收文章目录 AlphaBlend细节AlphaPremultiply普通的AlphaBlendAlpha-Premultiply SoftAddition引用 AlphaBlend细节 https://www.khronos.org/opengl/wiki/Blending Alpha Blend 的计算只有一种形式,而且可以分别针对RGB和Alpha单独给出Blend的模式,对Alp…

文章目录

  • AlphaBlend细节
  • AlphaPremultiply
    • 普通的AlphaBlend
    • Alpha-Premultiply
  • SoftAddition
  • 引用

AlphaBlend细节

https://www.khronos.org/opengl/wiki/Blending

Alpha Blend 的计算只有一种形式,而且可以分别针对RGB和Alpha单独给出Blend的模式,对AlphaBlend总共需要4个参数
* Orgb = srgb * Srgb + drgb * Drgb
* Oa = sa * Sa + da * Da

The same goes for the two subtraction equations. This separates the RGB component computation from the alpha computation. So there are 4 possible blending parameters.

 void glBlendFuncSeparate(GLenum srcRGB​, GLenum dstRGB​, GLenum srcAlpha​, GLenum dstAlpha​)

The srcRGB​ value specifies the srgb parameter. dstRGB​ specifies drgb. srcAlpha​ is for sa, while dstAlpha​ specifies da.

AlphaPremultiply

If the result is the same, why bother with pre-multiplied alpha? The reason is texture filtering. When you take samples from a texture, unless you have disabled texture filtering, the hardware is blending neighboring texels together and returning a weighted average as a result.

在纹理点采样的情况下,普通的AlphaBlend跟AlphaPremultiply是一样的。关键就在对纹理filter的时候,只有AlphaPremultiply才能得到正确的结果。

普通的AlphaBlend

普通AlphaBlend的形式是,这同时也被称为 post-multipled alpha,但是它会导致错误的颜色
DestinationColor.rgb = (SourceColor.rgb * SourceColor.a) + (DestinationColor.rgb * (1 - SourceColor.a));

给定一张2个像素的纹理图
2x1-rg-post

图1. 左边是一个像素Alpha为1的红色(1,0,0,1),右边是一个像素Alpha为0.1的绿色(0,1,0,0.1)

如果这个时候,我们想计算这个2x1纹理的下一级mip的1x1纹理,那么我们使用普通的AlphaBlend就会得到

在这里插入图片描述

图2. RGBA=(0.5, 0.5, 0, 0.55)

通过图1和图2的比较,我们可以看到当我们计算mip的时候,结果就完全不对了。如果我们使用普通的AlphaBlend做图片想相乘的时候得到如图3所示结果。

(a) 正常的mandrill.png
(b) mandrill与2x1的图通过相乘Blend得到
(c) mandrill与普通AlphaBlend计算得mip的1x1的图通过相乘Blend得到

Alpha-Premultiply

https://developer.nvidia.com/content/alpha-blending-pre-or-not-pre


在 Alpha-premultiply 下,我们首先要输入纹理的 rgb 与它的 alpha 乘到一块儿,并把 SourceColor.a 变成 1 。

DestinationColor.rgb = (SourceColor.rgb * One) + (DestinationColor.rgb * (1 - SourceColor.a));

2x1-rg-pre.png

图3.准备做alpha-premultiply的2x1像素的纹理,左边(1, 0, 0, 1),右边(0, 0.1, 0, 0.1)

在这里插入图片描述

图4.通过alpha-premultiply计算得到的1x1像素的mip纹理,RGBA=(0.5, 0.05, 0, 0.55)

如果我们使用普通的AlphaBlend做图片想相乘的时候得到如图所示结果。

(a) 正常的mandrill.png
(b) mandrill与2x1的图通过相乘Blend得到
(c) mandrill与Alpha Premultiplied计算得mip的1x1的图通过相乘Blend得到

所以我们看到,只要做了filtering,那么只有Alpha Premultiplied才能得到正确的表现效果。

SoftAddition

在游戏中,如果我们需要把UI单独的绘制到一个RenderTexture上,再把这个RenderTexture作为一个半透明的纹理绘制到Backbuffer中,那么就需要关注这个临时的RenderTexture的Alpha值了。

正常的AlphaBlend流程,我们不需要关注Backbuffer的Alpha到底是怎么样的值,因为这个Alpha根本不会参与任何运算。但是如果需要使用到这一Alpha值的时候,就需要确保这个Alpha值的区间是[0,1]。

那么一个可行的Alpha的Blend模式就是

Blend x x, OneMinusDstAlpha One

这样可以保证Alpha值的区间

引用

[1] https://www.khronos.org/opengl/wiki/Blending

[2]https://developer.nvidia.com/content/alpha-blending-pre-or-not-pre

http://www.yayakq.cn/news/899854/

相关文章:

  • 网站需要服务器吗?青岛设计优化公司
  • 网站建设需要什么东西网站再就业培训班
  • 山东烟台城乡建设学校官方网站如何自建网站服务器
  • 山西常见网站建设推荐优化网站的建设主题
  • 需要做网站设计的公司网站建设app下载
  • 大型电子商务网站开发架构广州注册公司地址怎么解决
  • 创建公司网站的方案有济宁优化公司
  • 网站引导页怎么做.全光网络架构图
  • 徐州网站建设优化宣传厦门网站关键词推广
  • wordpress外贸网站模板免费咨询服务合同模板下载
  • 网站建设做的人多吗html5网站引导页模板
  • 贵安新区住房和城乡建设厅网站网站备案要先怎么做
  • 网站的信息管理建设的必要性网站 用什么数据库
  • 做链接的网站网站业务员好做吗
  • 做网站用语言亚马逊产品开发流程8个步骤
  • wap 网站模板定制网站制作哪家好
  • 东莞市建设工程质量监督网站外贸 wordpress英文
  • 网站建设运营公众号运营合同网站建设哪家好?看这里
  • 河北做网站的好看的html页面
  • 交互式网站appwordpress 网站关键词设置
  • 福州php做网站注册了域名怎样做网站
  • 信阳企业网站开发好的手机网站建设公司
  • 山西网站建设免费咨询广西工程建设质量安全管理协会网站
  • 安丘网站制作网站建设设计
  • 哪些网站做简历合适有什么做户外活动的网站吗
  • 印刷厂网站源码《基层建设》在哪个网站收录的
  • 哪个网站做头像比较好电商平台运营
  • 临淄做网站搭建三合一网站
  • 怎么做网站管理系统网站维护收费
  • 用cms做个网站广州建筑公司网站