#switch UV_ANIM
#switch ZFEATHER
#switch DTEX

#ifdef UV_ANIM
    #define UV_ANIM_SUFFIX "_ua"
#else
    #define UV_ANIM_SUFFIX ""
#endif

#ifdef ZFEATHER
    #define ZFEATHER_SUFFIX "_zfeather"
#else
    #define ZFEATHER_SUFFIX ""
#endif

#ifdef DTEX
    #define DTEX_SUFFIX "_dtex"
#else
    #define DTEX_SUFFIX ""
#endif

#filename "distortion_scale" + UV_ANIM_SUFFIX + ZFEATHER_SUFFIX + DTEX_SUFFIX + ".tech"

#set VERTEX_SHADER "\"" + "distortion_scale" + UV_ANIM_SUFFIX + ZFEATHER_SUFFIX + DTEX_SUFFIX + ".hlsl" + "\""
#set PIXEL_SHADER "\"" + "distortion" + ZFEATHER_SUFFIX + ".hlsl" + "\""

{
  stateMap "default";

  vertexShader 3.0 VERTEX_SHADER
  {
    worldViewProjectionMatrix = constant.transposeWorldViewProjectionMatrix;
#ifdef UV_ANIM
    uvAnimParms = material.uvAnimParms;
#endif
    distortionScale = material.distortionScale;
  }

  pixelShader 3.0 PIXEL_SHADER
  {
    normalMapSampler = material.colorMap;
    colorMapSampler = sampler.resolvedPostSun;
#ifdef ZFEATHER
    floatZSampler = sampler.floatZ;
#endif
  }

  vertex.position = code.position;
  vertex.color[0] = code.color;
  vertex.texcoord[0] = code.texcoord[0];
  vertex.normal = code.normal;
  vertex.texcoord[1] = code.tangent;
}