#include "photonmap.h" #ifdef RT_MULTISPECTRAL # include "spectrum.h" #endif /* Fast approximation to specular term */ #define PHAST_PHONG 1 /* See Graphics Gems IV pg 387 */ /* from view.c */ extern double AmbientIntensity; struct bu_structparse phong_parse[] = { {"%d", 1, "shine", PL_O(shine), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%d", 1, "sh", PL_O(shine), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "specular", PL_O(wgt_specular), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "sp", PL_O(wgt_specular), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "diffuse", PL_O(wgt_diffuse), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "di", PL_O(wgt_diffuse), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "transmit", PL_O(transmit), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "tr", PL_O(transmit), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "reflect", PL_O(reflect), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "re", PL_O(reflect), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "ri", PL_O(refrac_index), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "extinction_per_meter", PL_O(extinction), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "extinction", PL_O(extinction), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "ex", PL_O(extinction), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 3, "emission", PL_O(emission), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 3, "em", PL_O(emission), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
/* light parameters */ fastf_t lt_fraction; vect_t lt_dir; fastf_t lt_angle; /* texture parameters */ char tx_file[TXT_NAME_SIZE]; int tx_w; int tx_n; }; #define PL_O(_m) bu_offsetof(struct vrml_mat, _m) const struct bu_structparse vrml_mat_parse[]={ {"%s", TXT_NAME_SIZE, "ma_shader", PL_O(shader), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%d", 1, "shine",PL_O(shininess),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%d", 1, "sh",PL_O(shininess),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "transmit",PL_O(transparency),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%g", 1, "tr",PL_O(transparency),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 1, "angle",PL_O(lt_angle),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 1, "fract",PL_O(lt_fraction),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%f", 3, "aim",PL_O(lt_dir),BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%d", 1, "w", PL_O(tx_w), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%d", 1, "n", PL_O(tx_n), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"%s", TXT_NAME_SIZE, "file",PL_O(tx_file), BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }, {"",0, (char *)0,0,BU_STRUCTPARSE_FUNC_NULL, NULL, NULL } }; extern union tree *do_region_end1(struct db_tree_state *tsp, const struct db_full_path *pathp, union tree *curtree, void *client_data); extern union tree *do_region_end2(struct db_tree_state *tsp, const struct db_full_path *pathp, union tree *curtree, void *client_data);