ブレンドモードの演算




左の画像(PA)に右の画像(PB)を合成する場合の計算式です。


  • 通常合成 / Normal Blend


RGB := (PB-PA)*TP + PA;

※TP = 透明度(0.00~1.00)


  • 乗算 / Multiply


 RGB := (PA * PB) SHR 8 ;


  • スクリーン / Screen


 RGB := 255 - ((255-PA)*(255-PB) SHR 8);


  • オーバーレイ / Overlay


 if (PA < 128) then
   RGB := (PA * PB) SHR 7;
 else
   RGB := 255 - ((255-PA)*(255-PB) SHR 7);


  • ソフトライト / SoftLight


 n   := PA * PB SHR 8;
 RGB := n + PB*(255-((255-PA)*(255-PB) SHR 8)-n) SHR 8;



  • ハードライト / HardLight


 if (PB<128) then
   RGB := (PA*PB) SHR 7
 else
   RGB := 255-((255-PB)*(255-PA) SHR 7);


  • 覆い焼き / Dodge


 if PB = 255 then
     RGB := 255
 else
   begin
     n := (PA SHL 8) DIV (255-PB);
     if n > 255 then 
       RGB := 255 
     else 
       RGB := n;
   end;


  • 焼き込み / Burn


 if PB = 0 then
   RGB := 0
 else 
   begin
     n := 255 - (((255-PA) SHL 8) DIV PB);
     if n < 0 then 
      RGB := 0 
     else 
      RGB := n;
   end;


  • 比較(暗) / Darkness


 if PA >= PB then
   RGB := PB
 else
   RGB := PA;


  • 比較(明) / Brightness


 if PA >= PB then
   RGB := PA
 else
   RGB := PB;


  • 差の絶対値 / Difference


 RGB := Abs (PA - PB);


  • 除外 / Exelusion


 RGB := PA+PB-(PA*PB SHR 7);


  • ソフト覆い焼き / SoftDodge


 if PA + PB < 256 then
   begin
     if PB = 255 then
       RGB := 255 
     else 
       begin
         n := (PA SHL 7) DIV (255-PB);
         if n > 255 then 
           RGB := 255 
         else 
           RGB := n; 
       end;
   end
 else 
   begin
     n := 255 - (((255-PB) SHL 7) DIV PA);
     if n < 0 then 
       RGB := 0 
     else 
       RGB := n;
   end;

  • ソフト焼き込み / SoftBurn


    if PA+PB < 256 then 
     begin
      if PA = 255 then 
        RGB := 255
      else 
        begin
          n := (PB SHL 7) DIV (255-PA);
          if n > 255 then 
            RGB := 255 
          else 
            RGB := n;
        end;
     end
   else 
     begin
      n := 255-(((255-PA) SHL 7) DIV PB);
      if n < 0 then 
        RGB := 0 
      else 
        RGB := n;
     end;

  • 色相 / Hue

  RGB := HLStoRGB(PB.H,PA.L,PA.S);

 ※HLS変換後、HueのみPBと差替

  • 彩度 / Saturation


  RGB := HLStoRGB(PA.H,PA.L,PB.S);

 ※HLS変換後、SaturationのみPBと差替


  • 論理積 / And


 RGB := PA And PB;


  • 論理和 / Or


 RGB := PA OR PB;


  • 排他的論理和 / Xor


 RGB := PA XOR PB;

参考リンク



最終更新:2007年01月05日 00:28