|
@@ -130,51 +130,43 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
|
|
|
COMPRESSED_ASTC_4x4_RGBA, // 8 bpp
|
|
|
COMPRESSED_ASTC_8x8_RGBA // 2 bpp
|
|
|
} TextureFormat;
|
|
|
-
|
|
|
- // Bounding box type
|
|
|
- typedef struct BoundingBox {
|
|
|
- Vector3 min;
|
|
|
- Vector3 max;
|
|
|
- } BoundingBox;
|
|
|
|
|
|
// Vertex data definning a mesh
|
|
|
typedef struct Mesh {
|
|
|
- int vertexCount; // number of vertices stored in arrays
|
|
|
- float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
|
|
|
- float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
|
|
|
- float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
|
|
|
- float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
|
|
- float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
|
|
|
- unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
|
|
- unsigned short *indices; // vertex indices (in case vertex data comes indexed)
|
|
|
- int triangleCount; // number of triangles stored (indexed or not)
|
|
|
-
|
|
|
- BoundingBox bounds; // mesh limits defined by min and max points
|
|
|
-
|
|
|
- unsigned int vaoId; // OpenGL Vertex Array Object id
|
|
|
- unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data)
|
|
|
+ int vertexCount; // number of vertices stored in arrays
|
|
|
+ int triangleCount; // number of triangles stored (indexed or not)
|
|
|
+ float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
|
|
|
+ float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
|
|
|
+ float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
|
|
|
+ float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
|
|
+ float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
|
|
|
+ unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
|
|
+ unsigned short *indices;// vertex indices (in case vertex data comes indexed)
|
|
|
+
|
|
|
+ unsigned int vaoId; // OpenGL Vertex Array Object id
|
|
|
+ unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data)
|
|
|
} Mesh;
|
|
|
|
|
|
// Shader type (generic shader)
|
|
|
typedef struct Shader {
|
|
|
- unsigned int id; // Shader program id
|
|
|
+ unsigned int id; // Shader program id
|
|
|
|
|
|
// Vertex attributes locations (default locations)
|
|
|
- int vertexLoc; // Vertex attribute location point (default-location = 0)
|
|
|
- int texcoordLoc; // Texcoord attribute location point (default-location = 1)
|
|
|
- int normalLoc; // Normal attribute location point (default-location = 2)
|
|
|
- int colorLoc; // Color attibute location point (default-location = 3)
|
|
|
- int tangentLoc; // Tangent attribute location point (default-location = 4)
|
|
|
- int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5)
|
|
|
+ int vertexLoc; // Vertex attribute location point (default-location = 0)
|
|
|
+ int texcoordLoc; // Texcoord attribute location point (default-location = 1)
|
|
|
+ int normalLoc; // Normal attribute location point (default-location = 2)
|
|
|
+ int colorLoc; // Color attibute location point (default-location = 3)
|
|
|
+ int tangentLoc; // Tangent attribute location point (default-location = 4)
|
|
|
+ int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5)
|
|
|
|
|
|
// Uniform locations
|
|
|
- int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
|
|
|
- int tintColorLoc; // Color uniform location point (fragment shader)
|
|
|
+ int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader)
|
|
|
+ int tintColorLoc; // Color uniform location point (fragment shader)
|
|
|
|
|
|
// Texture map locations (generic for any kind of map)
|
|
|
- int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0)
|
|
|
- int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1)
|
|
|
- int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2)
|
|
|
+ int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0)
|
|
|
+ int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1)
|
|
|
+ int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2)
|
|
|
} Shader;
|
|
|
|
|
|
// Texture2D type
|
|
@@ -196,35 +188,46 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
|
|
|
|
|
|
// Material type
|
|
|
typedef struct Material {
|
|
|
- Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular)
|
|
|
+ Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular)
|
|
|
|
|
|
- Texture2D texDiffuse; // Diffuse texture
|
|
|
- Texture2D texNormal; // Normal texture
|
|
|
- Texture2D texSpecular; // Specular texture
|
|
|
+ Texture2D texDiffuse; // Diffuse texture
|
|
|
+ Texture2D texNormal; // Normal texture
|
|
|
+ Texture2D texSpecular; // Specular texture
|
|
|
|
|
|
- Color colDiffuse; // Diffuse color
|
|
|
- Color colAmbient; // Ambient color
|
|
|
- Color colSpecular; // Specular color
|
|
|
+ Color colDiffuse; // Diffuse color
|
|
|
+ Color colAmbient; // Ambient color
|
|
|
+ Color colSpecular; // Specular color
|
|
|
|
|
|
- float glossiness; // Glossiness level (Ranges from 0 to 1000)
|
|
|
+ float glossiness; // Glossiness level (Ranges from 0 to 1000)
|
|
|
} Material;
|
|
|
|
|
|
+ // Camera type, defines a camera position/orientation in 3d space
|
|
|
+ typedef struct Camera {
|
|
|
+ Vector3 position; // Camera position
|
|
|
+ Vector3 target; // Camera target it looks-at
|
|
|
+ Vector3 up; // Camera up vector (rotation over its axis)
|
|
|
+ float fovy; // Camera field-of-view apperture in Y (degrees)
|
|
|
+ } Camera;
|
|
|
+
|
|
|
// Light type
|
|
|
typedef struct LightData {
|
|
|
- unsigned int id; // Light id
|
|
|
- int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT
|
|
|
- bool enabled; // Light enabled
|
|
|
+ unsigned int id; // Light unique id
|
|
|
+ int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT
|
|
|
+ bool enabled; // Light enabled
|
|
|
|
|
|
- Vector3 position; // Light position
|
|
|
- Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
|
|
|
- float radius; // Light attenuation radius light intensity reduced with distance (world distance)
|
|
|
+ Vector3 position; // Light position
|
|
|
+ Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
|
|
|
+ float radius; // Light attenuation radius light intensity reduced with distance (world distance)
|
|
|
|
|
|
- Color diffuse; // Light diffuse color
|
|
|
- float intensity; // Light intensity level
|
|
|
+ Color diffuse; // Light diffuse color
|
|
|
+ float intensity; // Light intensity level
|
|
|
|
|
|
- float coneAngle; // Light cone max angle: LIGHT_SPOT
|
|
|
+ float coneAngle; // Light cone max angle: LIGHT_SPOT
|
|
|
} LightData, *Light;
|
|
|
-
|
|
|
+
|
|
|
+ // Light types
|
|
|
+ typedef enum { LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT } LightType;
|
|
|
+
|
|
|
// Color blending modes (pre-defined)
|
|
|
typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode;
|
|
|
#endif
|