29#ifndef __FREEWRL_SCENEGRAPH_SHAPE_H__
30#define __FREEWRL_SCENEGRAPH_SHAPE_H__
70void popShaderFlags(
void);
76#define NO_APPEARANCE_SHADER 0x0001
77#define MATERIAL_APPEARANCE_SHADER 0x0002
78#define TWO_MATERIAL_APPEARANCE_SHADER 0x0004
79#define ONE_TEX_APPEARANCE_SHADER 0x0008
80#define MULTI_TEX_APPEARANCE_SHADER 0x0010
83#define COLOUR_MATERIAL_SHADER 0x00020
86#define FILL_PROPERTIES_SHADER 0x00040
89#define HAVE_LINEPOINTS_COLOR 0x0080
90#define HAVE_LINEPOINTS_APPEARANCE 0x00100
93#define HAVE_TEXTURECOORDINATEGENERATOR 0x00200
96#define HAVE_CUBEMAP_TEXTURE 0x00400
98#define FOG_APPEARANCE_SHADER 0X00800
99#define HAVE_FOG_COORDS 0x01000
100#define TEXTURE_REPLACE_PRIOR 0x02000
101#define TEXALPHA_REPLACE_PRIOR 0x04000
102#define CPV_REPLACE_PRIOR 0x08000
103#define SHADINGSTYLE_FLAT 0x10000
104#define SHADINGSTYLE_GOURAUD 0x20000
105#define SHADINGSTYLE_PHONG 0x40000
106#define SHADINGSTYLE_WIRE 0x80000
107#define MAT_FIRST 0x100000
108#define WANT_ANAGLYPH 0x200000
109#define TEX3D_SHADER 0X400000
110#define TEX3D_LAYER_SHADER 0x800000
111#define CLIPPLANE_SHADER 0x1000000
112#define PARTICLE_SHADER 0X2000000
113#define HAVE_UNLIT_COLOR 0x4000000
114#define HAVE_PROJECTIVETEXTURE 0X8000000
118#define SHADERFLAGS_VOLUME_DATA_BASIC 0x001
119#define SHADERFLAGS_VOLUME_DATA_SEGMENT 0x002
120#define SHADERFLAGS_VOLUME_DATA_ISO 0x004
121#define SHADERFLAGS_VOLUME_DATA_ISO_MODE3 0x008
133#define SHADERFLAGS_VOLUME_STYLE_DEFAULT 1
134#define SHADERFLAGS_VOLUME_STYLE_OPACITY 2
135#define SHADERFLAGS_VOLUME_STYLE_BLENDED 3
136#define SHADERFLAGS_VOLUME_STYLE_BOUNDARY 4
137#define SHADERFLAGS_VOLUME_STYLE_CARTOON 5
138#define SHADERFLAGS_VOLUME_STYLE_COMPOSED 6
139#define SHADERFLAGS_VOLUME_STYLE_EDGE 7
140#define SHADERFLAGS_VOLUME_STYLE_PROJECTION 8
141#define SHADERFLAGS_VOLUME_STYLE_SHADED 9
142#define SHADERFLAGS_VOLUME_STYLE_SILHOUETTE 10
143#define SHADERFLAGS_VOLUME_STYLE_TONE 11
164 GLfloat emissionColour[3];
173 GLfloat hatchPercent[2];
174 GLfloat hatchScale[2];
175 GLfloat hatchColour[4];
181 int texCoordGeneratorType;
185void setUserShaderNode(
struct X3D_Node *me);
187#define MIN_NODE_TRANSPARENCY 0.0f
188#define MAX_NODE_TRANSPARENCY 0.99f
190#define RENDER_MATERIAL_SUBNODES(which) \
191 { struct X3D_Node *tmpN; \
192 POSSIBLE_PROTO_EXPANSION(struct X3D_Node *, which,tmpN) \
199#define SET_SHADER_SELECTED_FALSE(x3dNode) \
200 switch (X3D_NODE(x3dNode)->_nodeType) { \
201 case NODE_ComposedShader: \
202 X3D_COMPOSEDSHADER(x3dNode)->isSelected = FALSE; \
204 case NODE_ProgramShader: \
205 X3D_PROGRAMSHADER(x3dNode)->isSelected = FALSE; \
207 case NODE_PackagedShader: \
208 X3D_PROGRAMSHADER(x3dNode)->isSelected = FALSE; \
216#define SET_FOUND_GOOD_SHADER(x3dNode) \
217 switch (X3D_NODE(x3dNode)->_nodeType) { \
218 case NODE_ComposedShader: \
219 foundGoodShader = X3D_COMPOSEDSHADER(x3dNode)->isValid; \
220 X3D_COMPOSEDSHADER(x3dNode)->isSelected = foundGoodShader; \
222 case NODE_ProgramShader: \
223 foundGoodShader = X3D_PROGRAMSHADER(x3dNode)->isValid; \
224 X3D_PROGRAMSHADER(x3dNode)->isSelected = foundGoodShader; \
226 case NODE_PackagedShader: \
227 foundGoodShader = X3D_PROGRAMSHADER(x3dNode)->isValid; \
228 X3D_PACKAGEDSHADER(x3dNode)->isSelected = foundGoodShader; \