当前位置:   article > 正文

Shader混合模式--正片叠底、滤色、叠加_unity 正片叠底 shader

unity 正片叠底 shader

叠加在书本168页。


Shader "Custom/BlendMode_Effect" {

Properties {
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Blendtex("Blend Texture",2D) = "white"{}
_Opacity("Blend Opacity",Range(0,1)) = 1
}
SubShader {
Pass
{
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform sampler2D _BlendTex;
fixed _Opacity;


fixed4 frag(v2f_img i) : COLOR
{
fixed4 renderTex = tex2D(_MainTex,i.uv);
fixed4 blendTex= tex2D(_BlendTex,i.uv);

//fixed4 blendedMultiply = renderTex * blendTex;
fixed4 blendedScreen = (1.0 - ((1.0 - renderTex) * (1.0 - blendTex)));//这里是颜色计算核心
renderTex= lerp(renderTex,blendedScreen,_Opacity);
return renderTex;
}
ENDCG



}

}


  1. fixed OverlayBlendMode(fixed basePixel, fixed blendPixel) {
  2. if (basePixel < 0.5) {
  3. return (2.0 * basePixel * blendPixel);
  4. } else {
  5. return (1.0 - 2.0 * (1.0 - basePixel) * (1.0 - blendPixel));
  6. }
  7. }

  1. fixed4 frag(v2f_img i) : COLOR {
  2. //Get the colors from the RenderTexture and the uv's
  3. //from the v2f_img struct
  4. fixed4 renderTex = tex2D(_MainTex, i.uv);
  5. fixed4 blendTex = tex2D(_BlendTex, i.uv);
  6. fixed4 blendedImage = renderTex;
  7. blendedImage.r = OverlayBlendMode(renderTex.r, blendTex.r);
  8. blendedImage.g = OverlayBlendMode(renderTex.g, blendTex.g);
  9. blendedImage.b = OverlayBlendMode(renderTex.b, blendTex.b);
  10. // Adjust amount of Blend Mode with a lerp
  11. renderTex = lerp(renderTex, blendedImage, _Opacity);
  12. return renderTex;
  13. }

叠加模式的算法



知识补习


这里增加一个内容,就是对各种混合模式的理解。


正片叠底(Multiply)和滤色(Screen)


正片叠底(Multiply)和滤色(Screen)是两种基本的混合模式,分别用于使图片变暗和变亮。它们之间的组合还可以形成更复杂的混合模式,如叠加(Overlay)和柔光(Soft Light)。


正片叠底 —— 就是把两层图像的像素相乘,最后会得到一个更暗的图像。这个模式是对称的,也就是说交换基色和混合色得到的结果是一样的。


,其中a是基色,b是混合色。


滤色 —— 首先把两层图像的像素值取互补数,然后将它们相乘,最后再去互补数。这和正片叠底得到的结果是相反的。它会得到一个更亮的图像。

,其中a是基色,b是混合色。


叠加 —— 结合了正片叠底和滤色两种混合模式。基色中亮色的部分会更加亮,而暗色的部分会更暗。

,其中a是基色,b是混合色。


更多信息:http://blog.csdn.net/candycat1992/article/details/39343309


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

闽ICP备14008679号