Shader - Pass (五)
来源:互联网 发布:数据挖掘工程师培训 编辑:程序博客网 时间:2024/06/05 16:33
Blending
当图像被渲染时,所有着色器被执行以后,所有贴图被应用后,像素将被写到屏幕。他们是如何通过Blend命令的控制和已有的图像合并呢?
Syntax 语法
- Blend Off: 关闭混合
- Blend SrcFactor DstFactor:配置并启动混合。产生的颜色被乘以SrcFactor. 已存在于屏幕的颜色乘以DstFactor,并且两者将被叠加在一起。
- Blend SrcFactor DstFactor, SrcFactorA DstFactorA:同上,但是使用不同的要素来混合alpha通道
- BlendOp Min | Max | Sub | RevSub:不是添加混合颜色在一起,而是对它们做不同的操作。
Properties 属性
以下所有属性对SrcFactor或DstFactor都可用。Source指的是被计算的颜色,Destination是已经在屏幕上的颜色。
- One:值为1,使用此设置来让源或是目标颜色完全的通过。
- Zero:值为0,使用此设置来删除源或目标值。
- SrcColor:此阶段的值是乘以源颜色的值。
- SrcAlpha:此阶段的值是乘以源alpha的值。
- DstColor:此阶段的值是乘以帧缓冲区源颜色的值。
- DstAlpha:此阶段的值是乘以帧缓冲区源alpha的值。
- OneMinusSrcColor:此阶段的值是乘以(1 - source color)。
- OneMinusSrcAlpha:此阶段的值是乘以(1 - source alpha)。
- OneMinusDstColor:此阶段的值是乘以(1 - destination color)。
- OneMinusDstAlpha:此阶段的值是乘以(1 - destination alpha)。
以下是最常见的混合类型:
- Blend SrcAlpha OneMinusSrcAlpha // Alpha blending
- Blend SrcAlpha OneMinusSrcAlpha // Alpha blending
- Blend One One // Additive
- Blend One OneMinusDstColor // Soft Additive
- Blend DstColor Zero // Multiplicative
- Blend DstColor SrcColor // 2x Multiplicative
Example 示例
这里是一个着色器的小例子,添加一个纹理,无论是否已在屏幕上:
Shader "Simple Additive" { Properties { _MainTex ("Texture to blend", 2D) = "black" {} } SubShader { Tags { "Queue" = "Transparent" } Pass { Blend One One SetTexture [_MainTex] { combine texture } } }}
更复杂的一个例子,玻璃。这是一个two-pass着色器:
第一个pass渲染光照、alpha混合纹理到屏幕上。Alpha通道决定的透明度。 第二个pass渲染在alpha混合窗口顶部一个反射立方体贴图,使用附加透明度。
Shader "Glass" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB) Transparency (A)", 2D) = "white" {} _Reflections ("Base (RGB) Gloss (A)", Cube) = "skybox" { TexGen CubeReflect } } SubShader { Tags { "Queue" = "Transparent" } Pass { Blend SrcAlpha OneMinusSrcAlpha Material { Diffuse [_Color] } Lighting On SetTexture [_MainTex] { combine texture * primary double, texture * primary } } Pass { Blend One One Material { Diffuse [_Color] } Lighting On SetTexture [_Reflections] { combine texture Matrix [_Reflection] } } }}
0 0
- Shader - Pass (五)
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Unity3D Shader官方教程翻译(五)----Shader语法:Pass
- Shader - Pass
- Unity之Shader Pass 的通用指令 LOD - 五
- Unity3d Shader(三) Pass
- Shader - Pass (一)
- Shader - Pass (二)
- Shader - Pass (二)
- Shader - Pass (三)
- Shader - Pass (四)
- Shader - Pass (六)
- shader总结五
- Unity3d Shader(三) Pass(Color, Material, Lighting )
- 部署项目,报Caused by: java.lang.NoClassDefFoundError: Lorg/hibernate/FlushMode错误
- 输出素数的代码优化
- TCP SOCKET服务器|客户端简单实现
- 算法导论 Exercises 9.3-9
- 你若珍惜
- Shader - Pass (五)
- 第二十三节 蓝牙协议栈之主机通讯
- C语言实现冒泡排序
- 算法导论学习笔记——桶排序
- 给师弟师妹们学习数据挖掘的一些建议
- Markdown编辑器写博客
- Java排序算法(十):桶式排序
- 134 Which three statements are true about persistent configuration? (Choose three.) A. A user cannot
- WordPress主题制作(6)-关于页面模板