def vs_to_130(data):
    data['attributes'].append({
        'varname': 'bl_Vertex',
        'type': gpu.CD_ORCO,
        'datatype': gpu.GPU_DATA_4F
    })
    data['attributes'].append({
        'varname': 'bl_Normal',
        'type': -1,
        'datatype': gpu.GPU_DATA_3F
    })
    data['uniforms'].append({
        'varname': 'bl_ModelViewMatrix',
        'type': 0,
        'datatype': gpu.GPU_DATA_16F,
    })
    data['uniforms'].append({
        'varname': 'bl_ProjectionMatrix',
        'type': 0,
        'datatype': gpu.GPU_DATA_16F,
    })
    data['uniforms'].append({
        'varname': 'bl_NormalMatrix',
        'type': 0,
        'datatype': gpu.GPU_DATA_9F,
    })

    src = '#version 130\n'
    src += 'in vec4 bl_Vertex;\n'
    src += 'in vec3 bl_Normal;\n'
    src += 'uniform mat4 bl_ModelViewMatrix;\n'
    src += 'uniform mat4 bl_ProjectionMatrix;\n'
    src += 'uniform mat3 bl_NormalMatrix;\n'

    src += data['vertex']

    src = re.sub(r'#ifdef USE_OPENSUBDIV([^#]*)#endif', '', src)
    src = re.sub(r'#ifndef USE_OPENSUBDIV([^#]*)#endif', r'\1', src)
    src = re.sub(r'#ifdef CLIP_WORKAROUND(.*?)#endif', '', src, 0, re.DOTALL)
    src = re.sub(r'\bvarying\b', 'out', src)
    src = re.sub(r'\bgl_(?!Position)(.*?)\b', r'bl_\1', src)

    data['vertex'] = src