29#ifndef __FREEWRL_SCENEGRAPH_SHAPE_H__
30#define __FREEWRL_SCENEGRAPH_SHAPE_H__
63unsigned long long base;
72void popShaderFlags(
void);
83#define NO_APPEARANCE_SHADER 0x0001
84#define MATERIAL_APPEARANCE_SHADER 0x0002
85#define TWO_MATERIAL_APPEARANCE_SHADER 0x0004
86#define PHYSICAL_MATERIAL_APPEARANCE_SHADER 0x0008
87#define UNLIT_MATERIAL_APPEARANCE_SHADER 0x0010
88#define ONE_TEX_APPEARANCE_SHADER 0x0020
89#define MULTI_TEX_APPEARANCE_SHADER 0x0040
92#define COLOUR_MATERIAL_SHADER 0x00080
95#define FILL_PROPERTIES_SHADER 0x00100
98#define HAVE_LINEPOINTS_COLOR 0x00200
99#define HAVE_LINEPOINTS_APPEARANCE 0x00400
102#define HAVE_TEXTURECOORDINATEGENERATOR 0x00800
105#define HAVE_CUBEMAP_TEXTURE 0x01000
107#define FOG_APPEARANCE_SHADER 0X02000
108#define HAVE_FOG_COORDS 0x04000
109#define MODULATE_COLOR 0x08000
110#define MODULATE_ALPHA 0x10000
111#define MODULATE_TEXTURE 0x20000
112#define SHADINGSTYLE_FLAT 0x40000
113#define SHADINGSTYLE_GOURAUD 0x80000
114#define SHADINGSTYLE_PHONG 0x100000
115#define SHADINGSTYLE_WIRE 0x200000
116#define MAT_FIRST 0x400000
117#define WANT_ANAGLYPH 0x800000
118#define TEX3D_SHADER 0X1000000
119#define TEX3D_LAYER_SHADER 0x2000000
120#define CLIPPLANE_SHADER 0x4000000
121#define PARTICLE_SHADER 0X8000000
122#define HAVE_UNLIT_COLOR 0x10000000
123#define HAVE_PROJECTIVETEXTURE 0X20000000
124#define LINE_PROPERTIES_SHADER 0X40000000
125#define POINT_PROPERTIES_SHADER 0x80000000
126#define SKINNING_SHADER 0X100000000
127#define DISPLACER_SHADER 0x200000000
131#define SHADERFLAGS_VOLUME_DATA_BASIC 0x001
132#define SHADERFLAGS_VOLUME_DATA_SEGMENT 0x002
133#define SHADERFLAGS_VOLUME_DATA_ISO 0x004
134#define SHADERFLAGS_VOLUME_DATA_ISO_MODE3 0x008
146#define SHADERFLAGS_VOLUME_STYLE_DEFAULT 1
147#define SHADERFLAGS_VOLUME_STYLE_OPACITY 2
148#define SHADERFLAGS_VOLUME_STYLE_BLENDED 3
149#define SHADERFLAGS_VOLUME_STYLE_BOUNDARY 4
150#define SHADERFLAGS_VOLUME_STYLE_CARTOON 5
151#define SHADERFLAGS_VOLUME_STYLE_COMPOSED 6
152#define SHADERFLAGS_VOLUME_STYLE_EDGE 7
153#define SHADERFLAGS_VOLUME_STYLE_PROJECTION 8
154#define SHADERFLAGS_VOLUME_STYLE_SHADED 9
155#define SHADERFLAGS_VOLUME_STYLE_SILHOUETTE 10
156#define SHADERFLAGS_VOLUME_STYLE_TONE 11
196void clear_material_samplers();
197void clear_materialparameters_per_draw_counts();
198void initialize_front_and_back_material_params();
199int share_or_next_material_sampler_index_2D(GLint texture);
200GLint tunit2D(
int index);
201int share_or_next_material_sampler_index_Cube(GLint texture);
202GLint tunitCube(
int index);
210 s_shader_capabilities_t *currentShaderProperties;
222 GLfloat hatchPercent[2];
223 GLfloat hatchScale[2];
224 GLfloat hatchColour[4];
232 float * linetype_tse;
233 int linestrip_start_style;
234 int linestrip_end_style;
240 float pointsizeRange[2];
241 float pointsizeAttenuation[3];
245 int texCoordGeneratorType;
249void setUserShaderNode(
struct X3D_Node *me);
252#define MIN_NODE_TRANSPARENCY 0.0f
253#define MAX_NODE_TRANSPARENCY 0.99f
255#define RENDER_MATERIAL_SUBNODES(which) \
256 { struct X3D_Node *tmpN; \
257 POSSIBLE_PROTO_EXPANSION(struct X3D_Node *, which,tmpN) \
264#define SET_SHADER_SELECTED_FALSE(x3dNode) \
265 switch (X3D_NODE(x3dNode)->_nodeType) { \
266 case NODE_ComposedShader: \
267 X3D_COMPOSEDSHADER(x3dNode)->isSelected = FALSE; \
269 case NODE_ProgramShader: \
270 X3D_PROGRAMSHADER(x3dNode)->isSelected = FALSE; \
272 case NODE_PackagedShader: \
273 X3D_PROGRAMSHADER(x3dNode)->isSelected = FALSE; \
281#define SET_FOUND_GOOD_SHADER(x3dNode) \
282 switch (X3D_NODE(x3dNode)->_nodeType) { \
283 case NODE_ComposedShader: \
284 foundGoodShader = X3D_COMPOSEDSHADER(x3dNode)->isValid; \
285 X3D_COMPOSEDSHADER(x3dNode)->isSelected = foundGoodShader; \
287 case NODE_ProgramShader: \
288 foundGoodShader = X3D_PROGRAMSHADER(x3dNode)->isValid; \
289 X3D_PROGRAMSHADER(x3dNode)->isSelected = foundGoodShader; \
291 case NODE_PackagedShader: \
292 foundGoodShader = X3D_PROGRAMSHADER(x3dNode)->isValid; \
293 X3D_PACKAGEDSHADER(x3dNode)->isSelected = foundGoodShader; \