原文:http://blog.sina.com.cn/s/blog_471132920101d8z5.html

Alpha Blending,中文译作Alpha混合

Blending就是控制透明的。处于光栅化的最后阶段。

这里例如我们给一个模型贴一个材质,那么在某个点计算出来颜色值称为源,而该点之前累积的颜色值,叫目标。

语法

Blend Off     不混合

Blend SrcFactor DstFactor  SrcFactor是源系数,DstFactor是目标系数

最终颜色 = (Shader计算出的点颜色值 * 源系数)+(点累积颜色 * 目标系数)

属性(往SrcFactor,DstFactor 上填的值)

one                          1

zero                         0

SrcColor                         源的RGB值,例如(0.5,0.4,1)

SrcAlpha                         源的A值, 例如0.6

DstColor                   混合目标的RGB值例如(0.5,0.4,1)

DstAlpha                         混合目标的A值例如0.6

OneMinusSrcColor          (1,1,1) - SrcColor

OneMinusSrcAlpha          1- SrcAlpha

OneMinusDstColor          (1,1,1) - DstColor

OneMinusDstAlpha          1- DstAlpha

运算法则示例:

(注:r,g,b,a,x,y,z取值范围为[0,1])

(r,g,b) * a = (r*a , g*a , b*a)

(r,g,b) * (x,y,z) = (r*x , g*y , b*z)

(r,g,b) + (x,y,z) = (r+x , g+y , b+z)

(r,g,b) - (x,y,z)  = (r-x , g-y , b-z)

 在树叶使用的Shader中添加Blend代码

Blend zero one:仅显示背景的RGB部分,无Alpha透明通道处理。

Blend one  zero:  仅显示贴图的RGB部分,无Alpha透明通道处理。 A通道为0即本应该透明的地方也渲染出来了。

Blend one  one:贴图和背景叠加,无Alpha透明通道处理。仅仅是颜色rgb数值的叠加更趋近于白色即(1,1,1)了。

Blend SrcAlpha  zero:仅仅显示贴图,贴图含Alpha透明通道处理。但是贴图中的透明部分,即下图黑色部分没有颜色来显示,因为源颜色乘以alpha值0,为0;而混合目标的颜色乘以zero 0,也是0。所以透明部分显示的颜色为(0,0,0)

Blend SrcAlpha  OneMinusSrcAlpha:

最终颜色 = 源颜色 * 源透明值 + 目标颜色*(1 - 源透明值)

最常用的透明混合方式。贴图alpha值高的部分,显示得实,而混合的背景很淡。而alpha值高的部分,贴图显示得淡,而背景现实得实。

举例:

(1)假设贴图有一个不透明红色点, Color(1,0,0,1),该点背景色为不透明蓝色 Color(0,0,1,1)

最终颜色 =  (1,0,0)* 1+(0,0,1)*(1-1) = (1,0,0)

结论一:贴图alpha值为1时,仅显示贴图,不显示背景

(2)假设贴图有一个透明红色点, Color(1,0,0,0),该点背景色为透明,但B通道值为1,即Color(0,0,1,0)

最终颜色 =  (1,0,0)* 0+(0,0,1)*(1-0) = (0,0,1)

结论二:贴图alpha值为0时,仅显示混合目标即背景,不显示贴图

但是目标alpha值为0,即其实这个点的背景是透明的,而我们却把它显示出来了,这就不对了。

经验:带A通道的贴图中,空的地方不只A值为0,RGB值也要为0,不然容易出错。

(3)假设贴图有一个半透明红色点, Color(1,0,0,0.8),该点背景色为不透明蓝色 Color(0,0,1,1)

最终颜色 =  (1,0,0)* 0.8+(0,0,1)*(1-0.8) = (0.8,0,0.2)

而假如0.8变为0.2时,

最终颜色 =  (1,0,0)* 0.2+(0,0,1)*(1-0.2) = (0.2,0,0.8)

结论:贴图alpha值越大,颜色越偏向贴图;alpha值越小,颜色越偏向混合目标

Blend组合的情况就先讲这么多了,更多的组合需要自己去试去用,现在请再回过头看看第五讲的引言,是不是有一种恍然大悟的感觉呢?

【Unity Shader】Blend混合相关推荐

  1. Shader Blend混合效果

    1.Blend SrcAlpha OneMinusSrcAlpha 正常模式(透明度混合) 2.Blend OneMinusDstColor One 柔和相加(soft Additive) 3.Ble ...

  2. 【Unity Shader】实现透明度测试和透明度混合

    本篇开始将进行<入门精要>初级篇最后一部分的学习,完成透明效果的学习. 1 Unity中实现透明效果的方法 一个像素的RGBA参数中的最后一项A指的就是透明度Alpha.在之前的实践中,一 ...

  3. unity shader学习---透明度测试,透明度混合

    unity实现透明效果 效果图 理论 Alpha Test Alpha Blend 改进 开启深度写入的半透明效果 双面渲染的透明效果 代码部分 效果图 Alpha Test Alpha Test W ...

  4. Unity Shader 序列帧动画

    shader中的序列帧动画属于纹理动画中的一种,主要原理是将给定的纹理进行等分,再根据时间的变化循环播放等分中的一部分. Unity Shader 内置时间变量 名称 类型 描述 _Time floa ...

  5. Unity Shader 之 透明效果

    本文引用 Unity Shader入门精要 开启透明混合后,一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值外,还有--透明度.透明度为1,则完全不透明,透明度为0,则完全不会显示. 在Unity ...

  6. unity shader入门精要_Unity Shader 入门(一):渲染流水线

    一.参考与说明(需要写在开始东西): 1.1 Unity Shader 入门紧要学习 candycat1992/Unity_Shaders_Book​github.com 1.2 还有一些图形学的历史 ...

  7. 【Unity Shader】(六) ------ 复杂的光照(上)

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题.              [Unity Sha ...

  8. Unity Shader - Planar Shadow - 平面阴影

    文章目录 整体运行效果 思路 Shader 问题 Z-Fighting,解决:按法线方向偏移一丢丢 绘制 Alpha 混合重叠,解决:使用 stencil buffer 来规避 为何出现这个问题 解决 ...

  9. Unity Shader入门

    什么是Shader Shader(着色器)是一段能够针对3D对象进行操作.并被GPU所执行的程序.Shader并不是一个统一的标准,不同的图形接口的Shader并不相同.OpenGL的着色语言是GLS ...

  10. 如何用Unity Shader制作类似《炉石传说》卡牌的动态效果?

    此篇为鄙人在卡牌项目中,尝试模仿<炉石传说>卡面特效所制作的特效Shader总结回顾,几经修改,最终成为了现在的样子,因为使用简单,效果明显,虽然距离<炉石传说>的卡面特效还有 ...

最新文章

  1. 周志华教授发表首届国际学习与推理联合大会IJCLR开场Keynote:探索从纯学习到学习+推理的AI...
  2. 比特币的扩容问题:千军万马过独木桥!
  3. 逆序输出螺旋字符矩阵(三种方法)
  4. poi控制简单的word
  5. WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(二)安装IIS8.5...
  6. 各种Exit退出函数用法
  7. 处理ASP.NET Core中的HTML5客户端路由回退
  8. 简述垃圾对象产生_使用零垃圾创建数百万个对象
  9. 【完结】史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(四)
  10. Flash中textInput限定中英文字数
  11. webpack4入门笔记——loader
  12. 2018/4/7 Mybatis源码结构概览
  13. void指针(void*)用法
  14. 构建自定义的同步工具
  15. SQL不能以实例名连接问题处理
  16. iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】
  17. 复合函数求导经典例题_导数--复合函数的导数练习题
  18. 【Mac实用技巧】Mac如何修复YouTube视频黑屏现象?
  19. Redis持久化策略AOF、RDB详解及源码分析
  20. 滴滴巨亏背后,打江山容易,守江山难?

热门文章

  1. WordPress 6.2 “Dolphy 海豚”
  2. python代码写父亲节快乐_父爱如山,深情似海——你的代码像诗一样
  3. BOF、FV、VLAD算法浅析
  4. 一个舞台剧的小剧本, 希望能博得大家的一笑
  5. dialog组件的封装
  6. 解决报错:Unable to process Jar entry [org/springframework/jmx/export/annotation/*****]
  7. 这几种游戏配音教程分享给你
  8. (转)CEvent,CSemaphore,CCriticalSection,CMutex
  9. 让自己更值钱,电子工程师可以这么做!
  10. 分类问题的几个评价指标(Precision、Recall、F1-Score、Micro-F1、Macro-F1)