|
@ -14,35 +14,35 @@ This struct provides an array to store shader locations, those locations can be |
|
|
```c |
|
|
```c |
|
|
// Shader location point type |
|
|
// Shader location point type |
|
|
typedef enum { |
|
|
typedef enum { |
|
|
LOC_VERTEX_POSITION = 0, |
|
|
|
|
|
LOC_VERTEX_TEXCOORD01, |
|
|
|
|
|
LOC_VERTEX_TEXCOORD02, |
|
|
|
|
|
LOC_VERTEX_NORMAL, |
|
|
|
|
|
LOC_VERTEX_TANGENT, |
|
|
|
|
|
LOC_VERTEX_COLOR, |
|
|
|
|
|
LOC_MATRIX_MVP, |
|
|
|
|
|
LOC_MATRIX_MODEL, |
|
|
|
|
|
LOC_MATRIX_VIEW, |
|
|
|
|
|
LOC_MATRIX_PROJECTION, |
|
|
|
|
|
LOC_VECTOR_VIEW, |
|
|
|
|
|
LOC_COLOR_DIFFUSE, |
|
|
|
|
|
LOC_COLOR_SPECULAR, |
|
|
|
|
|
LOC_COLOR_AMBIENT, |
|
|
|
|
|
LOC_MAP_ALBEDO, // LOC_MAP_DIFFUSE |
|
|
|
|
|
LOC_MAP_METALNESS, // LOC_MAP_SPECULAR |
|
|
|
|
|
LOC_MAP_NORMAL, |
|
|
|
|
|
LOC_MAP_ROUGHNESS, |
|
|
|
|
|
LOC_MAP_OCCUSION, |
|
|
|
|
|
LOC_MAP_EMISSION, |
|
|
|
|
|
LOC_MAP_HEIGHT, |
|
|
|
|
|
LOC_MAP_CUBEMAP, |
|
|
|
|
|
LOC_MAP_IRRADIANCE, |
|
|
|
|
|
LOC_MAP_PREFILTER, |
|
|
|
|
|
LOC_MAP_BRDF |
|
|
|
|
|
|
|
|
SHADER_LOC_VERTEX_POSITION = 0, |
|
|
|
|
|
SHADER_LOC_VERTEX_TEXCOORD01, |
|
|
|
|
|
SHADER_LOC_VERTEX_TEXCOORD02, |
|
|
|
|
|
SHADER_LOC_VERTEX_NORMAL, |
|
|
|
|
|
SHADER_LOC_VERTEX_TANGENT, |
|
|
|
|
|
SHADER_LOC_VERTEX_COLOR, |
|
|
|
|
|
SHADER_LOC_MATRIX_MVP, |
|
|
|
|
|
SHADER_LOC_MATRIX_MODEL, |
|
|
|
|
|
SHADER_LOC_MATRIX_VIEW, |
|
|
|
|
|
SHADER_LOC_MATRIX_PROJECTION, |
|
|
|
|
|
SHADER_LOC_VECTOR_VIEW, |
|
|
|
|
|
SHADER_LOC_COLOR_DIFFUSE, |
|
|
|
|
|
SHADER_LOC_COLOR_SPECULAR, |
|
|
|
|
|
SHADER_LOC_COLOR_AMBIENT, |
|
|
|
|
|
SHADER_LOC_MAP_ALBEDO, // SHADER_LOC_MAP_DIFFUSE |
|
|
|
|
|
SHADER_LOC_MAP_METALNESS, // SHADER_LOC_MAP_SPECULAR |
|
|
|
|
|
SHADER_LOC_MAP_NORMAL, |
|
|
|
|
|
SHADER_LOC_MAP_ROUGHNESS, |
|
|
|
|
|
SHADER_LOC_MAP_OCCUSION, |
|
|
|
|
|
SHADER_LOC_MAP_EMISSION, |
|
|
|
|
|
SHADER_LOC_MAP_HEIGHT, |
|
|
|
|
|
SHADER_LOC_MAP_CUBEMAP, |
|
|
|
|
|
SHADER_LOC_MAP_IRRADIANCE, |
|
|
|
|
|
SHADER_LOC_MAP_PREFILTER, |
|
|
|
|
|
SHADER_LOC_MAP_BRDF |
|
|
} ShaderLocationIndex; |
|
|
} ShaderLocationIndex; |
|
|
|
|
|
|
|
|
#define LOC_MAP_DIFFUSE LOC_MAP_ALBEDO |
|
|
|
|
|
#define LOC_MAP_SPECULAR LOC_MAP_METALNESS |
|
|
|
|
|
|
|
|
#define SHADER_LOC_MAP_DIFFUSE SHADER_LOC_MAP_ALBEDO |
|
|
|
|
|
#define SHADER_LOC_MAP_SPECULAR SHADER_LOC_MAP_METALNESS |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
When loading a shader, raylib tries to bind by default the following **vertex shader** attributes: |
|
|
When loading a shader, raylib tries to bind by default the following **vertex shader** attributes: |
|
@ -84,29 +84,29 @@ Material supports by default a number of maps (texture and properties) that can |
|
|
```c |
|
|
```c |
|
|
// Material map type |
|
|
// Material map type |
|
|
typedef enum { |
|
|
typedef enum { |
|
|
MAP_ALBEDO = 0, // MAP_DIFFUSE |
|
|
|
|
|
MAP_METALNESS = 1, // MAP_SPECULAR |
|
|
|
|
|
MAP_NORMAL = 2, |
|
|
|
|
|
MAP_ROUGHNESS = 3, |
|
|
|
|
|
MAP_OCCLUSION, |
|
|
|
|
|
MAP_EMISSION, |
|
|
|
|
|
MAP_HEIGHT, |
|
|
|
|
|
MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP |
|
|
|
|
|
MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP |
|
|
|
|
|
MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP |
|
|
|
|
|
MAP_BRDF |
|
|
|
|
|
|
|
|
MATERIAL_MAP_ALBEDO = 0, // MATERIAL_MAP_DIFFUSE |
|
|
|
|
|
MATERIAL_MAP_METALNESS = 1, // MATERIAL_MAP_SPECULAR |
|
|
|
|
|
MATERIAL_MAP_NORMAL = 2, |
|
|
|
|
|
MATERIAL_MAP_ROUGHNESS = 3, |
|
|
|
|
|
MATERIAL_MAP_OCCLUSION, |
|
|
|
|
|
MATERIAL_MAP_EMISSION, |
|
|
|
|
|
MATERIAL_MAP_HEIGHT, |
|
|
|
|
|
MATERIAL_MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP |
|
|
|
|
|
MATERIAL_MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP |
|
|
|
|
|
MATERIAL_MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP |
|
|
|
|
|
MATERIAL_MAP_BRDF |
|
|
} TexmapIndex; |
|
|
} TexmapIndex; |
|
|
|
|
|
|
|
|
#define MAP_DIFFUSE MAP_ALBEDO |
|
|
|
|
|
#define MAP_SPECULAR MAP_METALNESS |
|
|
|
|
|
|
|
|
#define MATERIAL_MAP_DIFFUSE MATERIAL_MAP_ALBEDO |
|
|
|
|
|
#define MATERIAL_MAP_SPECULAR MATERIAL_MAP_METALNESS |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
When drawing, maps are internally bound or not depending on the availability: |
|
|
When drawing, maps are internally bound or not depending on the availability: |
|
|
```c |
|
|
```c |
|
|
// Default material loading example |
|
|
// Default material loading example |
|
|
Material material = LoadMaterialDefault(); // Default shader assigned to material |
|
|
Material material = LoadMaterialDefault(); // Default shader assigned to material |
|
|
material.maps[MAP_DIFFUSE].texture = LoadTexture("tex_diffuse.png"); // texture unit 0 activated (available in material shader) |
|
|
|
|
|
material.maps[MAP_SPECULAR].texture = LoadTexture("tex_specular.png"); // texture unit 1 activated (available in material shader) |
|
|
|
|
|
|
|
|
material.maps[MATERIAL_MAP_DIFFUSE].texture = LoadTexture("tex_diffuse.png"); // texture unit 0 activated (available in material shader) |
|
|
|
|
|
material.maps[MATERIAL_MAP_SPECULAR].texture = LoadTexture("tex_specular.png"); // texture unit 1 activated (available in material shader) |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
User can load any custom shader using provided `Material` and `Shader`structs: |
|
|
User can load any custom shader using provided `Material` and `Shader`structs: |
|
|