29#ifndef __FREEWRL_SCENEGRAPH_SHAPE_H__
30#define __FREEWRL_SCENEGRAPH_SHAPE_H__
74#define NO_APPEARANCE_SHADER 0x0001
75#define MATERIAL_APPEARANCE_SHADER 0x0002
76#define TWO_MATERIAL_APPEARANCE_SHADER 0x0004
77#define ONE_TEX_APPEARANCE_SHADER 0x0008
78#define MULTI_TEX_APPEARANCE_SHADER 0x0010
81#define COLOUR_MATERIAL_SHADER 0x00020
84#define FILL_PROPERTIES_SHADER 0x00040
87#define HAVE_LINEPOINTS_COLOR 0x0080
88#define HAVE_LINEPOINTS_APPEARANCE 0x00100
91#define HAVE_TEXTURECOORDINATEGENERATOR 0x00200
94#define HAVE_CUBEMAP_TEXTURE 0x00400
96#define FOG_APPEARANCE_SHADER 0X00800
97#define HAVE_FOG_COORDS 0x01000
98#define TEXTURE_REPLACE_PRIOR 0x02000
99#define TEXALPHA_REPLACE_PRIOR 0x04000
100#define CPV_REPLACE_PRIOR 0x08000
101#define SHADINGSTYLE_FLAT 0x10000
102#define SHADINGSTYLE_GOURAUD 0x20000
103#define SHADINGSTYLE_PHONG 0x40000
104#define SHADINGSTYLE_WIRE 0x80000
105#define MAT_FIRST 0x100000
106#define WANT_ANAGLYPH 0x200000
107#define TEX3D_SHADER 0X400000
108#define TEX3D_LAYER_SHADER 0x800000
109#define CLIPPLANE_SHADER 0x1000000
110#define PARTICLE_SHADER 0X2000000
111#define HAVE_UNLIT_COLOR 0x4000000
112#define HAVE_PROJECTIVETEXTURE 0X8000000
116#define SHADERFLAGS_VOLUME_DATA_BASIC 0x001
117#define SHADERFLAGS_VOLUME_DATA_SEGMENT 0x002
118#define SHADERFLAGS_VOLUME_DATA_ISO 0x004
119#define SHADERFLAGS_VOLUME_DATA_ISO_MODE3 0x008
131#define SHADERFLAGS_VOLUME_STYLE_DEFAULT 1
132#define SHADERFLAGS_VOLUME_STYLE_OPACITY 2
133#define SHADERFLAGS_VOLUME_STYLE_BLENDED 3
134#define SHADERFLAGS_VOLUME_STYLE_BOUNDARY 4
135#define SHADERFLAGS_VOLUME_STYLE_CARTOON 5
136#define SHADERFLAGS_VOLUME_STYLE_COMPOSED 6
137#define SHADERFLAGS_VOLUME_STYLE_EDGE 7
138#define SHADERFLAGS_VOLUME_STYLE_PROJECTION 8
139#define SHADERFLAGS_VOLUME_STYLE_SHADED 9
140#define SHADERFLAGS_VOLUME_STYLE_SILHOUETTE 10
141#define SHADERFLAGS_VOLUME_STYLE_TONE 11
162 GLfloat emissionColour[3];
171 GLfloat hatchPercent[2];
172 GLfloat hatchScale[2];
173 GLfloat hatchColour[4];
179 int texCoordGeneratorType;
183void setUserShaderNode(
struct X3D_Node *me);
185#define MIN_NODE_TRANSPARENCY 0.0f
186#define MAX_NODE_TRANSPARENCY 0.99f
188#define RENDER_MATERIAL_SUBNODES(which) \
189 { struct X3D_Node *tmpN; \
190 POSSIBLE_PROTO_EXPANSION(struct X3D_Node *, which,tmpN) \
197#define SET_SHADER_SELECTED_FALSE(x3dNode) \
198 switch (X3D_NODE(x3dNode)->_nodeType) { \
199 case NODE_ComposedShader: \
200 X3D_COMPOSEDSHADER(x3dNode)->isSelected = FALSE; \
202 case NODE_ProgramShader: \
203 X3D_PROGRAMSHADER(x3dNode)->isSelected = FALSE; \
205 case NODE_PackagedShader: \
206 X3D_PROGRAMSHADER(x3dNode)->isSelected = FALSE; \
214#define SET_FOUND_GOOD_SHADER(x3dNode) \
215 switch (X3D_NODE(x3dNode)->_nodeType) { \
216 case NODE_ComposedShader: \
217 foundGoodShader = X3D_COMPOSEDSHADER(x3dNode)->isValid; \
218 X3D_COMPOSEDSHADER(x3dNode)->isSelected = foundGoodShader; \
220 case NODE_ProgramShader: \
221 foundGoodShader = X3D_PROGRAMSHADER(x3dNode)->isValid; \
222 X3D_PROGRAMSHADER(x3dNode)->isSelected = foundGoodShader; \
224 case NODE_PackagedShader: \
225 foundGoodShader = X3D_PROGRAMSHADER(x3dNode)->isValid; \
226 X3D_PACKAGEDSHADER(x3dNode)->isSelected = foundGoodShader; \