00001 #ifndef ALGEBRAIC_SHAPE_H 00002 #define ALGEBRAIC_SHAPE_H 00003 00004 #ifndef OIV_HAS_ASRAY 00005 #define OIV_HAS_ASRAY 00006 00007 00017 struct OivASRay { 00018 vec3 rs; // ray start 00019 vec3 re; // ray end 00020 vec3 rd; // ray direction 00021 }; 00022 #endif 00023 00028 struct OivASPoint { 00029 vec3 position; 00030 vec3 normal; 00031 vec4 color; 00032 }; 00033 00039 bool OivASSolveQuadric ( in vec3 abc, inout vec2 roots ); 00040 00046 bool OivASRayPlaneIntersection ( in OivASRay ray, in vec4 p, inout float t ); 00047 00051 vec4 OivASGetColor (); 00052 00056 float OivASGetOpacity (); 00057 00061 bool OivASIsOpaque (); 00062 00063 /******************************** SLOT ***************************************/ 00064 00070 void OivASVertexShaderEntry (); 00071 00077 vec4 OivASComputeColor ( in OivASPoint p ); 00078 00095 bool OivASRayIntersection ( in OivASRay ray, inout OivASPoint p ); 00096 00097 #endif // ALGEBRAIC_SHAPE_H 00098