   vec3 V = surface.view;
   vec3 L = normalize(-direction);
   vec3 H = normalize(V + L);
-  //vec3 R = surface.reflection;
+  vec3 R = surface.reflection;
   float NoV = abs(dot(N, V)) + 1e-8;
   float NoL = clamp(dot(N, L) * .5 + .5, 0., 1.);
   float NoH = clamp(dot(N, H), 0., 1.);

#define TangentMatrix getTangentMatrix()

mat3 getTangentMatrix() {
  if (useVertexTangents) {
    vec3 N = normalize(Normal);
    vec3 T = normalize(Tangent);
    vec3 B = cross(N, T);

  surface.reflection = reflect(-surface.view, normal);

  vec4 color = Color;
  if (flag_colorTexture) color *= getPixel(ColorTexture, UV);

  float metallic = Material.metalness;
  if (flag_metalnessTexture) metallic *= getPixel(MetalnessTexture, UV).b;

  surface.f0 = mix(vec3(.04), color.rgb, metallic);
  surface.diffuse = mix(color.rgb, vec3(0.), metallic);

  surface.emissive = Material.glow.rgb * Material.glow.a;
  if (flag_glow && flag_glowTexture) surface.emissive *= getPixel(GlowTexture, UV).rgb;

  float roughness = Material.roughness;
  if (flag_roughnessTexture) roughness *= getPixel(RoughnessTexture, UV).g;
  roughness = max(roughness, .05);
  surface.roughness2 = roughness * roughness;

  surface.occlusion = 1.;
  if (flag_occlusionTexture) surface.occlusion *= getPixel(OcclusionTexture, UV).r * Material.occlusionStrength;

  surface.clearcoat = Material.clearcoat;
  if (flag_clearcoatTexture) surface.clearcoat *= getPixel(ClearcoatTexture, UV).r;

  surface.clearcoatRoughness = Material.clearcoatRoughness;

