- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第08章透明融合与雾化11
第 8 章 透明融合与雾化效果
在D3D中,“混合”发生在像素着色器阶段的下一阶段,即Output Merger Stage。整个场景在全部经历过像素着色器阶段后,对应于屏幕上每一点像素,可能有多个图元(Fragment)。如下图所示:
该图中,场景中有三个点P1,P2,P3投影在屏幕上同一个点P。这样在像素着色器阶段后,针对P1,P2,P3将有三个图元与像素P对应。默认情况下,在渲染管线中,混合是被关闭的。这时为了确定像素P的最终显示颜色,主要依据是深度测试(这时暂不考虑模板测试等其他因素)。通过深度测试的图元将自身颜色替代后缓冲区中P点的当前颜色,未通过的图元被抛弃。
?????? 当混合功能被打开时,决定最终颜色的方法有所不同。当一个图元通过深度测试后,并不是直接取代后缓冲区中P点的当前颜色,而是通过一定的比例因子与之进行插值(混合),并将结果作为P点的当前值。当然,未通过深度测试的图元依然被抛弃。这个是“混合”的一种最简单例子。除此之外,D3D针对混合阶段有非常多的配置,从而实现各种特殊效果。
1. 混合方程
?????? 学习混合的第一步,就是要了解混合方程,计算alpha混合颜色的方程如下:
该方程针对每个像素逐一进行。方程左边的C为混合结果,右边Csrc(我们称为源颜色)和Cdst(我们称为目标颜色)分别为即将要绘制的图元颜色值和后缓冲区中该像素当前的颜色;Fsrc和Fdst分别是两个颜色对应的混合因子(通常赋值为表示半透明度的alpha值,也可以是属于枚举D3DBLEND的任意值,用来和Csrc相乘)。注意方程中的在这里为“分量相乘”(Componentwise multiplication),即针对颜色值中的R、G、B三种分量分别进行相乘。源颜色和目标颜色分别与相应的混合因子分量相乘后,将结果进行“op(混合操作)操作(缺少时,为D3DBLENDOP_ADD即相加运算),作为当前图元处理的最终颜色,并替换后缓冲区中该像素处的颜色。 图形显示中,对于alpha混合最普遍的使用方法是:把Fsrc赋值为D3DBLEND_SRCALPHA,即当前绘制像素的alpha值;把Fdst赋值为D3DBLEND_INVSRCALPHA,即1减去当前绘制像素的alpha值。
?????? 这样一来,计算公式等价与:
C=(Csrc×alphasrc)+(Cdst×(1-alphasrc))
2. 混合操作
针对上述公式中的混合操作”op,在D3D中定义在如下枚举类型中:
typedef enum _D3DBLENDOP?{
????D3DBLENDOP_ADD = 1,
????D3DBLENDOP_SUBTRACT = 2,
????D3DBLENDOP_REVSUBTRACT = 3,
????D3DBLENDOP_MIN = 4,
????D3DBLENDOP_MAX = 5,
????D3DBLENDOP_FORCE_DWORD = 0x7fffffff
} D3DBLENDOP;
我们省略各个变量的前缀D3DBLENDOP。
ADD表示相加操作,即;
SUBTRACT表示相关(目标-源),即;
REV_SUBTRACT表示反射的相关(源-目标),即;
MIN表示取源、目标颜色中较小值,即;
MAX表示取源、目标颜色中较大值,即。
注意:MIN和MAX操作与混合因子无关。
同样,所有这些操作也适合于计算Alpha值。3. 混合因子
针对方程中的混合因子F,在D3D中有如下几种:typedef enum _D3DBLEND?{
????D3DBLEND_ZERO = 1, 此外针对颜色混合,F为(0,0,0),针对alpha值,F为0。
????D3DBLEND_ONE = 2, 针对颜色混合为(1,1,1),针对alpha值为1;
????D3DBLEND_SRCCOLOR = 3, 针对颜色混合为(Rs,Gs, Bs),针对alpha值为As;
????D3DBLEND_INVSRCCOLOR = 4, 针对颜色混合为(1-Rs,1-Gs,1-Bs),针对alpha值为1-As;
????D3DBLEND_SRCALPHA = 5, 针对颜色混合为(As,As,As),针对alpha值为As;
????D3DBLEND_INVSRCALPHA = 6, 针对颜色混合为(1-As,1-As,1-As),针对alpha值为1-As
????D3DBLEND_DESTALPHA = 7, 针对颜色混合为(Ad,Ad,Ad),针对alpha值为Ad;
????D3DBLEND_INVDESTALPHA = 8, 针对颜色混合为(1-Rd,1-Rd,1-Rd),针对alpha值为1-Ad;
????D3DBLEND_DESTCO
您可能关注的文档
最近下载
- 老友记台词剧本第一季第1集中英双语左右对照.pdf VIP
- 2025年5月18日河南省事业单位联考《公共基础知识》试题及答案解析.pdf
- 2018年最新发布的ISO50001-2018能源管理体系标准条款中英文版..pdf VIP
- 中欧班列“齐鲁号”跨境物流供应链金融模式研究.pdf VIP
- 运动心理学PPT完整全套教学课件.pptx VIP
- 七年级历史数字故事——隋朝大运河课件.ppt VIP
- 旅游职业礼仪-全套PPT课件.pptx
- 2025人教版数学三年级上册全册教学课件.ppt
- 居民健康档案知识培训课件.pptx VIP
- 2025年秋季人教版7年级上册数学全册教学课件(新教材).pptx
文档评论(0)