def _parse_shader_template(self, pass_id, stage, data):
        """ Parses a fragment template. This just finds the default template
        for the shader, and redirects that to construct_shader_from_data """
        if stage == "fragment":
            shader_ext = {"vertex": "vert", "fragment": "frag"}[stage]
            template_src = "/$$rp/shader/templates/{}.{}.glsl".format(pass_id, shader_ext)
        elif stage == "vertex":
            # Using a shared vertex shader
            template_src = "/$$rp/shader/templates/vertex.vert.glsl"

        shader_path = self._construct_shader_from_data(pass_id, stage, template_src, data)
        self._generated_shader_paths[stage + "-" + pass_id] = shader_path
 Parses a fragment template. This just finds the default template
        for the shader, and redirects that to construct_shader_from_data 
metadrive/render_pipeline/rpcore/effect.py