int rt_initialize(int * argc, char ***argv) { InitTextures(); if (!parinitted) { rt_par_init(argc, argv); parinitted=1; } return rt_mynode(); /* return our node id */ }
void rt_boundthresh(SceneHandle voidscene, int threshold) { scenedef * scene = (scenedef *) voidscene; if (threshold > 1) { scene->boundthresh = threshold; } else { if (rt_mynode() == 0) { rt_ui_message(MSG_0, "Out-of-range automatic bounding threshold.\n"); rt_ui_message(MSG_0, "Automatic bounding threshold reset to default.\n"); } scene->boundthresh = BOUNDTHRESH; } scene->scenecheck = 1; }
/* allocate and initialize a scene with default parameters */ SceneHandle rt_newscene(void) { scenedef * scene; SceneHandle voidscene; apicolor bgcolor = rt_color(0.0, 0.0, 0.0); apicolor ambcolor = rt_color(1.0, 1.0, 1.0); scene = (scenedef *) malloc(sizeof(scenedef)); memset(scene, 0, sizeof(scenedef)); /* clear all valuas to 0 */ voidscene = (SceneHandle) scene; rt_outputfile(voidscene, "/tmp/outfile.tga"); /* default output file */ rt_crop_disable(voidscene); /* disable cropping */ rt_outputformat(voidscene, RT_FORMAT_TARGA); /* default iamge format */ rt_resolution(voidscene, 512, 512); /* 512x512 resolution */ rt_verbose(voidscene, 0); /* verbose messages off */ rt_image_gamma(voidscene, 2.2f); /* set default gamma */ rt_image_clamp(voidscene); /* clamp image colors */ #if 1 rt_rawimage_rgb96f(voidscene, NULL); /* raw image output off */ #else rt_rawimage_rgb24(voidscene, NULL); /* raw image output off */ #endif rt_boundmode(voidscene, RT_BOUNDING_ENABLED); /* spatial subdivision on */ rt_boundthresh(voidscene, BOUNDTHRESH); /* default threshold */ rt_camera_setup(voidscene, 1.0, 1.0, 0, 6, rt_vector(0.0, 0.0, 0.0), rt_vector(0.0, 0.0, 1.0), rt_vector(0.0, 1.0, 0.0)); rt_camera_dof(voidscene, 1.0, 0.0); rt_shadermode(voidscene, RT_SHADER_AUTO); rt_rescale_lights(voidscene, 1.0); rt_phong_shader(voidscene, RT_SHADER_BLINN); rt_background(voidscene, bgcolor); rt_background_sky_sphere(voidscene, rt_vector(0.0, 1.0, 0.0), 0.3, 0, rt_color(0.0, 0.0, 0.0), rt_color(0.0, 0.0, 0.5)); rt_background_mode(voidscene, RT_BACKGROUND_TEXTURE_SOLID); rt_ambient_occlusion(voidscene, 0, ambcolor); /* disable AO by default */ rt_fog_rendering_mode(voidscene, RT_FOG_NORMAL); /* radial fog by default */ rt_fog_mode(voidscene, RT_FOG_NONE); /* disable fog by default */ rt_fog_parms(voidscene, bgcolor, 0.0, 1.0, 1.0); /* use max positive integer for max transparent surface limit by default */ rt_trans_max_surfaces(voidscene,((((int)1) << ((sizeof(int) * 8) - 2))-1)*2); rt_trans_mode(voidscene, RT_TRANS_ORIG); /* set transparency mode */ rt_normal_fixup_mode(voidscene, 0); /* disable normal fixup */ rt_shadow_filtering(voidscene, 1); /* shadow filtering on */ scene->objgroup.boundedobj = NULL; scene->objgroup.unboundedobj = NULL; scene->objgroup.numobjects = 0; scene->texlist = NULL; scene->lightlist = NULL; scene->cliplist = NULL; scene->numlights = 0; scene->scenecheck = 1; scene->parbuf = NULL; scene->threads = NULL; scene->threadparms = NULL; scene->flags = RT_SHADE_NOFLAGS; rt_set_numthreads(voidscene, -1); /* auto determine num threads */ /* number of distributed memory nodes, fills in array of node/cpu info */ scene->nodes = rt_getcpuinfo(&scene->cpuinfo); scene->mynode = rt_mynode(); return scene; }
int main(int argc, char **argv) { SceneHandle scene; int i, j; apivector Ccenter, Cview, Cup; apivector ctr1, ctr2; apitexture tex1, tex2; void * vtx1, * vtx2; char fname[100]; rt_initialize(&argc, &argv); Ccenter.x=0.0; Ccenter.y=0.0; Ccenter.z=-3.0; Cview.x=0.0; Cview.y=0.0; Cview.z=1.0; Cup.x=0.0; Cup.y=1.0; Cup.z=0.0; ctr1.x=20.0; ctr1.y=20.0; ctr1.z=-40.0; ctr2.x=-20.0; ctr2.y=20.0; ctr2.z=-40.0; tex1.col.r=1.0; tex1.col.g=0.5; tex1.col.b=0.0; tex1.ambient=1.0; tex1.opacity=1.0; tex2=tex1; tex2.col.r=0.0; tex2.col.b=1.0; initspheres(); for (i=0; i<MAXFRAMES; i++) { scene = rt_newscene(); vtx1=rt_texture(scene, &tex1); vtx2=rt_texture(scene, &tex2); sprintf(fname,"outfile.%4.4d.tga",i); if (rt_mynode()==0) printf("Rendering: %s\n", fname); rt_outputfile(scene, fname); rt_resolution(scene, XRES, YRES); rt_verbose(scene, 0); rt_camera_setup(scene, 1.0, 1.0, 0, 5, Ccenter, Cview, Cup); movesp(); drawsp(scene); rt_light(scene, vtx1, ctr1, 1.0); rt_light(scene, vtx2, ctr2, 1.0); rt_renderscene(scene); rt_deletescene(scene); for (j=0; j<NUMSP; j++) free(sp[i].voidtex); } rt_finalize(); return 0; }