天天看點

unity3d:shader貼圖局部改色相HSV+mask

美術mask圖規則

建築的部件id為1,2,3,依次類推

原圖

unity3d:shader貼圖局部改色相HSV+mask

mask圖,例如,mask為純黑色背景,色塊為要遮罩的區域。最多支援1個建築7個部件調整顔色

unity3d:shader貼圖局部改色相HSV+mask

合并後效果

unity3d:shader貼圖局部改色相HSV+mask

這幾個區域會根據色相改變

unity3d:shader貼圖局部改色相HSV+mask

部件ID對應maskrgb的色塊表

unity3d:shader貼圖局部改色相HSV+mask

shader流程

//HSV空間轉化
          half3 colorHSV = RGB2HSV(col);
          
          colorHSV.y *= _Saturability;
          colorHSV.z += _Lightness;

          half bias = 0.1;
          int maskIdx = (int)(step(bias, mask.b)
            + step(bias, mask.g) * 2
            + step(bias, mask.r) * 4);

          //colorHSV.x += GetHue(_listHue[maskIdx]);
          if (maskIdx == 0)
          {
            colorHSV.x += GetHue(_Hue0);
          }
          else if (maskIdx == 1)
          {
            colorHSV.x += GetHue(_Hue1);
          }      
//HSV空間轉化
          half3 colorRGB = HSV2RGB(colorHSV);
          fixed4 color = fixed4(colorRGB,col.a) * col.a;

          return fixed4(color.rgb,col.a);      

繼續閱讀