declare const _default: "\n#ifdef MORPHING_TEXTURE_BASED_NORMAL\nuniform highp sampler2D morphNormalTex;\n#endif\n\nvec3 getNormal() {\n #ifdef SKIN\n dNormalMatrix = mat3(dModelMatrix[0].xyz, dModelMatrix[1].xyz, dModelMatrix[2].xyz);\n #elif defined(INSTANCING)\n dNormalMatrix = mat3(instance_line1.xyz, instance_line2.xyz, instance_line3.xyz);\n #else\n dNormalMatrix = matrix_normal;\n #endif\n\n vec3 tempNormal = vertex_normal;\n\n #ifdef MORPHING\n #ifdef MORPHING_NRM03\n tempNormal += morph_weights_a[0] * morph_nrm0;\n tempNormal += morph_weights_a[1] * morph_nrm1;\n tempNormal += morph_weights_a[2] * morph_nrm2;\n tempNormal += morph_weights_a[3] * morph_nrm3;\n #endif\n #ifdef MORPHING_NRM47\n tempNormal += morph_weights_b[0] * morph_nrm4;\n tempNormal += morph_weights_b[1] * morph_nrm5;\n tempNormal += morph_weights_b[2] * morph_nrm6;\n tempNormal += morph_weights_b[3] * morph_nrm7;\n #endif\n #endif\n\n #ifdef MORPHING_TEXTURE_BASED_NORMAL\n\n #ifdef WEBGPU\n ivec2 morphUV = getTextureMorphCoords();\n vec3 morphNormal = texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz;\n #else\n vec2 morphUV = getTextureMorphCoords();\n vec3 morphNormal = texture2D(morphNormalTex, morphUV).xyz;\n #endif\n\n // apply morph offset from texture\n tempNormal += morphNormal;\n #endif\n\n return normalize(dNormalMatrix * tempNormal);\n}\n"; export default _default;