def gfx_init( self ) : try : print 'compiling' self.prog = sh.compile_program_vfg( 'shad/balls' ) print 'compiled' self.loc_mmv = sh.get_loc(self.prog,'modelview' ) self.loc_mp = sh.get_loc(self.prog,'projection') self.l_color = sh.get_loc(self.prog,'color' ) self.l_size = sh.get_loc(self.prog,'ballsize' ) except ValueError as ve : print "Shader compilation failed: " + str(ve) sys.exit(0) # glUseProgram( self.prog ) # glUniform1i( pointsid , 0 ); # glUseProgram( 0 ) # # cuda init # self.grid = (int(self.BOX),int(self.BOX)) self.block = (1,1,int(self.BOX)) print 'CUDA: block %s , grid %s' % (str(self.block),str(self.grid)) # print cuda_driver.device_attribute.MAX_THREADS_PER_BLOCK # print cuda_driver.device_attribute.MAX_BLOCK_DIM_X # print cuda_driver.device_attribute.MAX_BLOCK_DIM_Y # print cuda_driver.device_attribute.MAX_BLOCK_DIM_Z floatbytes = np.dtype(np.float32).itemsize self.gpos = glGenBuffers(1) glBindBuffer( GL_ARRAY_BUFFER , self.gpos ) glBufferData( GL_ARRAY_BUFFER , self.pos.nbytes, self.pos, GL_STREAM_DRAW ) glBindBuffer( GL_ARRAY_BUFFER , 0 ) self.df1 = cuda_driver.mem_alloc( self.f.nbytes ) self.df2 = cuda_driver.mem_alloc( self.f.nbytes ) cuda_driver.memcpy_htod( self.df1 , self.f ) cuda_driver.memset_d32( self.df2 , 0 , self.NUM*self.Q ) mod = cuda_driver.module_from_file( 'lbm_kernel.cubin' ) self.collision = mod.get_function("collision_step") self.collision.prepare( "Piii" ) self.streaming = mod.get_function("streaming_step") self.streaming.prepare( "PPiii" ) self.colors = mod.get_function("colors") self.colors.prepare( "PPiii" )
def _mk_shaders( self ) : try : self.prog = sh.compile_program('shad/water') self.loc_mmv = sh.get_loc(self.prog,'modelview' ) self.loc_mp = sh.get_loc(self.prog,'projection') self.loc_norms = sh.get_loc(self.prog,'normalmap' ) self.loc_cube = sh.get_loc(self.prog,'cubemap' ) self.loc_cam = sh.get_loc(self.prog,'campos' ) except ValueError as ve : print "Shader compilation failed: " + str(ve) sys.exit(0)
def _load_shader( self , path ) : try : self.prog = sh.compile_program(path) self.loc_mmv = sh.get_loc(self.prog,'modelview' ) self.loc_mp = sh.get_loc(self.prog,'projection') self.loc_tex = sh.get_loc(self.prog,'texture' ) self.loc_light = sh.get_loc(self.prog,'light' ) self.loc_anix = sh.get_loc(self.prog,'xdir' ) except ValueError as ve : print "Shader compilation failed: " + str(ve) sys.exit(0)
def init_volumes_shader( self ) : print 'Loading shaders' try : self.prog = sh.compile_program("volume") self.loc_mmv = sh.get_loc(self.prog,'modelview' ) self.loc_mp = sh.get_loc(self.prog,'projection') self.loc_lpos= sh.get_loc(self.prog,'lpos' ) self.loc_cull= sh.get_loc(self.prog,'culling' ) except ValueError as ve : print "Shader compilation failed: " + str(ve) sys.exit(0) print 'Create adjacency data' self.adj = self.create_adjacency( self.et , self.t , self.vidx , self.pts_len ) self.adj = np.array( self.adj , np.uint32 )
def init_volumes_shader(self): print 'Loading shaders' try: self.prog = sh.compile_program("volume") self.loc_mmv = sh.get_loc(self.prog, 'modelview') self.loc_mp = sh.get_loc(self.prog, 'projection') self.loc_lpos = sh.get_loc(self.prog, 'lpos') self.loc_cull = sh.get_loc(self.prog, 'culling') except ValueError as ve: print "Shader compilation failed: " + str(ve) sys.exit(0) print 'Create adjacency data' self.adj = self.create_adjacency(self.et, self.t, self.vidx, self.pts_len) self.adj = np.array(self.adj, np.uint32)
def gfx_init( self ) : try : print 'compiling' self.prog = sh.compile_program_vfg( 'shad/balls' ) print 'compiled' self.loc_mmv = sh.get_loc(self.prog,'modelview' ) self.loc_mp = sh.get_loc(self.prog,'projection') self.l_color = sh.get_loc(self.prog,'color' ) self.l_size = sh.get_loc(self.prog,'ballsize' ) except ValueError as ve : print "Shader compilation failed: " + str(ve) sys.exit(0) # glUseProgram( self.prog ) # glUniform1i( pointsid , 0 ); # glUseProgram( 0 ) # # cuda init # self.grid = (int(self.NUM/256)+1,1) self.block = (256,1,1) print 'CUDA: block %s , grid %s' % (str(self.block),str(self.grid)) self.gpts = glGenBuffers(1) glBindBuffer( GL_ARRAY_BUFFER , self.gpts ) glBufferData( GL_ARRAY_BUFFER , self.pts.nbytes , self.pts , GL_STREAM_DRAW ) glBindBuffer( GL_ARRAY_BUFFER , 0 ) # self.dprv = cuda_driver.mem_alloc( self.prv.nbytes ) self.dvel = cuda_driver.mem_alloc( self.vel.nbytes ) self.dacc = cuda_driver.mem_alloc( self.acc.nbytes ) self.dfrs = cuda_driver.mem_alloc( self.frs.nbytes ) self.dmas = cuda_driver.mem_alloc( self.mas.nbytes ) self.ddns = cuda_driver.mem_alloc( self.dns.nbytes ) # cuda_driver.memcpy_htod( self.dprv , self.prv ) cuda_driver.memcpy_htod( self.dvel , self.vel ) cuda_driver.memcpy_htod( self.dacc , self.acc ) cuda_driver.memcpy_htod( self.dfrs , self.frs ) cuda_driver.memcpy_htod( self.dmas , self.mas ) cuda_driver.memcpy_htod( self.ddns , self.dns ) mod = cuda_driver.module_from_file( 'sph_kernel.cubin' ) self.update_pts = mod.get_function("update_pts") self.update_pts.prepare( "PPPfi" ) self.update_vel = mod.get_function("update_vel") self.update_vel.prepare( "PPPfi" ) self.update_dns = mod.get_function("update_dns") self.update_dns.prepare( "PPPi" ) self.update_frs = mod.get_function("update_frs") self.update_frs.prepare( "PPPPPi" ) self.collisions = mod.get_function("collisions") self.collisions.prepare( "PPPfPfi" )