/******************************************************************************\ Pre-renders the extra rotations of the tile mask and the terrain tile sheets. This function will generate tile textures 1-3. \******************************************************************************/ static void prerender_tiles(void) { r_texture_t *blend_mask, *rotated_mask, *masked_terrain; int i, x, y; blend_mask = R_texture_load("models/globe/blend_mask.png", FALSE); if (!blend_mask || !r_terrain_tex) C_error("Failed to load essential prerendering assets"); /* Render the blend mask to tile size */ R_texture_select(blend_mask); setup_tile_uv_mask(); render_tile(0, 0); R_texture_free(blend_mask); blend_mask = save_buffer((int)tile.x, (int)tile.y); R_texture_upload(blend_mask); finish_buffer(); rotated_mask = NULL; for (i = 0; i < 3; i++) { /* Render the blend mask at tile size and orientation */ R_texture_select(blend_mask); setup_tile_uv(i, -1, -1, -1); for (y = 0; y < R_TILE_SHEET_H; y++) for (x = 0; x < R_TILE_SHEET_W; x++) render_tile(x, y); rotated_mask = save_buffer((int)sheet.x, (int)sheet.y); R_texture_upload(rotated_mask); finish_buffer(); /* Render the tiles at this orientation */ R_texture_select(r_terrain_tex); for (y = 0; y < R_TILE_SHEET_H; y++) for (x = 0; x < R_TILE_SHEET_W; x++) { setup_tile_uv(0, i, x, y); render_tile(x, y); } /* Read the terrain back in and mask it */ masked_terrain = save_buffer((int)sheet.x, (int)sheet.y); R_surface_mask(masked_terrain->surface, rotated_mask->surface); R_texture_free(rotated_mask); finish_buffer(); /* Render the masked terrain on top of the terrain texture and read it back in to replace the old terrain texture */ R_texture_render(r_terrain_tex, 0, 0); R_texture_upload(masked_terrain); R_texture_render(masked_terrain, 0, 0); if (r_test_prerender.value.n) R_texture_render(masked_terrain, (int)sheet.x, 0); R_texture_free(masked_terrain); R_texture_free(r_terrain_tex); r_terrain_tex = save_buffer((int)sheet.x, (int)sheet.y); R_texture_upload(r_terrain_tex); finish_buffer(); } R_texture_free(blend_mask); }
void World::renderCellmap() { for (uint a = 0; a < newCellmap.size(); ++a) { for (uint b = 0; b < newCellmap[a].size(); ++b) { if (newCellmap[a][b] == true) { render_tile(CHAR_hash, a*TILE_WIDTH, b*TILE_HEIGHT, BLACK, DEEPPURPLE); } else if (newCellmap[a][b] == false) { render_tile(CHAR_dot, a*TILE_WIDTH, b*TILE_HEIGHT, BLACK, DEEPGREY); } } } }
static void render(unsigned char *img, int comps, int w, int h, int nsubsamples, int tilew, int tileh) { float *fimg = (float *)malloc(sizeof(float) * w * h * 3); memset((void *)fimg, 0, sizeof(float) * w * h * 3); dispatch_queue_t dque = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //dispatch_queue_t dque = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0); dispatch_group_t dgroup = dispatch_group_create(); int i, j; for (j = 0; j < h; j += tileh) { for (i = 0; i < w; i += tilew) { void (^renderblock)(void) = ^{ render_tile(img, comps, fimg, w, h, nsubsamples, i, j, tilew, tileh); }; //renderblock(); dispatch_group_async(dgroup, dque, renderblock); } } dispatch_group_wait(dgroup, DISPATCH_TIME_FOREVER); //dispatch_release(dgroup); }
/*--------------------------------------------------------------------------*/ void create_output_buffer(Map* map, BufferTile* buf, int size) { /* Spieler in die Mitte, seine Position als Versatz benutzen */ int i, j, translated_x, translated_y, center_x, center_y; Spawn* spawn = get_player_spawn(map); if(spawn == NULL) { fprintf(stderr, "Keine Spielfigur vorhanden!\n"); exit(1); } clear_output_buffer(buf, size); center_x = OUTPUT_IN_GLYPHS_X / 2 + 1; center_y = OUTPUT_IN_GLYPHS_Y / 2 + 1; translated_x = center_x - spawn->x; translated_y = center_y - spawn->y; j = 0; for(i = 0; i < size; ++i) { unsigned int current_x, current_y; if(i != 0 && (i % (OUTPUT_IN_GLYPHS_X)) == 0) { ++j; } current_y = j; current_x = i % OUTPUT_IN_GLYPHS_X; /* unteres Renderende erreicht */ if(current_y == OUTPUT_IN_GLYPHS_Y) { break; } /* Hier Kartenteil? */ if(translated_x <= (int)current_x && translated_y <= (int)current_y && current_x < (translated_x + map->x) && current_y < (translated_y + map->y)) { render_tile(&buf[i], &map->tiles[(current_y - translated_y) * map->x + (current_x - translated_x)], map); } } }
void menu_render_credits(void) { render_cam(render_display_w,render_display_h); render_tile_num(0,0,AST_TILE_MENU_FONDO); // render_numstr(300, 500, "0100001010010101...", 0); render_tile(menu_credits_x,menu_credits_y,&text_credits_tile); render_tile_num(menu_credits_x+620,menu_credits_y+415,AST_TILE_MENU_TITLE); render_tile_num(871-10,0+10,AST_TILE_BTN_NEXT); }
void render_tiles(sem_render_context* ctx, sem_world* world) { for (uint32_t j=0; j<world->max_y; j++) { for (uint32_t i=0; i<world->max_x; i++) { sem_coordinate coord; sem_coordinate_set(&coord, i, j); render_tile(ctx, coord, sem_tile_at(world, i, j)); } } }
void menu_render_hof(void) { render_cam(render_display_w,render_display_h); render_tile_num(0,0,AST_TILE_MENU_FONDO); render_tile(menu_hof_x,menu_hof_y,&text_highscores_tile); render_tile_num(871-10,0+10,AST_TILE_BTN_NEXT); // botones del gamecenter if (game_gamecenter_available) { render_tile_num(871-10-30,540+10-20,AST_TILE_BTN_GC_LEADERBOARDS); render_tile_num(782-10-60,540+10-20,AST_TILE_BTN_GC_ACHIEVMENTS); } }
void menu_render_results_panel(void) { float top_line=600; render_tile_num(0,0,AST_TILE_MENU_FONDO); render_tile(30,20,&text_highscores_tile); render_tile_num(40,top_line-1*80,AST_TILE_ICN_DISTANCE); render_tile_num(290,top_line-1*80,AST_TILE_ICN_TIME); //render_tile_num(510,top_line-2*80,AST_TILE_ICN_SPEED); render_tile_num(520,top_line-1*80,AST_TILE_ICN_PEREGRINO_HIT); render_tile_num(640,top_line-1*80,AST_TILE_ICN_BORDONERO_HIT); //render_tile_num(740,top_line-1*80,AST_TILE_ICN_FALLS); render_tile_num(820,top_line-1*80+5,AST_TILE_ICN_CARNE); render_tile_num(835,top_line-1*80,AST_TILE_ICN_FRUTA); }
void Object::render() { render_tile(this->sym, this->x, this->y, this->bg, this->t); }
/******************************************************************************\ Pre-renders tiles for transition between base tile types. \******************************************************************************/ static void prerender_transitions(void) { r_texture_t *trans_mask, *inverted_mask, *large_mask, *masked_terrain; int x, y, tiles_a[] = {0, 1, 1, 2}, tiles_b[] = {1, 0, 2, 1}; trans_mask = R_texture_load("models/globe/trans_mask.png", FALSE); if (!trans_mask || !r_terrain_tex) C_error("Failed to load essential prerendering assets"); /* Render an inverted version of the mask */ inverted_mask = R_texture_clone(trans_mask); R_surface_flip_v(inverted_mask->surface); R_surface_invert(inverted_mask->surface, TRUE, FALSE); R_texture_upload(inverted_mask); R_texture_select(inverted_mask); setup_tile_uv_mask(); render_tile(0, 0); R_texture_free(inverted_mask); inverted_mask = save_buffer((int)tile.x, (int)tile.y); R_texture_upload(inverted_mask); finish_buffer(); /* Render the transition mask to tile size */ R_texture_select(trans_mask); setup_tile_uv_mask(); render_tile(0, 0); R_texture_free(trans_mask); trans_mask = save_buffer((int)tile.x, (int)tile.y); R_texture_upload(trans_mask); finish_buffer(); /* Render the transition mask tile sheet */ for (y = 0; y < R_T_BASES - 1; y++) { R_texture_select(trans_mask); for (x = 0; x < 3; x++) { setup_tile_uv(x, -1, -1, -1); render_tile(x, y + 1); } R_texture_select(inverted_mask); for (x = 3; x < 6; x++) { setup_tile_uv(x - 3, -1, -1, -1); render_tile(x, y + 1); } } large_mask = save_buffer((int)sheet.x, (int)sheet.y); R_texture_free(trans_mask); R_texture_free(inverted_mask); finish_buffer(); /* Render the masked layer of the terrain and read it back in */ R_texture_select(r_terrain_tex); for (y = 0; y < R_T_BASES - 1; y++) for (x = 0; x < 3; x++) { setup_tile_uv(0, -1, tiles_b[2 * y], 0); render_tile(x, y + 1); setup_tile_uv(0, -1, tiles_b[2 * y + 1], 0); render_tile(x + 3, y + 1); } masked_terrain = save_buffer((int)sheet.x, (int)sheet.y); R_surface_mask(masked_terrain->surface, large_mask->surface); R_texture_free(large_mask); R_texture_upload(masked_terrain); finish_buffer(); if (r_test_prerender.value.n) R_texture_render(masked_terrain, (int)sheet.x, 0); /* Render the base layer of the terrain */ R_texture_render(r_terrain_tex, 0, 0); R_texture_select(r_terrain_tex); for (y = 0; y < R_T_BASES - 1; y++) for (x = 0; x < 3; x++) { setup_tile_uv(0, -1, tiles_a[2 * y], 0); render_tile(x, y + 1); setup_tile_uv(0, -1, tiles_a[2 * y + 1], 0); render_tile(x + 3, y + 1); } /* Render the masked terrain over the tile sheet and read it back in */ R_texture_render(masked_terrain, 0, 0); R_texture_free(masked_terrain); R_texture_free(r_terrain_tex); r_terrain_tex = save_buffer((int)sheet.x, (int)sheet.y); r_terrain_tex->mipmaps = TRUE; R_texture_upload(r_terrain_tex); finish_buffer(); }