bug/fxc/gradient_in_varying_loop/1112.wgsl:23:33 warning: 'textureSample' must only be called from uniform control flow
        let sampleDepth : f32 = textureSample(depthTexture, Sampler, offset.xy).r;
                                ^^^^^^^^^^^^^

SamplerState tint_symbol : register(s0, space0);
Texture2D<float4> randomTexture : register(t1, space0);
Texture2D<float4> depthTexture : register(t2, space0);

struct tint_symbol_2 {
  float2 vUV : TEXCOORD0;
};
struct tint_symbol_3 {
  float4 value : SV_Target0;
};

float4 main_inner(float2 vUV) {
  const float3 random = randomTexture.Sample(tint_symbol, vUV).rgb;
  int i = 0;
  [loop] while (true) {
    if ((i < 1)) {
    } else {
      break;
    }
    const float3 offset = float3((random.x).xxx);
    bool tint_tmp_2 = (offset.x < 0.0f);
    if (!tint_tmp_2) {
      tint_tmp_2 = (offset.y < 0.0f);
    }
    bool tint_tmp_1 = (tint_tmp_2);
    if (!tint_tmp_1) {
      tint_tmp_1 = (offset.x > 1.0f);
    }
    bool tint_tmp = (tint_tmp_1);
    if (!tint_tmp) {
      tint_tmp = (offset.y > 1.0f);
    }
    if ((tint_tmp)) {
      i = (i + 1);
      continue;
    }
    const float sampleDepth = depthTexture.Sample(tint_symbol, offset.xy).r;
    i = (i + 1);
  }
  return float4((1.0f).xxxx);
}

tint_symbol_3 main(tint_symbol_2 tint_symbol_1) {
  const float4 inner_result = main_inner(tint_symbol_1.vUV);
  tint_symbol_3 wrapper_result = (tint_symbol_3)0;
  wrapper_result.value = inner_result;
  return wrapper_result;
}
