00001 #ifndef OIV_SHADER_STATE_H 00002 #define OIV_SHADER_STATE_H 00003 00011 /*****************************************************************************/ 00012 // Constants 00013 00017 int OivMaxLights(); 00018 00022 int OivMaxClipPlanes(); 00023 00027 int OivMaxTextureCoordinates(); 00028 00032 int OivMaxTextureUnits(); 00033 00034 /*****************************************************************************/ 00035 // Transforms 00036 00041 mat4 OivModelMatrix(); 00042 00047 mat4 OivModelMatrixInverse(); 00048 00053 mat4 OivViewMatrix(); 00054 00059 mat4 OivViewMatrixInverse(); 00060 00066 mat4 OivModelViewMatrix(); 00067 00072 mat4 OivModelViewMatrixInverse(); 00073 00079 mat3 OivNormalMatrix(); 00080 00085 mat4 OivProjectionMatrix(); 00086 00091 mat4 OivProjectionMatrixInverse(); 00092 00098 mat4 OivModelViewProjectionMatrix(); 00099 00105 mat4 OivTextureMatrix(int unit); 00106 00111 vec2 OivViewportSize(); 00112 00116 vec2 OivViewVolumeSize(); 00117 00118 #define OIV_PROJECTION_TYPE_ORTHO 0 00119 #define OIV_PROJECTION_TYPE_PERSPECTIVE 1 00120 00124 int OivViewProjectionType(); 00125 00126 /*****************************************************************************/ 00127 // Lighting 00128 00133 bool OivHasLighting(); 00134 00139 bool OivHasTwoSidedLighting(); 00140 00145 bool OivHasPerPixelLighting(); 00146 00151 bool OivHasColorMaterial(); 00152 00157 vec4 OivGlobalAmbient(); 00158 00166 bool OivLightSourceEnabled(int id); 00167 00168 #define OIV_LIGHT_TYPE_NONE 0 00169 #define OIV_LIGHT_TYPE_POINT 1 00170 #define OIV_LIGHT_TYPE_SPOT 2 00171 #define OIV_LIGHT_TYPE_DIRECTIONAL 3 00172 00178 int OivLightSourceType(int id); 00179 00187 vec4 OivLightSourcePosition(int id); 00188 00196 vec3 OivLightSourceSpotDirection(int id); 00197 00205 float OivLightSourceSpotExponent(int id); 00206 00214 float OivLightSourceSpotCutoff(int id); 00215 00223 float OivLightSourceSpotCosCutoff(int id); 00224 00232 vec4 OivLightSourceAmbient(int id); 00233 00241 vec4 OivLightSourceDiffuse(int id); 00242 00250 vec4 OivLightSourceSpecular(int id); 00251 00259 float OivLightSourceConstantAttenuation(int id); 00260 00268 float OivLightSourceLinearAttenuation(int id); 00269 00277 float OivLightSourceQuadraticAttenuation(int id); 00278 00279 /*****************************************************************************/ 00280 // Material 00281 00286 vec4 OivFrontMaterialAmbient(); 00287 00292 vec4 OivFrontMaterialDiffuse(); 00293 00298 vec4 OivFrontMaterialSpecular(); 00299 00304 vec4 OivFrontMaterialEmissive(); 00305 00310 float OivFrontMaterialShininess(); 00311 00318 vec4 OivBackMaterialAmbient(); 00319 00326 vec4 OivBackMaterialDiffuse(); 00327 00334 vec4 OivBackMaterialSpecular(); 00335 00342 vec4 OivBackMaterialEmissive(); 00343 00350 float OivBackMaterialShininess(); 00351 00358 vec4 OivFrontSceneColor(); 00359 00365 vec4 OivFrontLightProductAmbient(int id); 00366 00372 vec4 OivFrontLightProductDiffuse(int id); 00373 00379 vec4 OivFrontLightProductSpecular(int id); 00380 00388 vec4 OivBackLightProductAmbient(int id); 00389 00397 vec4 OivBackLightProductDiffuse(int id); 00398 00406 vec4 OivBackLightProductSpecular(int id); 00407 00408 /*****************************************************************************/ 00409 // Clip planes 00410 00416 bool OivClipPlaneEnabled(int id); 00417 00423 vec4 OivClipPlane(int id); 00424 00425 00426 /*****************************************************************************/ 00427 // Fog parameters 00428 00433 vec4 OivFogColor(); 00434 00435 00440 float OivFogDensity(); 00441 00442 00447 float OivFogStart(); 00448 00449 00454 float OivFogEnd(); 00455 00456 00461 float OivFogScale(); 00462 00467 int OivFogType(); 00468 00473 vec4 OivObjectPlaneS(int i); 00474 00479 vec4 OivObjectPlaneT(int i); 00480 00485 vec4 OivObjectPlaneR(int i); 00486 00491 vec4 OivObjectPlaneQ(int i); 00492 00493 #endif /* OIV_SHADER_STATE_H */ 00494