X-mirror rendering

it start to feel perfect for my particular effects .
actually i did a new test, now i tried how easy it is to touch the instances with mouse… as next i will bring some self collisions in. this thing is going to boost my effects hopefully.

at the moment im using for performance boosts at my particle effects:
rastering, time delays and this method…

im running out of ideas, where to win any better performance anymore.

'''
Created on 16.07.2009

@author: dirk
'''
import direct.directbase.DirectStart
from pandac.PandaModules import GraphicsOutput
from pandac.PandaModules import Filename,Texture
from pandac.PandaModules import CardMaker,Vec4,Vec3
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import MouseWatcher
from direct.task.Task import Task
import math

taskMgr.remove('igLoop')

base.disableMouse()
camera.setPos(0, -26, 4)
base.setBackgroundColor(0,0,0)
instances = 100 
count = 1 #count of roots in the scene, in this case i created only one object
character = {}
for i in range (count):  
    character[i] = loader.loadModel('models/planeZ.egg')
    character[i].reparentTo(render2d)
    character[i].setScale(.05,.05,.05)
    
class msrb(DirectObject):
    '''
    classdocs
    '''
    def __init__(self):
        '''
        Constructor
        '''
        self.tex = Texture()
        base.win.addRenderTexture(self.tex, GraphicsOutput.RTMTriggeredCopyTexture)

        self.card = base.win.getTextureCard()
        self.card.reparentTo(render2d)
        self.card.setTransparency(1)
        
        taskMgr.add(self.buffering, "bufferingTASK")
        
    def buffering(self, task):
        
        time = task.time
        
        mpos=base.mouseWatcherNode.getMouse()
        y = -.5
        x = -.5
        c = 0
        colors = [(1,0,0,1),(0,1,0,1),(0,0,1,1)]
        pos = {}   
           
        for xx in range(len(character)):
            for i in range(instances):
                getCOLOR = colors[c]
                character[xx].setPos(x,0,y)
                
                pos[i] = character[xx].getPos()
                c+=1
                if (c >=3):
                    c=0
                x+=.1
                if (x > .4):
                    x=-.5
                    y+=.1
                mouseVEC = Vec3(mpos.getX(),0,mpos.getY())
                distance = mouseVEC - character[xx].getPos()
                dis = distance.length()
                if (dis < .2):
                    character[xx].setPos(character[xx].getX()+math.sin(time)/10,0,character[xx].getZ()+math.cos(time)/10)
                    print dis
                else:
                    character[xx].setColor(getCOLOR)
                base.graphicsEngine.renderFrame()
                base.win.triggerCopy()
        return Task.cont
    

m=msrb()
run()

planeZ.egg

<CoordinateSystem> { Y-Up }

<Comment> {
  "maya2egg2008 planeZ.mb planeZ.egg"
}
<Texture> initialShadingGroup {
  "../textures/cityBLOOM.png"
  <Scalar> wrapu { repeat }
  <Scalar> wrapv { repeat }
  <Scalar> minfilter { linear_mipmap_linear }
  <Scalar> magfilter { linear }
}
<Group> groundPlane_transform {
}
<Group> pPlane1 {
  <VertexPool> pPlaneShape1.verts {
    <Vertex> 0 {
      -0.5 -0.5 -3.33067e-016
      <UV> { 0 0 }
      <Normal> { 0 0 1 }
      <RGBA> { 1 1 1 1 }
    }
    <Vertex> 1 {
      0.5 -0.5 -3.33067e-016
      <UV> { 1 0 }
      <Normal> { 0 0 1 }
      <RGBA> { 1 1 1 1 }
    }
    <Vertex> 2 {
      0.5 0.5 3.33067e-016
      <UV> { 1 1 }
      <Normal> { 0 0 1 }
      <RGBA> { 1 1 1 1 }
    }
    <Vertex> 3 {
      -0.5 0.5 3.33067e-016
      <UV> { 0 1 }
      <Normal> { 0 0 1 }
      <RGBA> { 1 1 1 1 }
    }
  }
  <Polygon> {
    <Normal> { 0 0 1 }
    <TRef> { initialShadingGroup }
    <VertexRef> { 0 1 2 3 <Ref> { pPlaneShape1.verts } }
  }
}