0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }; #define SHDR_NULL ((struct fire_specific *)0) #define SHDR_O(m) bu_offsetof(struct fire_specific, m) #define SHDR_AO(m) bu_offsetofarray(struct fire_specific, m) /* description of how to parse/print the arguments to the shader * There is at least one line here for each variable in the shader specific * structure above */ struct bu_structparse fire_print_tab[] = { {"%d", 1, "debug", SHDR_O(fire_debug), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 1, "flicker", SHDR_O(fire_flicker), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 1, "stretch", SHDR_O(fire_stretch), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 1, "lacunarity", SHDR_O(noise_lacunarity), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 1, "H", SHDR_O(noise_h_val), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 1, "octaves", SHDR_O(noise_octaves), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 3, "scale", SHDR_O(noise_size), bu_mm_cvt }, {"%f", 3, "vscale", SHDR_AO(noise_vscale), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 3, "delta", SHDR_AO(noise_delta), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 3, "max", SHDR_AO(fire_max), BU_STRUCTPARSE_FUNC_NULL }, {"%f", 3, "min", SHDR_AO(fire_min), BU_STRUCTPARSE_FUNC_NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL } }; struct bu_structparse fire_parse_tab[] = { {"i", bu_byteoffset(fire_print_tab[0]), "fire_print_tab", 0, BU_STRUCTPARSE_FUNC_NULL },
4.0, /* octaves */ 1.0, /* scale */ VINITALL(1.0), /* vscale */ { 1000.0, 1200.0, 2100.0 }, /* delta */ 0.01, /* max_d_p_mm */ 0.0, /* min_d_p_mm */ MAT_INIT_IDN, /* mtos */ MAT_INIT_IDN /* stom */ }; #define SHDR_NULL ((struct scloud_specific *)0) #define SHDR_O(m) bu_offsetof(struct scloud_specific, m) struct bu_structparse scloud_pr[] = { {"%g", 1, "lacunarity", SHDR_O(lacunarity), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "H", SHDR_O(h_val), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "octaves", SHDR_O(octaves), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "scale", SHDR_O(scale), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "vscale", SHDR_O(vscale), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "delta", SHDR_O(delta), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "Max", SHDR_O(max_d_p_mm), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "min", SHDR_O(min_d_p_mm), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; struct bu_structparse scloud_parse[] = { {"%g", 1, "lacunarity", SHDR_O(lacunarity), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "H", SHDR_O(h_val), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "octaves", SHDR_O(octaves), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "scale", SHDR_O(scale), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "delta", SHDR_O(delta), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
* There is at least one line here for each variable in the shader specific * structure above. * * color := is a 0.0 to 1.0 or 0.0 to 255.0 color intensity triplet * representing the RGB color values. * rgb := the same as color, just shorter (and implies 0 to 255) * bright := sets all three color channels to the same single given intensity. * e.g. a grey value (bright==.2 => color=={.2 .2 .2}==rgb * transparency := a color intensity triplet mask to indicate how much of * background object light are visible through this object. * alpha := similar to bright, sets this object's alpha transparency to a * single mask value that gets set for each channel. e.g. 40% opaque * is alpha==.4 which is equiv to transparency=={.4 .4 .4}). */ struct bu_structparse flat_parse_tab[] = { { "%f", 3, "color", SHDR_O(color), normalizedInput_hook, NULL, NULL }, /* for 0->1 color values */ { "%f", 3, "rgb", SHDR_O(color), normalizedInput_hook, NULL, NULL }, /* for 0->255 color values */ { "%f", 1, "bright", SHDR_O(color), singleNormalizedInput_hook, NULL, NULL }, /* for luminosity gray value */ { "%f", 3, "transparency", SHDR_O(transparency), normalizedInput_hook, NULL, NULL }, /* for rgb 0->1 transparency */ { "%f", 1, "alpha", SHDR_O(transparency), singleNormalizedInput_hook, NULL, NULL }, /* for single channel alpha transparency */ { "", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; /* The "mfuncs" structure defines the external interface to the shader. * Note that more than one shader "name" can be associated with a given * shader by defining more than one mfuncs struct in this array. * See sh_phong.c for an example of building more than one shader "name" * from a set of source functions. There you will find that "glass" "mirror" * and "plastic" are all names for the same shader with different default * values for the parameters.
VINIT_ZERO, /* min */ VINIT_ZERO, /* max */ MAT_INIT_ZERO, /* gauss_m_to_sh */ {0, NULL, NULL} }; #define SHDR_NULL ((struct gauss_specific *)0) #define SHDR_O(m) bu_offsetof(struct gauss_specific, m) /* description of how to parse/print the arguments to the shader * There is at least one line here for each variable in the shader specific * structure above */ struct bu_structparse gauss_print_tab[] = { {"%g", 1, "sigma", SHDR_O(gauss_sigma), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; struct bu_structparse gauss_parse_tab[] = { {"%p", 1, "gauss_print_tab", bu_byteoffset(gauss_print_tab[0]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "s", SHDR_O(gauss_sigma), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; HIDDEN int gauss_setup(register struct region *rp, struct bu_vls *matparm, void **dpp, const struct mfuncs *mfp, struct rt_i *rtip); HIDDEN int gauss_render(struct application *ap, const struct partition *pp, struct shadework *swp, void *dp); HIDDEN void gauss_print(register struct region *rp, void *dp); HIDDEN void gauss_free(void *cp);
}; #define SHDR_NULL ((struct bbd_specific *)0) #define SHDR_O(m) bu_offsetof(struct bbd_specific, m) /* local sp_hook function */ void new_image(const struct bu_structparse *, const char *, void *, const char *, void *); /* description of how to parse/print the arguments to the shader * There is at least one line here for each variable in the shader specific * structure above */ struct bu_structparse bbd_print_tab[] = { {"%ld", 1, "w", SHDR_O(img_width), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%ld", 1, "n", SHDR_O(img_height), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%d", 1, "t", SHDR_O(img_threshold), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "h", SHDR_O(img_scale), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%V", 1, "f", SHDR_O(img_filename), new_image, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; struct bu_structparse bbd_parse_tab[] = { {"%p", 1, "bbd_print_tab", bu_byteoffset(bbd_print_tab[0]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; void new_image(const struct bu_structparse *UNUSED(sdp), const char *UNUSED(name),
MAT_INIT_IDN, /* fire_m_to_sh */ MAT_INIT_IDN, /* fire_sh_to_noise */ MAT_INIT_ZERO /* fire_colorspline_mat */ }; #define SHDR_NULL ((struct fire_specific *)0) #define SHDR_O(m) bu_offsetof(struct fire_specific, m) /* description of how to parse/print the arguments to the shader * There is at least one line here for each variable in the shader specific * structure above */ struct bu_structparse fire_print_tab[] = { {"%d", 1, "debug", SHDR_O(fire_debug), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 1, "flicker", SHDR_O(fire_flicker), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 1, "stretch", SHDR_O(fire_stretch), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "lacunarity", SHDR_O(noise_lacunarity), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "H", SHDR_O(noise_h_val), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "octaves", SHDR_O(noise_octaves), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 3, "scale", SHDR_O(noise_size), bu_mm_cvt, NULL, NULL }, {"%f", 3, "vscale", SHDR_O(noise_vscale), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "delta", SHDR_O(noise_delta), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "max", SHDR_O(fire_max), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "min", SHDR_O(fire_min), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; struct bu_structparse fire_parse_tab[] = { {"%p", 1, "fire_print_tab", bu_byteoffset(fire_print_tab[0]), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
mat_t tthrm_m_to_sh; /* model to shader space matrix */ }; /* The default values for the variables in the shader specific structure */ #define SHDR_NULL ((struct tthrm_specific *)0) #define SHDR_O(m) bu_offsetof(struct tthrm_specific, m) #define SHDR_AO(m) bu_offsetofarray(struct tthrm_specific, m) /* description of how to parse/print the arguments to the shader * There is at least one line here for each variable in the shader specific * structure above */ struct bu_structparse tthrm_parse[] = { {"%f", 1, "l", SHDR_O(tt_min_temp), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 1, "h", SHDR_O(tt_max_temp), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%s", 64, "file", SHDR_O(tt_name), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"", 0, (char *)0, 0, BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; HIDDEN int tthrm_setup(register struct region *rp, struct bu_vls *matparm, genptr_t *dpp, const struct mfuncs *mfp, struct rt_i *rtip); HIDDEN int tthrm_render(struct application *ap, const struct partition *pp, struct shadework *swp, genptr_t dp); HIDDEN void tthrm_print(register struct region *rp, genptr_t dp); HIDDEN void tthrm_free(genptr_t cp); /* The "mfuncs" structure defines the external interface to the shader. * Note that more than one shader "name" can be associated with a given * shader by defining more than one mfuncs struct in this array. * See sh_phong.c for an example of building more than one shader "name"