Esempio n. 1
0
ui_rectangle* ui_rectangle_new() {

    ui_rectangle* r = malloc(sizeof(ui_rectangle));

    r->top_left = vec2_new(10, 10);
    r->bottom_right = vec2_new(20, 20);
    r->color = vec4_white();
    r->glitch = 0.0;
    r->time = 0.0;

    r->texture = asset_hndl_null();
    r->texture_width = 1;
    r->texture_height = 1;
    r->texture_tile = false;

    r->border_size = 0.0;
    r->border_color = vec4_black();

    r->blend_src = GL_SRC_ALPHA;
    r->blend_dst = GL_ONE_MINUS_SRC_ALPHA;

    r->active = true;

    return r;

}
Esempio n. 2
0
void scotland_init() {
  
  graphics_viewport_set_dimensions(1280, 720);
  graphics_viewport_set_title("Scotland");
  
  ui_button* loading = ui_elem_new("loading", ui_button);
  ui_button_move(loading, vec2_new(graphics_viewport_width() / 2 - 40,graphics_viewport_height() / 2 - 13));
  ui_button_resize(loading, vec2_new(80,25));
  ui_button_set_label(loading, "Loading...");
  ui_button_disable(loading);
  
  ui_spinner* load_spinner = ui_elem_new("load_spinner", ui_spinner);
  load_spinner->color = vec4_white();
  load_spinner->top_left = vec2_new(graphics_viewport_width() / 2 + 50, graphics_viewport_height() / 2 - 13);
  load_spinner->bottom_right = vec2_add(load_spinner->top_left, vec2_new(24,24));
  
  ui_button* framerate = ui_elem_new("framerate", ui_button);
  ui_button_move(framerate, vec2_new(10,10));
  ui_button_resize(framerate, vec2_new(30,25));
  ui_button_set_label(framerate, "FRAMERATE");
  ui_button_disable(framerate);
  framerate->active = false;
  
  ui_button* wireframe = ui_elem_new("wireframe", ui_button);
  ui_button_move(wireframe, vec2_new(50,10));
  ui_button_resize(wireframe, vec2_new(80,25));
  ui_button_set_label(wireframe, "wireframe");
  wireframe->active = false;
  
  ui_elem_add_event("wireframe", toggle_wireframe);
  
  ui_button* freecam = ui_elem_new("freecam", ui_button);
  ui_button_move(freecam, vec2_new(140,10));
  ui_button_resize(freecam, vec2_new(65,25));
  ui_button_set_label(freecam, "freecam");
  freecam->active = false;
  
  ui_elem_add_event("freecam", toggle_freecam);
  
  loading_resources = true;
  SDL_Thread* load_thread = SDL_GL_CreateThread(load_resources, NULL);
  
  /* New Camera and light */
  
  camera* cam = entity_new("camera", camera);
  cam->position = vec3_new(512.0, 200.0, 512.0);
  cam->target =  vec3_new(0.0, 0.0, 0.0);
  
  light* sun = entity_new("sun", light);
  light_set_type(sun, light_type_sun);
  sun->position = vec3_new(0, 512, 0);
  sun->target = vec3_new(512, 0, 512);
  
  /* Renderer Setup */
  
  shadow_mapper_init(sun);
  
  forward_renderer_init();
  forward_renderer_set_camera(cam);
  forward_renderer_set_shadow_light(sun);
  forward_renderer_set_shadow_texture( shadow_mapper_depth_texture() );
  forward_renderer_add_light(sun);
  
}
Esempio n. 3
0
int main(int argc, char **argv) {
  
  #ifdef _WIN32
    FILE* ctt = fopen("CON", "w" );
    FILE* fout = freopen( "CON", "w", stdout );
    FILE* ferr = freopen( "CON", "w", stderr );
  #endif
  
  corange_init("../../assets_core");
  
  graphics_viewport_set_dimensions(1280, 720);
  graphics_viewport_set_title("Noise");
  
  folder_load(P("./"));
  file_load(P("$CORANGE/textures/random.dds"));
  
  glClearColor(1.0, 0.0, 0.0, 1.0);
  
  ui_button* info_button = ui_elem_new("info_button", ui_button);
  ui_button_move(info_button, vec2_new(10, 10));
  ui_button_resize(info_button, vec2_new(460,25));
  ui_button_set_label(info_button, "Procedural texture from perlin noise and feedback functions.");
  
  ui_button* save_button = ui_elem_new("save_button", ui_button);
  ui_button_move(save_button, vec2_new(480, 10));
  ui_button_resize(save_button, vec2_new(380,25));
  ui_button_set_label(save_button, "Click Here to save tileable perlin noise to file.");
  ui_button_set_onclick(save_button, save_noise_to_file);
  
  ui_rectangle* spinner_box = ui_elem_new("spinner_box", ui_rectangle);
  spinner_box->color = vec4_black();
  spinner_box->border_color = vec4_white();
  spinner_box->border_size = 1;
  spinner_box->top_left = vec2_new(870, 7);
  spinner_box->bottom_right = vec2_new(902, 39);
  
  ui_spinner* save_spinner = ui_elem_new("save_spinner", ui_spinner);
  save_spinner->color = vec4_new(1,1,1,0);
  save_spinner->top_left = vec2_new(874, 11);
  save_spinner->bottom_right = vec2_add(save_spinner->top_left, vec2_new(24,24));
  
  srand(time(NULL));
  shader_time = (float)rand() / (RAND_MAX / 1000);
  
  bool running = true;
  while(running) {
    frame_begin();
    
    SDL_Event event;
    while(SDL_PollEvent(&event)) {
      
      switch(event.type){
      case SDL_KEYDOWN:
      case SDL_KEYUP:
        if (event.key.keysym.sym == SDLK_ESCAPE) { running = 0; }
        if (event.key.keysym.sym == SDLK_PRINT) { graphics_viewport_screenshot(); }
        break;
      case SDL_QUIT:
        running = 0;
        break;
      break;
      }
      
      ui_event(event);
      
    }
    
    shader_time += frame_time();
    ui_update();
    
    noise_render();
    ui_render();
    
    SDL_GL_SwapBuffers();
    
    frame_end();
    
  }  
  
  SDL_WaitThread(save_thread, NULL);
  
  corange_finish();
  
  return 0;
}