export declare const mmdOutlineVertexShader = "\n// Attribute\nattribute vec3 position;\nattribute vec3 normal;\n\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n\n#include<clipPlaneVertexDeclaration>\n\n// Uniform\nuniform float offset;\n\n#include<instancesDeclaration>\n\nuniform vec2 viewport;\nuniform mat3 view;\nuniform mat4 viewProjection;\n#ifdef WORLDPOS_REQUIRED\nuniform mat4 inverseViewProjection;\n#endif\n\n#ifdef ALPHATEST\nvarying vec2 vUV;\nuniform mat4 diffuseMatrix;\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#endif\n#include<logDepthDeclaration>\n\n\n#define CUSTOM_VERTEX_DEFINITIONS\n\nvoid main(void)\n{\n    vec3 positionUpdated = position;\n    vec3 normalUpdated = normal;\n#ifdef UV1\n    vec2 uvUpdated = uv;\n#endif\n    #include<morphTargetsVertexGlobal>\n    #include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\n\n    vec3 viewNormal = view * (mat3(finalWorld) * normalUpdated);\n    vec4 projectedPosition = viewProjection * finalWorld * vec4(positionUpdated, 1.0);\n    vec2 screenNormal = normalize(vec2(viewNormal));\n    projectedPosition.xy += screenNormal / (viewport * 0.25 /* 0.5 */) * offset * projectedPosition.w;\n\n\tgl_Position = projectedPosition;\n#ifdef WORLDPOS_REQUIRED\n    vec4 worldPos = inverseViewProjection * projectedPosition;\n#endif\n\n#ifdef ALPHATEST\n#ifdef UV1\n\tvUV = vec2(diffuseMatrix * vec4(uvUpdated, 1.0, 0.0));\n#endif\n#ifdef UV2\n\tvUV = vec2(diffuseMatrix * vec4(uv2, 1.0, 0.0));\n#endif\n#endif\n#include<clipPlaneVertex>\n#include<logDepthVertex>\n}\n";
