cuburn/main.py

77 lines
2.0 KiB
Python
Raw Normal View History

2010-08-27 12:28:02 -04:00
#!/usr/bin/python
#
# flam3cuda, one of a surprisingly large number of ports of the fractal flame
# algorithm to NVIDIA GPUs.
#
# This one is copyright 2010 Steven Robertson <steven@strobe.cc>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later
# as published by the Free Software Foundation.
import os
import sys
2011-05-03 13:02:15 -04:00
os.environ['PATH'] = '/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5:' + os.environ['PATH']
from pprint import pprint
from ctypes import *
2010-08-27 12:28:02 -04:00
import numpy as np
np.set_printoptions(precision=5, edgeitems=20)
import scipy
from fr0stlib.pyflam3 import *
from fr0stlib.pyflam3._flam3 import *
2010-09-09 11:36:14 -04:00
2011-05-02 21:15:51 -04:00
import pyglet
window = pyglet.window.Window(1024, 1024)
import pycuda.gl.autoinit
2010-10-07 11:21:43 -04:00
2011-04-29 11:00:18 -04:00
from cuburn.render import *
2011-04-30 16:40:16 -04:00
from cuburn.code.mwc import MWCTest
2011-05-03 13:02:15 -04:00
from cuburn.code.iter import silly, membench
2010-10-07 11:21:43 -04:00
def main(args):
2011-05-03 13:02:15 -04:00
membench()
return
2011-04-30 16:40:16 -04:00
#MWCTest.test_mwc()
2010-09-02 16:12:22 -04:00
with open(args[-1]) as fp:
genomes = Genome.from_string(fp.read())
anim = Animation(genomes)
2011-05-01 09:53:36 -04:00
accum, den = silly(anim.features, genomes)
if '-g' not in args:
return
noalpha = np.delete(accum, 3, axis=2)
scipy.misc.imsave('rendered.png', noalpha)
imgbuf = (np.minimum(accum * 255, 255)).astype(np.uint8)
2010-08-27 12:28:02 -04:00
2011-05-02 21:15:51 -04:00
image = pyglet.image.ImageData(1024, 1024, 'RGBA', imgbuf.tostring(), -4096)
2010-09-09 11:36:14 -04:00
tex = image.texture
2010-08-27 12:28:02 -04:00
#pal = (anim.ctx.ptx.instances[PaletteLookup].pal * 255.).astype(np.uint8)
#image2 = pyglet.image.ImageData(256, 16, 'RGBA', pal.tostring())
2010-09-09 11:36:14 -04:00
@window.event
def on_draw():
window.clear()
tex.blit(0, 0)
#image2.blit(0, 0)
2010-08-27 12:28:02 -04:00
2010-09-09 11:36:14 -04:00
@window.event
def on_key_press(sym, mod):
if sym == pyglet.window.key.Q:
pyglet.app.exit()
2010-08-27 12:28:02 -04:00
2010-09-09 11:36:14 -04:00
pyglet.app.run()
2010-08-27 12:28:02 -04:00
if __name__ == "__main__":
2010-09-02 16:12:22 -04:00
if len(sys.argv) < 2 or not os.path.isfile(sys.argv[-1]):
print "Last argument must be a path to a genome file"
2010-08-27 12:28:02 -04:00
sys.exit(1)
2010-09-02 16:12:22 -04:00
main(sys.argv)
2010-08-27 12:28:02 -04:00