mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	WARNING: VERY BREAKING CHANGE: Renamed some enum values for consistency
Some enums values have been renamed to be more consistent and also provide a more detailed description: - ShaderLocationIndex: LOC_VERTEX_POSITION -> SHADER_SHADER_LOC_VERTEX_POSITION - ShaderUniformDataType: UNIFORM_VEC2 -> SHADER_UNIFORM_VEC2 - MaterialMapType: MAP_ALBEDO -> MATERIAL_MAP_ALBEDO - PixelFormat: UNCOMPRESSED_GRAYSCALE -> PIXELFORMAT_UNCOMPRESSED_GRAYSCALE
This commit is contained in:
		| @@ -31,7 +31,7 @@ int main(void) | |||||||
|  |  | ||||||
|     // NOTE: By default each cube is mapped to one part of texture atlas |     // NOTE: By default each cube is mapped to one part of texture atlas | ||||||
|     Texture2D texture = LoadTexture("resources/cubicmap_atlas.png");    // Load map texture |     Texture2D texture = LoadTexture("resources/cubicmap_atlas.png");    // Load map texture | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture;             // Set map diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;             // Set map diffuse texture | ||||||
|  |  | ||||||
|     Vector3 mapPosition = { -16.0f, 0.0f, -8.0f };          // Set model position |     Vector3 mapPosition = { -16.0f, 0.0f, -8.0f };          // Set model position | ||||||
|  |  | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ int main(void) | |||||||
|  |  | ||||||
|     // NOTE: By default each cube is mapped to one part of texture atlas |     // NOTE: By default each cube is mapped to one part of texture atlas | ||||||
|     Texture2D texture = LoadTexture("resources/cubicmap_atlas.png");    // Load map texture |     Texture2D texture = LoadTexture("resources/cubicmap_atlas.png");    // Load map texture | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture;             // Set map diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;             // Set map diffuse texture | ||||||
|  |  | ||||||
|     // Get map image data to be used for collision detection |     // Get map image data to be used for collision detection | ||||||
|     Color *mapPixels = LoadImageColors(imMap); |     Color *mapPixels = LoadImageColors(imMap); | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ int main(void) | |||||||
|     Mesh mesh = GenMeshHeightmap(image, (Vector3){ 16, 8, 16 });    // Generate heightmap mesh (RAM and VRAM) |     Mesh mesh = GenMeshHeightmap(image, (Vector3){ 16, 8, 16 });    // Generate heightmap mesh (RAM and VRAM) | ||||||
|     Model model = LoadModelFromMesh(mesh);                          // Load model from generated mesh |     Model model = LoadModelFromMesh(mesh);                          // Load model from generated mesh | ||||||
|  |  | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture;         // Set map diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;         // Set map diffuse texture | ||||||
|     Vector3 mapPosition = { -8.0f, 0.0f, -8.0f };                   // Define model position |     Vector3 mapPosition = { -8.0f, 0.0f, -8.0f };                   // Define model position | ||||||
|  |  | ||||||
|     UnloadImage(image);                     // Unload heightmap image from RAM, already uploaded to VRAM |     UnloadImage(image);                     // Unload heightmap image from RAM, already uploaded to VRAM | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ int main(void) | |||||||
|  |  | ||||||
|     Model model = LoadModel("resources/models/castle.obj");                 // Load model |     Model model = LoadModel("resources/models/castle.obj");                 // Load model | ||||||
|     Texture2D texture = LoadTexture("resources/models/castle_diffuse.png"); // Load model texture |     Texture2D texture = LoadTexture("resources/models/castle_diffuse.png"); // Load model texture | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture;                 // Set map diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;                 // Set map diffuse texture | ||||||
|  |  | ||||||
|     Vector3 position = { 0.0f, 0.0f, 0.0f };                // Set model position |     Vector3 position = { 0.0f, 0.0f, 0.0f };                // Set model position | ||||||
|   |   | ||||||
| @@ -76,7 +76,7 @@ int main(void) | |||||||
|                 { |                 { | ||||||
|                     UnloadModel(model);                     // Unload previous model |                     UnloadModel(model);                     // Unload previous model | ||||||
|                     model = LoadModel(droppedFiles[0]);     // Load new model |                     model = LoadModel(droppedFiles[0]);     // Load new model | ||||||
|                     model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Set current map diffuse texture |                     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set current map diffuse texture | ||||||
|  |  | ||||||
|                     bounds = MeshBoundingBox(model.meshes[0]); |                     bounds = MeshBoundingBox(model.meshes[0]); | ||||||
|                      |                      | ||||||
| @@ -87,7 +87,7 @@ int main(void) | |||||||
|                     // Unload current model texture and load new one |                     // Unload current model texture and load new one | ||||||
|                     UnloadTexture(texture); |                     UnloadTexture(texture); | ||||||
|                     texture = LoadTexture(droppedFiles[0]); |                     texture = LoadTexture(droppedFiles[0]); | ||||||
|                     model.materials[0].maps[MAP_DIFFUSE].texture = texture; |                     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -78,7 +78,7 @@ int main(void) | |||||||
|  |  | ||||||
|         // Send to material PBR shader camera view position |         // Send to material PBR shader camera view position | ||||||
|         float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; |         float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; | ||||||
|         SetShaderValue(model.materials[0].shader, model.materials[0].shader.locs[LOC_VECTOR_VIEW], cameraPos, UNIFORM_VEC3); |         SetShaderValue(model.materials[0].shader, model.materials[0].shader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, SHADER_UNIFORM_VEC3); | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|         // Draw |         // Draw | ||||||
| @@ -128,54 +128,54 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) | |||||||
|  |  | ||||||
|     // Get required locations points for PBR material |     // Get required locations points for PBR material | ||||||
|     // NOTE: Those location names must be available and used in the shader code |     // NOTE: Those location names must be available and used in the shader code | ||||||
|     mat.shader.locs[LOC_MAP_ALBEDO] = GetShaderLocation(mat.shader, "albedo.sampler"); |     mat.shader.locs[SHADER_LOC_MAP_ALBEDO] = GetShaderLocation(mat.shader, "albedo.sampler"); | ||||||
|     mat.shader.locs[LOC_MAP_METALNESS] = GetShaderLocation(mat.shader, "metalness.sampler"); |     mat.shader.locs[SHADER_LOC_MAP_METALNESS] = GetShaderLocation(mat.shader, "metalness.sampler"); | ||||||
|     mat.shader.locs[LOC_MAP_NORMAL] = GetShaderLocation(mat.shader, "normals.sampler"); |     mat.shader.locs[SHADER_LOC_MAP_NORMAL] = GetShaderLocation(mat.shader, "normals.sampler"); | ||||||
|     mat.shader.locs[LOC_MAP_ROUGHNESS] = GetShaderLocation(mat.shader, "roughness.sampler"); |     mat.shader.locs[SHADER_LOC_MAP_ROUGHNESS] = GetShaderLocation(mat.shader, "roughness.sampler"); | ||||||
|     mat.shader.locs[LOC_MAP_OCCLUSION] = GetShaderLocation(mat.shader, "occlusion.sampler"); |     mat.shader.locs[SHADER_LOC_MAP_OCCLUSION] = GetShaderLocation(mat.shader, "occlusion.sampler"); | ||||||
|     //mat.shader.locs[LOC_MAP_EMISSION] = GetShaderLocation(mat.shader, "emission.sampler"); |     //mat.shader.locs[SHADER_LOC_MAP_EMISSION] = GetShaderLocation(mat.shader, "emission.sampler"); | ||||||
|     //mat.shader.locs[LOC_MAP_HEIGHT] = GetShaderLocation(mat.shader, "height.sampler"); |     //mat.shader.locs[SHADER_LOC_MAP_HEIGHT] = GetShaderLocation(mat.shader, "height.sampler"); | ||||||
|     mat.shader.locs[LOC_MAP_IRRADIANCE] = GetShaderLocation(mat.shader, "irradianceMap"); |     mat.shader.locs[SHADER_LOC_MAP_IRRADIANCE] = GetShaderLocation(mat.shader, "irradianceMap"); | ||||||
|     mat.shader.locs[LOC_MAP_PREFILTER] = GetShaderLocation(mat.shader, "prefilterMap"); |     mat.shader.locs[SHADER_LOC_MAP_PREFILTER] = GetShaderLocation(mat.shader, "prefilterMap"); | ||||||
|     mat.shader.locs[LOC_MAP_BRDF] = GetShaderLocation(mat.shader, "brdfLUT"); |     mat.shader.locs[SHADER_LOC_MAP_BRDF] = GetShaderLocation(mat.shader, "brdfLUT"); | ||||||
|  |  | ||||||
|     // Set view matrix location |     // Set view matrix location | ||||||
|     mat.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "matModel"); |     mat.shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "matModel"); | ||||||
|     //mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view"); |     //mat.shader.locs[SHADER_LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view"); | ||||||
|     mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos"); |     mat.shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos"); | ||||||
|  |  | ||||||
|     // Set PBR standard maps |     // Set PBR standard maps | ||||||
|     mat.maps[MAP_ALBEDO].texture = LoadTexture("resources/pbr/trooper_albedo.png"); |     mat.maps[MATERIAL_MAP_ALBEDO].texture = LoadTexture("resources/pbr/trooper_albedo.png"); | ||||||
|     mat.maps[MAP_NORMAL].texture = LoadTexture("resources/pbr/trooper_normals.png"); |     mat.maps[MATERIAL_MAP_NORMAL].texture = LoadTexture("resources/pbr/trooper_normals.png"); | ||||||
|     mat.maps[MAP_METALNESS].texture = LoadTexture("resources/pbr/trooper_metalness.png"); |     mat.maps[MATERIAL_MAP_METALNESS].texture = LoadTexture("resources/pbr/trooper_metalness.png"); | ||||||
|     mat.maps[MAP_ROUGHNESS].texture = LoadTexture("resources/pbr/trooper_roughness.png"); |     mat.maps[MATERIAL_MAP_ROUGHNESS].texture = LoadTexture("resources/pbr/trooper_roughness.png"); | ||||||
|     mat.maps[MAP_OCCLUSION].texture = LoadTexture("resources/pbr/trooper_ao.png"); |     mat.maps[MATERIAL_MAP_OCCLUSION].texture = LoadTexture("resources/pbr/trooper_ao.png"); | ||||||
|      |      | ||||||
|     // Set textures filtering for better quality |     // Set textures filtering for better quality | ||||||
|     SetTextureFilter(mat.maps[MAP_ALBEDO].texture, FILTER_BILINEAR); |     SetTextureFilter(mat.maps[MATERIAL_MAP_ALBEDO].texture, FILTER_BILINEAR); | ||||||
|     SetTextureFilter(mat.maps[MAP_NORMAL].texture, FILTER_BILINEAR); |     SetTextureFilter(mat.maps[MATERIAL_MAP_NORMAL].texture, FILTER_BILINEAR); | ||||||
|     SetTextureFilter(mat.maps[MAP_METALNESS].texture, FILTER_BILINEAR); |     SetTextureFilter(mat.maps[MATERIAL_MAP_METALNESS].texture, FILTER_BILINEAR); | ||||||
|     SetTextureFilter(mat.maps[MAP_ROUGHNESS].texture, FILTER_BILINEAR); |     SetTextureFilter(mat.maps[MATERIAL_MAP_ROUGHNESS].texture, FILTER_BILINEAR); | ||||||
|     SetTextureFilter(mat.maps[MAP_OCCLUSION].texture, FILTER_BILINEAR); |     SetTextureFilter(mat.maps[MATERIAL_MAP_OCCLUSION].texture, FILTER_BILINEAR); | ||||||
|      |      | ||||||
|     // Enable sample usage in shader for assigned textures |     // Enable sample usage in shader for assigned textures | ||||||
|     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "albedo.useSampler"), (int[1]){ 1 }, UNIFORM_INT); |     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "albedo.useSampler"), (int[1]){ 1 }, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "normals.useSampler"), (int[1]){ 1 }, UNIFORM_INT); |     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "normals.useSampler"), (int[1]){ 1 }, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "metalness.useSampler"), (int[1]){ 1 }, UNIFORM_INT); |     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "metalness.useSampler"), (int[1]){ 1 }, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "roughness.useSampler"), (int[1]){ 1 }, UNIFORM_INT); |     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "roughness.useSampler"), (int[1]){ 1 }, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "occlusion.useSampler"), (int[1]){ 1 }, UNIFORM_INT); |     SetShaderValue(mat.shader, GetShaderLocation(mat.shader, "occlusion.useSampler"), (int[1]){ 1 }, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|     int renderModeLoc = GetShaderLocation(mat.shader, "renderMode"); |     int renderModeLoc = GetShaderLocation(mat.shader, "renderMode"); | ||||||
|     SetShaderValue(mat.shader, renderModeLoc, (int[1]){ 0 }, UNIFORM_INT); |     SetShaderValue(mat.shader, renderModeLoc, (int[1]){ 0 }, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|     // Set up material properties color |     // Set up material properties color | ||||||
|     mat.maps[MAP_ALBEDO].color = albedo; |     mat.maps[MATERIAL_MAP_ALBEDO].color = albedo; | ||||||
|     mat.maps[MAP_NORMAL].color = (Color){ 128, 128, 255, 255 }; |     mat.maps[MATERIAL_MAP_NORMAL].color = (Color){ 128, 128, 255, 255 }; | ||||||
|     mat.maps[MAP_METALNESS].value = metalness; |     mat.maps[MATERIAL_MAP_METALNESS].value = metalness; | ||||||
|     mat.maps[MAP_ROUGHNESS].value = roughness; |     mat.maps[MATERIAL_MAP_ROUGHNESS].value = roughness; | ||||||
|     mat.maps[MAP_OCCLUSION].value = 1.0f; |     mat.maps[MATERIAL_MAP_OCCLUSION].value = 1.0f; | ||||||
|     mat.maps[MAP_EMISSION].value = 0.5f; |     mat.maps[MATERIAL_MAP_EMISSION].value = 0.5f; | ||||||
|     mat.maps[MAP_HEIGHT].value = 0.5f; |     mat.maps[MATERIAL_MAP_HEIGHT].value = 0.5f; | ||||||
|      |      | ||||||
|     // Generate cubemap from panorama texture |     // Generate cubemap from panorama texture | ||||||
|     //-------------------------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------------------------- | ||||||
| @@ -186,8 +186,8 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) | |||||||
| #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | ||||||
|     Shader shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs"); |     Shader shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs"); | ||||||
| #endif | #endif | ||||||
|     SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, UNIFORM_INT); |     SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT); | ||||||
|     TextureCubemap cubemap = GenTextureCubemap(shdrCubemap, panorama, CUBEMAP_SIZE, UNCOMPRESSED_R32G32B32); |     TextureCubemap cubemap = GenTextureCubemap(shdrCubemap, panorama, CUBEMAP_SIZE, PIXELFORMAT_UNCOMPRESSED_R32G32B32); | ||||||
|     UnloadTexture(panorama); |     UnloadTexture(panorama); | ||||||
|     UnloadShader(shdrCubemap); |     UnloadShader(shdrCubemap); | ||||||
|     //-------------------------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------------------------- | ||||||
| @@ -200,8 +200,8 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) | |||||||
| #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | ||||||
|     Shader shdrIrradiance = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/irradiance.fs"); |     Shader shdrIrradiance = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/irradiance.fs"); | ||||||
| #endif | #endif | ||||||
|     SetShaderValue(shdrIrradiance, GetShaderLocation(shdrIrradiance, "environmentMap"), (int[1]){ 0 }, UNIFORM_INT); |     SetShaderValue(shdrIrradiance, GetShaderLocation(shdrIrradiance, "environmentMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT); | ||||||
|     mat.maps[MAP_IRRADIANCE].texture = GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE); |     mat.maps[MATERIAL_MAP_IRRADIANCE].texture = GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE); | ||||||
|     UnloadShader(shdrIrradiance); |     UnloadShader(shdrIrradiance); | ||||||
|     //-------------------------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------------------------- | ||||||
|      |      | ||||||
| @@ -213,8 +213,8 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) | |||||||
| #else | #else | ||||||
|     Shader shdrPrefilter = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/prefilter.fs"); |     Shader shdrPrefilter = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/prefilter.fs"); | ||||||
| #endif | #endif | ||||||
|     SetShaderValue(shdrPrefilter, GetShaderLocation(shdrPrefilter, "environmentMap"), (int[1]){ 0 }, UNIFORM_INT); |     SetShaderValue(shdrPrefilter, GetShaderLocation(shdrPrefilter, "environmentMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT); | ||||||
|     mat.maps[MAP_PREFILTER].texture = GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE); |     mat.maps[MATERIAL_MAP_PREFILTER].texture = GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE); | ||||||
|     UnloadTexture(cubemap); |     UnloadTexture(cubemap); | ||||||
|     UnloadShader(shdrPrefilter); |     UnloadShader(shdrPrefilter); | ||||||
|     //-------------------------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------------------------- | ||||||
| @@ -226,7 +226,7 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness) | |||||||
| #else | #else | ||||||
|     Shader shdrBRDF = LoadShader("resources/shaders/glsl100/brdf.vs", "resources/shaders/glsl100/brdf.fs"); |     Shader shdrBRDF = LoadShader("resources/shaders/glsl100/brdf.vs", "resources/shaders/glsl100/brdf.fs"); | ||||||
| #endif | #endif | ||||||
|     mat.maps[MAP_BRDF].texture = GenTextureBRDF(shdrBRDF, BRDF_SIZE); |     mat.maps[MATERIAL_MAP_BRDG].texture = GenTextureBRDF(shdrBRDF, BRDF_SIZE); | ||||||
|     UnloadShader(shdrBRDF); |     UnloadShader(shdrBRDF); | ||||||
|     //-------------------------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ int main(void) | |||||||
|     models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f)); |     models[7] = LoadModelFromMesh(GenMeshPoly(5, 2.0f)); | ||||||
|  |  | ||||||
|     // Set checked texture as default diffuse component for all models material |     // Set checked texture as default diffuse component for all models material | ||||||
|     for (int i = 0; i < NUM_MODELS; i++) models[i].materials[0].maps[MAP_DIFFUSE].texture = texture; |     for (int i = 0; i < NUM_MODELS; i++) models[i].materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|  |  | ||||||
|     // Define the camera to look into our 3d world |     // Define the camera to look into our 3d world | ||||||
|     Camera camera = { { 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 }; |     Camera camera = { { 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f, 0 }; | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ int main(void) | |||||||
|  |  | ||||||
|     Model tower = LoadModel("resources/models/turret.obj");                 // Load OBJ model |     Model tower = LoadModel("resources/models/turret.obj");                 // Load OBJ model | ||||||
|     Texture2D texture = LoadTexture("resources/models/turret_diffuse.png"); // Load model texture |     Texture2D texture = LoadTexture("resources/models/turret_diffuse.png"); // Load model texture | ||||||
|     tower.materials[0].maps[MAP_DIFFUSE].texture = texture;                 // Set model diffuse texture |     tower.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;                 // Set model diffuse texture | ||||||
|  |  | ||||||
|     Vector3 towerPos = { 0.0f, 0.0f, 0.0f };                    // Set model position |     Vector3 towerPos = { 0.0f, 0.0f, 0.0f };                    // Set model position | ||||||
|     BoundingBox towerBBox = MeshBoundingBox(tower.meshes[0]);   // Get mesh bounding box |     BoundingBox towerBBox = MeshBoundingBox(tower.meshes[0]);   // Get mesh bounding box | ||||||
|   | |||||||
| @@ -37,9 +37,9 @@ int main(void) | |||||||
| #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | ||||||
|     skybox.materials[0].shader = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/skybox.fs"); |     skybox.materials[0].shader = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/skybox.fs"); | ||||||
| #endif | #endif | ||||||
|     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "environmentMap"), (int[1]){ MAP_CUBEMAP }, UNIFORM_INT); |     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "environmentMap"), (int[1]){ MATERIAL_MAP_CUBEMAP }, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "doGamma"), (int[1]) { useHDR ? 1 : 0 }, UNIFORM_INT); |     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "doGamma"), (int[1]) { useHDR ? 1 : 0 }, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "vflipped"), (int[1]){ useHDR ? 1 : 0 }, UNIFORM_INT); |     SetShaderValue(skybox.materials[0].shader, GetShaderLocation(skybox.materials[0].shader, "vflipped"), (int[1]){ useHDR ? 1 : 0 }, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|     // Load cubemap shader and setup required shader locations |     // Load cubemap shader and setup required shader locations | ||||||
| #if defined(PLATFORM_DESKTOP) | #if defined(PLATFORM_DESKTOP) | ||||||
| @@ -47,7 +47,7 @@ int main(void) | |||||||
| #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | #else   // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB | ||||||
|     Shader shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs"); |     Shader shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs"); | ||||||
| #endif | #endif | ||||||
|     SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, UNIFORM_INT); |     SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|     char skyboxFileName[256] = { 0 }; |     char skyboxFileName[256] = { 0 }; | ||||||
|  |  | ||||||
| @@ -61,15 +61,15 @@ int main(void) | |||||||
|         // Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture |         // Generate cubemap (texture with 6 quads-cube-mapping) from panorama HDR texture | ||||||
|         // NOTE 1: New texture is generated rendering to texture, shader calculates the sphere->cube coordinates mapping |         // NOTE 1: New texture is generated rendering to texture, shader calculates the sphere->cube coordinates mapping | ||||||
|         // NOTE 2: It seems on some Android devices WebGL, fbo does not properly support a FLOAT-based attachment, |         // NOTE 2: It seems on some Android devices WebGL, fbo does not properly support a FLOAT-based attachment, | ||||||
|         // despite texture can be successfully created.. so using UNCOMPRESSED_R8G8B8A8 instead of UNCOMPRESSED_R32G32B32A32 |         // despite texture can be successfully created.. so using PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 instead of PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 | ||||||
|         skybox.materials[0].maps[MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, UNCOMPRESSED_R8G8B8A8); |         skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8); | ||||||
|  |  | ||||||
|         UnloadTexture(panorama);    // Texture not required anymore, cubemap already generated |         UnloadTexture(panorama);    // Texture not required anymore, cubemap already generated | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         Image img = LoadImage("resources/skybox.png"); |         Image img = LoadImage("resources/skybox.png"); | ||||||
|         skybox.materials[0].maps[MAP_CUBEMAP].texture = LoadTextureCubemap(img, CUBEMAP_LAYOUT_AUTO_DETECT);    // CUBEMAP_LAYOUT_PANORAMA |         skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = LoadTextureCubemap(img, CUBEMAP_LAYOUT_AUTO_DETECT);    // CUBEMAP_LAYOUT_PANORAMA | ||||||
|         UnloadImage(img); |         UnloadImage(img); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -96,19 +96,19 @@ int main(void) | |||||||
|                 if (IsFileExtension(droppedFiles[0], ".png;.jpg;.hdr;.bmp;.tga")) |                 if (IsFileExtension(droppedFiles[0], ".png;.jpg;.hdr;.bmp;.tga")) | ||||||
|                 { |                 { | ||||||
|                     // Unload current cubemap texture and load new one |                     // Unload current cubemap texture and load new one | ||||||
|                     UnloadTexture(skybox.materials[0].maps[MAP_CUBEMAP].texture); |                     UnloadTexture(skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture); | ||||||
|                     if (useHDR) |                     if (useHDR) | ||||||
|                     { |                     { | ||||||
|                         Texture2D panorama = LoadTexture(droppedFiles[0]); |                         Texture2D panorama = LoadTexture(droppedFiles[0]); | ||||||
|                          |                          | ||||||
|                         // Generate cubemap from panorama texture |                         // Generate cubemap from panorama texture | ||||||
|                         skybox.materials[0].maps[MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, UNCOMPRESSED_R8G8B8A8); |                         skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = GenTextureCubemap(shdrCubemap, panorama, 1024, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8); | ||||||
|                         UnloadTexture(panorama); |                         UnloadTexture(panorama); | ||||||
|                     } |                     } | ||||||
|                     else |                     else | ||||||
|                     { |                     { | ||||||
|                         Image img = LoadImage(droppedFiles[0]); |                         Image img = LoadImage(droppedFiles[0]); | ||||||
|                         skybox.materials[0].maps[MAP_CUBEMAP].texture = LoadTextureCubemap(img, CUBEMAP_LAYOUT_AUTO_DETECT); |                         skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture = LoadTextureCubemap(img, CUBEMAP_LAYOUT_AUTO_DETECT); | ||||||
|                         UnloadImage(img); |                         UnloadImage(img); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
| @@ -149,7 +149,7 @@ int main(void) | |||||||
|     // De-Initialization |     // De-Initialization | ||||||
|     //-------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------- | ||||||
|     UnloadShader(skybox.materials[0].shader); |     UnloadShader(skybox.materials[0].shader); | ||||||
|     UnloadTexture(skybox.materials[0].maps[MAP_CUBEMAP].texture); |     UnloadTexture(skybox.materials[0].maps[MATERIAL_MAP_CUBEMAP].texture); | ||||||
|      |      | ||||||
|     UnloadModel(skybox);        // Unload skybox model |     UnloadModel(skybox);        // Unload skybox model | ||||||
|  |  | ||||||
|   | |||||||
| @@ -35,9 +35,9 @@ int main(void) | |||||||
|  |  | ||||||
|     // Model loading |     // Model loading | ||||||
|     Model model = LoadModel("resources/plane.obj");     // Load OBJ model |     Model model = LoadModel("resources/plane.obj");     // Load OBJ model | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture | ||||||
|  |  | ||||||
|     GenTextureMipmaps(&model.materials[0].maps[MAP_DIFFUSE].texture); |     GenTextureMipmaps(&model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture); | ||||||
|  |  | ||||||
|     Camera camera = { 0 }; |     Camera camera = { 0 }; | ||||||
|     camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective |     camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective | ||||||
| @@ -169,7 +169,7 @@ int main(void) | |||||||
|     //-------------------------------------------------------------------------------------- |     //-------------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|     // Unload all loaded data |     // Unload all loaded data | ||||||
|     UnloadTexture(model.materials[0].maps[MAP_DIFFUSE].texture); |     UnloadTexture(model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture); | ||||||
|     UnloadModel(model); |     UnloadModel(model); | ||||||
|  |  | ||||||
|     UnloadRenderTexture(framebuffer); |     UnloadRenderTexture(framebuffer); | ||||||
|   | |||||||
| @@ -163,21 +163,21 @@ Light CreateLight(int type, Vector3 position, Vector3 target, Color color, Shade | |||||||
| void UpdateLightValues(Shader shader, Light light) | void UpdateLightValues(Shader shader, Light light) | ||||||
| { | { | ||||||
|     // Send to shader light enabled state and type |     // Send to shader light enabled state and type | ||||||
|     SetShaderValue(shader, light.enabledLoc, &light.enabled, UNIFORM_INT); |     SetShaderValue(shader, light.enabledLoc, &light.enabled, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(shader, light.typeLoc, &light.type, UNIFORM_INT); |     SetShaderValue(shader, light.typeLoc, &light.type, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|     // Send to shader light position values |     // Send to shader light position values | ||||||
|     float position[3] = { light.position.x, light.position.y, light.position.z }; |     float position[3] = { light.position.x, light.position.y, light.position.z }; | ||||||
|     SetShaderValue(shader, light.posLoc, position, UNIFORM_VEC3); |     SetShaderValue(shader, light.posLoc, position, SHADER_UNIFORM_VEC3); | ||||||
|  |  | ||||||
|     // Send to shader light target position values |     // Send to shader light target position values | ||||||
|     float target[3] = { light.target.x, light.target.y, light.target.z }; |     float target[3] = { light.target.x, light.target.y, light.target.z }; | ||||||
|     SetShaderValue(shader, light.targetLoc, target, UNIFORM_VEC3); |     SetShaderValue(shader, light.targetLoc, target, SHADER_UNIFORM_VEC3); | ||||||
|  |  | ||||||
|     // Send to shader light color values |     // Send to shader light color values | ||||||
|     float color[4] = { (float)light.color.r/(float)255, (float)light.color.g/(float)255,  |     float color[4] = { (float)light.color.r/(float)255, (float)light.color.g/(float)255,  | ||||||
|                        (float)light.color.b/(float)255, (float)light.color.a/(float)255 }; |                        (float)light.color.b/(float)255, (float)light.color.a/(float)255 }; | ||||||
|     SetShaderValue(shader, light.colorLoc, color, UNIFORM_VEC4); |     SetShaderValue(shader, light.colorLoc, color, SHADER_UNIFORM_VEC4); | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif // RLIGHTS_IMPLEMENTATION | #endif // RLIGHTS_IMPLEMENTATION | ||||||
| @@ -163,21 +163,21 @@ Light CreateLight(int type, Vector3 position, Vector3 target, Color color, Shade | |||||||
| void UpdateLightValues(Shader shader, Light light) | void UpdateLightValues(Shader shader, Light light) | ||||||
| { | { | ||||||
|     // Send to shader light enabled state and type |     // Send to shader light enabled state and type | ||||||
|     SetShaderValue(shader, light.enabledLoc, &light.enabled, UNIFORM_INT); |     SetShaderValue(shader, light.enabledLoc, &light.enabled, SHADER_UNIFORM_INT); | ||||||
|     SetShaderValue(shader, light.typeLoc, &light.type, UNIFORM_INT); |     SetShaderValue(shader, light.typeLoc, &light.type, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|     // Send to shader light position values |     // Send to shader light position values | ||||||
|     float position[3] = { light.position.x, light.position.y, light.position.z }; |     float position[3] = { light.position.x, light.position.y, light.position.z }; | ||||||
|     SetShaderValue(shader, light.posLoc, position, UNIFORM_VEC3); |     SetShaderValue(shader, light.posLoc, position, SHADER_UNIFORM_VEC3); | ||||||
|  |  | ||||||
|     // Send to shader light target position values |     // Send to shader light target position values | ||||||
|     float target[3] = { light.target.x, light.target.y, light.target.z }; |     float target[3] = { light.target.x, light.target.y, light.target.z }; | ||||||
|     SetShaderValue(shader, light.targetLoc, target, UNIFORM_VEC3); |     SetShaderValue(shader, light.targetLoc, target, SHADER_UNIFORM_VEC3); | ||||||
|  |  | ||||||
|     // Send to shader light color values |     // Send to shader light color values | ||||||
|     float color[4] = { (float)light.color.r/(float)255, (float)light.color.g/(float)255,  |     float color[4] = { (float)light.color.r/(float)255, (float)light.color.g/(float)255,  | ||||||
|                        (float)light.color.b/(float)255, (float)light.color.a/(float)255 }; |                        (float)light.color.b/(float)255, (float)light.color.a/(float)255 }; | ||||||
|     SetShaderValue(shader, light.colorLoc, color, UNIFORM_VEC4); |     SetShaderValue(shader, light.colorLoc, color, SHADER_UNIFORM_VEC4); | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif // RLIGHTS_IMPLEMENTATION | #endif // RLIGHTS_IMPLEMENTATION | ||||||
| @@ -65,20 +65,20 @@ int main(void) | |||||||
|     Texture texture = LoadTexture("resources/texel_checker.png"); |     Texture texture = LoadTexture("resources/texel_checker.png"); | ||||||
|  |  | ||||||
|     // Assign texture to default model material |     // Assign texture to default model material | ||||||
|     modelA.materials[0].maps[MAP_DIFFUSE].texture = texture; |     modelA.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|     modelB.materials[0].maps[MAP_DIFFUSE].texture = texture; |     modelB.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|     modelC.materials[0].maps[MAP_DIFFUSE].texture = texture; |     modelC.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|  |  | ||||||
|     Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/base_lighting.vs", GLSL_VERSION),  |     Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/base_lighting.vs", GLSL_VERSION),  | ||||||
|                                TextFormat("resources/shaders/glsl%i/lighting.fs", GLSL_VERSION)); |                                TextFormat("resources/shaders/glsl%i/lighting.fs", GLSL_VERSION)); | ||||||
|      |      | ||||||
|     // Get some shader loactions |     // Get some shader loactions | ||||||
|     shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); |     shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); | ||||||
|     shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); |     shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); | ||||||
|  |  | ||||||
|     // ambient light level |     // ambient light level | ||||||
|     int ambientLoc = GetShaderLocation(shader, "ambient"); |     int ambientLoc = GetShaderLocation(shader, "ambient"); | ||||||
|     SetShaderValue(shader, ambientLoc, (float[4]){ 0.2f, 0.2f, 0.2f, 1.0f }, UNIFORM_VEC4); |     SetShaderValue(shader, ambientLoc, (float[4]){ 0.2f, 0.2f, 0.2f, 1.0f }, SHADER_UNIFORM_VEC4); | ||||||
|      |      | ||||||
|     float angle = 6.282f; |     float angle = 6.282f; | ||||||
|  |  | ||||||
| @@ -133,7 +133,7 @@ int main(void) | |||||||
|  |  | ||||||
|         // Update the light shader with the camera view position |         // Update the light shader with the camera view position | ||||||
|         float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; |         float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; | ||||||
|         SetShaderValue(shader, shader.locs[LOC_VECTOR_VIEW], cameraPos, UNIFORM_VEC3); |         SetShaderValue(shader, shader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, SHADER_UNIFORM_VEC3); | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|         // Draw |         // Draw | ||||||
|   | |||||||
| @@ -45,7 +45,7 @@ int main(void) | |||||||
|  |  | ||||||
|     Model model = LoadModel("resources/models/barracks.obj");                   // Load OBJ model |     Model model = LoadModel("resources/models/barracks.obj");                   // Load OBJ model | ||||||
|     Texture2D texture = LoadTexture("resources/models/barracks_diffuse.png");   // Load model texture (diffuse map) |     Texture2D texture = LoadTexture("resources/models/barracks_diffuse.png");   // Load model texture (diffuse map) | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture;                     // Set model diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;                     // Set model diffuse texture | ||||||
|  |  | ||||||
|     Vector3 position = { 0.0f, 0.0f, 0.0f };                                    // Set model position |     Vector3 position = { 0.0f, 0.0f, 0.0f };                                    // Set model position | ||||||
|  |  | ||||||
| @@ -79,7 +79,7 @@ int main(void) | |||||||
|         swirlCenter[1] = screenHeight - mousePosition.y; |         swirlCenter[1] = screenHeight - mousePosition.y; | ||||||
|  |  | ||||||
|         // Send new value to the shader to be used on drawing |         // Send new value to the shader to be used on drawing | ||||||
|         SetShaderValue(shader, swirlCenterLoc, swirlCenter, UNIFORM_VEC2); |         SetShaderValue(shader, swirlCenterLoc, swirlCenter, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|         UpdateCamera(&camera);              // Update camera |         UpdateCamera(&camera);              // Update camera | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|   | |||||||
| @@ -62,23 +62,23 @@ int main(void) | |||||||
|     Texture texture = LoadTexture("resources/texel_checker.png"); |     Texture texture = LoadTexture("resources/texel_checker.png"); | ||||||
|  |  | ||||||
|     // Assign texture to default model material |     // Assign texture to default model material | ||||||
|     modelA.materials[0].maps[MAP_DIFFUSE].texture = texture; |     modelA.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|     modelB.materials[0].maps[MAP_DIFFUSE].texture = texture; |     modelB.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|     modelC.materials[0].maps[MAP_DIFFUSE].texture = texture; |     modelC.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; | ||||||
|  |  | ||||||
|     // Load shader and set up some uniforms |     // Load shader and set up some uniforms | ||||||
|     Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/base_lighting.vs", GLSL_VERSION),  |     Shader shader = LoadShader(TextFormat("resources/shaders/glsl%i/base_lighting.vs", GLSL_VERSION),  | ||||||
|                                TextFormat("resources/shaders/glsl%i/fog.fs", GLSL_VERSION)); |                                TextFormat("resources/shaders/glsl%i/fog.fs", GLSL_VERSION)); | ||||||
|     shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); |     shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocation(shader, "matModel"); | ||||||
|     shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); |     shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); | ||||||
|  |  | ||||||
|     // Ambient light level |     // Ambient light level | ||||||
|     int ambientLoc = GetShaderLocation(shader, "ambient"); |     int ambientLoc = GetShaderLocation(shader, "ambient"); | ||||||
|     SetShaderValue(shader, ambientLoc, (float[4]){ 0.2f, 0.2f, 0.2f, 1.0f }, UNIFORM_VEC4); |     SetShaderValue(shader, ambientLoc, (float[4]){ 0.2f, 0.2f, 0.2f, 1.0f }, SHADER_UNIFORM_VEC4); | ||||||
|      |      | ||||||
|     float fogDensity = 0.15f; |     float fogDensity = 0.15f; | ||||||
|     int fogDensityLoc = GetShaderLocation(shader, "fogDensity"); |     int fogDensityLoc = GetShaderLocation(shader, "fogDensity"); | ||||||
|     SetShaderValue(shader, fogDensityLoc, &fogDensity, UNIFORM_FLOAT); |     SetShaderValue(shader, fogDensityLoc, &fogDensity, SHADER_UNIFORM_FLOAT); | ||||||
|  |  | ||||||
|     // NOTE: All models share the same shader |     // NOTE: All models share the same shader | ||||||
|     modelA.materials[0].shader = shader; |     modelA.materials[0].shader = shader; | ||||||
| @@ -112,14 +112,14 @@ int main(void) | |||||||
|             if (fogDensity < 0.0) fogDensity = 0.0; |             if (fogDensity < 0.0) fogDensity = 0.0; | ||||||
|         } |         } | ||||||
|          |          | ||||||
|         SetShaderValue(shader, fogDensityLoc, &fogDensity, UNIFORM_FLOAT); |         SetShaderValue(shader, fogDensityLoc, &fogDensity, SHADER_UNIFORM_FLOAT); | ||||||
|  |  | ||||||
|         // Rotate the torus |         // Rotate the torus | ||||||
|         modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)); |         modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateX(-0.025)); | ||||||
|         modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)); |         modelA.transform = MatrixMultiply(modelA.transform, MatrixRotateZ(0.012)); | ||||||
|  |  | ||||||
|         // Update the light shader with the camera view position |         // Update the light shader with the camera view position | ||||||
|         SetShaderValue(shader, shader.locs[LOC_VECTOR_VIEW], &camera.position.x, UNIFORM_VEC3); |         SetShaderValue(shader, shader.locs[SHADER_LOC_VECTOR_VIEW], &camera.position.x, SHADER_UNIFORM_VEC3); | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|         // Draw |         // Draw | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ int main(void) | |||||||
|     int timeLoc = GetShaderLocation(shader, "time"); |     int timeLoc = GetShaderLocation(shader, "time"); | ||||||
|  |  | ||||||
|     float resolution[2] = { (float)screenWidth, (float)screenHeight }; |     float resolution[2] = { (float)screenWidth, (float)screenHeight }; | ||||||
|     SetShaderValue(shader, resolutionLoc, resolution, UNIFORM_VEC2); |     SetShaderValue(shader, resolutionLoc, resolution, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|     float totalTime = 0.0f; |     float totalTime = 0.0f; | ||||||
|     bool shaderAutoReloading = false; |     bool shaderAutoReloading = false; | ||||||
| @@ -62,8 +62,8 @@ int main(void) | |||||||
|         float mousePos[2] = { mouse.x, mouse.y }; |         float mousePos[2] = { mouse.x, mouse.y }; | ||||||
|  |  | ||||||
|         // Set shader required uniform values |         // Set shader required uniform values | ||||||
|         SetShaderValue(shader, timeLoc, &totalTime, UNIFORM_FLOAT); |         SetShaderValue(shader, timeLoc, &totalTime, SHADER_UNIFORM_FLOAT); | ||||||
|         SetShaderValue(shader, mouseLoc, mousePos, UNIFORM_VEC2); |         SetShaderValue(shader, mouseLoc, mousePos, SHADER_UNIFORM_VEC2); | ||||||
|          |          | ||||||
|         // Hot shader reloading |         // Hot shader reloading | ||||||
|         if (shaderAutoReloading || (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) |         if (shaderAutoReloading || (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) | ||||||
| @@ -87,7 +87,7 @@ int main(void) | |||||||
|                     timeLoc = GetShaderLocation(shader, "time"); |                     timeLoc = GetShaderLocation(shader, "time"); | ||||||
|                      |                      | ||||||
|                     // Reset required uniforms |                     // Reset required uniforms | ||||||
|                     SetShaderValue(shader, resolutionLoc, resolution, UNIFORM_VEC2); |                     SetShaderValue(shader, resolutionLoc, resolution, SHADER_UNIFORM_VEC2); | ||||||
|                 } |                 } | ||||||
|                  |                  | ||||||
|                 fragShaderFileModTime = currentFragShaderModTime; |                 fragShaderFileModTime = currentFragShaderModTime; | ||||||
|   | |||||||
| @@ -65,11 +65,11 @@ int main(void) | |||||||
|  |  | ||||||
|     // Tell the shader what the screen dimensions, zoom, offset and c are |     // Tell the shader what the screen dimensions, zoom, offset and c are | ||||||
|     float screenDims[2] = { (float)screenWidth, (float)screenHeight }; |     float screenDims[2] = { (float)screenWidth, (float)screenHeight }; | ||||||
|     SetShaderValue(shader, GetShaderLocation(shader, "screenDims"), screenDims, UNIFORM_VEC2); |     SetShaderValue(shader, GetShaderLocation(shader, "screenDims"), screenDims, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|     SetShaderValue(shader, cLoc, c, UNIFORM_VEC2); |     SetShaderValue(shader, cLoc, c, SHADER_UNIFORM_VEC2); | ||||||
|     SetShaderValue(shader, zoomLoc, &zoom, UNIFORM_FLOAT); |     SetShaderValue(shader, zoomLoc, &zoom, SHADER_UNIFORM_FLOAT); | ||||||
|     SetShaderValue(shader, offsetLoc, offset, UNIFORM_VEC2); |     SetShaderValue(shader, offsetLoc, offset, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|     // Create a RenderTexture2D to be used for render to texture |     // Create a RenderTexture2D to be used for render to texture | ||||||
|     RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); |     RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight); | ||||||
| @@ -101,7 +101,7 @@ int main(void) | |||||||
|             else if (IsKeyPressed(KEY_FIVE)) c[0] = POINTS_OF_INTEREST[4][0], c[1] = POINTS_OF_INTEREST[4][1]; |             else if (IsKeyPressed(KEY_FIVE)) c[0] = POINTS_OF_INTEREST[4][0], c[1] = POINTS_OF_INTEREST[4][1]; | ||||||
|             else if (IsKeyPressed(KEY_SIX)) c[0] = POINTS_OF_INTEREST[5][0], c[1] = POINTS_OF_INTEREST[5][1]; |             else if (IsKeyPressed(KEY_SIX)) c[0] = POINTS_OF_INTEREST[5][0], c[1] = POINTS_OF_INTEREST[5][1]; | ||||||
|  |  | ||||||
|             SetShaderValue(shader, cLoc, c, UNIFORM_VEC2); |             SetShaderValue(shader, cLoc, c, SHADER_UNIFORM_VEC2); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (IsKeyPressed(KEY_SPACE)) pause = !pause;                 // Pause animation (c change) |         if (IsKeyPressed(KEY_SPACE)) pause = !pause;                 // Pause animation (c change) | ||||||
| @@ -130,15 +130,15 @@ int main(void) | |||||||
|             } |             } | ||||||
|             else offsetSpeed = (Vector2){ 0.0f, 0.0f }; |             else offsetSpeed = (Vector2){ 0.0f, 0.0f }; | ||||||
|  |  | ||||||
|             SetShaderValue(shader, zoomLoc, &zoom, UNIFORM_FLOAT); |             SetShaderValue(shader, zoomLoc, &zoom, SHADER_UNIFORM_FLOAT); | ||||||
|             SetShaderValue(shader, offsetLoc, offset, UNIFORM_VEC2); |             SetShaderValue(shader, offsetLoc, offset, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|             // Increment c value with time |             // Increment c value with time | ||||||
|             float amount = GetFrameTime()*incrementSpeed*0.0005f; |             float amount = GetFrameTime()*incrementSpeed*0.0005f; | ||||||
|             c[0] += amount; |             c[0] += amount; | ||||||
|             c[1] += amount; |             c[1] += amount; | ||||||
|  |  | ||||||
|             SetShaderValue(shader, cLoc, c, UNIFORM_VEC2); |             SetShaderValue(shader, cLoc, c, SHADER_UNIFORM_VEC2); | ||||||
|         } |         } | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ int main(void) | |||||||
|     Shader shader = LoadShader(0, TextFormat("resources/shaders/glsl%i/grayscale.fs", GLSL_VERSION)); |     Shader shader = LoadShader(0, TextFormat("resources/shaders/glsl%i/grayscale.fs", GLSL_VERSION)); | ||||||
|  |  | ||||||
|     model.materials[0].shader = shader;                     // Set shader effect to 3d model |     model.materials[0].shader = shader;                     // Set shader effect to 3d model | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture; // Bind texture to model |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Bind texture to model | ||||||
|  |  | ||||||
|     Vector3 position = { 0.0f, 0.0f, 0.0f };    // Set model position |     Vector3 position = { 0.0f, 0.0f, 0.0f };    // Set model position | ||||||
|  |  | ||||||
|   | |||||||
| @@ -106,7 +106,7 @@ int main(void) | |||||||
|  |  | ||||||
|         // Send new value to the shader to be used on drawing. |         // Send new value to the shader to be used on drawing. | ||||||
|         // NOTE: We are sending RGB triplets w/o the alpha channel |         // NOTE: We are sending RGB triplets w/o the alpha channel | ||||||
|         SetShaderValueV(shader, paletteLoc, palettes[currentPalette], UNIFORM_IVEC3, COLORS_PER_PALETTE); |         SetShaderValueV(shader, paletteLoc, palettes[currentPalette], SHADER_UNIFORM_IVEC3, COLORS_PER_PALETTE); | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|         // Draw |         // Draw | ||||||
|   | |||||||
| @@ -74,7 +74,7 @@ int main(void) | |||||||
|  |  | ||||||
|     Model model = LoadModel("resources/models/church.obj");                 // Load OBJ model |     Model model = LoadModel("resources/models/church.obj");                 // Load OBJ model | ||||||
|     Texture2D texture = LoadTexture("resources/models/church_diffuse.png"); // Load model texture (diffuse map) |     Texture2D texture = LoadTexture("resources/models/church_diffuse.png"); // Load model texture (diffuse map) | ||||||
|     model.materials[0].maps[MAP_DIFFUSE].texture = texture;                     // Set model diffuse texture |     model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture;                     // Set model diffuse texture | ||||||
|  |  | ||||||
|     Vector3 position = { 0.0f, 0.0f, 0.0f };                             // Set model position |     Vector3 position = { 0.0f, 0.0f, 0.0f };                             // Set model position | ||||||
|  |  | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ int main(void) | |||||||
|     int resolutionLoc = GetShaderLocation(shader, "resolution"); |     int resolutionLoc = GetShaderLocation(shader, "resolution"); | ||||||
|  |  | ||||||
|     float resolution[2] = { (float)screenWidth, (float)screenHeight }; |     float resolution[2] = { (float)screenWidth, (float)screenHeight }; | ||||||
|     SetShaderValue(shader, resolutionLoc, resolution, UNIFORM_VEC2); |     SetShaderValue(shader, resolutionLoc, resolution, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|     float runTime = 0.0f; |     float runTime = 0.0f; | ||||||
|  |  | ||||||
| @@ -70,9 +70,9 @@ int main(void) | |||||||
|         runTime += deltaTime; |         runTime += deltaTime; | ||||||
|  |  | ||||||
|         // Set shader required uniform values |         // Set shader required uniform values | ||||||
|         SetShaderValue(shader, viewEyeLoc, cameraPos, UNIFORM_VEC3); |         SetShaderValue(shader, viewEyeLoc, cameraPos, SHADER_UNIFORM_VEC3); | ||||||
|         SetShaderValue(shader, viewCenterLoc, cameraTarget, UNIFORM_VEC3); |         SetShaderValue(shader, viewCenterLoc, cameraTarget, SHADER_UNIFORM_VEC3); | ||||||
|         SetShaderValue(shader, runTimeLoc, &runTime, UNIFORM_FLOAT); |         SetShaderValue(shader, runTimeLoc, &runTime, SHADER_UNIFORM_FLOAT); | ||||||
|          |          | ||||||
|         // Check if screen is resized |         // Check if screen is resized | ||||||
|         if (IsWindowResized()) |         if (IsWindowResized()) | ||||||
| @@ -80,7 +80,7 @@ int main(void) | |||||||
|             screenWidth = GetScreenWidth(); |             screenWidth = GetScreenWidth(); | ||||||
|             screenHeight = GetScreenHeight(); |             screenHeight = GetScreenHeight(); | ||||||
|             float resolution[2] = { (float)screenWidth, (float)screenHeight }; |             float resolution[2] = { (float)screenWidth, (float)screenHeight }; | ||||||
|             SetShaderValue(shader, resolutionLoc, resolution, UNIFORM_VEC2); |             SetShaderValue(shader, resolutionLoc, resolution, SHADER_UNIFORM_VEC2); | ||||||
|         } |         } | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|   | |||||||
| @@ -77,19 +77,19 @@ int main(void) | |||||||
|                                TextFormat("resources/shaders/glsl%i/lighting.fs", GLSL_VERSION)); |                                TextFormat("resources/shaders/glsl%i/lighting.fs", GLSL_VERSION)); | ||||||
|  |  | ||||||
|     // Get some shader loactions |     // Get some shader loactions | ||||||
|     shader.locs[LOC_MATRIX_MVP] = GetShaderLocation(shader, "mvp"); |     shader.locs[SHADER_LOC_MATRIX_MVP] = GetShaderLocation(shader, "mvp"); | ||||||
|     shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); |     shader.locs[SHADER_LOC_VECTOR_VIEW] = GetShaderLocation(shader, "viewPos"); | ||||||
|     shader.locs[LOC_MATRIX_MODEL] = GetShaderLocationAttrib(shader, "instance"); |     shader.locs[SHADER_LOC_MATRIX_MODEL] = GetShaderLocationAttrib(shader, "instance"); | ||||||
|  |  | ||||||
|     // Ambient light level |     // Ambient light level | ||||||
|     int ambientLoc = GetShaderLocation(shader, "ambient"); |     int ambientLoc = GetShaderLocation(shader, "ambient"); | ||||||
|     SetShaderValue(shader, ambientLoc, (float[4]){ 0.2f, 0.2f, 0.2f, 1.0f }, UNIFORM_VEC4); |     SetShaderValue(shader, ambientLoc, (float[4]){ 0.2f, 0.2f, 0.2f, 1.0f }, SHADER_UNIFORM_VEC4); | ||||||
|  |  | ||||||
|     CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 50, 50, 0 }, Vector3Zero(), WHITE, shader); |     CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 50, 50, 0 }, Vector3Zero(), WHITE, shader); | ||||||
|  |  | ||||||
|     Material material = LoadMaterialDefault(); |     Material material = LoadMaterialDefault(); | ||||||
|     material.shader = shader; |     material.shader = shader; | ||||||
|     material.maps[MAP_DIFFUSE].color = RED; |     material.maps[MATERIAL_MAP_DIFFUSE].color = RED; | ||||||
|      |      | ||||||
|     SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode |     SetCameraMode(camera, CAMERA_FREE); // Set a free camera mode | ||||||
|  |  | ||||||
| @@ -105,7 +105,7 @@ int main(void) | |||||||
|  |  | ||||||
|         // Update the light shader with the camera view position |         // Update the light shader with the camera view position | ||||||
|         float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; |         float cameraPos[3] = { camera.position.x, camera.position.y, camera.position.z }; | ||||||
|         SetShaderValue(shader, shader.locs[LOC_VECTOR_VIEW], cameraPos, UNIFORM_VEC3); |         SetShaderValue(shader, shader.locs[SHADER_LOC_VECTOR_VIEW], cameraPos, SHADER_UNIFORM_VEC3); | ||||||
|  |  | ||||||
|         // Apply per-instance rotations |         // Apply per-instance rotations | ||||||
|         for (int i = 0; i < count; i++) |         for (int i = 0; i < count; i++) | ||||||
|   | |||||||
| @@ -60,15 +60,15 @@ int main(void) | |||||||
|      |      | ||||||
|     // Load and apply the diffuse texture (colour map) |     // Load and apply the diffuse texture (colour map) | ||||||
|     Texture texDiffuse = LoadTexture("resources/plasma.png"); |     Texture texDiffuse = LoadTexture("resources/plasma.png"); | ||||||
|     model1.materials[0].maps[MAP_DIFFUSE].texture = texDiffuse; |     model1.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texDiffuse; | ||||||
|     model2.materials[0].maps[MAP_DIFFUSE].texture = texDiffuse; |     model2.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texDiffuse; | ||||||
|  |  | ||||||
|     // Using MAP_EMISSION as a spare slot to use for 2nd texture |     // Using MATERIAL_MAP_EMISSION as a spare slot to use for 2nd texture | ||||||
|     // NOTE: Don't use MAP_IRRADIANCE, MAP_PREFILTER or  MAP_CUBEMAP as they are bound as cube maps |     // NOTE: Don't use MATERIAL_MAP_IRRADIANCE, MATERIAL_MAP_PREFILTER or  MATERIAL_MAP_CUBEMAP as they are bound as cube maps | ||||||
|     Texture texMask = LoadTexture("resources/mask.png"); |     Texture texMask = LoadTexture("resources/mask.png"); | ||||||
|     model1.materials[0].maps[MAP_EMISSION].texture = texMask; |     model1.materials[0].maps[MATERIAL_MAP_EMISSION].texture = texMask; | ||||||
|     model2.materials[0].maps[MAP_EMISSION].texture = texMask; |     model2.materials[0].maps[MATERIAL_MAP_EMISSION].texture = texMask; | ||||||
|     shader.locs[LOC_MAP_EMISSION] = GetShaderLocation(shader, "mask"); |     shader.locs[SHADER_LOC_MAP_EMISSION] = GetShaderLocation(shader, "mask"); | ||||||
|  |  | ||||||
|     // Frame is incremented each frame to animate the shader |     // Frame is incremented each frame to animate the shader | ||||||
|     int shaderFrame = GetShaderLocation(shader, "frame"); |     int shaderFrame = GetShaderLocation(shader, "frame"); | ||||||
| @@ -94,7 +94,7 @@ int main(void) | |||||||
|         rotation.z -= 0.0025f; |         rotation.z -= 0.0025f; | ||||||
|  |  | ||||||
|         // Send frames counter to shader for animation |         // Send frames counter to shader for animation | ||||||
|         SetShaderValue(shader, shaderFrame, &framesCounter, UNIFORM_INT); |         SetShaderValue(shader, shaderFrame, &framesCounter, SHADER_UNIFORM_INT); | ||||||
|  |  | ||||||
|         // Rotate one of the models |         // Rotate one of the models | ||||||
|         model1.transform = MatrixRotateXYZ(rotation); |         model1.transform = MatrixRotateXYZ(rotation); | ||||||
|   | |||||||
| @@ -114,7 +114,7 @@ int main(void) | |||||||
|     // a pitch black half and a dimly lit half. |     // a pitch black half and a dimly lit half. | ||||||
|     unsigned int wLoc = GetShaderLocation(shdrSpot, "screenWidth"); |     unsigned int wLoc = GetShaderLocation(shdrSpot, "screenWidth"); | ||||||
|     float sw = (float)GetScreenWidth(); |     float sw = (float)GetScreenWidth(); | ||||||
|     SetShaderValue(shdrSpot, wLoc, &sw, UNIFORM_FLOAT); |     SetShaderValue(shdrSpot, wLoc, &sw, SHADER_UNIFORM_FLOAT); | ||||||
|  |  | ||||||
|     // Randomise the locations and velocities of the spotlights |     // Randomise the locations and velocities of the spotlights | ||||||
|     // and initialise the shader locations |     // and initialise the shader locations | ||||||
| @@ -133,9 +133,9 @@ int main(void) | |||||||
|         spots[i].inner = 28 * (i + 1); |         spots[i].inner = 28 * (i + 1); | ||||||
|         spots[i].radius = 48 * (i + 1); |         spots[i].radius = 48 * (i + 1); | ||||||
|          |          | ||||||
|         SetShaderValue(shdrSpot, spots[i].posLoc, &spots[i].pos.x, UNIFORM_VEC2); |         SetShaderValue(shdrSpot, spots[i].posLoc, &spots[i].pos.x, SHADER_UNIFORM_VEC2); | ||||||
|         SetShaderValue(shdrSpot, spots[i].innerLoc, &spots[i].inner, UNIFORM_FLOAT); |         SetShaderValue(shdrSpot, spots[i].innerLoc, &spots[i].inner, SHADER_UNIFORM_FLOAT); | ||||||
|         SetShaderValue(shdrSpot, spots[i].radiusLoc, &spots[i].radius, UNIFORM_FLOAT); |         SetShaderValue(shdrSpot, spots[i].radiusLoc, &spots[i].radius, SHADER_UNIFORM_FLOAT); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     SetTargetFPS(60);               // Set  to run at 60 frames-per-second |     SetTargetFPS(60);               // Set  to run at 60 frames-per-second | ||||||
| @@ -171,7 +171,7 @@ int main(void) | |||||||
|                 if (spots[i].pos.y > (screenHeight - 64)) spots[i].vel.y = -spots[i].vel.y; |                 if (spots[i].pos.y > (screenHeight - 64)) spots[i].vel.y = -spots[i].vel.y; | ||||||
|             } |             } | ||||||
|              |              | ||||||
|             SetShaderValue(shdrSpot, spots[i].posLoc, &spots[i].pos.x, UNIFORM_VEC2);                 |             SetShaderValue(shdrSpot, spots[i].posLoc, &spots[i].pos.x, SHADER_UNIFORM_VEC2);                 | ||||||
|         } |         } | ||||||
|              |              | ||||||
|         // Draw |         // Draw | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ int main(void) | |||||||
|  |  | ||||||
|     float time = 0.0f; |     float time = 0.0f; | ||||||
|     int timeLoc = GetShaderLocation(shader, "uTime"); |     int timeLoc = GetShaderLocation(shader, "uTime"); | ||||||
|     SetShaderValue(shader, timeLoc, &time, UNIFORM_FLOAT); |     SetShaderValue(shader, timeLoc, &time, SHADER_UNIFORM_FLOAT); | ||||||
|  |  | ||||||
|     SetTargetFPS(60);               // Set our game to run at 60 frames-per-second |     SetTargetFPS(60);               // Set our game to run at 60 frames-per-second | ||||||
|     // ------------------------------------------------------------------------------------------------------------- |     // ------------------------------------------------------------------------------------------------------------- | ||||||
| @@ -50,7 +50,7 @@ int main(void) | |||||||
|         // Update |         // Update | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|         time = GetTime(); |         time = GetTime(); | ||||||
|         SetShaderValue(shader, timeLoc, &time, UNIFORM_FLOAT); |         SetShaderValue(shader, timeLoc, &time, SHADER_UNIFORM_FLOAT); | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|         // Draw |         // Draw | ||||||
|   | |||||||
| @@ -58,13 +58,13 @@ int main(void) | |||||||
|     float speedY = 8.0f; |     float speedY = 8.0f; | ||||||
|  |  | ||||||
|     float screenSize[2] = { (float)GetScreenWidth(), (float)GetScreenHeight() }; |     float screenSize[2] = { (float)GetScreenWidth(), (float)GetScreenHeight() }; | ||||||
|     SetShaderValue(shader, GetShaderLocation(shader, "size"), &screenSize, UNIFORM_VEC2); |     SetShaderValue(shader, GetShaderLocation(shader, "size"), &screenSize, SHADER_UNIFORM_VEC2); | ||||||
|     SetShaderValue(shader, freqXLoc, &freqX, UNIFORM_FLOAT); |     SetShaderValue(shader, freqXLoc, &freqX, SHADER_UNIFORM_FLOAT); | ||||||
|     SetShaderValue(shader, freqYLoc, &freqY, UNIFORM_FLOAT); |     SetShaderValue(shader, freqYLoc, &freqY, SHADER_UNIFORM_FLOAT); | ||||||
|     SetShaderValue(shader, ampXLoc, &X, UNIFORM_FLOAT); |     SetShaderValue(shader, ampXLoc, &X, SHADER_UNIFORM_FLOAT); | ||||||
|     SetShaderValue(shader, ampYLoc, &Y, UNIFORM_FLOAT); |     SetShaderValue(shader, ampYLoc, &Y, SHADER_UNIFORM_FLOAT); | ||||||
|     SetShaderValue(shader, speedXLoc, &speedX, UNIFORM_FLOAT); |     SetShaderValue(shader, speedXLoc, &speedX, SHADER_UNIFORM_FLOAT); | ||||||
|     SetShaderValue(shader, speedYLoc, &speedY, UNIFORM_FLOAT); |     SetShaderValue(shader, speedYLoc, &speedY, SHADER_UNIFORM_FLOAT); | ||||||
|  |  | ||||||
|     float seconds = 0.0f; |     float seconds = 0.0f; | ||||||
|  |  | ||||||
| @@ -78,7 +78,7 @@ int main(void) | |||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|         seconds += GetFrameTime(); |         seconds += GetFrameTime(); | ||||||
|          |          | ||||||
|         SetShaderValue(shader, secondsLoc, &seconds, UNIFORM_FLOAT); |         SetShaderValue(shader, secondsLoc, &seconds, SHADER_UNIFORM_FLOAT); | ||||||
|         //---------------------------------------------------------------------------------- |         //---------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|         // Draw |         // Draw | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ int main(void) | |||||||
|     // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) |     // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) | ||||||
|  |  | ||||||
|     Image imOrigin = LoadImage("resources/parrots.png");   // Loaded in CPU memory (RAM) |     Image imOrigin = LoadImage("resources/parrots.png");   // Loaded in CPU memory (RAM) | ||||||
|     ImageFormat(&imOrigin, UNCOMPRESSED_R8G8B8A8);         // Format image to RGBA 32bit (required for texture update) <-- ISSUE |     ImageFormat(&imOrigin, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8);         // Format image to RGBA 32bit (required for texture update) <-- ISSUE | ||||||
|     Texture2D texture = LoadTextureFromImage(imOrigin);    // Image converted to texture, GPU memory (VRAM) |     Texture2D texture = LoadTextureFromImage(imOrigin);    // Image converted to texture, GPU memory (VRAM) | ||||||
|      |      | ||||||
|     Image imCopy = ImageCopy(imOrigin); |     Image imCopy = ImageCopy(imOrigin); | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ int main(void) | |||||||
|     // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) |     // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) | ||||||
|  |  | ||||||
|     // Load RAW image data (512x512, 32bit RGBA, no file header) |     // Load RAW image data (512x512, 32bit RGBA, no file header) | ||||||
|     Image fudesumiRaw = LoadImageRaw("resources/fudesumi.raw", 384, 512, UNCOMPRESSED_R8G8B8A8, 0); |     Image fudesumiRaw = LoadImageRaw("resources/fudesumi.raw", 384, 512, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 0); | ||||||
|     Texture2D fudesumi = LoadTextureFromImage(fudesumiRaw);  // Upload CPU (RAM) image to GPU (VRAM) |     Texture2D fudesumi = LoadTextureFromImage(fudesumiRaw);  // Upload CPU (RAM) image to GPU (VRAM) | ||||||
|     UnloadImage(fudesumiRaw);                                // Unload CPU (RAM) image data |     UnloadImage(fudesumiRaw);                                // Unload CPU (RAM) image data | ||||||
|  |  | ||||||
| @@ -52,7 +52,7 @@ int main(void) | |||||||
|         .data = pixels,             // We can assign pixels directly to data |         .data = pixels,             // We can assign pixels directly to data | ||||||
|         .width = width, |         .width = width, | ||||||
|         .height = height, |         .height = height, | ||||||
|         .format = UNCOMPRESSED_R8G8B8A8, |         .format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, | ||||||
|         .mipmaps = 1 |         .mipmaps = 1 | ||||||
|     };         |     };         | ||||||
|      |      | ||||||
|   | |||||||
| @@ -1356,7 +1356,7 @@ void ClearWindowState(unsigned int flags) | |||||||
| void SetWindowIcon(Image image) | void SetWindowIcon(Image image) | ||||||
| { | { | ||||||
| #if defined(PLATFORM_DESKTOP) | #if defined(PLATFORM_DESKTOP) | ||||||
|     if (image.format == UNCOMPRESSED_R8G8B8A8) |     if (image.format == PIXELFORMAT_UNCOMPRESSED_R8G8B8A8) | ||||||
|     { |     { | ||||||
|         GLFWimage icon[1] = { 0 }; |         GLFWimage icon[1] = { 0 }; | ||||||
|  |  | ||||||
| @@ -2258,7 +2258,7 @@ void SetConfigFlags(unsigned int flags) | |||||||
| void TakeScreenshot(const char *fileName) | void TakeScreenshot(const char *fileName) | ||||||
| { | { | ||||||
|     unsigned char *imgData = rlReadScreenPixels(CORE.Window.render.width, CORE.Window.render.height); |     unsigned char *imgData = rlReadScreenPixels(CORE.Window.render.width, CORE.Window.render.height); | ||||||
|     Image image = { imgData, CORE.Window.render.width, CORE.Window.render.height, 1, UNCOMPRESSED_R8G8B8A8 }; |     Image image = { imgData, CORE.Window.render.width, CORE.Window.render.height, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 }; | ||||||
|  |  | ||||||
|     char path[512] = { 0 }; |     char path[512] = { 0 }; | ||||||
| #if defined(PLATFORM_ANDROID) | #if defined(PLATFORM_ANDROID) | ||||||
|   | |||||||
							
								
								
									
										70
									
								
								src/models.c
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								src/models.c
									
									
									
									
									
								
							| @@ -983,12 +983,12 @@ Material LoadMaterialDefault(void) | |||||||
|     material.maps = (MaterialMap *)RL_CALLOC(MAX_MATERIAL_MAPS, sizeof(MaterialMap)); |     material.maps = (MaterialMap *)RL_CALLOC(MAX_MATERIAL_MAPS, sizeof(MaterialMap)); | ||||||
|  |  | ||||||
|     material.shader = GetShaderDefault(); |     material.shader = GetShaderDefault(); | ||||||
|     material.maps[MAP_DIFFUSE].texture = GetTextureDefault();   // White texture (1x1 pixel) |     material.maps[MATERIAL_MAP_DIFFUSE].texture = GetTextureDefault();   // White texture (1x1 pixel) | ||||||
|     //material.maps[MAP_NORMAL].texture;         // NOTE: By default, not set |     //material.maps[MATERIAL_MAP_NORMAL].texture;         // NOTE: By default, not set | ||||||
|     //material.maps[MAP_SPECULAR].texture;       // NOTE: By default, not set |     //material.maps[MATERIAL_MAP_SPECULAR].texture;       // NOTE: By default, not set | ||||||
|  |  | ||||||
|     material.maps[MAP_DIFFUSE].color = WHITE;    // Diffuse color |     material.maps[MATERIAL_MAP_DIFFUSE].color = WHITE;    // Diffuse color | ||||||
|     material.maps[MAP_SPECULAR].color = WHITE;   // Specular color |     material.maps[MATERIAL_MAP_SPECULAR].color = WHITE;   // Specular color | ||||||
|  |  | ||||||
|     return material; |     return material; | ||||||
| } | } | ||||||
| @@ -1009,7 +1009,7 @@ void UnloadMaterial(Material material) | |||||||
|     RL_FREE(material.params); |     RL_FREE(material.params); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...) | // Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) | ||||||
| // NOTE: Previous texture should be manually unloaded | // NOTE: Previous texture should be manually unloaded | ||||||
| void SetMaterialTexture(Material *material, int mapType, Texture2D texture) | void SetMaterialTexture(Material *material, int mapType, Texture2D texture) | ||||||
| { | { | ||||||
| @@ -2330,7 +2330,7 @@ void MeshTangents(Mesh *mesh) | |||||||
|     RL_FREE(tan2); |     RL_FREE(tan2); | ||||||
|  |  | ||||||
|     // Load a new tangent attributes buffer |     // Load a new tangent attributes buffer | ||||||
|     mesh->vboId[LOC_VERTEX_TANGENT] = rlLoadAttribBuffer(mesh->vaoId, LOC_VERTEX_TANGENT, mesh->tangents, mesh->vertexCount*4*sizeof(float), false); |     mesh->vboId[SHADER_LOC_VERTEX_TANGENT] = rlLoadAttribBuffer(mesh->vaoId, SHADER_LOC_VERTEX_TANGENT, mesh->tangents, mesh->vertexCount*4*sizeof(float), false); | ||||||
|  |  | ||||||
|     TRACELOG(LOG_INFO, "MESH: Tangents data computed for provided mesh"); |     TRACELOG(LOG_INFO, "MESH: Tangents data computed for provided mesh"); | ||||||
| } | } | ||||||
| @@ -2373,7 +2373,7 @@ void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rota | |||||||
|  |  | ||||||
|     for (int i = 0; i < model.meshCount; i++) |     for (int i = 0; i < model.meshCount; i++) | ||||||
|     { |     { | ||||||
|         Color color = model.materials[model.meshMaterial[i]].maps[MAP_DIFFUSE].color; |         Color color = model.materials[model.meshMaterial[i]].maps[MATERIAL_MAP_DIFFUSE].color; | ||||||
|  |  | ||||||
|         Color colorTint = WHITE; |         Color colorTint = WHITE; | ||||||
|         colorTint.r = (unsigned char)((((float)color.r/255.0)*((float)tint.r/255.0))*255.0f); |         colorTint.r = (unsigned char)((((float)color.r/255.0)*((float)tint.r/255.0))*255.0f); | ||||||
| @@ -2381,9 +2381,9 @@ void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rota | |||||||
|         colorTint.b = (unsigned char)((((float)color.b/255.0)*((float)tint.b/255.0))*255.0f); |         colorTint.b = (unsigned char)((((float)color.b/255.0)*((float)tint.b/255.0))*255.0f); | ||||||
|         colorTint.a = (unsigned char)((((float)color.a/255.0)*((float)tint.a/255.0))*255.0f); |         colorTint.a = (unsigned char)((((float)color.a/255.0)*((float)tint.a/255.0))*255.0f); | ||||||
|  |  | ||||||
|         model.materials[model.meshMaterial[i]].maps[MAP_DIFFUSE].color = colorTint; |         model.materials[model.meshMaterial[i]].maps[MATERIAL_MAP_DIFFUSE].color = colorTint; | ||||||
|         rlDrawMesh(model.meshes[i], model.materials[model.meshMaterial[i]], model.transform); |         rlDrawMesh(model.meshes[i], model.materials[model.meshMaterial[i]], model.transform); | ||||||
|         model.materials[model.meshMaterial[i]].maps[MAP_DIFFUSE].color = color; |         model.materials[model.meshMaterial[i]].maps[MATERIAL_MAP_DIFFUSE].color = color; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2883,28 +2883,28 @@ static Model LoadOBJ(const char *fileName) | |||||||
|         for (unsigned int m = 0; m < materialCount; m++) |         for (unsigned int m = 0; m < materialCount; m++) | ||||||
|         { |         { | ||||||
|             // Init material to default |             // Init material to default | ||||||
|             // NOTE: Uses default shader, which only supports MAP_DIFFUSE |             // NOTE: Uses default shader, which only supports MATERIAL_MAP_DIFFUSE | ||||||
|             model.materials[m] = LoadMaterialDefault(); |             model.materials[m] = LoadMaterialDefault(); | ||||||
|  |  | ||||||
|             model.materials[m].maps[MAP_DIFFUSE].texture = GetTextureDefault();     // Get default texture, in case no texture is defined |             model.materials[m].maps[MATERIAL_MAP_DIFFUSE].texture = GetTextureDefault();     // Get default texture, in case no texture is defined | ||||||
|  |  | ||||||
|             if (materials[m].diffuse_texname != NULL) model.materials[m].maps[MAP_DIFFUSE].texture = LoadTexture(materials[m].diffuse_texname);  //char *diffuse_texname; // map_Kd |             if (materials[m].diffuse_texname != NULL) model.materials[m].maps[MATERIAL_MAP_DIFFUSE].texture = LoadTexture(materials[m].diffuse_texname);  //char *diffuse_texname; // map_Kd | ||||||
|             else model.materials[m].maps[MAP_DIFFUSE].texture = GetTextureDefault(); |             else model.materials[m].maps[MATERIAL_MAP_DIFFUSE].texture = GetTextureDefault(); | ||||||
|  |  | ||||||
|             model.materials[m].maps[MAP_DIFFUSE].color = (Color){ (unsigned char)(materials[m].diffuse[0]*255.0f), (unsigned char)(materials[m].diffuse[1]*255.0f), (unsigned char)(materials[m].diffuse[2]*255.0f), 255 }; //float diffuse[3]; |             model.materials[m].maps[MATERIAL_MAP_DIFFUSE].color = (Color){ (unsigned char)(materials[m].diffuse[0]*255.0f), (unsigned char)(materials[m].diffuse[1]*255.0f), (unsigned char)(materials[m].diffuse[2]*255.0f), 255 }; //float diffuse[3]; | ||||||
|             model.materials[m].maps[MAP_DIFFUSE].value = 0.0f; |             model.materials[m].maps[MATERIAL_MAP_DIFFUSE].value = 0.0f; | ||||||
|  |  | ||||||
|             if (materials[m].specular_texname != NULL) model.materials[m].maps[MAP_SPECULAR].texture = LoadTexture(materials[m].specular_texname);  //char *specular_texname; // map_Ks |             if (materials[m].specular_texname != NULL) model.materials[m].maps[MATERIAL_MAP_SPECULAR].texture = LoadTexture(materials[m].specular_texname);  //char *specular_texname; // map_Ks | ||||||
|             model.materials[m].maps[MAP_SPECULAR].color = (Color){ (unsigned char)(materials[m].specular[0]*255.0f), (unsigned char)(materials[m].specular[1]*255.0f), (unsigned char)(materials[m].specular[2]*255.0f), 255 }; //float specular[3]; |             model.materials[m].maps[MATERIAL_MAP_SPECULAR].color = (Color){ (unsigned char)(materials[m].specular[0]*255.0f), (unsigned char)(materials[m].specular[1]*255.0f), (unsigned char)(materials[m].specular[2]*255.0f), 255 }; //float specular[3]; | ||||||
|             model.materials[m].maps[MAP_SPECULAR].value = 0.0f; |             model.materials[m].maps[MATERIAL_MAP_SPECULAR].value = 0.0f; | ||||||
|  |  | ||||||
|             if (materials[m].bump_texname != NULL) model.materials[m].maps[MAP_NORMAL].texture = LoadTexture(materials[m].bump_texname);  //char *bump_texname; // map_bump, bump |             if (materials[m].bump_texname != NULL) model.materials[m].maps[MATERIAL_MAP_NORMAL].texture = LoadTexture(materials[m].bump_texname);  //char *bump_texname; // map_bump, bump | ||||||
|             model.materials[m].maps[MAP_NORMAL].color = WHITE; |             model.materials[m].maps[MATERIAL_MAP_NORMAL].color = WHITE; | ||||||
|             model.materials[m].maps[MAP_NORMAL].value = materials[m].shininess; |             model.materials[m].maps[MATERIAL_MAP_NORMAL].value = materials[m].shininess; | ||||||
|  |  | ||||||
|             model.materials[m].maps[MAP_EMISSION].color = (Color){ (unsigned char)(materials[m].emission[0]*255.0f), (unsigned char)(materials[m].emission[1]*255.0f), (unsigned char)(materials[m].emission[2]*255.0f), 255 }; //float emission[3]; |             model.materials[m].maps[MATERIAL_MAP_EMISSION].color = (Color){ (unsigned char)(materials[m].emission[0]*255.0f), (unsigned char)(materials[m].emission[1]*255.0f), (unsigned char)(materials[m].emission[2]*255.0f), 255 }; //float emission[3]; | ||||||
|  |  | ||||||
|             if (materials[m].displacement_texname != NULL) model.materials[m].maps[MAP_HEIGHT].texture = LoadTexture(materials[m].displacement_texname);  //char *displacement_texname; // disp |             if (materials[m].displacement_texname != NULL) model.materials[m].maps[MATERIAL_MAP_HEIGHT].texture = LoadTexture(materials[m].displacement_texname);  //char *displacement_texname; // disp | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         tinyobj_attrib_free(&attrib); |         tinyobj_attrib_free(&attrib); | ||||||
| @@ -3605,7 +3605,7 @@ static Image LoadImageFromCgltfImage(cgltf_image *image, const char *texPath, Co | |||||||
|                 rimage.data = raw; |                 rimage.data = raw; | ||||||
|                 rimage.width = width; |                 rimage.width = width; | ||||||
|                 rimage.height = height; |                 rimage.height = height; | ||||||
|                 rimage.format = UNCOMPRESSED_R8G8B8A8; |                 rimage.format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; | ||||||
|                 rimage.mipmaps = 1; |                 rimage.mipmaps = 1; | ||||||
|  |  | ||||||
|                 // TODO: Tint shouldn't be applied here! |                 // TODO: Tint shouldn't be applied here! | ||||||
| @@ -3639,7 +3639,7 @@ static Image LoadImageFromCgltfImage(cgltf_image *image, const char *texPath, Co | |||||||
|         rimage.data = raw; |         rimage.data = raw; | ||||||
|         rimage.width = width; |         rimage.width = width; | ||||||
|         rimage.height = height; |         rimage.height = height; | ||||||
|         rimage.format = UNCOMPRESSED_R8G8B8A8; |         rimage.format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; | ||||||
|         rimage.mipmaps = 1; |         rimage.mipmaps = 1; | ||||||
|  |  | ||||||
|         // TODO: Tint shouldn't be applied here! |         // TODO: Tint shouldn't be applied here! | ||||||
| @@ -3790,12 +3790,12 @@ static Model LoadGLTF(const char *fileName) | |||||||
|                 tint.b = (unsigned char)(data->materials[i].pbr_metallic_roughness.base_color_factor[2] * 255); |                 tint.b = (unsigned char)(data->materials[i].pbr_metallic_roughness.base_color_factor[2] * 255); | ||||||
|                 tint.a = (unsigned char)(data->materials[i].pbr_metallic_roughness.base_color_factor[3] * 255); |                 tint.a = (unsigned char)(data->materials[i].pbr_metallic_roughness.base_color_factor[3] * 255); | ||||||
|  |  | ||||||
|                 model.materials[i].maps[MAP_ALBEDO].color = tint; |                 model.materials[i].maps[MATERIAL_MAP_ALBEDO].color = tint; | ||||||
|  |  | ||||||
|                 if (data->materials[i].pbr_metallic_roughness.base_color_texture.texture) |                 if (data->materials[i].pbr_metallic_roughness.base_color_texture.texture) | ||||||
|                 { |                 { | ||||||
|                     Image albedo = LoadImageFromCgltfImage(data->materials[i].pbr_metallic_roughness.base_color_texture.texture->image, texPath, tint); |                     Image albedo = LoadImageFromCgltfImage(data->materials[i].pbr_metallic_roughness.base_color_texture.texture->image, texPath, tint); | ||||||
|                     model.materials[i].maps[MAP_ALBEDO].texture = LoadTextureFromImage(albedo); |                     model.materials[i].maps[MATERIAL_MAP_ALBEDO].texture = LoadTextureFromImage(albedo); | ||||||
|                     UnloadImage(albedo); |                     UnloadImage(albedo); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
| @@ -3804,13 +3804,13 @@ static Model LoadGLTF(const char *fileName) | |||||||
|                 if (data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture) |                 if (data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture) | ||||||
|                 { |                 { | ||||||
|                     Image metallicRoughness = LoadImageFromCgltfImage(data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture->image, texPath, tint); |                     Image metallicRoughness = LoadImageFromCgltfImage(data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture->image, texPath, tint); | ||||||
|                     model.materials[i].maps[MAP_ROUGHNESS].texture = LoadTextureFromImage(metallicRoughness); |                     model.materials[i].maps[MATERIAL_MAP_ROUGHNESS].texture = LoadTextureFromImage(metallicRoughness); | ||||||
|  |  | ||||||
|                     float roughness = data->materials[i].pbr_metallic_roughness.roughness_factor; |                     float roughness = data->materials[i].pbr_metallic_roughness.roughness_factor; | ||||||
|                     model.materials[i].maps[MAP_ROUGHNESS].value = roughness; |                     model.materials[i].maps[MATERIAL_MAP_ROUGHNESS].value = roughness; | ||||||
|  |  | ||||||
|                     float metallic = data->materials[i].pbr_metallic_roughness.metallic_factor; |                     float metallic = data->materials[i].pbr_metallic_roughness.metallic_factor; | ||||||
|                     model.materials[i].maps[MAP_METALNESS].value = metallic; |                     model.materials[i].maps[MATERIAL_MAP_METALNESS].value = metallic; | ||||||
|  |  | ||||||
|                     UnloadImage(metallicRoughness); |                     UnloadImage(metallicRoughness); | ||||||
|                 } |                 } | ||||||
| @@ -3818,25 +3818,25 @@ static Model LoadGLTF(const char *fileName) | |||||||
|                 if (data->materials[i].normal_texture.texture) |                 if (data->materials[i].normal_texture.texture) | ||||||
|                 { |                 { | ||||||
|                     Image normalImage = LoadImageFromCgltfImage(data->materials[i].normal_texture.texture->image, texPath, tint); |                     Image normalImage = LoadImageFromCgltfImage(data->materials[i].normal_texture.texture->image, texPath, tint); | ||||||
|                     model.materials[i].maps[MAP_NORMAL].texture = LoadTextureFromImage(normalImage); |                     model.materials[i].maps[MATERIAL_MAP_NORMAL].texture = LoadTextureFromImage(normalImage); | ||||||
|                     UnloadImage(normalImage); |                     UnloadImage(normalImage); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 if (data->materials[i].occlusion_texture.texture) |                 if (data->materials[i].occlusion_texture.texture) | ||||||
|                 { |                 { | ||||||
|                     Image occulsionImage = LoadImageFromCgltfImage(data->materials[i].occlusion_texture.texture->image, texPath, tint); |                     Image occulsionImage = LoadImageFromCgltfImage(data->materials[i].occlusion_texture.texture->image, texPath, tint); | ||||||
|                     model.materials[i].maps[MAP_OCCLUSION].texture = LoadTextureFromImage(occulsionImage); |                     model.materials[i].maps[MATERIAL_MAP_OCCLUSION].texture = LoadTextureFromImage(occulsionImage); | ||||||
|                     UnloadImage(occulsionImage); |                     UnloadImage(occulsionImage); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 if (data->materials[i].emissive_texture.texture) |                 if (data->materials[i].emissive_texture.texture) | ||||||
|                 { |                 { | ||||||
|                     Image emissiveImage = LoadImageFromCgltfImage(data->materials[i].emissive_texture.texture->image, texPath, tint); |                     Image emissiveImage = LoadImageFromCgltfImage(data->materials[i].emissive_texture.texture->image, texPath, tint); | ||||||
|                     model.materials[i].maps[MAP_EMISSION].texture = LoadTextureFromImage(emissiveImage); |                     model.materials[i].maps[MATERIAL_MAP_EMISSION].texture = LoadTextureFromImage(emissiveImage); | ||||||
|                     tint.r = (unsigned char)(data->materials[i].emissive_factor[0]*255); |                     tint.r = (unsigned char)(data->materials[i].emissive_factor[0]*255); | ||||||
|                     tint.g = (unsigned char)(data->materials[i].emissive_factor[1]*255); |                     tint.g = (unsigned char)(data->materials[i].emissive_factor[1]*255); | ||||||
|                     tint.b = (unsigned char)(data->materials[i].emissive_factor[2]*255); |                     tint.b = (unsigned char)(data->materials[i].emissive_factor[2]*255); | ||||||
|                     model.materials[i].maps[MAP_EMISSION].color = tint; |                     model.materials[i].maps[MATERIAL_MAP_EMISSION].color = tint; | ||||||
|                     UnloadImage(emissiveImage); |                     UnloadImage(emissiveImage); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|   | |||||||
							
								
								
									
										144
									
								
								src/raylib.h
									
									
									
									
									
								
							
							
						
						
									
										144
									
								
								src/raylib.h
									
									
									
									
									
								
							| @@ -159,6 +159,8 @@ | |||||||
| #define GetImageData        LoadImageColors | #define GetImageData        LoadImageColors | ||||||
| #define FILTER_POINT        TEXTURE_FILTER_POINT | #define FILTER_POINT        TEXTURE_FILTER_POINT | ||||||
| #define FILTER_BILINEAR     TEXTURE_FILTER_BILINEAR | #define FILTER_BILINEAR     TEXTURE_FILTER_BILINEAR | ||||||
|  | #define MAP_DIFFUSE         MATERIAL_MAP_DIFFUSE | ||||||
|  | #define PIXELFORMAT_UNCOMPRESSED_R8G8B8A8   PIXELFORMAT_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 | ||||||
|  |  | ||||||
| //---------------------------------------------------------------------------------- | //---------------------------------------------------------------------------------- | ||||||
| // Structures Definition | // Structures Definition | ||||||
| @@ -701,91 +703,91 @@ typedef enum { | |||||||
|  |  | ||||||
| // Shader location points | // Shader location points | ||||||
| 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_OCCLUSION, |     SHADER_LOC_MAP_OCCLUSION, | ||||||
|     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 | ||||||
|  |  | ||||||
| // Shader uniform data types | // Shader uniform data types | ||||||
| typedef enum { | typedef enum { | ||||||
|     UNIFORM_FLOAT = 0, |     SHADER_UNIFORM_FLOAT = 0, | ||||||
|     UNIFORM_VEC2, |     SHADER_UNIFORM_VEC2, | ||||||
|     UNIFORM_VEC3, |     SHADER_UNIFORM_VEC3, | ||||||
|     UNIFORM_VEC4, |     SHADER_UNIFORM_VEC4, | ||||||
|     UNIFORM_INT, |     SHADER_UNIFORM_INT, | ||||||
|     UNIFORM_IVEC2, |     SHADER_UNIFORM_IVEC2, | ||||||
|     UNIFORM_IVEC3, |     SHADER_UNIFORM_IVEC3, | ||||||
|     UNIFORM_IVEC4, |     SHADER_UNIFORM_IVEC4, | ||||||
|     UNIFORM_SAMPLER2D |     SHADER_UNIFORM_SAMPLER2D | ||||||
| } ShaderUniformDataType; | } ShaderUniformDataType; | ||||||
|  |  | ||||||
| // Material maps | // Material maps | ||||||
| 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_BRDG, | ||||||
|     MAP_IRRADIANCE,          // NOTE: Uses GL_TEXTURE_CUBE_MAP |     MATERIAL_MAP_CUBEMAP,             // NOTE: Uses GL_TEXTURE_CUBE_MAP | ||||||
|     MAP_PREFILTER,           // NOTE: Uses GL_TEXTURE_CUBE_MAP |     MATERIAL_MAP_IRRADIANCE,          // NOTE: Uses GL_TEXTURE_CUBE_MAP | ||||||
|     MAP_BRDF |     MATERIAL_MAP_PREFILTER            // NOTE: Uses GL_TEXTURE_CUBE_MAP | ||||||
| } MaterialMapType; | } MaterialMapType; | ||||||
|  |  | ||||||
| #define MAP_DIFFUSE      MAP_ALBEDO | #define MATERIAL_MAP_DIFFUSE      MATERIAL_MAP_ALBEDO | ||||||
| #define MAP_SPECULAR     MAP_METALNESS | #define MATERIAL_MAP_SPECULAR     MATERIAL_MAP_METALNESS | ||||||
|  |  | ||||||
| // Pixel formats | // Pixel formats | ||||||
| // NOTE: Support depends on OpenGL version and platform | // NOTE: Support depends on OpenGL version and platform | ||||||
| typedef enum { | typedef enum { | ||||||
|     UNCOMPRESSED_GRAYSCALE = 1,     // 8 bit per pixel (no alpha) |     PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1,     // 8 bit per pixel (no alpha) | ||||||
|     UNCOMPRESSED_GRAY_ALPHA,        // 8*2 bpp (2 channels) |     PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA,        // 8*2 bpp (2 channels) | ||||||
|     UNCOMPRESSED_R5G6B5,            // 16 bpp |     PIXELFORMAT_UNCOMPRESSED_R5G6B5,            // 16 bpp | ||||||
|     UNCOMPRESSED_R8G8B8,            // 24 bpp |     PIXELFORMAT_UNCOMPRESSED_R8G8B8,            // 24 bpp | ||||||
|     UNCOMPRESSED_R5G5B5A1,          // 16 bpp (1 bit alpha) |     PIXELFORMAT_UNCOMPRESSED_R5G5B5A1,          // 16 bpp (1 bit alpha) | ||||||
|     UNCOMPRESSED_R4G4B4A4,          // 16 bpp (4 bit alpha) |     PIXELFORMAT_UNCOMPRESSED_R4G4B4A4,          // 16 bpp (4 bit alpha) | ||||||
|     UNCOMPRESSED_R8G8B8A8,          // 32 bpp |     PIXELFORMAT_UNCOMPRESSED_R8G8B8A8,          // 32 bpp | ||||||
|     UNCOMPRESSED_R32,               // 32 bpp (1 channel - float) |     PIXELFORMAT_UNCOMPRESSED_R32,               // 32 bpp (1 channel - float) | ||||||
|     UNCOMPRESSED_R32G32B32,         // 32*3 bpp (3 channels - float) |     PIXELFORMAT_UNCOMPRESSED_R32G32B32,         // 32*3 bpp (3 channels - float) | ||||||
|     UNCOMPRESSED_R32G32B32A32,      // 32*4 bpp (4 channels - float) |     PIXELFORMAT_UNCOMPRESSED_R32G32B32A32,      // 32*4 bpp (4 channels - float) | ||||||
|     COMPRESSED_DXT1_RGB,            // 4 bpp (no alpha) |     PIXELFORMAT_COMPRESSED_DXT1_RGB,            // 4 bpp (no alpha) | ||||||
|     COMPRESSED_DXT1_RGBA,           // 4 bpp (1 bit alpha) |     PIXELFORMAT_COMPRESSED_DXT1_RGBA,           // 4 bpp (1 bit alpha) | ||||||
|     COMPRESSED_DXT3_RGBA,           // 8 bpp |     PIXELFORMAT_COMPRESSED_DXT3_RGBA,           // 8 bpp | ||||||
|     COMPRESSED_DXT5_RGBA,           // 8 bpp |     PIXELFORMAT_COMPRESSED_DXT5_RGBA,           // 8 bpp | ||||||
|     COMPRESSED_ETC1_RGB,            // 4 bpp |     PIXELFORMAT_COMPRESSED_ETC1_RGB,            // 4 bpp | ||||||
|     COMPRESSED_ETC2_RGB,            // 4 bpp |     PIXELFORMAT_COMPRESSED_ETC2_RGB,            // 4 bpp | ||||||
|     COMPRESSED_ETC2_EAC_RGBA,       // 8 bpp |     PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA,       // 8 bpp | ||||||
|     COMPRESSED_PVRT_RGB,            // 4 bpp |     PIXELFORMAT_COMPRESSED_PVRT_RGB,            // 4 bpp | ||||||
|     COMPRESSED_PVRT_RGBA,           // 4 bpp |     PIXELFORMAT_COMPRESSED_PVRT_RGBA,           // 4 bpp | ||||||
|     COMPRESSED_ASTC_4x4_RGBA,       // 8 bpp |     PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA,       // 8 bpp | ||||||
|     COMPRESSED_ASTC_8x8_RGBA        // 2 bpp |     PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA        // 2 bpp | ||||||
| } PixelFormat; | } PixelFormat; | ||||||
|  |  | ||||||
| // Texture parameters: filter mode | // Texture parameters: filter mode | ||||||
| @@ -1360,7 +1362,7 @@ RLAPI bool ExportMesh(Mesh mesh, const char *fileName); | |||||||
| RLAPI Material *LoadMaterials(const char *fileName, int *materialCount);                                // Load materials from model file | RLAPI Material *LoadMaterials(const char *fileName, int *materialCount);                                // Load materials from model file | ||||||
| RLAPI Material LoadMaterialDefault(void);                                                               // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) | RLAPI Material LoadMaterialDefault(void);                                                               // Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps) | ||||||
| RLAPI void UnloadMaterial(Material material);                                                           // Unload material from GPU memory (VRAM) | RLAPI void UnloadMaterial(Material material);                                                           // Unload material from GPU memory (VRAM) | ||||||
| RLAPI void SetMaterialTexture(Material *material, int mapType, Texture2D texture);                      // Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...) | RLAPI void SetMaterialTexture(Material *material, int mapType, Texture2D texture);                      // Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) | ||||||
| RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId);                              // Set material for a mesh | RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId);                              // Set material for a mesh | ||||||
|  |  | ||||||
| // Model animations loading/unloading functions | // Model animations loading/unloading functions | ||||||
|   | |||||||
							
								
								
									
										528
									
								
								src/rlgl.h
									
									
									
									
									
								
							
							
						
						
									
										528
									
								
								src/rlgl.h
									
									
									
									
									
								
							| @@ -364,27 +364,27 @@ typedef enum { | |||||||
|  |  | ||||||
|     // Texture formats (support depends on OpenGL version) |     // Texture formats (support depends on OpenGL version) | ||||||
|     typedef enum { |     typedef enum { | ||||||
|         UNCOMPRESSED_GRAYSCALE = 1,     // 8 bit per pixel (no alpha) |         PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1,     // 8 bit per pixel (no alpha) | ||||||
|         UNCOMPRESSED_GRAY_ALPHA, |         PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, | ||||||
|         UNCOMPRESSED_R5G6B5,            // 16 bpp |         PIXELFORMAT_UNCOMPRESSED_R5G6B5,            // 16 bpp | ||||||
|         UNCOMPRESSED_R8G8B8,            // 24 bpp |         PIXELFORMAT_UNCOMPRESSED_R8G8B8,            // 24 bpp | ||||||
|         UNCOMPRESSED_R5G5B5A1,          // 16 bpp (1 bit alpha) |         PIXELFORMAT_UNCOMPRESSED_R5G5B5A1,          // 16 bpp (1 bit alpha) | ||||||
|         UNCOMPRESSED_R4G4B4A4,          // 16 bpp (4 bit alpha) |         PIXELFORMAT_UNCOMPRESSED_R4G4B4A4,          // 16 bpp (4 bit alpha) | ||||||
|         UNCOMPRESSED_R8G8B8A8,          // 32 bpp |         PIXELFORMAT_UNCOMPRESSED_R8G8B8A8,          // 32 bpp | ||||||
|         UNCOMPRESSED_R32,               // 32 bpp (1 channel - float) |         PIXELFORMAT_UNCOMPRESSED_R32,               // 32 bpp (1 channel - float) | ||||||
|         UNCOMPRESSED_R32G32B32,         // 32*3 bpp (3 channels - float) |         PIXELFORMAT_UNCOMPRESSED_R32G32B32,         // 32*3 bpp (3 channels - float) | ||||||
|         UNCOMPRESSED_R32G32B32A32,      // 32*4 bpp (4 channels - float) |         PIXELFORMAT_UNCOMPRESSED_R32G32B32A32,      // 32*4 bpp (4 channels - float) | ||||||
|         COMPRESSED_DXT1_RGB,            // 4 bpp (no alpha) |         PIXELFORMAT_COMPRESSED_DXT1_RGB,            // 4 bpp (no alpha) | ||||||
|         COMPRESSED_DXT1_RGBA,           // 4 bpp (1 bit alpha) |         PIXELFORMAT_COMPRESSED_DXT1_RGBA,           // 4 bpp (1 bit alpha) | ||||||
|         COMPRESSED_DXT3_RGBA,           // 8 bpp |         PIXELFORMAT_COMPRESSED_DXT3_RGBA,           // 8 bpp | ||||||
|         COMPRESSED_DXT5_RGBA,           // 8 bpp |         PIXELFORMAT_COMPRESSED_DXT5_RGBA,           // 8 bpp | ||||||
|         COMPRESSED_ETC1_RGB,            // 4 bpp |         PIXELFORMAT_COMPRESSED_ETC1_RGB,            // 4 bpp | ||||||
|         COMPRESSED_ETC2_RGB,            // 4 bpp |         PIXELFORMAT_COMPRESSED_ETC2_RGB,            // 4 bpp | ||||||
|         COMPRESSED_ETC2_EAC_RGBA,       // 8 bpp |         PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA,       // 8 bpp | ||||||
|         COMPRESSED_PVRT_RGB,            // 4 bpp |         PIXELFORMAT_COMPRESSED_PVRT_RGB,            // 4 bpp | ||||||
|         COMPRESSED_PVRT_RGBA,           // 4 bpp |         PIXELFORMAT_COMPRESSED_PVRT_RGBA,           // 4 bpp | ||||||
|         COMPRESSED_ASTC_4x4_RGBA,       // 8 bpp |         PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA,       // 8 bpp | ||||||
|         COMPRESSED_ASTC_8x8_RGBA        // 2 bpp |         PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA        // 2 bpp | ||||||
|     } PixelFormat; |     } PixelFormat; | ||||||
|  |  | ||||||
|     // Texture parameters: filter mode |     // Texture parameters: filter mode | ||||||
| @@ -411,66 +411,66 @@ typedef enum { | |||||||
|  |  | ||||||
|     // 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_OCCLUSION, |         SHADER_LOC_MAP_OCCLUSION, | ||||||
|         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; | ||||||
|  |  | ||||||
|     // Shader uniform data types |     // Shader uniform data types | ||||||
|     typedef enum { |     typedef enum { | ||||||
|         UNIFORM_FLOAT = 0, |         SHADER_UNIFORM_FLOAT = 0, | ||||||
|         UNIFORM_VEC2, |         SHADER_UNIFORM_VEC2, | ||||||
|         UNIFORM_VEC3, |         SHADER_UNIFORM_VEC3, | ||||||
|         UNIFORM_VEC4, |         SHADER_UNIFORM_VEC4, | ||||||
|         UNIFORM_INT, |         SHADER_UNIFORM_INT, | ||||||
|         UNIFORM_IVEC2, |         SHADER_UNIFORM_IVEC2, | ||||||
|         UNIFORM_IVEC3, |         SHADER_UNIFORM_IVEC3, | ||||||
|         UNIFORM_IVEC4, |         SHADER_UNIFORM_IVEC4, | ||||||
|         UNIFORM_SAMPLER2D |         SHADER_UNIFORM_SAMPLER2D | ||||||
|     } ShaderUniformDataType; |     } ShaderUniformDataType; | ||||||
|  |  | ||||||
|     #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 | ||||||
|  |  | ||||||
|     // 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_BRDG | ||||||
|     } MaterialMapType; |     } MaterialMapType; | ||||||
|  |  | ||||||
|     #define MAP_DIFFUSE      MAP_ALBEDO |     #define MATERIAL_MAP_DIFFUSE      MATERIAL_MAP_ALBEDO | ||||||
|     #define MAP_SPECULAR     MAP_METALNESS |     #define MATERIAL_MAP_SPECULAR     MATERIAL_MAP_METALNESS | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #if defined(__cplusplus) | #if defined(__cplusplus) | ||||||
| @@ -1762,7 +1762,7 @@ void rlglInit(int width, int height) | |||||||
|     //---------------------------------------------------------- |     //---------------------------------------------------------- | ||||||
|     // Init default white texture |     // Init default white texture | ||||||
|     unsigned char pixels[4] = { 255, 255, 255, 255 };   // 1 pixel RGBA (4 bytes) |     unsigned char pixels[4] = { 255, 255, 255, 255 };   // 1 pixel RGBA (4 bytes) | ||||||
|     RLGL.State.defaultTextureId = rlLoadTexture(pixels, 1, 1, UNCOMPRESSED_R8G8B8A8, 1); |     RLGL.State.defaultTextureId = rlLoadTexture(pixels, 1, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1); | ||||||
|  |  | ||||||
|     if (RLGL.State.defaultTextureId != 0) TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Default texture loaded successfully", RLGL.State.defaultTextureId); |     if (RLGL.State.defaultTextureId != 0) TRACELOG(LOG_INFO, "TEXTURE: [ID %i] Default texture loaded successfully", RLGL.State.defaultTextureId); | ||||||
|     else TRACELOG(LOG_WARNING, "TEXTURE: Failed to load default texture"); |     else TRACELOG(LOG_WARNING, "TEXTURE: Failed to load default texture"); | ||||||
| @@ -1973,38 +1973,38 @@ unsigned int rlLoadTexture(void *data, int width, int height, int format, int mi | |||||||
|  |  | ||||||
|     // Check texture format support by OpenGL 1.1 (compressed textures not supported) |     // Check texture format support by OpenGL 1.1 (compressed textures not supported) | ||||||
| #if defined(GRAPHICS_API_OPENGL_11) | #if defined(GRAPHICS_API_OPENGL_11) | ||||||
|     if (format >= COMPRESSED_DXT1_RGB) |     if (format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) | ||||||
|     { |     { | ||||||
|         TRACELOG(LOG_WARNING, "GL: OpenGL 1.1 does not support GPU compressed texture formats"); |         TRACELOG(LOG_WARNING, "GL: OpenGL 1.1 does not support GPU compressed texture formats"); | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
| #else | #else | ||||||
|     if ((!RLGL.ExtSupported.texCompDXT) && ((format == COMPRESSED_DXT1_RGB) || (format == COMPRESSED_DXT1_RGBA) || |     if ((!RLGL.ExtSupported.texCompDXT) && ((format == PIXELFORMAT_COMPRESSED_DXT1_RGB) || (format == PIXELFORMAT_COMPRESSED_DXT1_RGBA) || | ||||||
|         (format == COMPRESSED_DXT3_RGBA) || (format == COMPRESSED_DXT5_RGBA))) |         (format == PIXELFORMAT_COMPRESSED_DXT3_RGBA) || (format == PIXELFORMAT_COMPRESSED_DXT5_RGBA))) | ||||||
|     { |     { | ||||||
|         TRACELOG(LOG_WARNING, "GL: DXT compressed texture format not supported"); |         TRACELOG(LOG_WARNING, "GL: DXT compressed texture format not supported"); | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
| #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) | #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) | ||||||
|     if ((!RLGL.ExtSupported.texCompETC1) && (format == COMPRESSED_ETC1_RGB)) |     if ((!RLGL.ExtSupported.texCompETC1) && (format == PIXELFORMAT_COMPRESSED_ETC1_RGB)) | ||||||
|     { |     { | ||||||
|         TRACELOG(LOG_WARNING, "GL: ETC1 compressed texture format not supported"); |         TRACELOG(LOG_WARNING, "GL: ETC1 compressed texture format not supported"); | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if ((!RLGL.ExtSupported.texCompETC2) && ((format == COMPRESSED_ETC2_RGB) || (format == COMPRESSED_ETC2_EAC_RGBA))) |     if ((!RLGL.ExtSupported.texCompETC2) && ((format == PIXELFORMAT_COMPRESSED_ETC2_RGB) || (format == PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA))) | ||||||
|     { |     { | ||||||
|         TRACELOG(LOG_WARNING, "GL: ETC2 compressed texture format not supported"); |         TRACELOG(LOG_WARNING, "GL: ETC2 compressed texture format not supported"); | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if ((!RLGL.ExtSupported.texCompPVRT) && ((format == COMPRESSED_PVRT_RGB) || (format == COMPRESSED_PVRT_RGBA))) |     if ((!RLGL.ExtSupported.texCompPVRT) && ((format == PIXELFORMAT_COMPRESSED_PVRT_RGB) || (format == PIXELFORMAT_COMPRESSED_PVRT_RGBA))) | ||||||
|     { |     { | ||||||
|         TRACELOG(LOG_WARNING, "GL: PVRT compressed texture format not supported"); |         TRACELOG(LOG_WARNING, "GL: PVRT compressed texture format not supported"); | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if ((!RLGL.ExtSupported.texCompASTC) && ((format == COMPRESSED_ASTC_4x4_RGBA) || (format == COMPRESSED_ASTC_8x8_RGBA))) |     if ((!RLGL.ExtSupported.texCompASTC) && ((format == PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA) || (format == PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA))) | ||||||
|     { |     { | ||||||
|         TRACELOG(LOG_WARNING, "GL: ASTC compressed texture format not supported"); |         TRACELOG(LOG_WARNING, "GL: ASTC compressed texture format not supported"); | ||||||
|         return id; |         return id; | ||||||
| @@ -2038,18 +2038,18 @@ unsigned int rlLoadTexture(void *data, int width, int height, int format, int mi | |||||||
|  |  | ||||||
|         if (glInternalFormat != -1) |         if (glInternalFormat != -1) | ||||||
|         { |         { | ||||||
|             if (format < COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, glFormat, glType, (unsigned char *)data + mipOffset); |             if (format < PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, glFormat, glType, (unsigned char *)data + mipOffset); | ||||||
|         #if !defined(GRAPHICS_API_OPENGL_11) |         #if !defined(GRAPHICS_API_OPENGL_11) | ||||||
|             else glCompressedTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, mipSize, (unsigned char *)data + mipOffset); |             else glCompressedTexImage2D(GL_TEXTURE_2D, i, glInternalFormat, mipWidth, mipHeight, 0, mipSize, (unsigned char *)data + mipOffset); | ||||||
|         #endif |         #endif | ||||||
|  |  | ||||||
|         #if defined(GRAPHICS_API_OPENGL_33) |         #if defined(GRAPHICS_API_OPENGL_33) | ||||||
|             if (format == UNCOMPRESSED_GRAYSCALE) |             if (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) | ||||||
|             { |             { | ||||||
|                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; |                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; | ||||||
|                 glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); |                 glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); | ||||||
|             } |             } | ||||||
|             else if (format == UNCOMPRESSED_GRAY_ALPHA) |             else if (format == PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) | ||||||
|             { |             { | ||||||
|             #if defined(GRAPHICS_API_OPENGL_21) |             #if defined(GRAPHICS_API_OPENGL_21) | ||||||
|                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; |                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; | ||||||
| @@ -2192,32 +2192,32 @@ unsigned int rlLoadTextureCubemap(void *data, int size, int format) | |||||||
|         { |         { | ||||||
|             if (data == NULL) |             if (data == NULL) | ||||||
|             { |             { | ||||||
|                 if (format < COMPRESSED_DXT1_RGB) |                 if (format < PIXELFORMAT_COMPRESSED_DXT1_RGB) | ||||||
|                 { |                 { | ||||||
|                     if (format == UNCOMPRESSED_R32G32B32) |                     if (format == PIXELFORMAT_UNCOMPRESSED_R32G32B32) | ||||||
|                     { |                     { | ||||||
|                         // Instead of using a sized internal texture format (GL_RGB16F, GL_RGB32F), we let the driver to choose the better format for us (GL_RGB) |                         // Instead of using a sized internal texture format (GL_RGB16F, GL_RGB32F), we let the driver to choose the better format for us (GL_RGB) | ||||||
|                         if (RLGL.ExtSupported.texFloat32) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, size, size, 0, GL_RGB, GL_FLOAT, NULL); |                         if (RLGL.ExtSupported.texFloat32) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, size, size, 0, GL_RGB, GL_FLOAT, NULL); | ||||||
|                         else TRACELOG(LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); |                         else TRACELOG(LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); | ||||||
|                     } |                     } | ||||||
|                     else if ((format == UNCOMPRESSED_R32) || (format == UNCOMPRESSED_R32G32B32A32)) TRACELOG(LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); |                     else if ((format == PIXELFORMAT_UNCOMPRESSED_R32) || (format == PIXELFORMAT_UNCOMPRESSED_R32G32B32A32)) TRACELOG(LOG_WARNING, "TEXTURES: Cubemap requested format not supported"); | ||||||
|                     else glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, NULL); |                     else glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, NULL); | ||||||
|                 } |                 } | ||||||
|                 else TRACELOG(LOG_WARNING, "TEXTURES: Empty cubemap creation does not support compressed format"); |                 else TRACELOG(LOG_WARNING, "TEXTURES: Empty cubemap creation does not support compressed format"); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 if (format < COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, (unsigned char *)data + i*dataSize); |                 if (format < PIXELFORMAT_COMPRESSED_DXT1_RGB) glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, glFormat, glType, (unsigned char *)data + i*dataSize); | ||||||
|                 else glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, dataSize, (unsigned char *)data + i*dataSize); |                 else glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, size, size, 0, dataSize, (unsigned char *)data + i*dataSize); | ||||||
|             } |             } | ||||||
|  |  | ||||||
| #if defined(GRAPHICS_API_OPENGL_33) | #if defined(GRAPHICS_API_OPENGL_33) | ||||||
|             if (format == UNCOMPRESSED_GRAYSCALE) |             if (format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) | ||||||
|             { |             { | ||||||
|                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; |                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE }; | ||||||
|                 glTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); |                 glTexParameteriv(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask); | ||||||
|             } |             } | ||||||
|             else if (format == UNCOMPRESSED_GRAY_ALPHA) |             else if (format == PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) | ||||||
|             { |             { | ||||||
| #if defined(GRAPHICS_API_OPENGL_21) | #if defined(GRAPHICS_API_OPENGL_21) | ||||||
|                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; |                 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ALPHA }; | ||||||
| @@ -2258,7 +2258,7 @@ void rlUpdateTexture(unsigned int id, int offsetX, int offsetY, int width, int h | |||||||
|     unsigned int glInternalFormat, glFormat, glType; |     unsigned int glInternalFormat, glFormat, glType; | ||||||
|     rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); |     rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); | ||||||
|  |  | ||||||
|     if ((glInternalFormat != -1) && (format < COMPRESSED_DXT1_RGB)) |     if ((glInternalFormat != -1) && (format < PIXELFORMAT_COMPRESSED_DXT1_RGB)) | ||||||
|     { |     { | ||||||
|         glTexSubImage2D(GL_TEXTURE_2D, 0, offsetX, offsetY, width, height, glFormat, glType, (unsigned char *)data); |         glTexSubImage2D(GL_TEXTURE_2D, 0, offsetX, offsetY, width, height, glFormat, glType, (unsigned char *)data); | ||||||
|     } |     } | ||||||
| @@ -2276,43 +2276,43 @@ void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned | |||||||
|     { |     { | ||||||
|     #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_ES2) |     #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_21) || defined(GRAPHICS_API_OPENGL_ES2) | ||||||
|         // NOTE: on OpenGL ES 2.0 (WebGL), internalFormat must match format and options allowed are: GL_LUMINANCE, GL_RGB, GL_RGBA |         // NOTE: on OpenGL ES 2.0 (WebGL), internalFormat must match format and options allowed are: GL_LUMINANCE, GL_RGB, GL_RGBA | ||||||
|         case UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_LUMINANCE_ALPHA; *glFormat = GL_LUMINANCE_ALPHA; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_LUMINANCE_ALPHA; *glFormat = GL_LUMINANCE_ALPHA; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; |         case PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; | ||||||
|         case UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; |         case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; | ||||||
|         case UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; |         case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; | ||||||
|         case UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         #if !defined(GRAPHICS_API_OPENGL_11) |         #if !defined(GRAPHICS_API_OPENGL_11) | ||||||
|         case UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_FLOAT; break;   // NOTE: Requires extension OES_texture_float |         case PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_FLOAT; break;   // NOTE: Requires extension OES_texture_float | ||||||
|         case UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_FLOAT; break;         // NOTE: Requires extension OES_texture_float |         case PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_FLOAT; break;         // NOTE: Requires extension OES_texture_float | ||||||
|         case UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_FLOAT; break;    // NOTE: Requires extension OES_texture_float |         case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_FLOAT; break;    // NOTE: Requires extension OES_texture_float | ||||||
|         #endif |         #endif | ||||||
|     #endif |     #endif | ||||||
|     #if defined(GRAPHICS_API_OPENGL_33) |     #if defined(GRAPHICS_API_OPENGL_33) | ||||||
|         case UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_R8; *glFormat = GL_RED; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_R8; *glFormat = GL_RED; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_RG8; *glFormat = GL_RG; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_RG8; *glFormat = GL_RG; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB565; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; |         case PIXELFORMAT_UNCOMPRESSED_R5G6B5: *glInternalFormat = GL_RGB565; *glFormat = GL_RGB; *glType = GL_UNSIGNED_SHORT_5_6_5; break; | ||||||
|         case UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB8; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_R8G8B8: *glInternalFormat = GL_RGB8; *glFormat = GL_RGB; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGB5_A1; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; |         case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: *glInternalFormat = GL_RGB5_A1; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_5_5_5_1; break; | ||||||
|         case UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA4; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; |         case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA4; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break; | ||||||
|         case UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA8; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; |         case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA8; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break; | ||||||
|         case UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_R32F; *glFormat = GL_RED; *glType = GL_FLOAT; break; |         case PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_R32F; *glFormat = GL_RED; *glType = GL_FLOAT; break; | ||||||
|         case UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F; *glFormat = GL_RGB; *glType = GL_FLOAT; break; |         case PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F; *glFormat = GL_RGB; *glType = GL_FLOAT; break; | ||||||
|         case UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; |         case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; | ||||||
|     #endif |     #endif | ||||||
|     #if !defined(GRAPHICS_API_OPENGL_11) |     #if !defined(GRAPHICS_API_OPENGL_11) | ||||||
|         case COMPRESSED_DXT1_RGB: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; |         case PIXELFORMAT_COMPRESSED_DXT1_RGB: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; break; | ||||||
|         case COMPRESSED_DXT1_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; |         case PIXELFORMAT_COMPRESSED_DXT1_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break; | ||||||
|         case COMPRESSED_DXT3_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; |         case PIXELFORMAT_COMPRESSED_DXT3_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break; | ||||||
|         case COMPRESSED_DXT5_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; |         case PIXELFORMAT_COMPRESSED_DXT5_RGBA: if (RLGL.ExtSupported.texCompDXT) *glInternalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break; | ||||||
|         case COMPRESSED_ETC1_RGB: if (RLGL.ExtSupported.texCompETC1) *glInternalFormat = GL_ETC1_RGB8_OES; break;                      // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 |         case PIXELFORMAT_COMPRESSED_ETC1_RGB: if (RLGL.ExtSupported.texCompETC1) *glInternalFormat = GL_ETC1_RGB8_OES; break;                      // NOTE: Requires OpenGL ES 2.0 or OpenGL 4.3 | ||||||
|         case COMPRESSED_ETC2_RGB: if (RLGL.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGB8_ETC2; break;               // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 |         case PIXELFORMAT_COMPRESSED_ETC2_RGB: if (RLGL.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGB8_ETC2; break;               // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 | ||||||
|         case COMPRESSED_ETC2_EAC_RGBA: if (RLGL.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC; break;     // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 |         case PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: if (RLGL.ExtSupported.texCompETC2) *glInternalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC; break;     // NOTE: Requires OpenGL ES 3.0 or OpenGL 4.3 | ||||||
|         case COMPRESSED_PVRT_RGB: if (RLGL.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break;    // NOTE: Requires PowerVR GPU |         case PIXELFORMAT_COMPRESSED_PVRT_RGB: if (RLGL.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG; break;    // NOTE: Requires PowerVR GPU | ||||||
|         case COMPRESSED_PVRT_RGBA: if (RLGL.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break;  // NOTE: Requires PowerVR GPU |         case PIXELFORMAT_COMPRESSED_PVRT_RGBA: if (RLGL.ExtSupported.texCompPVRT) *glInternalFormat = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; break;  // NOTE: Requires PowerVR GPU | ||||||
|         case COMPRESSED_ASTC_4x4_RGBA: if (RLGL.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break;  // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 |         case PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: if (RLGL.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; break;  // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 | ||||||
|         case COMPRESSED_ASTC_8x8_RGBA: if (RLGL.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break;  // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 |         case PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: if (RLGL.ExtSupported.texCompASTC) *glInternalFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; break;  // NOTE: Requires OpenGL ES 3.1 or OpenGL 4.3 | ||||||
|     #endif |     #endif | ||||||
|         default: TRACELOG(LOG_WARNING, "TEXTURE: Current format not supported (%i)", format); break; |         default: TRACELOG(LOG_WARNING, "TEXTURE: Current format not supported (%i)", format); break; | ||||||
|     } |     } | ||||||
| @@ -2427,7 +2427,7 @@ void rlGenerateMipmaps(Texture2D *texture) | |||||||
|     if (texIsPOT) |     if (texIsPOT) | ||||||
|     { |     { | ||||||
|         // WARNING: Manual mipmap generation only works for RGBA 32bit textures! |         // WARNING: Manual mipmap generation only works for RGBA 32bit textures! | ||||||
|         if (texture->format == UNCOMPRESSED_R8G8B8A8) |         if (texture->format == PIXELFORMAT_UNCOMPRESSED_R8G8B8A8) | ||||||
|         { |         { | ||||||
|             // Retrieve texture data from VRAM |             // Retrieve texture data from VRAM | ||||||
|             void *texData = rlReadTexturePixels(*texture); |             void *texData = rlReadTexturePixels(*texture); | ||||||
| @@ -2731,7 +2731,7 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
| { | { | ||||||
| #if defined(GRAPHICS_API_OPENGL_11) | #if defined(GRAPHICS_API_OPENGL_11) | ||||||
|     glEnable(GL_TEXTURE_2D); |     glEnable(GL_TEXTURE_2D); | ||||||
|     glBindTexture(GL_TEXTURE_2D, material.maps[MAP_DIFFUSE].texture.id); |     glBindTexture(GL_TEXTURE_2D, material.maps[MATERIAL_MAP_DIFFUSE].texture.id); | ||||||
|  |  | ||||||
|     // NOTE: On OpenGL 1.1 we use Vertex Arrays to draw model |     // NOTE: On OpenGL 1.1 we use Vertex Arrays to draw model | ||||||
|     glEnableClientState(GL_VERTEX_ARRAY);                   // Enable vertex array |     glEnableClientState(GL_VERTEX_ARRAY);                   // Enable vertex array | ||||||
| @@ -2746,7 +2746,7 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
|  |  | ||||||
|     rlPushMatrix(); |     rlPushMatrix(); | ||||||
|         rlMultMatrixf(MatrixToFloat(transform)); |         rlMultMatrixf(MatrixToFloat(transform)); | ||||||
|         rlColor4ub(material.maps[MAP_DIFFUSE].color.r, material.maps[MAP_DIFFUSE].color.g, material.maps[MAP_DIFFUSE].color.b, material.maps[MAP_DIFFUSE].color.a); |         rlColor4ub(material.maps[MATERIAL_MAP_DIFFUSE].color.r, material.maps[MATERIAL_MAP_DIFFUSE].color.g, material.maps[MATERIAL_MAP_DIFFUSE].color.b, material.maps[MATERIAL_MAP_DIFFUSE].color.a); | ||||||
|  |  | ||||||
|         if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, mesh.indices); |         if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, mesh.indices); | ||||||
|         else glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount); |         else glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount); | ||||||
| @@ -2768,24 +2768,24 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
|     // Matrices and other values required by shader |     // Matrices and other values required by shader | ||||||
|     //----------------------------------------------------- |     //----------------------------------------------------- | ||||||
|     // Calculate and send to shader model matrix (used by PBR shader) |     // Calculate and send to shader model matrix (used by PBR shader) | ||||||
|     if (material.shader.locs[LOC_MATRIX_MODEL] != -1) SetShaderValueMatrix(material.shader, material.shader.locs[LOC_MATRIX_MODEL], transform); |     if (material.shader.locs[SHADER_LOC_MATRIX_MODEL] != -1) SetShaderValueMatrix(material.shader, material.shader.locs[SHADER_LOC_MATRIX_MODEL], transform); | ||||||
|  |  | ||||||
|     // Upload to shader material.colDiffuse |     // Upload to shader material.colDiffuse | ||||||
|     if (material.shader.locs[LOC_COLOR_DIFFUSE] != -1) |     if (material.shader.locs[SHADER_LOC_COLOR_DIFFUSE] != -1) | ||||||
|         glUniform4f(material.shader.locs[LOC_COLOR_DIFFUSE], (float)material.maps[MAP_DIFFUSE].color.r/255.0f, |         glUniform4f(material.shader.locs[SHADER_LOC_COLOR_DIFFUSE], (float)material.maps[MATERIAL_MAP_DIFFUSE].color.r/255.0f, | ||||||
|                                                            (float)material.maps[MAP_DIFFUSE].color.g/255.0f, |                                                            (float)material.maps[MATERIAL_MAP_DIFFUSE].color.g/255.0f, | ||||||
|                                                            (float)material.maps[MAP_DIFFUSE].color.b/255.0f, |                                                            (float)material.maps[MATERIAL_MAP_DIFFUSE].color.b/255.0f, | ||||||
|                                                            (float)material.maps[MAP_DIFFUSE].color.a/255.0f); |                                                            (float)material.maps[MATERIAL_MAP_DIFFUSE].color.a/255.0f); | ||||||
|  |  | ||||||
|     // Upload to shader material.colSpecular (if available) |     // Upload to shader material.colSpecular (if available) | ||||||
|     if (material.shader.locs[LOC_COLOR_SPECULAR] != -1) |     if (material.shader.locs[SHADER_LOC_COLOR_SPECULAR] != -1) | ||||||
|         glUniform4f(material.shader.locs[LOC_COLOR_SPECULAR], (float)material.maps[MAP_SPECULAR].color.r/255.0f, |         glUniform4f(material.shader.locs[SHADER_LOC_COLOR_SPECULAR], (float)material.maps[MATERIAL_MAP_SPECULAR].color.r/255.0f, | ||||||
|                                                                (float)material.maps[MAP_SPECULAR].color.g/255.0f, |                                                                (float)material.maps[MATERIAL_MAP_SPECULAR].color.g/255.0f, | ||||||
|                                                                (float)material.maps[MAP_SPECULAR].color.b/255.0f, |                                                                (float)material.maps[MATERIAL_MAP_SPECULAR].color.b/255.0f, | ||||||
|                                                                (float)material.maps[MAP_SPECULAR].color.a/255.0f); |                                                                (float)material.maps[MATERIAL_MAP_SPECULAR].color.a/255.0f); | ||||||
|  |  | ||||||
|     if (material.shader.locs[LOC_MATRIX_VIEW] != -1) SetShaderValueMatrix(material.shader, material.shader.locs[LOC_MATRIX_VIEW], RLGL.State.modelview); |     if (material.shader.locs[SHADER_LOC_MATRIX_VIEW] != -1) SetShaderValueMatrix(material.shader, material.shader.locs[SHADER_LOC_MATRIX_VIEW], RLGL.State.modelview); | ||||||
|     if (material.shader.locs[LOC_MATRIX_PROJECTION] != -1) SetShaderValueMatrix(material.shader, material.shader.locs[LOC_MATRIX_PROJECTION], RLGL.State.projection); |     if (material.shader.locs[SHADER_LOC_MATRIX_PROJECTION] != -1) SetShaderValueMatrix(material.shader, material.shader.locs[SHADER_LOC_MATRIX_PROJECTION], RLGL.State.projection); | ||||||
|  |  | ||||||
|     // At this point the modelview matrix just contains the view matrix (camera) |     // At this point the modelview matrix just contains the view matrix (camera) | ||||||
|     // That's because BeginMode3D() sets it an no model-drawing function modifies it, all use rlPushMatrix() and rlPopMatrix() |     // That's because BeginMode3D() sets it an no model-drawing function modifies it, all use rlPushMatrix() and rlPopMatrix() | ||||||
| @@ -2807,10 +2807,10 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
|         if (material.maps[i].texture.id > 0) |         if (material.maps[i].texture.id > 0) | ||||||
|         { |         { | ||||||
|             glActiveTexture(GL_TEXTURE0 + i); |             glActiveTexture(GL_TEXTURE0 + i); | ||||||
|             if ((i == MAP_IRRADIANCE) || (i == MAP_PREFILTER) || (i == MAP_CUBEMAP)) glBindTexture(GL_TEXTURE_CUBE_MAP, material.maps[i].texture.id); |             if ((i == MATERIAL_MAP_IRRADIANCE) || (i == MATERIAL_MAP_PREFILTER) || (i == MATERIAL_MAP_CUBEMAP)) glBindTexture(GL_TEXTURE_CUBE_MAP, material.maps[i].texture.id); | ||||||
|             else glBindTexture(GL_TEXTURE_2D, material.maps[i].texture.id); |             else glBindTexture(GL_TEXTURE_2D, material.maps[i].texture.id); | ||||||
|  |  | ||||||
|             glUniform1i(material.shader.locs[LOC_MAP_DIFFUSE + i], i); |             glUniform1i(material.shader.locs[SHADER_LOC_MAP_DIFFUSE + i], i); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2820,54 +2820,54 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
|     { |     { | ||||||
|         // Bind mesh VBO data: vertex position (shader-location = 0) |         // Bind mesh VBO data: vertex position (shader-location = 0) | ||||||
|         glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); |         glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); | ||||||
|         glVertexAttribPointer(material.shader.locs[LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); |         glVertexAttribPointer(material.shader.locs[SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); | ||||||
|         glEnableVertexAttribArray(material.shader.locs[LOC_VERTEX_POSITION]); |         glEnableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_POSITION]); | ||||||
|  |  | ||||||
|         // Bind mesh VBO data: vertex texcoords (shader-location = 1) |         // Bind mesh VBO data: vertex texcoords (shader-location = 1) | ||||||
|         glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); |         glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); | ||||||
|         glVertexAttribPointer(material.shader.locs[LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); |         glVertexAttribPointer(material.shader.locs[SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); | ||||||
|         glEnableVertexAttribArray(material.shader.locs[LOC_VERTEX_TEXCOORD01]); |         glEnableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_TEXCOORD01]); | ||||||
|  |  | ||||||
|         // Bind mesh VBO data: vertex normals (shader-location = 2, if available) |         // Bind mesh VBO data: vertex normals (shader-location = 2, if available) | ||||||
|         if (material.shader.locs[LOC_VERTEX_NORMAL] != -1) |         if (material.shader.locs[SHADER_LOC_VERTEX_NORMAL] != -1) | ||||||
|         { |         { | ||||||
|             glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[2]); |             glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[2]); | ||||||
|             glVertexAttribPointer(material.shader.locs[LOC_VERTEX_NORMAL], 3, GL_FLOAT, 0, 0, 0); |             glVertexAttribPointer(material.shader.locs[SHADER_LOC_VERTEX_NORMAL], 3, GL_FLOAT, 0, 0, 0); | ||||||
|             glEnableVertexAttribArray(material.shader.locs[LOC_VERTEX_NORMAL]); |             glEnableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_NORMAL]); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Bind mesh VBO data: vertex colors (shader-location = 3, if available) |         // Bind mesh VBO data: vertex colors (shader-location = 3, if available) | ||||||
|         if (material.shader.locs[LOC_VERTEX_COLOR] != -1) |         if (material.shader.locs[SHADER_LOC_VERTEX_COLOR] != -1) | ||||||
|         { |         { | ||||||
|             if (mesh.vboId[3] != 0) |             if (mesh.vboId[3] != 0) | ||||||
|             { |             { | ||||||
|                 glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[3]); |                 glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[3]); | ||||||
|                 glVertexAttribPointer(material.shader.locs[LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); |                 glVertexAttribPointer(material.shader.locs[SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); | ||||||
|                 glEnableVertexAttribArray(material.shader.locs[LOC_VERTEX_COLOR]); |                 glEnableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_COLOR]); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 // Set default value for unused attribute |                 // Set default value for unused attribute | ||||||
|                 // NOTE: Required when using default shader and no VAO support |                 // NOTE: Required when using default shader and no VAO support | ||||||
|                 glVertexAttrib4f(material.shader.locs[LOC_VERTEX_COLOR], 1.0f, 1.0f, 1.0f, 1.0f); |                 glVertexAttrib4f(material.shader.locs[SHADER_LOC_VERTEX_COLOR], 1.0f, 1.0f, 1.0f, 1.0f); | ||||||
|                 glDisableVertexAttribArray(material.shader.locs[LOC_VERTEX_COLOR]); |                 glDisableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_COLOR]); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Bind mesh VBO data: vertex tangents (shader-location = 4, if available) |         // Bind mesh VBO data: vertex tangents (shader-location = 4, if available) | ||||||
|         if (material.shader.locs[LOC_VERTEX_TANGENT] != -1) |         if (material.shader.locs[SHADER_LOC_VERTEX_TANGENT] != -1) | ||||||
|         { |         { | ||||||
|             glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[4]); |             glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[4]); | ||||||
|             glVertexAttribPointer(material.shader.locs[LOC_VERTEX_TANGENT], 4, GL_FLOAT, 0, 0, 0); |             glVertexAttribPointer(material.shader.locs[SHADER_LOC_VERTEX_TANGENT], 4, GL_FLOAT, 0, 0, 0); | ||||||
|             glEnableVertexAttribArray(material.shader.locs[LOC_VERTEX_TANGENT]); |             glEnableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_TANGENT]); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // Bind mesh VBO data: vertex texcoords2 (shader-location = 5, if available) |         // Bind mesh VBO data: vertex texcoords2 (shader-location = 5, if available) | ||||||
|         if (material.shader.locs[LOC_VERTEX_TEXCOORD02] != -1) |         if (material.shader.locs[SHADER_LOC_VERTEX_TEXCOORD02] != -1) | ||||||
|         { |         { | ||||||
|             glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[5]); |             glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[5]); | ||||||
|             glVertexAttribPointer(material.shader.locs[LOC_VERTEX_TEXCOORD02], 2, GL_FLOAT, 0, 0, 0); |             glVertexAttribPointer(material.shader.locs[SHADER_LOC_VERTEX_TEXCOORD02], 2, GL_FLOAT, 0, 0, 0); | ||||||
|             glEnableVertexAttribArray(material.shader.locs[LOC_VERTEX_TEXCOORD02]); |             glEnableVertexAttribArray(material.shader.locs[SHADER_LOC_VERTEX_TEXCOORD02]); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (mesh.indices != NULL) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh.vboId[6]); |         if (mesh.indices != NULL) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh.vboId[6]); | ||||||
| @@ -2889,7 +2889,7 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
|         Matrix matMVP = MatrixMultiply(RLGL.State.modelview, RLGL.State.projection);        // Transform to screen-space coordinates |         Matrix matMVP = MatrixMultiply(RLGL.State.modelview, RLGL.State.projection);        // Transform to screen-space coordinates | ||||||
|  |  | ||||||
|         // Send combined model-view-projection matrix to shader |         // Send combined model-view-projection matrix to shader | ||||||
|         glUniformMatrix4fv(material.shader.locs[LOC_MATRIX_MVP], 1, false, MatrixToFloat(matMVP)); |         glUniformMatrix4fv(material.shader.locs[SHADER_LOC_MATRIX_MVP], 1, false, MatrixToFloat(matMVP)); | ||||||
|  |  | ||||||
|         // Draw call! |         // Draw call! | ||||||
|         if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, 0); // Indexed vertices draw |         if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, 0); // Indexed vertices draw | ||||||
| @@ -2900,7 +2900,7 @@ void rlDrawMesh(Mesh mesh, Material material, Matrix transform) | |||||||
|     for (int i = 0; i < MAX_MATERIAL_MAPS; i++) |     for (int i = 0; i < MAX_MATERIAL_MAPS; i++) | ||||||
|     { |     { | ||||||
|         glActiveTexture(GL_TEXTURE0 + i);       // Set shader active texture |         glActiveTexture(GL_TEXTURE0 + i);       // Set shader active texture | ||||||
|         if ((i == MAP_IRRADIANCE) || (i == MAP_PREFILTER) || (i == MAP_CUBEMAP)) glBindTexture(GL_TEXTURE_CUBE_MAP, 0); |         if ((i == MATERIAL_MAP_IRRADIANCE) || (i == MATERIAL_MAP_PREFILTER) || (i == MATERIAL_MAP_CUBEMAP)) glBindTexture(GL_TEXTURE_CUBE_MAP, 0); | ||||||
|         else glBindTexture(GL_TEXTURE_2D, 0);   // Unbind current active texture |         else glBindTexture(GL_TEXTURE_2D, 0);   // Unbind current active texture | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2930,18 +2930,18 @@ void rlDrawMeshInstanced(Mesh mesh, Material material, Matrix *transforms, int c | |||||||
|     glUseProgram(material.shader.id); |     glUseProgram(material.shader.id); | ||||||
|  |  | ||||||
|     // Upload to shader material.colDiffuse |     // Upload to shader material.colDiffuse | ||||||
|     if (material.shader.locs[LOC_COLOR_DIFFUSE] != -1) |     if (material.shader.locs[SHADER_LOC_COLOR_DIFFUSE] != -1) | ||||||
|         glUniform4f(material.shader.locs[LOC_COLOR_DIFFUSE], (float)material.maps[MAP_DIFFUSE].color.r/255.0f, |         glUniform4f(material.shader.locs[SHADER_LOC_COLOR_DIFFUSE], (float)material.maps[MATERIAL_MAP_DIFFUSE].color.r/255.0f, | ||||||
|                                                            (float)material.maps[MAP_DIFFUSE].color.g/255.0f, |                                                            (float)material.maps[MATERIAL_MAP_DIFFUSE].color.g/255.0f, | ||||||
|                                                            (float)material.maps[MAP_DIFFUSE].color.b/255.0f, |                                                            (float)material.maps[MATERIAL_MAP_DIFFUSE].color.b/255.0f, | ||||||
|                                                            (float)material.maps[MAP_DIFFUSE].color.a/255.0f); |                                                            (float)material.maps[MATERIAL_MAP_DIFFUSE].color.a/255.0f); | ||||||
|  |  | ||||||
|     // Upload to shader material.colSpecular (if available) |     // Upload to shader material.colSpecular (if available) | ||||||
|     if (material.shader.locs[LOC_COLOR_SPECULAR] != -1) |     if (material.shader.locs[SHADER_LOC_COLOR_SPECULAR] != -1) | ||||||
|         glUniform4f(material.shader.locs[LOC_COLOR_SPECULAR], (float)material.maps[MAP_SPECULAR].color.r/255.0f, |         glUniform4f(material.shader.locs[SHADER_LOC_COLOR_SPECULAR], (float)material.maps[MATERIAL_MAP_SPECULAR].color.r/255.0f, | ||||||
|                                                                (float)material.maps[MAP_SPECULAR].color.g/255.0f, |                                                                (float)material.maps[MATERIAL_MAP_SPECULAR].color.g/255.0f, | ||||||
|                                                                (float)material.maps[MAP_SPECULAR].color.b/255.0f, |                                                                (float)material.maps[MATERIAL_MAP_SPECULAR].color.b/255.0f, | ||||||
|                                                                (float)material.maps[MAP_SPECULAR].color.a/255.0f); |                                                                (float)material.maps[MATERIAL_MAP_SPECULAR].color.a/255.0f); | ||||||
|  |  | ||||||
|     // Bind active texture maps (if available) |     // Bind active texture maps (if available) | ||||||
|     for (int i = 0; i < MAX_MATERIAL_MAPS; i++) |     for (int i = 0; i < MAX_MATERIAL_MAPS; i++) | ||||||
| @@ -2949,11 +2949,11 @@ void rlDrawMeshInstanced(Mesh mesh, Material material, Matrix *transforms, int c | |||||||
|         if (material.maps[i].texture.id > 0) |         if (material.maps[i].texture.id > 0) | ||||||
|         { |         { | ||||||
|             glActiveTexture(GL_TEXTURE0 + i); |             glActiveTexture(GL_TEXTURE0 + i); | ||||||
|             if ((i == MAP_IRRADIANCE) || (i == MAP_PREFILTER) || (i == MAP_CUBEMAP)) |             if ((i == MATERIAL_MAP_IRRADIANCE) || (i == MATERIAL_MAP_PREFILTER) || (i == MATERIAL_MAP_CUBEMAP)) | ||||||
|                 glBindTexture(GL_TEXTURE_CUBE_MAP, material.maps[i].texture.id); |                 glBindTexture(GL_TEXTURE_CUBE_MAP, material.maps[i].texture.id); | ||||||
|             else glBindTexture(GL_TEXTURE_2D, material.maps[i].texture.id); |             else glBindTexture(GL_TEXTURE_2D, material.maps[i].texture.id); | ||||||
|  |  | ||||||
|             glUniform1i(material.shader.locs[LOC_MAP_DIFFUSE + i], i); |             glUniform1i(material.shader.locs[SHADER_LOC_MAP_DIFFUSE + i], i); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2962,7 +2962,7 @@ void rlDrawMeshInstanced(Mesh mesh, Material material, Matrix *transforms, int c | |||||||
|  |  | ||||||
|     // At this point the modelview matrix just contains the view matrix (camera) |     // At this point the modelview matrix just contains the view matrix (camera) | ||||||
|     // For instanced shaders "mvp" is not premultiplied by any instance transform, only RLGL.State.transform |     // For instanced shaders "mvp" is not premultiplied by any instance transform, only RLGL.State.transform | ||||||
|     glUniformMatrix4fv(material.shader.locs[LOC_MATRIX_MVP], 1, false, |     glUniformMatrix4fv(material.shader.locs[SHADER_LOC_MATRIX_MVP], 1, false, | ||||||
|                        MatrixToFloat(MatrixMultiply(MatrixMultiply(RLGL.State.transform, RLGL.State.modelview), RLGL.State.projection))); |                        MatrixToFloat(MatrixMultiply(MatrixMultiply(RLGL.State.transform, RLGL.State.modelview), RLGL.State.projection))); | ||||||
|  |  | ||||||
|     float16* instanceTransforms = RL_MALLOC(count*sizeof(float16)); |     float16* instanceTransforms = RL_MALLOC(count*sizeof(float16)); | ||||||
| @@ -2978,9 +2978,9 @@ void rlDrawMeshInstanced(Mesh mesh, Material material, Matrix *transforms, int c | |||||||
|     glBindBuffer(GL_ARRAY_BUFFER, instancesB); |     glBindBuffer(GL_ARRAY_BUFFER, instancesB); | ||||||
|     glBufferData(GL_ARRAY_BUFFER, count*sizeof(float16), instanceTransforms, GL_STATIC_DRAW); |     glBufferData(GL_ARRAY_BUFFER, count*sizeof(float16), instanceTransforms, GL_STATIC_DRAW); | ||||||
|  |  | ||||||
|     // Instances are put in LOC_MATRIX_MODEL attribute location with space for 4x Vector4, eg: |     // Instances are put in SHADER_LOC_MATRIX_MODEL attribute location with space for 4x Vector4, eg: | ||||||
|     // layout (location = 12) in mat4 instance; |     // layout (location = 12) in mat4 instance; | ||||||
|     unsigned int instanceA = material.shader.locs[LOC_MATRIX_MODEL]; |     unsigned int instanceA = material.shader.locs[SHADER_LOC_MATRIX_MODEL]; | ||||||
|  |  | ||||||
|     for (unsigned int i = 0; i < 4; i++) |     for (unsigned int i = 0; i < 4; i++) | ||||||
|     { |     { | ||||||
| @@ -3002,7 +3002,7 @@ void rlDrawMeshInstanced(Mesh mesh, Material material, Matrix *transforms, int c | |||||||
|     for (int i = 0; i < MAX_MATERIAL_MAPS; i++) |     for (int i = 0; i < MAX_MATERIAL_MAPS; i++) | ||||||
|     { |     { | ||||||
|         glActiveTexture(GL_TEXTURE0 + i);       // Set shader active texture |         glActiveTexture(GL_TEXTURE0 + i);       // Set shader active texture | ||||||
|         if ((i == MAP_IRRADIANCE) || (i == MAP_PREFILTER) || (i == MAP_CUBEMAP)) glBindTexture(GL_TEXTURE_CUBE_MAP, 0); |         if ((i == MATERIAL_MAP_IRRADIANCE) || (i == MATERIAL_MAP_PREFILTER) || (i == MATERIAL_MAP_CUBEMAP)) glBindTexture(GL_TEXTURE_CUBE_MAP, 0); | ||||||
|         else glBindTexture(GL_TEXTURE_2D, 0);   // Unbind current active texture |         else glBindTexture(GL_TEXTURE_2D, 0);   // Unbind current active texture | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -3089,7 +3089,7 @@ void *rlReadTexturePixels(Texture2D texture) | |||||||
|     rlGetGlTextureFormats(texture.format, &glInternalFormat, &glFormat, &glType); |     rlGetGlTextureFormats(texture.format, &glInternalFormat, &glFormat, &glType); | ||||||
|     unsigned int size = GetPixelDataSize(texture.width, texture.height, texture.format); |     unsigned int size = GetPixelDataSize(texture.width, texture.height, texture.format); | ||||||
|  |  | ||||||
|     if ((glInternalFormat != -1) && (texture.format < COMPRESSED_DXT1_RGB)) |     if ((glInternalFormat != -1) && (texture.format < PIXELFORMAT_COMPRESSED_DXT1_RGB)) | ||||||
|     { |     { | ||||||
|         pixels = RL_MALLOC(size); |         pixels = RL_MALLOC(size); | ||||||
|         glGetTexImage(GL_TEXTURE_2D, 0, glFormat, glType, pixels); |         glGetTexImage(GL_TEXTURE_2D, 0, glFormat, glType, pixels); | ||||||
| @@ -3118,7 +3118,7 @@ void *rlReadTexturePixels(Texture2D texture) | |||||||
|     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture.id, 0); |     glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture.id, 0); | ||||||
|  |  | ||||||
|     // We read data as RGBA because FBO texture is configured as RGBA, despite binding another texture format |     // We read data as RGBA because FBO texture is configured as RGBA, despite binding another texture format | ||||||
|     pixels = (unsigned char *)RL_MALLOC(GetPixelDataSize(texture.width, texture.height, UNCOMPRESSED_R8G8B8A8)); |     pixels = (unsigned char *)RL_MALLOC(GetPixelDataSize(texture.width, texture.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8)); | ||||||
|     glReadPixels(0, 0, texture.width, texture.height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); |     glReadPixels(0, 0, texture.width, texture.height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); | ||||||
|  |  | ||||||
|     glBindFramebuffer(GL_FRAMEBUFFER, 0); |     glBindFramebuffer(GL_FRAMEBUFFER, 0); | ||||||
| @@ -3144,7 +3144,7 @@ Texture2D GetTextureDefault(void) | |||||||
|     texture.width = 1; |     texture.width = 1; | ||||||
|     texture.height = 1; |     texture.height = 1; | ||||||
|     texture.mipmaps = 1; |     texture.mipmaps = 1; | ||||||
|     texture.format = UNCOMPRESSED_R8G8B8A8; |     texture.format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8; | ||||||
| #endif | #endif | ||||||
|     return texture; |     return texture; | ||||||
| } | } | ||||||
| @@ -3357,15 +3357,15 @@ void SetShaderValueV(Shader shader, int uniformLoc, const void *value, int unifo | |||||||
|  |  | ||||||
|     switch (uniformType) |     switch (uniformType) | ||||||
|     { |     { | ||||||
|         case UNIFORM_FLOAT: glUniform1fv(uniformLoc, count, (float *)value); break; |         case SHADER_UNIFORM_FLOAT: glUniform1fv(uniformLoc, count, (float *)value); break; | ||||||
|         case UNIFORM_VEC2: glUniform2fv(uniformLoc, count, (float *)value); break; |         case SHADER_UNIFORM_VEC2: glUniform2fv(uniformLoc, count, (float *)value); break; | ||||||
|         case UNIFORM_VEC3: glUniform3fv(uniformLoc, count, (float *)value); break; |         case SHADER_UNIFORM_VEC3: glUniform3fv(uniformLoc, count, (float *)value); break; | ||||||
|         case UNIFORM_VEC4: glUniform4fv(uniformLoc, count, (float *)value); break; |         case SHADER_UNIFORM_VEC4: glUniform4fv(uniformLoc, count, (float *)value); break; | ||||||
|         case UNIFORM_INT: glUniform1iv(uniformLoc, count, (int *)value); break; |         case SHADER_UNIFORM_INT: glUniform1iv(uniformLoc, count, (int *)value); break; | ||||||
|         case UNIFORM_IVEC2: glUniform2iv(uniformLoc, count, (int *)value); break; |         case SHADER_UNIFORM_IVEC2: glUniform2iv(uniformLoc, count, (int *)value); break; | ||||||
|         case UNIFORM_IVEC3: glUniform3iv(uniformLoc, count, (int *)value); break; |         case SHADER_UNIFORM_IVEC3: glUniform3iv(uniformLoc, count, (int *)value); break; | ||||||
|         case UNIFORM_IVEC4: glUniform4iv(uniformLoc, count, (int *)value); break; |         case SHADER_UNIFORM_IVEC4: glUniform4iv(uniformLoc, count, (int *)value); break; | ||||||
|         case UNIFORM_SAMPLER2D: glUniform1iv(uniformLoc, count, (int *)value); break; |         case SHADER_UNIFORM_SAMPLER2D: glUniform1iv(uniformLoc, count, (int *)value); break; | ||||||
|         default: TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to set uniform, data type not recognized", shader.id); |         default: TRACELOG(LOG_WARNING, "SHADER: [ID %i] Failed to set uniform, data type not recognized", shader.id); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -3487,7 +3487,7 @@ TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, in | |||||||
|  |  | ||||||
|     // Define projection matrix and send it to shader |     // Define projection matrix and send it to shader | ||||||
|     Matrix fboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR); |     Matrix fboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR); | ||||||
|     SetShaderValueMatrix(shader, shader.locs[LOC_MATRIX_PROJECTION], fboProjection); |     SetShaderValueMatrix(shader, shader.locs[SHADER_LOC_MATRIX_PROJECTION], fboProjection); | ||||||
|  |  | ||||||
|     // Define view matrix for every side of the cubemap |     // Define view matrix for every side of the cubemap | ||||||
|     Matrix fboViews[6] = { |     Matrix fboViews[6] = { | ||||||
| @@ -3509,7 +3509,7 @@ TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, in | |||||||
|  |  | ||||||
|     for (int i = 0; i < 6; i++) |     for (int i = 0; i < 6; i++) | ||||||
|     { |     { | ||||||
|         SetShaderValueMatrix(shader, shader.locs[LOC_MATRIX_VIEW], fboViews[i]); |         SetShaderValueMatrix(shader, shader.locs[SHADER_LOC_MATRIX_VIEW], fboViews[i]); | ||||||
|         rlFramebufferAttach(fbo, cubemap.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i); |         rlFramebufferAttach(fbo, cubemap.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i); | ||||||
|  |  | ||||||
|         rlEnableFramebuffer(fbo); |         rlEnableFramebuffer(fbo); | ||||||
| @@ -3543,7 +3543,7 @@ TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, in | |||||||
|     cubemap.width = size; |     cubemap.width = size; | ||||||
|     cubemap.height = size; |     cubemap.height = size; | ||||||
|     cubemap.mipmaps = 1; |     cubemap.mipmaps = 1; | ||||||
|     cubemap.format = UNCOMPRESSED_R32G32B32; |     cubemap.format = PIXELFORMAT_UNCOMPRESSED_R32G32B32; | ||||||
| #endif | #endif | ||||||
|     return cubemap; |     return cubemap; | ||||||
| } | } | ||||||
| @@ -3559,7 +3559,7 @@ TextureCubemap GenTextureIrradiance(Shader shader, TextureCubemap cubemap, int s | |||||||
|     // STEP 1: Setup framebuffer |     // STEP 1: Setup framebuffer | ||||||
|     //------------------------------------------------------------------------------------------ |     //------------------------------------------------------------------------------------------ | ||||||
|     unsigned int rbo = rlLoadTextureDepth(size, size, true); |     unsigned int rbo = rlLoadTextureDepth(size, size, true); | ||||||
|     irradiance.id = rlLoadTextureCubemap(NULL, size, UNCOMPRESSED_R32G32B32); |     irradiance.id = rlLoadTextureCubemap(NULL, size, PIXELFORMAT_UNCOMPRESSED_R32G32B32); | ||||||
|  |  | ||||||
|     unsigned int fbo = rlLoadFramebuffer(size, size); |     unsigned int fbo = rlLoadFramebuffer(size, size); | ||||||
|     rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER); |     rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER); | ||||||
| @@ -3572,7 +3572,7 @@ TextureCubemap GenTextureIrradiance(Shader shader, TextureCubemap cubemap, int s | |||||||
|  |  | ||||||
|     // Define projection matrix and send it to shader |     // Define projection matrix and send it to shader | ||||||
|     Matrix fboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR); |     Matrix fboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR); | ||||||
|     SetShaderValueMatrix(shader, shader.locs[LOC_MATRIX_PROJECTION], fboProjection); |     SetShaderValueMatrix(shader, shader.locs[SHADER_LOC_MATRIX_PROJECTION], fboProjection); | ||||||
|  |  | ||||||
|     // Define view matrix for every side of the cubemap |     // Define view matrix for every side of the cubemap | ||||||
|     Matrix fboViews[6] = { |     Matrix fboViews[6] = { | ||||||
| @@ -3592,7 +3592,7 @@ TextureCubemap GenTextureIrradiance(Shader shader, TextureCubemap cubemap, int s | |||||||
|  |  | ||||||
|     for (int i = 0; i < 6; i++) |     for (int i = 0; i < 6; i++) | ||||||
|     { |     { | ||||||
|         SetShaderValueMatrix(shader, shader.locs[LOC_MATRIX_VIEW], fboViews[i]); |         SetShaderValueMatrix(shader, shader.locs[SHADER_LOC_MATRIX_VIEW], fboViews[i]); | ||||||
|         rlFramebufferAttach(fbo, irradiance.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i); |         rlFramebufferAttach(fbo, irradiance.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i); | ||||||
|  |  | ||||||
|         rlEnableFramebuffer(fbo); |         rlEnableFramebuffer(fbo); | ||||||
| @@ -3616,7 +3616,7 @@ TextureCubemap GenTextureIrradiance(Shader shader, TextureCubemap cubemap, int s | |||||||
|     irradiance.width = size; |     irradiance.width = size; | ||||||
|     irradiance.height = size; |     irradiance.height = size; | ||||||
|     irradiance.mipmaps = 1; |     irradiance.mipmaps = 1; | ||||||
|     irradiance.format = UNCOMPRESSED_R32G32B32; |     irradiance.format = PIXELFORMAT_UNCOMPRESSED_R32G32B32; | ||||||
| #endif | #endif | ||||||
|     return irradiance; |     return irradiance; | ||||||
| } | } | ||||||
| @@ -3632,7 +3632,7 @@ TextureCubemap GenTexturePrefilter(Shader shader, TextureCubemap cubemap, int si | |||||||
|     // STEP 1: Setup framebuffer |     // STEP 1: Setup framebuffer | ||||||
|     //------------------------------------------------------------------------------------------ |     //------------------------------------------------------------------------------------------ | ||||||
|     unsigned int rbo = rlLoadTextureDepth(size, size, true); |     unsigned int rbo = rlLoadTextureDepth(size, size, true); | ||||||
|     prefilter.id = rlLoadTextureCubemap(NULL, size, UNCOMPRESSED_R32G32B32); |     prefilter.id = rlLoadTextureCubemap(NULL, size, PIXELFORMAT_UNCOMPRESSED_R32G32B32); | ||||||
|     rlTextureParameters(prefilter.id, RL_TEXTURE_MIN_FILTER, RL_TEXTURE_FILTER_MIP_LINEAR); |     rlTextureParameters(prefilter.id, RL_TEXTURE_MIN_FILTER, RL_TEXTURE_FILTER_MIP_LINEAR); | ||||||
|  |  | ||||||
|     unsigned int fbo = rlLoadFramebuffer(size, size); |     unsigned int fbo = rlLoadFramebuffer(size, size); | ||||||
| @@ -3649,7 +3649,7 @@ TextureCubemap GenTexturePrefilter(Shader shader, TextureCubemap cubemap, int si | |||||||
|  |  | ||||||
|     // Define projection matrix and send it to shader |     // Define projection matrix and send it to shader | ||||||
|     Matrix fboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR); |     Matrix fboProjection = MatrixPerspective(90.0*DEG2RAD, 1.0, RL_CULL_DISTANCE_NEAR, RL_CULL_DISTANCE_FAR); | ||||||
|     SetShaderValueMatrix(shader, shader.locs[LOC_MATRIX_PROJECTION], fboProjection); |     SetShaderValueMatrix(shader, shader.locs[SHADER_LOC_MATRIX_PROJECTION], fboProjection); | ||||||
|  |  | ||||||
|     // Define view matrix for every side of the cubemap |     // Define view matrix for every side of the cubemap | ||||||
|     Matrix fboViews[6] = { |     Matrix fboViews[6] = { | ||||||
| @@ -3688,7 +3688,7 @@ TextureCubemap GenTexturePrefilter(Shader shader, TextureCubemap cubemap, int si | |||||||
|  |  | ||||||
|         for (int i = 0; i < 6; i++) |         for (int i = 0; i < 6; i++) | ||||||
|         { |         { | ||||||
|             SetShaderValueMatrix(shader, shader.locs[LOC_MATRIX_VIEW], fboViews[i]); |             SetShaderValueMatrix(shader, shader.locs[SHADER_LOC_MATRIX_VIEW], fboViews[i]); | ||||||
|             glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, prefilter.id, mip); |             glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, prefilter.id, mip); | ||||||
|             //rlFramebufferAttach(fbo, irradiance.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i);  // TODO: Support mip levels? |             //rlFramebufferAttach(fbo, irradiance.id, RL_ATTACHMENT_COLOR_CHANNEL0, RL_ATTACHMENT_CUBEMAP_POSITIVE_X + i);  // TODO: Support mip levels? | ||||||
|  |  | ||||||
| @@ -3714,7 +3714,7 @@ TextureCubemap GenTexturePrefilter(Shader shader, TextureCubemap cubemap, int si | |||||||
|     prefilter.width = size; |     prefilter.width = size; | ||||||
|     prefilter.height = size; |     prefilter.height = size; | ||||||
|     //prefilter.mipmaps = 1 + (int)floor(log(size)/log(2)); // MAX_MIPMAP_LEVELS |     //prefilter.mipmaps = 1 + (int)floor(log(size)/log(2)); // MAX_MIPMAP_LEVELS | ||||||
|     //prefilter.format = UNCOMPRESSED_R32G32B32; |     //prefilter.format = PIXELFORMAT_UNCOMPRESSED_R32G32B32; | ||||||
| #endif | #endif | ||||||
|     return prefilter; |     return prefilter; | ||||||
| } | } | ||||||
| @@ -3728,7 +3728,7 @@ Texture2D GenTextureBRDF(Shader shader, int size) | |||||||
|     // STEP 1: Setup framebuffer |     // STEP 1: Setup framebuffer | ||||||
|     //------------------------------------------------------------------------------------------ |     //------------------------------------------------------------------------------------------ | ||||||
|     unsigned int rbo = rlLoadTextureDepth(size, size, true); |     unsigned int rbo = rlLoadTextureDepth(size, size, true); | ||||||
|     brdf.id = rlLoadTexture(NULL, size, size, UNCOMPRESSED_R32G32B32, 1); |     brdf.id = rlLoadTexture(NULL, size, size, PIXELFORMAT_UNCOMPRESSED_R32G32B32, 1); | ||||||
|  |  | ||||||
|     unsigned int fbo = rlLoadFramebuffer(size, size); |     unsigned int fbo = rlLoadFramebuffer(size, size); | ||||||
|     rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER); |     rlFramebufferAttach(fbo, rbo, RL_ATTACHMENT_DEPTH, RL_ATTACHMENT_RENDERBUFFER); | ||||||
| @@ -3762,7 +3762,7 @@ Texture2D GenTextureBRDF(Shader shader, int size) | |||||||
|     brdf.width = size; |     brdf.width = size; | ||||||
|     brdf.height = size; |     brdf.height = size; | ||||||
|     brdf.mipmaps = 1; |     brdf.mipmaps = 1; | ||||||
|     brdf.format = UNCOMPRESSED_R32G32B32; |     brdf.format = PIXELFORMAT_UNCOMPRESSED_R32G32B32; | ||||||
| #endif | #endif | ||||||
|     return brdf; |     return brdf; | ||||||
| } | } | ||||||
| @@ -3809,7 +3809,7 @@ void InitVrSimulator(void) | |||||||
|     RLGL.Vr.stereoFboId = rlLoadFramebuffer(RLGL.State.framebufferWidth, RLGL.State.framebufferHeight); |     RLGL.Vr.stereoFboId = rlLoadFramebuffer(RLGL.State.framebufferWidth, RLGL.State.framebufferHeight); | ||||||
|  |  | ||||||
|     // Load color/depth textures to attach to framebuffer |     // Load color/depth textures to attach to framebuffer | ||||||
|     RLGL.Vr.stereoTexId = rlLoadTexture(NULL, RLGL.State.framebufferWidth, RLGL.State.framebufferHeight, UNCOMPRESSED_R8G8B8A8, 1); |     RLGL.Vr.stereoTexId = rlLoadTexture(NULL, RLGL.State.framebufferWidth, RLGL.State.framebufferHeight, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, 1); | ||||||
|     unsigned int depthId = rlLoadTextureDepth(RLGL.State.framebufferWidth, RLGL.State.framebufferHeight, true); |     unsigned int depthId = rlLoadTextureDepth(RLGL.State.framebufferWidth, RLGL.State.framebufferHeight, true); | ||||||
|  |  | ||||||
|     // Attach color texture and depth renderbuffer/texture to FBO |     // Attach color texture and depth renderbuffer/texture to FBO | ||||||
| @@ -3913,15 +3913,15 @@ void SetVrConfiguration(VrDeviceInfo hmd, Shader distortion) | |||||||
|     if (RLGL.Vr.config.distortionShader.id > 0) |     if (RLGL.Vr.config.distortionShader.id > 0) | ||||||
|     { |     { | ||||||
|         // Update distortion shader with lens and distortion-scale parameters |         // Update distortion shader with lens and distortion-scale parameters | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "leftLensCenter"), leftLensCenter, UNIFORM_VEC2); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "leftLensCenter"), leftLensCenter, SHADER_UNIFORM_VEC2); | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "rightLensCenter"), rightLensCenter, UNIFORM_VEC2); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "rightLensCenter"), rightLensCenter, SHADER_UNIFORM_VEC2); | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "leftScreenCenter"), leftScreenCenter, UNIFORM_VEC2); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "leftScreenCenter"), leftScreenCenter, SHADER_UNIFORM_VEC2); | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "rightScreenCenter"), rightScreenCenter, UNIFORM_VEC2); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "rightScreenCenter"), rightScreenCenter, SHADER_UNIFORM_VEC2); | ||||||
|  |  | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "scale"), scale, UNIFORM_VEC2); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "scale"), scale, SHADER_UNIFORM_VEC2); | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "scaleIn"), scaleIn, UNIFORM_VEC2); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "scaleIn"), scaleIn, SHADER_UNIFORM_VEC2); | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "hmdWarpParam"), hmd.lensDistortionValues, UNIFORM_VEC4); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "hmdWarpParam"), hmd.lensDistortionValues, SHADER_UNIFORM_VEC4); | ||||||
|         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "chromaAbParam"), hmd.chromaAbCorrection, UNIFORM_VEC4); |         SetShaderValue(RLGL.Vr.config.distortionShader, GetShaderLocation(RLGL.Vr.config.distortionShader, "chromaAbParam"), hmd.chromaAbCorrection, SHADER_UNIFORM_VEC4); | ||||||
|     } |     } | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| @@ -4217,14 +4217,14 @@ static Shader LoadShaderDefault(void) | |||||||
|         TRACELOG(LOG_INFO, "SHADER: [ID %i] Default shader loaded successfully", shader.id); |         TRACELOG(LOG_INFO, "SHADER: [ID %i] Default shader loaded successfully", shader.id); | ||||||
|  |  | ||||||
|         // Set default shader locations: attributes locations |         // Set default shader locations: attributes locations | ||||||
|         shader.locs[LOC_VERTEX_POSITION] = glGetAttribLocation(shader.id, "vertexPosition"); |         shader.locs[SHADER_LOC_VERTEX_POSITION] = glGetAttribLocation(shader.id, "vertexPosition"); | ||||||
|         shader.locs[LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(shader.id, "vertexTexCoord"); |         shader.locs[SHADER_LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(shader.id, "vertexTexCoord"); | ||||||
|         shader.locs[LOC_VERTEX_COLOR] = glGetAttribLocation(shader.id, "vertexColor"); |         shader.locs[SHADER_LOC_VERTEX_COLOR] = glGetAttribLocation(shader.id, "vertexColor"); | ||||||
|  |  | ||||||
|         // Set default shader locations: uniform locations |         // Set default shader locations: uniform locations | ||||||
|         shader.locs[LOC_MATRIX_MVP]  = glGetUniformLocation(shader.id, "mvp"); |         shader.locs[SHADER_LOC_MATRIX_MVP]  = glGetUniformLocation(shader.id, "mvp"); | ||||||
|         shader.locs[LOC_COLOR_DIFFUSE] = glGetUniformLocation(shader.id, "colDiffuse"); |         shader.locs[SHADER_LOC_COLOR_DIFFUSE] = glGetUniformLocation(shader.id, "colDiffuse"); | ||||||
|         shader.locs[LOC_MAP_DIFFUSE] = glGetUniformLocation(shader.id, "texture0"); |         shader.locs[SHADER_LOC_MAP_DIFFUSE] = glGetUniformLocation(shader.id, "texture0"); | ||||||
|  |  | ||||||
|         // NOTE: We could also use below function but in case DEFAULT_ATTRIB_* points are |         // NOTE: We could also use below function but in case DEFAULT_ATTRIB_* points are | ||||||
|         // changed for external custom shaders, we just use direct bindings above |         // changed for external custom shaders, we just use direct bindings above | ||||||
| @@ -4248,23 +4248,23 @@ static void SetShaderDefaultLocations(Shader *shader) | |||||||
|     //          vertex texcoord2 location   = 5 |     //          vertex texcoord2 location   = 5 | ||||||
|  |  | ||||||
|     // Get handles to GLSL input attibute locations |     // Get handles to GLSL input attibute locations | ||||||
|     shader->locs[LOC_VERTEX_POSITION] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_POSITION); |     shader->locs[SHADER_LOC_VERTEX_POSITION] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_POSITION); | ||||||
|     shader->locs[LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD); |     shader->locs[SHADER_LOC_VERTEX_TEXCOORD01] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD); | ||||||
|     shader->locs[LOC_VERTEX_TEXCOORD02] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2); |     shader->locs[SHADER_LOC_VERTEX_TEXCOORD02] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2); | ||||||
|     shader->locs[LOC_VERTEX_NORMAL] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_NORMAL); |     shader->locs[SHADER_LOC_VERTEX_NORMAL] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_NORMAL); | ||||||
|     shader->locs[LOC_VERTEX_TANGENT] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_TANGENT); |     shader->locs[SHADER_LOC_VERTEX_TANGENT] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_TANGENT); | ||||||
|     shader->locs[LOC_VERTEX_COLOR] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_COLOR); |     shader->locs[SHADER_LOC_VERTEX_COLOR] = glGetAttribLocation(shader->id, DEFAULT_SHADER_ATTRIB_NAME_COLOR); | ||||||
|  |  | ||||||
|     // Get handles to GLSL uniform locations (vertex shader) |     // Get handles to GLSL uniform locations (vertex shader) | ||||||
|     shader->locs[LOC_MATRIX_MVP]  = glGetUniformLocation(shader->id, "mvp"); |     shader->locs[SHADER_LOC_MATRIX_MVP]  = glGetUniformLocation(shader->id, "mvp"); | ||||||
|     shader->locs[LOC_MATRIX_PROJECTION]  = glGetUniformLocation(shader->id, "projection"); |     shader->locs[SHADER_LOC_MATRIX_PROJECTION]  = glGetUniformLocation(shader->id, "projection"); | ||||||
|     shader->locs[LOC_MATRIX_VIEW]  = glGetUniformLocation(shader->id, "view"); |     shader->locs[SHADER_LOC_MATRIX_VIEW]  = glGetUniformLocation(shader->id, "view"); | ||||||
|  |  | ||||||
|     // Get handles to GLSL uniform locations (fragment shader) |     // Get handles to GLSL uniform locations (fragment shader) | ||||||
|     shader->locs[LOC_COLOR_DIFFUSE] = glGetUniformLocation(shader->id, "colDiffuse"); |     shader->locs[SHADER_LOC_COLOR_DIFFUSE] = glGetUniformLocation(shader->id, "colDiffuse"); | ||||||
|     shader->locs[LOC_MAP_DIFFUSE] = glGetUniformLocation(shader->id, "texture0"); |     shader->locs[SHADER_LOC_MAP_DIFFUSE] = glGetUniformLocation(shader->id, "texture0"); | ||||||
|     shader->locs[LOC_MAP_SPECULAR] = glGetUniformLocation(shader->id, "texture1"); |     shader->locs[SHADER_LOC_MAP_SPECULAR] = glGetUniformLocation(shader->id, "texture1"); | ||||||
|     shader->locs[LOC_MAP_NORMAL] = glGetUniformLocation(shader->id, "texture2"); |     shader->locs[SHADER_LOC_MAP_NORMAL] = glGetUniformLocation(shader->id, "texture2"); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Unload default shader | // Unload default shader | ||||||
| @@ -4348,22 +4348,22 @@ static RenderBatch LoadRenderBatch(int numBuffers, int bufferElements) | |||||||
|         glGenBuffers(1, &batch.vertexBuffer[i].vboId[0]); |         glGenBuffers(1, &batch.vertexBuffer[i].vboId[0]); | ||||||
|         glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[0]); |         glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[0]); | ||||||
|         glBufferData(GL_ARRAY_BUFFER, bufferElements*3*4*sizeof(float), batch.vertexBuffer[i].vertices, GL_DYNAMIC_DRAW); |         glBufferData(GL_ARRAY_BUFFER, bufferElements*3*4*sizeof(float), batch.vertexBuffer[i].vertices, GL_DYNAMIC_DRAW); | ||||||
|         glEnableVertexAttribArray(RLGL.State.currentShader.locs[LOC_VERTEX_POSITION]); |         glEnableVertexAttribArray(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_POSITION]); | ||||||
|         glVertexAttribPointer(RLGL.State.currentShader.locs[LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); |         glVertexAttribPointer(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); | ||||||
|  |  | ||||||
|         // Vertex texcoord buffer (shader-location = 1) |         // Vertex texcoord buffer (shader-location = 1) | ||||||
|         glGenBuffers(1, &batch.vertexBuffer[i].vboId[1]); |         glGenBuffers(1, &batch.vertexBuffer[i].vboId[1]); | ||||||
|         glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[1]); |         glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[1]); | ||||||
|         glBufferData(GL_ARRAY_BUFFER, bufferElements*2*4*sizeof(float), batch.vertexBuffer[i].texcoords, GL_DYNAMIC_DRAW); |         glBufferData(GL_ARRAY_BUFFER, bufferElements*2*4*sizeof(float), batch.vertexBuffer[i].texcoords, GL_DYNAMIC_DRAW); | ||||||
|         glEnableVertexAttribArray(RLGL.State.currentShader.locs[LOC_VERTEX_TEXCOORD01]); |         glEnableVertexAttribArray(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_TEXCOORD01]); | ||||||
|         glVertexAttribPointer(RLGL.State.currentShader.locs[LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); |         glVertexAttribPointer(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); | ||||||
|  |  | ||||||
|         // Vertex color buffer (shader-location = 3) |         // Vertex color buffer (shader-location = 3) | ||||||
|         glGenBuffers(1, &batch.vertexBuffer[i].vboId[2]); |         glGenBuffers(1, &batch.vertexBuffer[i].vboId[2]); | ||||||
|         glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[2]); |         glBindBuffer(GL_ARRAY_BUFFER, batch.vertexBuffer[i].vboId[2]); | ||||||
|         glBufferData(GL_ARRAY_BUFFER, bufferElements*4*4*sizeof(unsigned char), batch.vertexBuffer[i].colors, GL_DYNAMIC_DRAW); |         glBufferData(GL_ARRAY_BUFFER, bufferElements*4*4*sizeof(unsigned char), batch.vertexBuffer[i].colors, GL_DYNAMIC_DRAW); | ||||||
|         glEnableVertexAttribArray(RLGL.State.currentShader.locs[LOC_VERTEX_COLOR]); |         glEnableVertexAttribArray(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_COLOR]); | ||||||
|         glVertexAttribPointer(RLGL.State.currentShader.locs[LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); |         glVertexAttribPointer(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); | ||||||
|  |  | ||||||
|         // Fill index buffer |         // Fill index buffer | ||||||
|         glGenBuffers(1, &batch.vertexBuffer[i].vboId[3]); |         glGenBuffers(1, &batch.vertexBuffer[i].vboId[3]); | ||||||
| @@ -4477,32 +4477,32 @@ static void DrawRenderBatch(RenderBatch *batch) | |||||||
|  |  | ||||||
|             // Create modelview-projection matrix and upload to shader |             // Create modelview-projection matrix and upload to shader | ||||||
|             Matrix matMVP = MatrixMultiply(RLGL.State.modelview, RLGL.State.projection); |             Matrix matMVP = MatrixMultiply(RLGL.State.modelview, RLGL.State.projection); | ||||||
|             glUniformMatrix4fv(RLGL.State.currentShader.locs[LOC_MATRIX_MVP], 1, false, MatrixToFloat(matMVP)); |             glUniformMatrix4fv(RLGL.State.currentShader.locs[SHADER_LOC_MATRIX_MVP], 1, false, MatrixToFloat(matMVP)); | ||||||
|  |  | ||||||
|             if (RLGL.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); |             if (RLGL.ExtSupported.vao) glBindVertexArray(batch->vertexBuffer[batch->currentBuffer].vaoId); | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 // Bind vertex attrib: position (shader-location = 0) |                 // Bind vertex attrib: position (shader-location = 0) | ||||||
|                 glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[0]); |                 glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[0]); | ||||||
|                 glVertexAttribPointer(RLGL.State.currentShader.locs[LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); |                 glVertexAttribPointer(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_POSITION], 3, GL_FLOAT, 0, 0, 0); | ||||||
|                 glEnableVertexAttribArray(RLGL.State.currentShader.locs[LOC_VERTEX_POSITION]); |                 glEnableVertexAttribArray(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_POSITION]); | ||||||
|  |  | ||||||
|                 // Bind vertex attrib: texcoord (shader-location = 1) |                 // Bind vertex attrib: texcoord (shader-location = 1) | ||||||
|                 glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[1]); |                 glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[1]); | ||||||
|                 glVertexAttribPointer(RLGL.State.currentShader.locs[LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); |                 glVertexAttribPointer(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_TEXCOORD01], 2, GL_FLOAT, 0, 0, 0); | ||||||
|                 glEnableVertexAttribArray(RLGL.State.currentShader.locs[LOC_VERTEX_TEXCOORD01]); |                 glEnableVertexAttribArray(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_TEXCOORD01]); | ||||||
|  |  | ||||||
|                 // Bind vertex attrib: color (shader-location = 3) |                 // Bind vertex attrib: color (shader-location = 3) | ||||||
|                 glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[2]); |                 glBindBuffer(GL_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[2]); | ||||||
|                 glVertexAttribPointer(RLGL.State.currentShader.locs[LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); |                 glVertexAttribPointer(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_COLOR], 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); | ||||||
|                 glEnableVertexAttribArray(RLGL.State.currentShader.locs[LOC_VERTEX_COLOR]); |                 glEnableVertexAttribArray(RLGL.State.currentShader.locs[SHADER_LOC_VERTEX_COLOR]); | ||||||
|  |  | ||||||
|                 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[3]); |                 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, batch->vertexBuffer[batch->currentBuffer].vboId[3]); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             // Setup some default shader values |             // Setup some default shader values | ||||||
|             glUniform4f(RLGL.State.currentShader.locs[LOC_COLOR_DIFFUSE], 1.0f, 1.0f, 1.0f, 1.0f); |             glUniform4f(RLGL.State.currentShader.locs[SHADER_LOC_COLOR_DIFFUSE], 1.0f, 1.0f, 1.0f, 1.0f); | ||||||
|             glUniform1i(RLGL.State.currentShader.locs[LOC_MAP_DIFFUSE], 0);  // Active default sampler2D: texture0 |             glUniform1i(RLGL.State.currentShader.locs[SHADER_LOC_MAP_DIFFUSE], 0);  // Active default sampler2D: texture0 | ||||||
|  |  | ||||||
|             // Activate additional sampler textures |             // Activate additional sampler textures | ||||||
|             // Those additional textures will be common for all draw calls of the batch |             // Those additional textures will be common for all draw calls of the batch | ||||||
| @@ -4960,27 +4960,27 @@ int GetPixelDataSize(int width, int height, int format) | |||||||
|  |  | ||||||
|     switch (format) |     switch (format) | ||||||
|     { |     { | ||||||
|         case UNCOMPRESSED_GRAYSCALE: bpp = 8; break; |         case PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break; | ||||||
|         case UNCOMPRESSED_GRAY_ALPHA: |         case PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: | ||||||
|         case UNCOMPRESSED_R5G6B5: |         case PIXELFORMAT_UNCOMPRESSED_R5G6B5: | ||||||
|         case UNCOMPRESSED_R5G5B5A1: |         case PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: | ||||||
|         case UNCOMPRESSED_R4G4B4A4: bpp = 16; break; |         case PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break; | ||||||
|         case UNCOMPRESSED_R8G8B8A8: bpp = 32; break; |         case PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break; | ||||||
|         case UNCOMPRESSED_R8G8B8: bpp = 24; break; |         case PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break; | ||||||
|         case UNCOMPRESSED_R32: bpp = 32; break; |         case PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break; | ||||||
|         case UNCOMPRESSED_R32G32B32: bpp = 32*3; break; |         case PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break; | ||||||
|         case UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; |         case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break; | ||||||
|         case COMPRESSED_DXT1_RGB: |         case PIXELFORMAT_COMPRESSED_DXT1_RGB: | ||||||
|         case COMPRESSED_DXT1_RGBA: |         case PIXELFORMAT_COMPRESSED_DXT1_RGBA: | ||||||
|         case COMPRESSED_ETC1_RGB: |         case PIXELFORMAT_COMPRESSED_ETC1_RGB: | ||||||
|         case COMPRESSED_ETC2_RGB: |         case PIXELFORMAT_COMPRESSED_ETC2_RGB: | ||||||
|         case COMPRESSED_PVRT_RGB: |         case PIXELFORMAT_COMPRESSED_PVRT_RGB: | ||||||
|         case COMPRESSED_PVRT_RGBA: bpp = 4; break; |         case PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break; | ||||||
|         case COMPRESSED_DXT3_RGBA: |         case PIXELFORMAT_COMPRESSED_DXT3_RGBA: | ||||||
|         case COMPRESSED_DXT5_RGBA: |         case PIXELFORMAT_COMPRESSED_DXT5_RGBA: | ||||||
|         case COMPRESSED_ETC2_EAC_RGBA: |         case PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: | ||||||
|         case COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; |         case PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break; | ||||||
|         case COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; |         case PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break; | ||||||
|         default: break; |         default: break; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -4990,8 +4990,8 @@ int GetPixelDataSize(int width, int height, int format) | |||||||
|     // if texture is smaller, minimum dataSize is 8 or 16 |     // if texture is smaller, minimum dataSize is 8 or 16 | ||||||
|     if ((width < 4) && (height < 4)) |     if ((width < 4) && (height < 4)) | ||||||
|     { |     { | ||||||
|         if ((format >= COMPRESSED_DXT1_RGB) && (format < COMPRESSED_DXT3_RGBA)) dataSize = 8; |         if ((format >= PIXELFORMAT_COMPRESSED_DXT1_RGB) && (format < PIXELFORMAT_COMPRESSED_DXT3_RGBA)) dataSize = 8; | ||||||
|         else if ((format >= COMPRESSED_DXT3_RGBA) && (format < COMPRESSED_ASTC_8x8_RGBA)) dataSize = 16; |         else if ((format >= PIXELFORMAT_COMPRESSED_DXT3_RGBA) && (format < PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)) dataSize = 16; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return dataSize; |     return dataSize; | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								src/text.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								src/text.c
									
									
									
									
									
								
							| @@ -196,7 +196,7 @@ extern void LoadFontDefault(void) | |||||||
|         .data = calloc(128*128, 2),  // 2 bytes per pixel (gray + alpha) |         .data = calloc(128*128, 2),  // 2 bytes per pixel (gray + alpha) | ||||||
|         .width = 128, |         .width = 128, | ||||||
|         .height = 128, |         .height = 128, | ||||||
|         .format = UNCOMPRESSED_GRAY_ALPHA, |         .format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, | ||||||
|         .mipmaps = 1 |         .mipmaps = 1 | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
| @@ -440,7 +440,7 @@ Font LoadFontFromImage(Image image, Color key, int firstChar) | |||||||
|         .data = pixels, |         .data = pixels, | ||||||
|         .width = image.width, |         .width = image.width, | ||||||
|         .height = image.height, |         .height = image.height, | ||||||
|         .format = UNCOMPRESSED_R8G8B8A8, |         .format = PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, | ||||||
|         .mipmaps = 1 |         .mipmaps = 1 | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
| @@ -598,7 +598,7 @@ CharInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize | |||||||
|                 chars[i].image.width = chw; |                 chars[i].image.width = chw; | ||||||
|                 chars[i].image.height = chh; |                 chars[i].image.height = chh; | ||||||
|                 chars[i].image.mipmaps = 1; |                 chars[i].image.mipmaps = 1; | ||||||
|                 chars[i].image.format = UNCOMPRESSED_GRAYSCALE; |                 chars[i].image.format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; | ||||||
|  |  | ||||||
|                 chars[i].offsetY += (int)((float)ascent*scaleFactor); |                 chars[i].offsetY += (int)((float)ascent*scaleFactor); | ||||||
|  |  | ||||||
| @@ -609,7 +609,7 @@ CharInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSize | |||||||
|                         .data = calloc(chars[i].advanceX*fontSize, 2), |                         .data = calloc(chars[i].advanceX*fontSize, 2), | ||||||
|                         .width = chars[i].advanceX, |                         .width = chars[i].advanceX, | ||||||
|                         .height = fontSize, |                         .height = fontSize, | ||||||
|                         .format = UNCOMPRESSED_GRAYSCALE, |                         .format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE, | ||||||
|                         .mipmaps = 1 |                         .mipmaps = 1 | ||||||
|                     }; |                     }; | ||||||
|  |  | ||||||
| @@ -679,7 +679,7 @@ Image GenImageFontAtlas(const CharInfo *chars, Rectangle **charRecs, int charsCo | |||||||
|     atlas.width = imageSize;   // Atlas bitmap width |     atlas.width = imageSize;   // Atlas bitmap width | ||||||
|     atlas.height = imageSize;  // Atlas bitmap height |     atlas.height = imageSize;  // Atlas bitmap height | ||||||
|     atlas.data = (unsigned char *)RL_CALLOC(1, atlas.width*atlas.height);      // Create a bitmap to store characters (8 bpp) |     atlas.data = (unsigned char *)RL_CALLOC(1, atlas.width*atlas.height);      // Create a bitmap to store characters (8 bpp) | ||||||
|     atlas.format = UNCOMPRESSED_GRAYSCALE; |     atlas.format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE; | ||||||
|     atlas.mipmaps = 1; |     atlas.mipmaps = 1; | ||||||
|  |  | ||||||
|     // DEBUG: We can see padding in the generated image setting a gray background... |     // DEBUG: We can see padding in the generated image setting a gray background... | ||||||
| @@ -783,7 +783,7 @@ Image GenImageFontAtlas(const CharInfo *chars, Rectangle **charRecs, int charsCo | |||||||
|  |  | ||||||
|     RL_FREE(atlas.data); |     RL_FREE(atlas.data); | ||||||
|     atlas.data = dataGrayAlpha; |     atlas.data = dataGrayAlpha; | ||||||
|     atlas.format = UNCOMPRESSED_GRAY_ALPHA; |     atlas.format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA; | ||||||
|  |  | ||||||
|     *charRecs = recs; |     *charRecs = recs; | ||||||
|  |  | ||||||
| @@ -1794,14 +1794,14 @@ static Font LoadBMFont(const char *fileName) | |||||||
|  |  | ||||||
|     Image imFont = LoadImage(imPath); |     Image imFont = LoadImage(imPath); | ||||||
|  |  | ||||||
|     if (imFont.format == UNCOMPRESSED_GRAYSCALE) |     if (imFont.format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) | ||||||
|     { |     { | ||||||
|         // Convert image to GRAYSCALE + ALPHA, using the mask as the alpha channel |         // Convert image to GRAYSCALE + ALPHA, using the mask as the alpha channel | ||||||
|         Image imFontAlpha = { |         Image imFontAlpha = { | ||||||
|             .data = calloc(imFont.width*imFont.height, 2), |             .data = calloc(imFont.width*imFont.height, 2), | ||||||
|             .width = imFont.width, |             .width = imFont.width, | ||||||
|             .height = imFont.height, |             .height = imFont.height, | ||||||
|             .format = UNCOMPRESSED_GRAY_ALPHA, |             .format = PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA, | ||||||
|             .mipmaps = 1 |             .mipmaps = 1 | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										378
									
								
								src/textures.c
									
									
									
									
									
								
							
							
						
						
									
										378
									
								
								src/textures.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user
	 Ray
					Ray