home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Applications / RTrace 1.0 / source / extern.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-09-23  |  11.5 KB  |  284 lines  |  [TEXT/KAHL]

  1. /*
  2.  * Copyright (c) 1988, 1992 Antonio Costa, INESC-Norte.
  3.  * All rights reserved.
  4.  *
  5.  * This code received contributions from the following people:
  6.  *
  7.  *  Roman Kuchkuda      - basic ray tracer
  8.  *  Mark VandeWettering - MTV ray tracer
  9.  *  Augusto Sousa       - overall, shading model
  10.  *
  11.  * Redistribution and use in source and binary forms are permitted
  12.  * provided that the above copyright notice and this paragraph are
  13.  * duplicated in all such forms and that any documentation,
  14.  * advertising materials, and other materials related to such
  15.  * distribution and use acknowledge that the software was developed
  16.  * by Antonio Costa, at INESC-Norte. The name of the author and
  17.  * INESC-Norte may not be used to endorse or promote products derived
  18.  * from this software without specific prior written permission.
  19.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  20.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  21.  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  22.  */
  23.  
  24. /**********************************************************************
  25.  *    RAY TRACING - Externs - Version 7.3.1                           *
  26.  *                                                                    *
  27.  *    MADE BY    : Antonio Costa, INESC-Norte, October 1988           *
  28.  *    ADAPTED BY : Antonio Costa, INESC-Norte, June 1989              *
  29.  *    MODIFIED BY: Antonio Costa, INESC-Norte, July 1992              *
  30.  **********************************************************************/
  31.  
  32. /***** External declarations *****/
  33. extern short int antialiasing_mode;
  34. extern short int view_mode;
  35. extern short int texture_mode;
  36. extern short int light_mode;
  37. extern short int last_shade_level;
  38. extern short int background_mode;
  39. extern short int sampling_levels;
  40. extern short int sampling_divisions;
  41. extern short int sampling_weight;
  42. extern short int cluster_size;
  43. extern short int ambient_sample_rays;
  44. extern short int last_ambient_level;
  45. extern short int distributed_cache_mode;
  46. extern short int distributed_cache_repetitions;
  47. extern short int intersect_mode;
  48. extern short int intersect_adjust_mode;
  49. extern short int jittering_mode;
  50. extern short int raw_mode;
  51. extern short int normal_mode;
  52. extern short int normal_check_mode;
  53. extern short int shade_mode;
  54. extern short int output_format;
  55. extern short int verbose_mode;
  56. extern int      objects;
  57. extern short int lights;
  58. extern short int surfaces;
  59. extern short int screen_size_x, screen_size_y;
  60. extern short int shade_level, shade_level_max;
  61. extern short int pqueue_size;
  62. extern short int ray_node;
  63.  
  64. extern real     gaze_distance, light_distance;
  65. extern real     pixel_distance, threshold_distance;
  66. extern real     view_angle_x, view_angle_y;
  67. extern real     threshold_level, threshold_color, threshold_vector;
  68. extern real     focal_aperture, focal_distance;
  69. extern real     stereo_separation;
  70.  
  71. extern real     eye_rays, reflected_rays, refracted_rays, shadow_rays;
  72. extern real     ambient_rays;
  73. extern real     shadow_hits, shadow_cache_hits;
  74. extern real     octant_tests, bound_tests, sphere_tests, box_tests,
  75.                 patch_tests, cone_tests, polygon_tests,
  76.                 triangle_tests, text_tests, csg_tests, list_tests;
  77. extern real     pqueue_resets, pqueue_insertions, pqueue_extractions;
  78. extern real     ray_hits, ray_cache_resets, ray_cache_hits;
  79. extern real     distributed_cache_resets, distributed_cache_hits;
  80. extern real     pixel_divisions;
  81.  
  82. extern
  83. xyz_struct      eye, look, up, gaze, screen_x, screen_y;
  84.  
  85. extern
  86. int             ray_cache[RAY_SIZE_MAX];
  87.  
  88. #ifdef THINK_C
  89. extern
  90. rgb_struct      back_color, light_ambient, *true_color;
  91. #else
  92. extern
  93. rgb_struct      back_color, light_ambient, true_color[SCREEN_SIZE_X_MAX];
  94. #endif
  95.  
  96. extern
  97. object_ptr     *object;
  98.  
  99. extern
  100. surface_ptr    *surface;
  101.  
  102. extern
  103. light_struct    light[LIGHTS_MAX];
  104.  
  105. extern
  106. pqueue_struct  *pqueue;
  107.  
  108. extern
  109. pixel_ptr       new_line, old_line;
  110.  
  111. #ifdef THINK_C
  112. extern real     *back_mask;
  113. #else
  114. extern real     back_mask[SCREEN_SIZE_X_MAX];
  115. #endif
  116.  
  117. extern
  118. wave_struct     wave;
  119.  
  120. extern
  121. file_ptr        scene, picture, results, background, raw_picture;
  122.  
  123. #ifdef PROTOTYPES
  124. #define P(args) args
  125. #else
  126. #define P(args) ()
  127. #endif
  128.  
  129. extern
  130. vertex_ptr      vertex_pointer P((int, int *, vertex_ptr *, vertex_ptr *));
  131.  
  132. extern void     runtime_abort P((char_ptr));
  133. extern void     make_vector P((xyz_ptr, real, real, real));
  134. extern void     pqueue_extract P((real *, object_ptr *));
  135. extern void     pqueue_insert P((real, object_ptr));
  136. extern void     box_enclose P((object_ptr));
  137. extern void     sphere_enclose P((object_ptr));
  138. extern void     patch_enclose P((object_ptr));
  139. extern void     cone_enclose P((object_ptr));
  140. extern void     polygon_enclose P((object_ptr));
  141. extern void     triangle_enclose P((object_ptr));
  142. extern void     text_enclose P((object_ptr));
  143. extern void     csg_enclose P((int, int *, int *));
  144. extern void     list_enclose P((object_ptr));
  145. extern void     enclose_all P((void));
  146. extern void     box_normal P((xyz_ptr, object_ptr, xyz_ptr));
  147. extern void     sphere_normal P((xyz_ptr, object_ptr, xyz_ptr));
  148. extern void     patch_normal P((xyz_ptr, object_ptr, xyz_ptr));
  149. extern void     cone_normal P((xyz_ptr, object_ptr, xyz_ptr));
  150. extern void     polygon_normal P((xyz_ptr, object_ptr, xyz_ptr));
  151. extern void     triangle_normal P((xyz_ptr, object_ptr, xyz_ptr));
  152. extern void     text_normal P((xyz_ptr, object_ptr, xyz_ptr));
  153. extern void     csg_normal P((xyz_ptr, object_ptr, xyz_ptr));
  154. extern void     list_normal P((xyz_ptr, object_ptr, xyz_ptr));
  155. extern void     vector_to_light P((int, xyz_ptr, xyz_ptr));
  156. extern void     light_brightness P((int, int, xyz_ptr, xyz_ptr, rgb_ptr));
  157. extern void     make_diffuse_vector P((xyz_ptr, xyz_ptr));
  158. extern void     make_specular_vector P((xyz_ptr, xyz_ptr, real, xyz_ptr));
  159. extern void     shade P((xyz_ptr, xyz_ptr, ray_ptr, object_ptr, rgb_ptr));
  160. extern void     shade_phong P((xyz_ptr, xyz_ptr, ray_ptr, object_ptr,
  161.                             rgb_ptr));
  162. extern void     shade_strauss P((xyz_ptr, xyz_ptr, ray_ptr, object_ptr,
  163.                               rgb_ptr));
  164. extern void     surface_texture P((xyz_ptr, xyz_ptr, surface_ptr,
  165.                                 texture_ptr));
  166. extern void     init_picture P((void));
  167. extern void     line_picture P((void));
  168. extern void     find_true_color P((int, int,
  169.                 pixel_ptr, pixel_ptr, pixel_ptr,pixel_ptr,
  170.                 rgb_ptr));
  171. extern void     get_valid P((file_ptr, real *, real, real, char_ptr));
  172. extern void     get_point_light P((void));
  173. extern void     get_dir_light P((void));
  174. extern void     get_ext_light P((void));
  175. extern void     get_surface_type1 P((void));
  176. extern void     get_surface_type2 P((void));
  177. extern void     get_sphere P((void));
  178. extern void     get_box P((void));
  179. extern void     get_patch P((void));
  180. extern void     get_cone P((void));
  181. extern void     get_polygon P((void));
  182. extern void     get_triangle P((void));
  183. extern void     get_text P((void));
  184. extern void     get_csg P((void));
  185. extern void     get_list P((void));
  186. extern void     get_object_transform P((int, int *, int *));
  187. extern void     get_texture_null P((int, int *, int *));
  188. extern void     get_texture_checker P((int, int *, int *));
  189. extern void     get_texture_blotch P((int, int *, int *));
  190. extern void     get_texture_bump P((int, int *, int *));
  191. extern void     get_texture_marble P((int, int *, int *));
  192. extern void     get_texture_fbm P((int, int *, int *));
  193. extern void     get_texture_fbm_bump P((int, int *, int *));
  194. extern void     get_texture_wood P((int, int *, int *));
  195. extern void     get_texture_round P((int, int *, int *));
  196. extern void     get_texture_bozo P((int, int *, int *));
  197. extern void     get_texture_ripples P((int, int *, int *));
  198. extern void     get_texture_waves P((int, int *, int *));
  199. extern void     get_texture_spotted P((int, int *, int *));
  200. extern void     get_texture_dents P((int, int *, int *));
  201. extern void     get_texture_agate P((int, int *, int *));
  202. extern void     get_texture_wrinkles P((int, int *, int *));
  203. extern void     get_texture_granite P((int, int *, int *));
  204. extern void     get_texture_gradient P((int, int *, int *));
  205. extern void     get_texture_image_map P((int, int *, int *));
  206. extern void     get_texture_gloss P((int, int *, int *));
  207. extern void     get_texture_bump3 P((int, int *, int *));
  208. extern void     get_parameters P((int, char_ptr[]));
  209. extern void     get_scene P((void));
  210. extern void     cluster_intersect P((int, int, int, xyz_ptr, xyz_ptr,
  211.                                   cluster_ptr, real *, int *, boolean));
  212. extern void     init_texture P((void));
  213. extern void     black_noise2 P((xyz_ptr, xyz_ptr));
  214. extern void     fbm_noise2 P((xyz_ptr, real, real, int, xyz_ptr));
  215. extern void     turbulence2 P((xyz_ptr, xyz_ptr));
  216. extern void     transform P((xyzw_ptr, xyz_ptr, xyz_ptr));
  217. extern void     transform_vector P((xyzw_ptr, xyz_ptr, xyz_ptr, xyz_ptr,
  218.                                  xyz_ptr));
  219. extern void     transform_normal_vector P((xyzw_ptr, xyz_ptr, xyz_ptr,
  220.                     xyz_ptr));
  221. extern void     inverse_transform P((xyzw_ptr, xyzw_ptr));
  222. extern void     normalize_transform P((xyzw_ptr));
  223. extern void     validate_object P((object_ptr, int));
  224.  
  225. extern boolean  octant_intersect P((int, xyz_ptr, xyz_ptr, xyz_ptr,
  226.                                  xyz_ptr));
  227. extern boolean  refract P((ray_ptr, xyz_ptr, boolean, real));
  228.  
  229. extern int      estimate_diffuse P((int, real));
  230. extern int      estimate_specular P((int, real, real));
  231.  
  232. extern real     tang P((real));
  233. extern real     bound_intersect P((xyz_ptr, xyz_ptr, xyz_ptr, xyz_ptr));
  234. extern real     box_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  235. extern real     sphere_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  236. extern real     patch_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  237. extern real     cone_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  238. extern real     polygon_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  239. extern real     triangle_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  240. extern real     text_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  241. extern real     csg_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  242. extern real     list_intersect P((xyz_ptr, xyz_ptr, object_ptr));
  243. extern real     intersect_all P((int, xyz_ptr, ray_ptr, rgb_ptr));
  244. extern real     chaos_noise P((xyz_ptr, int));
  245. extern real     black_noise P((xyz_ptr));
  246. extern real     fbm_noise P((xyz_ptr, real, real, int));
  247. extern real     marble_noise P((xyz_ptr));
  248. extern real     turbulence P((xyz_ptr));
  249. extern real     cycloidal P((real));
  250. extern real     triangle_wave P((real));
  251. extern real     transform_distance P((xyzw_ptr, real, xyz_ptr, xyz_ptr,
  252.                                    xyz_ptr));
  253. extern real     light_intensity P((int, xyz_ptr));
  254.  
  255. #undef P
  256.  
  257. #ifdef THINK_C
  258.     
  259. /* macintosh external functions */
  260. extern void process_mac_event(void);
  261. extern void *mac_alloc(unsigned int size);
  262. extern void *mac_free(void *);
  263. extern void mac_halt(void);
  264. extern void set_status_text(Str255 string);
  265. extern void set_progress_bar_value(long value);
  266. extern void set_progress_bar_max(long value);
  267. extern void set_sub_progress_bar_value(long value);
  268. extern void set_sub_progress_bar_max(long value);
  269. extern void update_status_free_memory (void);
  270. extern void add_line_to_log_window (char *line);
  271.  
  272. /* macintosh external variables */
  273. extern Boolean    get_another_event;            /* TRUE if it's time to get another event */
  274. extern Boolean    do_enclose;                    /* TRUE if rtrace should enclose the scene */
  275. extern Boolean    status_dialog_visible;        /* TRUE if the status dialog is visible */
  276. extern long        number_noncluster_objects;    /* number of objects which are not clusters */
  277. extern short    temp_folder_wd_id;            /* Working Directory ID of temporary items folder */
  278. extern short    sff_file_wd_id;                /* Working Directory ID of the sff file directory */
  279.  
  280. #endif
  281.  
  282.  
  283.  
  284.