 {
     vec3 linearOut = pow(srgbIn.rgb, vec3(2.2));
     return vec4(linearOut, srgbIn.a);
+}
+
+vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform)
+{
+    return vec2(textureTransform * vec3(texCoord, 1.0));
 }
 
 #ifdef HAS_NORMALS

        #if defined(HAS_SPECULAR_GLOSSINESS_TEXTURE)
        vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS;
          #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM
          specularGlossinessCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform);
          #endif

        vec4 specularGlossiness = SRGBtoLINEAR4(texture2D(u_specularGlossinessTexture, specularGlossinessTexCoords));

}
#endif

czm_modelMaterial materialStage(czm_modelMaterial inputMaterial)
{
    czm_modelMaterial material = inputMaterial;
