mirror of
https://github.com/raysan5/raylib.git
synced 2026-02-01 11:49:17 -05:00
Updated raylib generic uber shader and custom shaders (markdown)
@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user