/******************************************************************************/
/*
  Project   - MudBun
  Publisher - Long Bunny Labs
              http://LongBunnyLabs.com
  Author    - Ming-Lun "Allen" Chou
              http://AllenChou.net
*/
/******************************************************************************/

#ifndef MUDBUN_ALPHA_THRESHOLD
#define MUDBUN_ALPHA_THRESHOLD

#include "Assets/MudBun/Shader/Render/ShaderCommon.cginc"

void MudAlphaThreshold_float
(
  float2 ScreenPos, 
  UnityTexture2D DitherNoiseTexture, 
  float DitherNoiseTextureSize, 
  float AlphaIn, 
  float AlphaCutoutThreshold, 
  float Dithering, 
  out float AlphaOut, 
  out float AlphaThreshold
)
{
  float ditherThreshold = 0.0f;
  ditherThreshold = SAMPLE_TEXTURE2D(DitherNoiseTexture.tex, DitherNoiseTexture.samplerstate, ScreenPos / DitherNoiseTextureSize).r;
  ditherThreshold = 0.98f * (ditherThreshold - 0.5f) + 0.5f;

  AlphaOut = saturate(1.02f * (AlphaIn - 0.5f) + 0.5f);
  AlphaThreshold = lerp(AlphaCutoutThreshold, max(AlphaCutoutThreshold, ditherThreshold), Dithering);
}

#endif
