     data.materialRoughness = mat.roughness;
   }
 
+  data.materialSpecular = mat.specular;
+
   const vec3 p0 = v0.position.xyz, p1 = v1.position.xyz, p2 = v2.position.xyz;
 
   vec3 localPos = _blerp(attribs.xy, p0.xyz, p1.xyz, p2.xyz);

  if (_hasMap(diffuseMapLayerIndex)) {
    data.materialDiffuse =
        texture(sampler2DArray(textureArray, textureSampler),
                vec3(uv * diffuseMapScale, diffuseMapLayerIndex))
            .rgb +
        vec3(mat.diffuse);
  } else {


  vec2 metalRoughness;
  if (_hasMap(metalRoughnessMapLayerIndex)) {
    metalRoughness = texture(sampler2DArray(textureArray, textureSampler),
                             vec3(uv * mat.metalRoughnessMapScale,
                                  metalRoughnessMapLayerIndex))
                         .rg;

    data.materialMetalness = metalRoughness.r + mat.metalness;
    data.materialRoughness = metalRoughness.g + mat.roughness;
