00001 #ifndef OIV_SHADER_STATE_H 00002 #define OIV_SHADER_STATE_H 00003 00005 00013 /*****************************************************************************/ 00014 // Constants 00015 00019 int OivMaxLights() 00020 { 00021 return gl_MaxLights; 00022 } 00023 00027 int OivMaxClipPlanes() 00028 { 00029 return gl_MaxClipPlanes; 00030 } 00031 00035 int OivMaxTextureCoordinates() 00036 { 00037 return gl_MaxTextureCoords; 00038 } 00039 00043 int OivMaxTextureUnits() 00044 { 00045 return gl_MaxTextureUnits; 00046 } 00047 00048 /*****************************************************************************/ 00049 // Transforms 00050 00056 mat4 OivModelViewMatrix() 00057 { 00058 return gl_ModelViewMatrix; 00059 } 00060 00065 mat4 OivModelViewMatrixInverse() 00066 { 00067 return gl_ModelViewMatrixInverse; 00068 } 00069 00075 mat3 OivNormalMatrix() 00076 { 00077 return gl_NormalMatrix; 00078 } 00079 00084 mat4 OivProjectionMatrix() 00085 { 00086 return gl_ProjectionMatrix; 00087 } 00088 00093 mat4 OivProjectionMatrixInverse() 00094 { 00095 return gl_ProjectionMatrixInverse; 00096 } 00097 00103 mat4 OivModelViewProjectionMatrix() 00104 { 00105 return gl_ModelViewProjectionMatrix; 00106 } 00107 00113 mat4 OivTextureMatrix(int unit) 00114 { 00115 return gl_TextureMatrix[unit]; 00116 } 00117 00118 /*****************************************************************************/ 00119 // Lighting 00120 00125 vec4 OivGlobalAmbient() 00126 { 00127 return gl_LightModel.ambient; 00128 } 00129 00135 bool OivLightSourceEnabled(int id) 00136 { 00137 return bool(gl_LightSource[id].ambient != vec4(0.0)) || bool(gl_LightSource[id].diffuse != vec4(0.0)) || bool(gl_LightSource[id].specular != vec4(0.0)); 00138 } 00139 00147 vec4 OivLightSourcePosition(int id) 00148 { 00149 return gl_LightSource[id].position; 00150 } 00151 00159 vec3 OivLightSourceSpotDirection(int id) 00160 { 00161 return gl_LightSource[id].spotDirection; 00162 } 00163 00171 float OivLightSourceSpotExponent(int id) 00172 { 00173 return gl_LightSource[id].spotExponent; 00174 } 00175 00183 float OivLightSourceSpotCutoff(int id) 00184 { 00185 return gl_LightSource[id].spotCutoff; 00186 } 00187 00195 float OivLightSourceSpotCosCutoff(int id) 00196 { 00197 return gl_LightSource[id].spotCosCutoff; 00198 } 00199 00207 vec4 OivLightSourceAmbient(int id) 00208 { 00209 return gl_LightSource[id].ambient; 00210 } 00211 00219 vec4 OivLightSourceDiffuse(int id) 00220 { 00221 return gl_LightSource[id].diffuse; 00222 } 00223 00231 vec4 OivLightSourceSpecular(int id) 00232 { 00233 return gl_LightSource[id].specular; 00234 } 00235 00243 float OivLightSourceConstantAttenuation(int id) 00244 { 00245 return gl_LightSource[id].constantAttenuation; 00246 } 00247 00255 float OivLightSourceLinearAttenuation(int id) 00256 { 00257 return gl_LightSource[id].linearAttenuation; 00258 } 00259 00267 float OivLightSourceQuadraticAttenuation(int id) 00268 { 00269 return gl_LightSource[id].quadraticAttenuation; 00270 } 00271 00272 /*****************************************************************************/ 00273 // Material 00274 00279 vec4 OivFrontMaterialAmbient() 00280 { 00281 return gl_FrontMaterial.ambient; 00282 } 00283 00288 vec4 OivFrontMaterialDiffuse() 00289 { 00290 return gl_FrontMaterial.diffuse; 00291 } 00292 00297 vec4 OivFrontMaterialSpecular() 00298 { 00299 return gl_FrontMaterial.specular; 00300 } 00301 00306 vec4 OivFrontMaterialEmissive() 00307 { 00308 return gl_FrontMaterial.emission; 00309 } 00310 00315 float OivFrontMaterialShininess() 00316 { 00317 return gl_FrontMaterial.shininess; 00318 } 00319 00326 vec4 OivBackMaterialAmbient() 00327 { 00328 return gl_BackMaterial.ambient; 00329 } 00330 00337 vec4 OivBackMaterialDiffuse() 00338 { 00339 return gl_BackMaterial.diffuse; 00340 } 00341 00348 vec4 OivBackMaterialSpecular() 00349 { 00350 return gl_BackMaterial.specular; 00351 } 00352 00359 vec4 OivBackMaterialEmissive() 00360 { 00361 return gl_BackMaterial.emission; 00362 } 00363 00370 float OivBackMaterialShininess() 00371 { 00372 return gl_BackMaterial.shininess; 00373 } 00374 00381 vec4 OivFrontSceneColor() 00382 { 00383 return gl_FrontLightModelProduct.sceneColor; 00384 } 00385 00391 vec4 OivFrontLightProductAmbient(int id) 00392 { 00393 return gl_FrontLightProduct[id].ambient; 00394 } 00395 00401 vec4 OivFrontLightProductDiffuse(int id) 00402 { 00403 return gl_FrontLightProduct[id].diffuse; 00404 } 00405 00411 vec4 OivFrontLightProductSpecular(int id) 00412 { 00413 return gl_FrontLightProduct[id].specular; 00414 } 00415 00423 vec4 OivBackLightProductAmbient(int id) 00424 { 00425 return gl_BackLightProduct[id].ambient; 00426 } 00427 00435 vec4 OivBackLightProductDiffuse(int id) 00436 { 00437 return gl_BackLightProduct[id].diffuse; 00438 } 00439 00447 vec4 OivBackLightProductSpecular(int id) 00448 { 00449 return gl_BackLightProduct[id].specular; 00450 } 00451 00452 /*****************************************************************************/ 00453 // Clip planes 00454 00460 vec4 OivClipPlane(int id) 00461 { 00462 return gl_ClipPlane[id]; 00463 } 00464 00470 bool OivClipPlaneEnabled(int id) 00471 { 00472 return (OivClipPlane(id) != vec4(0.0)); 00473 } 00474 00475 /*****************************************************************************/ 00476 // Fog parameters 00477 00482 vec4 OivFogColor() 00483 { 00484 return gl_Fog.color; 00485 } 00486 00487 00492 float OivFogDensity() 00493 { 00494 return gl_Fog.density; 00495 } 00496 00497 00502 float OivFogStart() 00503 { 00504 return gl_Fog.start; 00505 } 00506 00507 00512 float OivFogEnd() 00513 { 00514 return gl_Fog.end; 00515 } 00516 00517 00522 float OivFogScale() 00523 { 00524 return gl_Fog.scale; 00525 } 00526 00531 vec4 OivObjectPlaneS(int i) 00532 { 00533 return gl_ObjectPlaneS[i]; 00534 } 00535 00540 vec4 OivObjectPlaneT(int i) 00541 { 00542 return gl_ObjectPlaneT[i]; 00543 } 00544 00549 vec4 OivObjectPlaneR(int i) 00550 { 00551 return gl_ObjectPlaneR[i]; 00552 } 00553 00558 vec4 OivObjectPlaneQ(int i) 00559 { 00560 return gl_ObjectPlaneQ[i]; 00561 } 00562 00563 #endif /* OIV_SHADER_STATE_H */ 00564