def _register_stage_result(self, stage):
        """ Registers all produced pipes, inputs and defines from the given
        stage, so they can be used by later stages. """
        for pipe_name, pipe_data in (iteritems)(stage.produced_pipes):
            if isinstance(pipe_data, (SimpleInputBlock, GroupedInputBlock)):
                self.input_blocks[pipe_name] = pipe_data
                continue
            self.pipes[pipe_name] = pipe_data

        for define_name, data in iteritems(stage.produced_defines):
            if define_name in self.defines:
                self.warn("Stage", stage, "overrides define", define_name)
            self.defines[define_name] = data

        for input_name, data in iteritems(stage.produced_inputs):
            if input_name in self.inputs:
                self.warn("Stage", stage, "overrides input", input_name)

            if isinstance(data, (SimpleInputBlock, GroupedInputBlock)):
                self.input_blocks[input_name] = data
                continue

            self.inputs[input_name] = data
 Registers all produced pipes, inputs and defines from the given
        stage, so they can be used by later stages. 
metadrive/render_pipeline/rpcore/stage_manager.py