当前位置:   article > 正文

unity_blend_unity blend

unity blend
  • blend:混合关键字,意在让当前片元计算出的源颜色与颜色缓冲区中已存在的颜色按照一定规矩进行混合。
  • unity官方文档:ShaderLab:混合 - Unity 手册

语法

Blend Off: 关闭混合(这是默认值

Blend SrcFactor DstFactor: 配置并启用混合。生成的颜色将乘以 SrcFactor。屏幕上的已有颜色乘以 DstFactor,然后将这两个值相加。

Blend SrcFactor DstFactor, SrcFactorA DstFactorA: 同上,但使用不同系数来混合 Alpha 通道。

BlendOp OP:不将混合颜色相加,而是对它们执行不同的操作。

BlendOp OpColor, OpAlpha:同上,但是对颜色 (RGB) 通道和 Alpha (A) 通道使用不同的混合操作。

此外,您还可以设置上层渲染目标混合模式。当使用多渲染目标 (MRT) 渲染时,上面的常规语法 将为所有渲染目标设置相同的混合模式。以下语法可以为各个渲染目标设置不同的混合模式,其中 N 是渲染目标索引(0 到 7)。此功能适用于大多数现代 API/GPU(DX11/12、GLCore、Metal 和 PS4):

  • Blend N SrcFactor DstFactor
  • Blend N SrcFactor DstFactor, SrcFactorA DstFactorA
  • BlendOp N Op
  • BlendOp N OpColor, OpAlpha
常用混合模式
Blend SrcAlpha OneMinusSrcAlpha传统透明度
Blend One OneMinusSrcAlpha预乘透明度
Blend One One 加法
Blend OneMinusDstColor One软加法
Blend DstColor Zero

乘法

Blend DstColor SrcColor2x 乘法


P2

Shader常用枚举类型

  1. Shader "MyShaders/EnumTest"
  2. {
  3. Properties
  4. {
  5. _MainTex ("Texture", 2D) = "white" {}
  6. [Header(Option)]
  7. [Space(5)]
  8. [Enum(UnityEngine.Rendering.BlendOp)] _BlendOp("BlendOp", Float) = 0
  9. [Enum(UnityEngine.Rendering.BlendMode)] _SrcMode("SrcMode", Float) = 1
  10. [Enum(UnityEngine.Rendering.BlendMode)] _DstMode("DstMode", Float) = 0
  11. [Enum(UnityEngine.Rendering.CullMode)] _CullMode("CullMode", Float) = 0
  12. [Enum(UnityEngine.Rendering.CompareFunction)] _ZTestMode("ZTestMode", Float) = 0
  13. [Enum(UnityEngine.Rendering.ColoWriteMask)] _ColorMask("ColorMask", Float) = 15
  14. //控制深度写入的比较特殊,可以用 Toggle 或者自定义的 Enum
  15. [Enum(off, 0, On, 1)] _ZWriteMode("ZWriteMode", Float) = 1
  16. [Header(Stencil)]
  17. [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp ("Stencil Comparison", Float) = 8
  18. [IntRange] _StencilWriteMask ("Stencil Write Mask", Range(0,255)) = 255
  19. [IntRange] _StencilReadMask ("Stencil Read Mask", Range(0,255)) = 255
  20. [IntRange] _Stencil ("Stencil ID", Range(0,255)) = 0
  21. [Enum(UnityEngine.Rendering.StencilOp)] _StencilPass ("Stencil Pass", Float) = 0
  22. [Enum(UnityEngine.Rendering.StencilOp)] _StencilFail ("Stencil Fail", Float) = 0
  23. [Enum(UnityEngine.Rendering.StencilOp)] _StencilZFail ("Stencil ZFail", Float) = 0
  24. }
  25. SubShader
  26. {
  27. Tags { "RenderType"="Opaque" }
  28. LOD 100
  29. Pass
  30. {
  31. BlendOp [_BlendOp]
  32. Blend [_SrcMode][_DstMode]
  33. ZTest [_ZTestMode]
  34. ZWrite [_ZWriteMode]
  35. Cull [_CullMode]
  36. ColorMask [_ColorMask]
  37. Ref [_Stencil]
  38. Comp [_StencilComp]
  39. ReadMask [_StencilReadMask]
  40. WriteMask [_StencilWriteMask]
  41. Pass [_StencilPass]
  42. Fail [_StencilFail]
  43. ZFail [_StencilZFail]
  44. ......
  45. }
  46. }
  47. Fallback Off
  48. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/96728
推荐阅读
相关标签
  

闽ICP备14008679号