bug/tint/949.wgsl:326:29 warning: 'textureSample' must only be called from uniform control flow
    let x_397 : vec4<f32> = textureSample(TextureSamplerTexture, TextureSamplerSampler, (x_394 + x_395));
                            ^^^^^^^^^^^^^

bug/tint/949.wgsl:330:5 note: control flow depends on non-uniform value
    if ((x_400 > x_401)) {
    ^^

bug/tint/949.wgsl:308:27 note: reading from module-scope private variable 'v_output2' may result in a non-uniform value
  let x_366 : vec4<f32> = v_output2;
                          ^^^^^^^^^

struct lightingInfo {
  float3 diffuse;
  float3 specular;
};

static float u_Float = 0.0f;
static float3 u_Color = float3(0.0f, 0.0f, 0.0f);
Texture2D<float4> TextureSamplerTexture : register(t1, space2);
SamplerState TextureSamplerSampler : register(s0, space2);
static float2 vMainuv = float2(0.0f, 0.0f);
cbuffer cbuffer_x_269 : register(b6, space2) {
  uint4 x_269[11];
};
static float4 v_output1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
static bool gl_FrontFacing = false;
static float2 v_uv = float2(0.0f, 0.0f);
static float4 v_output2 = float4(0.0f, 0.0f, 0.0f, 0.0f);
Texture2D<float4> TextureSampler1Texture : register(t3, space2);
SamplerState TextureSampler1Sampler : register(s2, space2);
cbuffer cbuffer_light0 : register(b5, space0) {
  uint4 light0[6];
};
static float4 glFragColor = float4(0.0f, 0.0f, 0.0f, 0.0f);
SamplerState bumpSamplerSampler : register(s4, space2);
Texture2D<float4> bumpSamplerTexture : register(t5, space2);

float3x3 cotangent_frame_vf3_vf3_vf2_vf2_(inout float3 normal_1, inout float3 p, inout float2 uv, inout float2 tangentSpaceParams) {
  float3 dp1 = float3(0.0f, 0.0f, 0.0f);
  float3 dp2 = float3(0.0f, 0.0f, 0.0f);
  float2 duv1 = float2(0.0f, 0.0f);
  float2 duv2 = float2(0.0f, 0.0f);
  float3 dp2perp = float3(0.0f, 0.0f, 0.0f);
  float3 dp1perp = float3(0.0f, 0.0f, 0.0f);
  float3 tangent = float3(0.0f, 0.0f, 0.0f);
  float3 bitangent = float3(0.0f, 0.0f, 0.0f);
  float invmax = 0.0f;
  const float3 x_133 = p;
  dp1 = ddx(x_133);
  const float3 x_136 = p;
  dp2 = ddy(x_136);
  const float2 x_139 = uv;
  duv1 = ddx(x_139);
  const float2 x_142 = uv;
  duv2 = ddy(x_142);
  const float3 x_145 = dp2;
  const float3 x_146 = normal_1;
  dp2perp = cross(x_145, x_146);
  const float3 x_149 = normal_1;
  const float3 x_150 = dp1;
  dp1perp = cross(x_149, x_150);
  const float3 x_153 = dp2perp;
  const float x_155 = duv1.x;
  const float3 x_157 = dp1perp;
  const float x_159 = duv2.x;
  tangent = ((x_153 * x_155) + (x_157 * x_159));
  const float3 x_163 = dp2perp;
  const float x_165 = duv1.y;
  const float3 x_167 = dp1perp;
  const float x_169 = duv2.y;
  bitangent = ((x_163 * x_165) + (x_167 * x_169));
  const float x_173 = tangentSpaceParams.x;
  const float3 x_174 = tangent;
  tangent = (x_174 * x_173);
  const float x_177 = tangentSpaceParams.y;
  const float3 x_178 = bitangent;
  bitangent = (x_178 * x_177);
  const float3 x_181 = tangent;
  const float3 x_182 = tangent;
  const float3 x_184 = bitangent;
  const float3 x_185 = bitangent;
  invmax = rsqrt(max(dot(x_181, x_182), dot(x_184, x_185)));
  const float3 x_189 = tangent;
  const float x_190 = invmax;
  const float3 x_191 = (x_189 * x_190);
  const float3 x_192 = bitangent;
  const float x_193 = invmax;
  const float3 x_194 = (x_192 * x_193);
  const float3 x_195 = normal_1;
  return float3x3(float3(x_191.x, x_191.y, x_191.z), float3(x_194.x, x_194.y, x_194.z), float3(x_195.x, x_195.y, x_195.z));
}

float3x3 transposeMat3_mf33_(inout float3x3 inMatrix) {
  float3 i0 = float3(0.0f, 0.0f, 0.0f);
  float3 i1 = float3(0.0f, 0.0f, 0.0f);
  float3 i2 = float3(0.0f, 0.0f, 0.0f);
  float3x3 outMatrix = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  const float3 x_60 = inMatrix[0];
  i0 = x_60;
  const float3 x_64 = inMatrix[1];
  i1 = x_64;
  const float3 x_68 = inMatrix[2];
  i2 = x_68;
  const float x_73 = i0.x;
  const float x_75 = i1.x;
  const float x_77 = i2.x;
  const float3 x_78 = float3(x_73, x_75, x_77);
  const float x_81 = i0.y;
  const float x_83 = i1.y;
  const float x_85 = i2.y;
  const float3 x_86 = float3(x_81, x_83, x_85);
  const float x_89 = i0.z;
  const float x_91 = i1.z;
  const float x_93 = i2.z;
  const float3 x_94 = float3(x_89, x_91, x_93);
  outMatrix = float3x3(float3(x_78.x, x_78.y, x_78.z), float3(x_86.x, x_86.y, x_86.z), float3(x_94.x, x_94.y, x_94.z));
  const float3x3 x_110 = outMatrix;
  return x_110;
}

float3 perturbNormalBase_mf33_vf3_f1_(inout float3x3 cotangentFrame, inout float3 normal, inout float scale) {
  const float3x3 x_113 = cotangentFrame;
  const float3 x_114 = normal;
  return normalize(mul(x_114, x_113));
}

float3 perturbNormal_mf33_vf3_f1_(inout float3x3 cotangentFrame_1, inout float3 textureSample, inout float scale_1) {
  float3x3 param = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  float3 param_1 = float3(0.0f, 0.0f, 0.0f);
  float param_2 = 0.0f;
  const float3 x_119 = textureSample;
  const float3x3 x_125 = cotangentFrame_1;
  param = x_125;
  param_1 = ((x_119 * 2.0f) - (1.0f).xxx);
  const float x_128 = scale_1;
  param_2 = x_128;
  const float3 x_129 = perturbNormalBase_mf33_vf3_f1_(param, param_1, param_2);
  return x_129;
}

lightingInfo computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(inout float3 viewDirectionW, inout float3 vNormal, inout float4 lightData, inout float3 diffuseColor, inout float3 specularColor, inout float3 groundColor, inout float glossiness) {
  float ndl = 0.0f;
  lightingInfo result = (lightingInfo)0;
  float3 angleW = float3(0.0f, 0.0f, 0.0f);
  float specComp = 0.0f;
  const float3 x_212 = vNormal;
  const float4 x_213 = lightData;
  ndl = ((dot(x_212, float3(x_213.x, x_213.y, x_213.z)) * 0.5f) + 0.5f);
  const float3 x_220 = groundColor;
  const float3 x_221 = diffuseColor;
  const float x_222 = ndl;
  result.diffuse = lerp(x_220, x_221, float3(x_222, x_222, x_222));
  const float3 x_227 = viewDirectionW;
  const float4 x_228 = lightData;
  angleW = normalize((x_227 + float3(x_228.x, x_228.y, x_228.z)));
  const float3 x_233 = vNormal;
  const float3 x_234 = angleW;
  specComp = max(0.0f, dot(x_233, x_234));
  const float x_237 = specComp;
  const float x_238 = glossiness;
  specComp = pow(x_237, max(1.0f, x_238));
  const float x_241 = specComp;
  const float3 x_242 = specularColor;
  result.specular = (x_242 * x_241);
  const lightingInfo x_245 = result;
  return x_245;
}

void main_1() {
  float4 tempTextureRead = float4(0.0f, 0.0f, 0.0f, 0.0f);
  float3 rgb = float3(0.0f, 0.0f, 0.0f);
  float3 output5 = float3(0.0f, 0.0f, 0.0f);
  float4 output4 = float4(0.0f, 0.0f, 0.0f, 0.0f);
  float2 uvOffset = float2(0.0f, 0.0f);
  float normalScale = 0.0f;
  float2 TBNUV = float2(0.0f, 0.0f);
  float2 x_299 = float2(0.0f, 0.0f);
  float3x3 TBN = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  float3 param_3 = float3(0.0f, 0.0f, 0.0f);
  float3 param_4 = float3(0.0f, 0.0f, 0.0f);
  float2 param_5 = float2(0.0f, 0.0f);
  float2 param_6 = float2(0.0f, 0.0f);
  float3x3 invTBN = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  float3x3 param_7 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  float parallaxLimit = 0.0f;
  float2 vOffsetDir = float2(0.0f, 0.0f);
  float2 vMaxOffset = float2(0.0f, 0.0f);
  float numSamples = 0.0f;
  float stepSize = 0.0f;
  float currRayHeight = 0.0f;
  float2 vCurrOffset = float2(0.0f, 0.0f);
  float2 vLastOffset = float2(0.0f, 0.0f);
  float lastSampledHeight = 0.0f;
  float currSampledHeight = 0.0f;
  int i = 0;
  float delta1 = 0.0f;
  float delta2 = 0.0f;
  float ratio = 0.0f;
  float2 parallaxOcclusion_0 = float2(0.0f, 0.0f);
  float3x3 param_8 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  float3 param_9 = float3(0.0f, 0.0f, 0.0f);
  float param_10 = 0.0f;
  float2 output6 = float2(0.0f, 0.0f);
  float4 tempTextureRead1 = float4(0.0f, 0.0f, 0.0f, 0.0f);
  float3 rgb1 = float3(0.0f, 0.0f, 0.0f);
  float3 viewDirectionW_1 = float3(0.0f, 0.0f, 0.0f);
  float shadow = 0.0f;
  float glossiness_1 = 0.0f;
  float3 diffuseBase = float3(0.0f, 0.0f, 0.0f);
  float3 specularBase = float3(0.0f, 0.0f, 0.0f);
  float3 normalW = float3(0.0f, 0.0f, 0.0f);
  lightingInfo info = (lightingInfo)0;
  float3 param_11 = float3(0.0f, 0.0f, 0.0f);
  float3 param_12 = float3(0.0f, 0.0f, 0.0f);
  float4 param_13 = float4(0.0f, 0.0f, 0.0f, 0.0f);
  float3 param_14 = float3(0.0f, 0.0f, 0.0f);
  float3 param_15 = float3(0.0f, 0.0f, 0.0f);
  float3 param_16 = float3(0.0f, 0.0f, 0.0f);
  float param_17 = 0.0f;
  float3 diffuseOutput = float3(0.0f, 0.0f, 0.0f);
  float3 specularOutput = float3(0.0f, 0.0f, 0.0f);
  float3 output3 = float3(0.0f, 0.0f, 0.0f);
  u_Float = 100.0f;
  u_Color = (0.5f).xxx;
  const float2 x_261 = vMainuv;
  const float4 x_262 = TextureSamplerTexture.Sample(TextureSamplerSampler, x_261);
  tempTextureRead = x_262;
  const float4 x_264 = tempTextureRead;
  const float x_273 = asfloat(x_269[10].x);
  rgb = (float3(x_264.x, x_264.y, x_264.z) * x_273);
  const float3 x_279 = asfloat(x_269[9].xyz);
  const float4 x_282 = v_output1;
  output5 = normalize((x_279 - float3(x_282.x, x_282.y, x_282.z)));
  output4 = (0.0f).xxxx;
  uvOffset = (0.0f).xx;
  const float x_292 = asfloat(x_269[8].x);
  normalScale = (1.0f / x_292);
  const bool x_298 = gl_FrontFacing;
  if (x_298) {
    const float2 x_303 = v_uv;
    x_299 = x_303;
  } else {
    const float2 x_305 = v_uv;
    x_299 = -(x_305);
  }
  const float2 x_307 = x_299;
  TBNUV = x_307;
  const float4 x_310 = v_output2;
  const float x_312 = normalScale;
  param_3 = (float3(x_310.x, x_310.y, x_310.z) * x_312);
  const float4 x_317 = v_output1;
  param_4 = float3(x_317.x, x_317.y, x_317.z);
  const float2 x_320 = TBNUV;
  param_5 = x_320;
  const float2 x_324 = asfloat(x_269[10].zw);
  param_6 = x_324;
  const float3x3 x_325 = cotangent_frame_vf3_vf3_vf2_vf2_(param_3, param_4, param_5, param_6);
  TBN = x_325;
  const float3x3 x_328 = TBN;
  param_7 = x_328;
  const float3x3 x_329 = transposeMat3_mf33_(param_7);
  invTBN = x_329;
  const float3x3 x_331 = invTBN;
  const float3 x_332 = output5;
  const float3 x_334 = mul(-(x_332), x_331);
  const float3x3 x_337 = invTBN;
  const float3 x_338 = output5;
  parallaxLimit = (length(float2(x_334.x, x_334.y)) / mul(-(x_338), x_337).z);
  const float x_345 = asfloat(x_269[9].w);
  const float x_346 = parallaxLimit;
  parallaxLimit = (x_346 * x_345);
  const float3x3 x_349 = invTBN;
  const float3 x_350 = output5;
  const float3 x_352 = mul(-(x_350), x_349);
  vOffsetDir = normalize(float2(x_352.x, x_352.y));
  const float2 x_356 = vOffsetDir;
  const float x_357 = parallaxLimit;
  vMaxOffset = (x_356 * x_357);
  const float3x3 x_361 = invTBN;
  const float3 x_362 = output5;
  const float3x3 x_365 = invTBN;
  const float4 x_366 = v_output2;
  numSamples = (15.0f + (dot(mul(-(x_362), x_361), mul(float3(x_366.x, x_366.y, x_366.z), x_365)) * -11.0f));
  const float x_374 = numSamples;
  stepSize = (1.0f / x_374);
  currRayHeight = 1.0f;
  vCurrOffset = (0.0f).xx;
  vLastOffset = (0.0f).xx;
  lastSampledHeight = 1.0f;
  currSampledHeight = 1.0f;
  i = 0;
  [loop] while (true) {
    const int x_388 = i;
    if ((x_388 < 15)) {
    } else {
      break;
    }
    const float2 x_394 = v_uv;
    const float2 x_395 = vCurrOffset;
    const float4 x_397 = TextureSamplerTexture.Sample(TextureSamplerSampler, (x_394 + x_395));
    currSampledHeight = x_397.w;
    const float x_400 = currSampledHeight;
    const float x_401 = currRayHeight;
    if ((x_400 > x_401)) {
      const float x_406 = currSampledHeight;
      const float x_407 = currRayHeight;
      delta1 = (x_406 - x_407);
      const float x_410 = currRayHeight;
      const float x_411 = stepSize;
      const float x_413 = lastSampledHeight;
      delta2 = ((x_410 + x_411) - x_413);
      const float x_416 = delta1;
      const float x_417 = delta1;
      const float x_418 = delta2;
      ratio = (x_416 / (x_417 + x_418));
      const float x_421 = ratio;
      const float2 x_422 = vLastOffset;
      const float x_424 = ratio;
      const float2 x_426 = vCurrOffset;
      vCurrOffset = ((x_422 * x_421) + (x_426 * (1.0f - x_424)));
      break;
    } else {
      const float x_431 = stepSize;
      const float x_432 = currRayHeight;
      currRayHeight = (x_432 - x_431);
      const float2 x_434 = vCurrOffset;
      vLastOffset = x_434;
      const float x_435 = stepSize;
      const float2 x_436 = vMaxOffset;
      const float2 x_438 = vCurrOffset;
      vCurrOffset = (x_438 + (x_436 * x_435));
      const float x_440 = currSampledHeight;
      lastSampledHeight = x_440;
    }
    {
      const int x_441 = i;
      i = (x_441 + 1);
    }
  }
  const float2 x_444 = vCurrOffset;
  parallaxOcclusion_0 = x_444;
  const float2 x_445 = parallaxOcclusion_0;
  uvOffset = x_445;
  const float2 x_449 = v_uv;
  const float2 x_450 = uvOffset;
  const float4 x_452 = TextureSamplerTexture.Sample(TextureSamplerSampler, (x_449 + x_450));
  const float x_454 = asfloat(x_269[8].x);
  const float3x3 x_457 = TBN;
  param_8 = x_457;
  param_9 = float3(x_452.x, x_452.y, x_452.z);
  param_10 = (1.0f / x_454);
  const float3 x_461 = perturbNormal_mf33_vf3_f1_(param_8, param_9, param_10);
  const float4 x_462 = output4;
  output4 = float4(x_461.x, x_461.y, x_461.z, x_462.w);
  const float2 x_465 = v_uv;
  const float2 x_466 = uvOffset;
  output6 = (x_465 + x_466);
  const float2 x_474 = output6;
  const float4 x_475 = TextureSampler1Texture.Sample(TextureSampler1Sampler, x_474);
  tempTextureRead1 = x_475;
  const float4 x_477 = tempTextureRead1;
  rgb1 = float3(x_477.x, x_477.y, x_477.z);
  const float3 x_481 = asfloat(x_269[9].xyz);
  const float4 x_482 = v_output1;
  viewDirectionW_1 = normalize((x_481 - float3(x_482.x, x_482.y, x_482.z)));
  shadow = 1.0f;
  const float x_488 = u_Float;
  glossiness_1 = (1.0f * x_488);
  diffuseBase = (0.0f).xxx;
  specularBase = (0.0f).xxx;
  const float4 x_494 = output4;
  normalW = float3(x_494.x, x_494.y, x_494.z);
  const float3 x_501 = viewDirectionW_1;
  param_11 = x_501;
  const float3 x_503 = normalW;
  param_12 = x_503;
  const float4 x_507 = asfloat(light0[0]);
  param_13 = x_507;
  const float4 x_510 = asfloat(light0[1]);
  param_14 = float3(x_510.x, x_510.y, x_510.z);
  const float4 x_514 = asfloat(light0[2]);
  param_15 = float3(x_514.x, x_514.y, x_514.z);
  const float3 x_518 = asfloat(light0[3].xyz);
  param_16 = x_518;
  const float x_520 = glossiness_1;
  param_17 = x_520;
  const lightingInfo x_521 = computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(param_11, param_12, param_13, param_14, param_15, param_16, param_17);
  info = x_521;
  shadow = 1.0f;
  const float3 x_523 = info.diffuse;
  const float x_524 = shadow;
  const float3 x_526 = diffuseBase;
  diffuseBase = (x_526 + (x_523 * x_524));
  const float3 x_529 = info.specular;
  const float x_530 = shadow;
  const float3 x_532 = specularBase;
  specularBase = (x_532 + (x_529 * x_530));
  const float3 x_535 = diffuseBase;
  const float3 x_536 = rgb1;
  diffuseOutput = (x_535 * x_536);
  const float3 x_539 = specularBase;
  const float3 x_540 = u_Color;
  specularOutput = (x_539 * x_540);
  const float3 x_543 = diffuseOutput;
  const float3 x_544 = specularOutput;
  output3 = (x_543 + x_544);
  const float3 x_548 = output3;
  glFragColor = float4(x_548.x, x_548.y, x_548.z, 1.0f);
  return;
}

struct main_out {
  float4 glFragColor_1;
};
struct tint_symbol_1 {
  float4 v_output1_param : TEXCOORD0;
  float2 vMainuv_param : TEXCOORD1;
  float4 v_output2_param : TEXCOORD2;
  float2 v_uv_param : TEXCOORD3;
  bool gl_FrontFacing_param : SV_IsFrontFace;
};
struct tint_symbol_2 {
  float4 glFragColor_1 : SV_Target0;
};

main_out main_inner(float2 vMainuv_param, float4 v_output1_param, bool gl_FrontFacing_param, float2 v_uv_param, float4 v_output2_param) {
  vMainuv = vMainuv_param;
  v_output1 = v_output1_param;
  gl_FrontFacing = gl_FrontFacing_param;
  v_uv = v_uv_param;
  v_output2 = v_output2_param;
  main_1();
  const main_out tint_symbol_8 = {glFragColor};
  return tint_symbol_8;
}

tint_symbol_2 main(tint_symbol_1 tint_symbol) {
  const main_out inner_result = main_inner(tint_symbol.vMainuv_param, tint_symbol.v_output1_param, tint_symbol.gl_FrontFacing_param, tint_symbol.v_uv_param, tint_symbol.v_output2_param);
  tint_symbol_2 wrapper_result = (tint_symbol_2)0;
  wrapper_result.glFragColor_1 = inner_result.glFragColor_1;
  return wrapper_result;
}
