Example #1
0
 def __init__(self, xmlFiles):
     self.xmlStateGroups = XMLStateGroups()
     self.xmlMaterials = XMLMaterials(self.xmlStateGroups)
     self.xmlSegments = XMLSegments(self.xmlStateGroups)
     self.lights = []
     
     self.xmlModels = XMLModels(self.lights,
                                self.xmlSegments,
                                self.xmlStateGroups,
                                self.xmlMaterials)
     
     # join results from all files
     for f in xmlFiles:
         (stat, mat, seg, mod, lights) = _loadXMLModels(f)
         
         self.lights = unique( self.lights + lights)
         
         self.xmlStateGroups = self.xmlStateGroups.join(stat)
         
         self.xmlMaterials = self.xmlMaterials.join(mat)
         self.xmlMaterials.xmlStateGroups = self.xmlStateGroups
         
         self.xmlSegments = self.xmlSegments.join(seg)
         self.xmlSegments.xmlStateGroups = self.xmlStateGroups
         
         self.xmlModels = self.xmlModels.join(mod)
         self.xmlModels.xmlMaterials = self.xmlMaterials
         self.xmlModels.xmlSegments =self.xmlSegments
         self.xmlModels.xmlStateGroups = self.xmlStateGroups
         self.xmlModels.lights = self.lights
Example #2
0
 def __init__(self, funcs):
     MyShader.__init__(self, funcs)
     
     self.attributes = []
     for func in funcs:
         self.attributes += func.attributes
     self.attributes = unique(self.attributes, lambda x: x[0]+x[1])
Example #3
0
 def join(self, other):
     xmlStateGroups  = self.xmlStateGroups.join(other.xmlStateGroups)
     xmlSegments  = self.xmlSegments.join(other.xmlSegments)
     xmlMaterials = self.xmlMaterials.join(other.xmlMaterials)
     lights = unique( self.lights + other.lights )
     buf = XMLModels(lights, xmlSegments, xmlStateGroups, xmlMaterials)
     nodes = self.modelNodes.copy()
     for n in other.modelNodes.keys():
         nodes[n] = other.modelNodes[n]
     buf.modelNodes = nodes
     return buf
Example #4
0
    def addModel(self, model):
        """
        adds a model to this application.
        """
        self.models.append(model)
        self.lights += model.lights
        self.lights = unique(self.lights)

        for s in model.segments:
            if s.usesProjectiveTexture():
                self.enableProjectiveTextures()
                break
Example #5
0
 def __init__(self, funcs):
     funcNames = {}
     
     self.deps = []
     self.funcs = funcs
     self.suffixes = []
     self.localVars = []
     self.varyings = []
     self.uniforms = []
     self.exports = []
     self.constants = []
     self.enabledExtensions = []
     self.disabledExtensions = []
     self.minVersion = None
     
     for func in funcs:
         if func.name in funcNames:
             print "WARNING: shader function '%s' added multiple times!" % func.name
             continue
         funcNames[func.name] = 1
         
         self.enabledExtensions  += func.enabledExtensions
         self.disabledExtensions += func.disabledExtensions
         
         if self.minVersion==None and func.minVersion!=None:
             self.minVersion = int(func.minVersion)
         elif func.minVersion!=None and int(func.minVersion)>self.minVersion:
             self.minVersion = int(func.minVersion)
         
         self.deps = self.deps + func.deps
         self.varyings = self.varyings + func.varying
         self.uniforms = self.uniforms + func.uniforms
         for fUniName in func.flexibleUniforms.keys():
             (fUniType, fUniVal) = func.flexibleUniforms[fUniName]
             if fUniVal==None:
                 self.uniforms.append((fUniType, fUniName))
             else:
                 self.constants.append((fUniType, fUniName, fUniVal))
     
     self.suffixes = unique(self.suffixes)
     self.enabledExtensions = unique(self.enabledExtensions)
     self.disabledExtensions = unique(self.disabledExtensions)
     self.deps = unique(self.deps, lambda x: x[0])
     self.varyings = unique(self.varyings, lambda x: x[0]+x[1])
     self.uniforms = unique(self.uniforms, lambda x: x[0]+x[1])
     self.localVars = unique(self.localVars, lambda x: str(x[0])+str(x[1])+str(x[2]))
     self.constants = unique(self.constants, lambda x: str(x[0])+str(x[1])+str(x[2]))