Updated raylib generic uber shader and custom shaders (markdown)

Ray
2021-04-20 00:17:26 +02:00
parent 8e303e8d22
commit dfb394f24e

@ -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, SHADER_LOC_VERTEX_POSITION = 0,
LOC_VERTEX_TEXCOORD01, SHADER_LOC_VERTEX_TEXCOORD01,
LOC_VERTEX_TEXCOORD02, SHADER_LOC_VERTEX_TEXCOORD02,
LOC_VERTEX_NORMAL, SHADER_LOC_VERTEX_NORMAL,
LOC_VERTEX_TANGENT, SHADER_LOC_VERTEX_TANGENT,
LOC_VERTEX_COLOR, SHADER_LOC_VERTEX_COLOR,
LOC_MATRIX_MVP, SHADER_LOC_MATRIX_MVP,
LOC_MATRIX_MODEL, SHADER_LOC_MATRIX_MODEL,
LOC_MATRIX_VIEW, SHADER_LOC_MATRIX_VIEW,
LOC_MATRIX_PROJECTION, SHADER_LOC_MATRIX_PROJECTION,
LOC_VECTOR_VIEW, SHADER_LOC_VECTOR_VIEW,
LOC_COLOR_DIFFUSE, SHADER_LOC_COLOR_DIFFUSE,
LOC_COLOR_SPECULAR, SHADER_LOC_COLOR_SPECULAR,
LOC_COLOR_AMBIENT, SHADER_LOC_COLOR_AMBIENT,
LOC_MAP_ALBEDO, // LOC_MAP_DIFFUSE SHADER_LOC_MAP_ALBEDO, // SHADER_LOC_MAP_DIFFUSE
LOC_MAP_METALNESS, // LOC_MAP_SPECULAR SHADER_LOC_MAP_METALNESS, // SHADER_LOC_MAP_SPECULAR
LOC_MAP_NORMAL, SHADER_LOC_MAP_NORMAL,
LOC_MAP_ROUGHNESS, SHADER_LOC_MAP_ROUGHNESS,
LOC_MAP_OCCUSION, SHADER_LOC_MAP_OCCUSION,
LOC_MAP_EMISSION, SHADER_LOC_MAP_EMISSION,
LOC_MAP_HEIGHT, SHADER_LOC_MAP_HEIGHT,
LOC_MAP_CUBEMAP, SHADER_LOC_MAP_CUBEMAP,
LOC_MAP_IRRADIANCE, SHADER_LOC_MAP_IRRADIANCE,
LOC_MAP_PREFILTER, SHADER_LOC_MAP_PREFILTER,
LOC_MAP_BRDF SHADER_LOC_MAP_BRDF
} ShaderLocationIndex; } ShaderLocationIndex;
#define LOC_MAP_DIFFUSE LOC_MAP_ALBEDO #define SHADER_LOC_MAP_DIFFUSE SHADER_LOC_MAP_ALBEDO
#define LOC_MAP_SPECULAR LOC_MAP_METALNESS #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 MATERIAL_MAP_ALBEDO = 0, // MATERIAL_MAP_DIFFUSE
MAP_METALNESS = 1, // MAP_SPECULAR MATERIAL_MAP_METALNESS = 1, // MATERIAL_MAP_SPECULAR
MAP_NORMAL = 2, MATERIAL_MAP_NORMAL = 2,
MAP_ROUGHNESS = 3, MATERIAL_MAP_ROUGHNESS = 3,
MAP_OCCLUSION, MATERIAL_MAP_OCCLUSION,
MAP_EMISSION, MATERIAL_MAP_EMISSION,
MAP_HEIGHT, MATERIAL_MAP_HEIGHT,
MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP MATERIAL_MAP_CUBEMAP, // NOTE: Uses GL_TEXTURE_CUBE_MAP
MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP MATERIAL_MAP_IRRADIANCE, // NOTE: Uses GL_TEXTURE_CUBE_MAP
MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP MATERIAL_MAP_PREFILTER, // NOTE: Uses GL_TEXTURE_CUBE_MAP
MAP_BRDF MATERIAL_MAP_BRDF
} TexmapIndex; } TexmapIndex;
#define MAP_DIFFUSE MAP_ALBEDO #define MATERIAL_MAP_DIFFUSE MATERIAL_MAP_ALBEDO
#define MAP_SPECULAR MAP_METALNESS #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[MATERIAL_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_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: