Beispiel #1
0
    def __init__(self):
        super().__init__(width=960, height=640, fovx=80, downSample=1)

        self.changeTitle("AXI OpenCL 3D Visualizer")

        self.α = 3.1
        self.β = -0.1

        self.pos = numpy.array([600.8, 20.4, 600.3])
        self.camSpeed = 0.04

        self.mouseSensitivity = 20

        self.ambLight = 0.08

        self.st = 0
        self.tt = 200
        self.drawAxes = False
        self.b = None

        self.chunksize = 50
        self.chunkscale = 0.8
        self.renderDist = 2
        self.rdextra = 0
        self.numWorkers = 4

        S = self.chunksize
        L = self.chunkscale

        self.cchunk = [
            int(self.pos[0] / (S * L) + 0.5),
            int(self.pos[2] / (S * L) + 0.5)
        ]

        terr = Terrain.RandTerrain(1)

        self.rmax = 50000

        self.terr = terr

        self.tp = [mp.Queue(16) for i in range(self.numWorkers)]
        self.rp = [mp.Queue(16) for i in range(self.numWorkers)]
        self.workLen = [0 for i in range(self.numWorkers)]

        self.vischunks = [None for i in range((self.renderDist * 2)**2)]
        self.reqChunks = []
        self.procChunks = []

        for u in range(self.cchunk[0] - self.renderDist,
                       self.cchunk[0] + self.renderDist):
            for v in range(self.cchunk[1] - self.renderDist,
                           self.cchunk[1] + self.renderDist):
                self.reqChunks.append((u, v))

        for i in range(len(self.reqChunks)):
            a = self.reqChunks[0]
            del self.reqChunks[0]
            self.requestChunk(a, i)
Beispiel #2
0
def getTerrain(rp, tp):
    doQuit = False
    terr = Terrain.RandTerrain(1)
    while not doQuit:
        try:
            a = rp.get(True, 0.2)
        except:
            continue
        if a is None:
            doQuit = True
            break
        else:
            ga = terr.getArea(*a[3:])
            tp.put((*a[:3], ga))