コード例 #1
0
ファイル: main.c プロジェクト: mattjakob/s3d
int main(int argc, char **argv)
{
  Poly *l, *p, *c = poly_alloc(3);
  Item *i;

  init_sdl();
  s = scene_read();
  init_render();

  for (o = s->objs; o != NULL; o = o->next) {
    for (l = prim_uv_decomp(o->u.prim, 1.); l != NULL; l = l->next) {
      p = poly_transform(prim_polys(o->u.prim, l), mclip);
      if (!is_backfacing(p, v3_unit(v3_scale(-1, poly_centr(p)))))
	hither_clip(VIEW_ZMIN(s->view), p, z_store, plist_free);
    }
  }
  z = z_sort(z);

  for (i = z->head; i != NULL; i = i->next) { 
    gouraud_shade(c, P(i), N(i), s->view->center, rc, M(i));
    p = poly_homoxform(S(i),mdpy);
    scan_poly(p, gouraud_paint, gouraud_set(g,c,s->img));
  }
  img_write(s->img, "stdout", 0);
  exit(0);
}
コード例 #2
0
ファイル: main.c プロジェクト: mattjakob/s3d
int main(int argc, char **argv)
{
  Poly *l, *p, *q = poly_alloc(3);
  Hpoly *t = hpoly_alloc(3);
  Item *i;

  init_sdl();
  s = scene_read();
  init_render();

  for (o = s->objs; o != NULL; o = o->next) {
    for (l = prim_uv_decomp(o->u.prim, 1.); l != NULL; l = l->next) {
      p = poly_transform(prim_polys(o->u.prim, l), mclip);
      if (!is_backfacing(p, v3_unit(v3_scale(-1, poly_centr(p)))))
	hither_clip(0, p, z_store, plist_free);
    }
  }
  z = z_sort(z);

  for (i = z->head; i != NULL; i = i->next) {
    t = hpoly_polyxform(t, S(i), mdpy);
    q = poly_wz_hpoly(q, W(i), t);
    texture_wscale(W(i), T(i));
    scan_spoly3(q, 2, texture_shadepaint,
             texture_set(td,W(i),T(i),P(i),N(i),DU(i),DV(i),rc,M(i)));
  }
  img_write(s->img, "stdout", 0);
  exit(0);
}
コード例 #3
0
ファイル: main.c プロジェクト: mattjakob/s3d
main(int argc, char **argv)
{
  Prim *o;
  Color c; int u, v;
  Ray r; Inode *l;

  o = sphere_instance(&sphere_funcs);
  init_sdl();
  s = scene_read();
  init_render();

  for (v = s->view->sc.ll.y; v < s->view->sc.ur.y; v += 1) {
    for (u = s->view->sc.ll.x; u < s->view->sc.ur.x; u += 1) {
      r = ray_unit(ray_transform(ray_view(u, v), mclip));
      if ((l = ray_intersect(s->objs, r)) != NULL) 
        c = point_tshade(ray_point(r, l->t), l->n, s->view->center, rc, l->m, o);
      else 
	c = bgcolor;
      inode_free(l);
      img_putc(s->img, u, v, col_dpymap(c));
    }
  }
  img_write(s->img,"stdout",0);
  exit(0);
}
コード例 #4
0
ファイル: main.c プロジェクト: cheque/s3d
int main(int argc, char **argv)
{
  Scene *s;

  init_lang();
  scn = scene_read();

  init_glut("GPU", scn);
  glutMainLoop();
  close_gl(scn);
  
  exit(0);
}
コード例 #5
0
ファイル: glwidget.cpp プロジェクト: cheque/s3d
int load_scene_file(const char *name)
{
    FILE *fp = fopen(name, "r");
    if (!fp) return false;

    if (scene != NULL) {
        scene_free(scene);
    }
    lang_file(fp);

    if ((scene = scene_read()) == NULL)
        return false;
    fclose(fp);

    return true;
}
コード例 #6
0
ファイル: main.c プロジェクト: mattjakob/s3d
int main(int argc, char **argv)
{
  Scene *s;

  get_args(argc, argv);
  init_sdl();
  s = scene_read();

  gpsetdoublebuffer(1);
  plot_init("anim", s, bflag);
  while (!time_done(timeoff)) {
    plot_scene(s);
    scene_free(s);
    s = scene_eval();
    time_incr(1);
  }
  gpwait(-1);
  plot_close();
}  
コード例 #7
0
ファイル: glwidget.cpp プロジェクト: cheque/s3d
static bool load_scene_file(const char *name) {
    FILE *fp = fopen(name, "r");
    if (!fp) return false;

    if (scn != NULL) {
        close_gl(scn);
        scene_free(scn);
        st_cleanup();
    }
    lang_file(fp);
    if ((scn = scene_read()) == NULL)
        return false;
    fclose(fp);

    load_objects_gl(scn->objs);
    setup_programs_gl(scn, scn->objs);

    return true;
}
コード例 #8
0
ファイル: main.c プロジェクト: mattjakob/s3d
main(int argc, char **argv)
{
    Color c;
    int u, v;
    Ray r;

    init_sdl();
    s = scene_read();
    init_render();

    for (v = s->view->sc.ll.y; v < s->view->sc.ur.y; v += 1) {
        for (u = s->view->sc.ll.x; u < s->view->sc.ur.x; u += 1) {
            r = ray_unit(ray_transform(ray_view(u, v), mclip));
            c = ray_shade(0, 1., r, rc, s->objs);
            img_putc(s->img, u, v, col_dpymap(c));
        }
    }
    img_write(s->img,"stdout",0);
    exit(0);
}