def create(self):
<EOL>out_attribs = []<EOL>if not self.fragment_source:<EOL><INDENT>if self.geometry_source:<EOL><INDENT>out_attribs = self.geometry_source.find_out_attribs()<EOL><DEDENT>else:<EOL><INDENT>out_attribs = self.vertex_source.find_out_attribs()<EOL><DEDENT><DEDENT>program = self.ctx.program(<EOL>vertex_shader=self.vertex_source.source,<EOL>geometry_shader=self.geometry_source.source if self.geometry_source else None,<EOL>fragment_shader=self.fragment_source.source if self.fragment_source else None,<EOL>tess_control_shader=self.tess_control_source.source if self.tess_control_source else None,<EOL>tess_evaluation_shader=self.tess_evaluation_source.source if self.tess_evaluation_source else None,<EOL>varyings=out_attribs,<EOL>)<EOL>program.extra = {'<STR_LIT>': self.meta}<EOL>return program<EOL>
Creates a shader program.

Returns:
    ModernGL Program instance