|
@@ -1281,12 +1281,12 @@ Material LoadMaterialDefault(void)
|
|
Material material = { 0 };
|
|
Material material = { 0 };
|
|
|
|
|
|
material.shader = GetShaderDefault();
|
|
material.shader = GetShaderDefault();
|
|
- material.maps[TEXMAP_DIFFUSE].tex = GetTextureDefault(); // White texture (1x1 pixel)
|
|
|
|
- //material.maps[TEXMAP_NORMAL].tex; // NOTE: By default, not set
|
|
|
|
- //material.maps[TEXMAP_SPECULAR].tex; // NOTE: By default, not set
|
|
|
|
|
|
+ material.maps[MAP_DIFFUSE].texture = GetTextureDefault(); // White texture (1x1 pixel)
|
|
|
|
+ //material.maps[MAP_NORMAL].tex; // NOTE: By default, not set
|
|
|
|
+ //material.maps[MAP_SPECULAR].tex; // NOTE: By default, not set
|
|
|
|
|
|
- material.maps[TEXMAP_DIFFUSE].color = WHITE; // Diffuse color
|
|
|
|
- material.maps[TEXMAP_SPECULAR].color = WHITE; // Specular color
|
|
|
|
|
|
+ material.maps[MAP_DIFFUSE].color = WHITE; // Diffuse color
|
|
|
|
+ material.maps[MAP_SPECULAR].color = WHITE; // Specular color
|
|
|
|
|
|
return material;
|
|
return material;
|
|
}
|
|
}
|
|
@@ -1294,7 +1294,7 @@ Material LoadMaterialDefault(void)
|
|
// Load PBR material (Supports: ALBEDO, NORMAL, METALNESS, ROUGHNESS, AO, EMMISIVE, HEIGHT maps)
|
|
// Load PBR material (Supports: ALBEDO, NORMAL, METALNESS, ROUGHNESS, AO, EMMISIVE, HEIGHT maps)
|
|
Material LoadMaterialPBR(Texture2D hdr, Color albedo, float metalness, float roughness)
|
|
Material LoadMaterialPBR(Texture2D hdr, Color albedo, float metalness, float roughness)
|
|
{
|
|
{
|
|
- Material mat = { 0 };
|
|
|
|
|
|
+ Material mat = { 0 }; // NOTE: All maps textures are set to { 0 }
|
|
|
|
|
|
#define PATH_PBR_VS "resources/shaders/pbr.vs" // Path to physically based rendering vertex shader
|
|
#define PATH_PBR_VS "resources/shaders/pbr.vs" // Path to physically based rendering vertex shader
|
|
#define PATH_PBR_FS "resources/shaders/pbr.fs" // Path to physically based rendering fragment shader
|
|
#define PATH_PBR_FS "resources/shaders/pbr.fs" // Path to physically based rendering fragment shader
|
|
@@ -1303,16 +1303,16 @@ Material LoadMaterialPBR(Texture2D hdr, Color albedo, float metalness, float rou
|
|
|
|
|
|
// 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_TEXMAP_ALBEDO] = GetShaderLocation(mat.shader, "albedo.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_METALNESS] = GetShaderLocation(mat.shader, "metalness.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_NORMAL] = GetShaderLocation(mat.shader, "normals.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_ROUGHNESS] = GetShaderLocation(mat.shader, "roughness.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_OCCUSION] = GetShaderLocation(mat.shader, "occlusion.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_EMISSION] = GetShaderLocation(mat.shader, "emission.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_HEIGHT] = GetShaderLocation(mat.shader, "height.sampler");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_IRRADIANCE] = GetShaderLocation(mat.shader, "irradianceMap");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_PREFILTER] = GetShaderLocation(mat.shader, "prefilterMap");
|
|
|
|
- mat.shader.locs[LOC_TEXMAP_BRDF] = GetShaderLocation(mat.shader, "brdfLUT");
|
|
|
|
|
|
+ mat.shader.locs[LOC_MAP_ALBEDO] = GetShaderLocation(mat.shader, "albedo.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_METALNESS] = GetShaderLocation(mat.shader, "metalness.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_NORMAL] = GetShaderLocation(mat.shader, "normals.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_ROUGHNESS] = GetShaderLocation(mat.shader, "roughness.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_OCCUSION] = GetShaderLocation(mat.shader, "occlusion.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_EMISSION] = GetShaderLocation(mat.shader, "emission.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_HEIGHT] = GetShaderLocation(mat.shader, "height.sampler");
|
|
|
|
+ mat.shader.locs[LOC_MAP_IRRADIANCE] = GetShaderLocation(mat.shader, "irradianceMap");
|
|
|
|
+ mat.shader.locs[LOC_MAP_PREFILTER] = GetShaderLocation(mat.shader, "prefilterMap");
|
|
|
|
+ mat.shader.locs[LOC_MAP_BRDF] = GetShaderLocation(mat.shader, "brdfLUT");
|
|
|
|
|
|
// Set view matrix location
|
|
// Set view matrix location
|
|
mat.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "mMatrix");
|
|
mat.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "mMatrix");
|
|
@@ -1320,30 +1320,25 @@ Material LoadMaterialPBR(Texture2D hdr, Color albedo, float metalness, float rou
|
|
mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos");
|
|
mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos");
|
|
|
|
|
|
// Set up material properties color
|
|
// Set up material properties color
|
|
- mat.maps[TEXMAP_ALBEDO].color = albedo;
|
|
|
|
- mat.maps[TEXMAP_NORMAL].color = (Color){ 128, 128, 255, 255 };
|
|
|
|
- mat.maps[TEXMAP_METALNESS].value = metalness;
|
|
|
|
- mat.maps[TEXMAP_ROUGHNESS].value = roughness;
|
|
|
|
- mat.maps[TEXMAP_OCCLUSION].value = 1.0f;
|
|
|
|
- mat.maps[TEXMAP_EMISSION].value = 0.0f;
|
|
|
|
- mat.maps[TEXMAP_HEIGHT].value = 0.0f;
|
|
|
|
|
|
+ mat.maps[MAP_ALBEDO].color = albedo;
|
|
|
|
+ mat.maps[MAP_NORMAL].color = (Color){ 128, 128, 255, 255 };
|
|
|
|
+ mat.maps[MAP_METALNESS].value = metalness;
|
|
|
|
+ mat.maps[MAP_ROUGHNESS].value = roughness;
|
|
|
|
+ mat.maps[MAP_OCCLUSION].value = 1.0f;
|
|
|
|
+ mat.maps[MAP_EMISSION].value = 0.0f;
|
|
|
|
+ mat.maps[MAP_HEIGHT].value = 0.0f;
|
|
|
|
|
|
- #define CUBEMAP_SIZE 1024 // Cubemap texture size
|
|
|
|
|
|
+ #define CUBEMAP_SIZE 512 // Cubemap texture size
|
|
#define IRRADIANCE_SIZE 32 // Irradiance map from cubemap texture size
|
|
#define IRRADIANCE_SIZE 32 // Irradiance map from cubemap texture size
|
|
#define PREFILTERED_SIZE 256 // Prefiltered HDR environment map texture size
|
|
#define PREFILTERED_SIZE 256 // Prefiltered HDR environment map texture size
|
|
#define BRDF_SIZE 512 // BRDF LUT texture map size
|
|
#define BRDF_SIZE 512 // BRDF LUT texture map size
|
|
|
|
|
|
// Set up environment materials cubemap
|
|
// Set up environment materials cubemap
|
|
- Texture2D cubemap = rlGenMapCubemap(hdr, CUBEMAP_SIZE);
|
|
|
|
- mat.maps[TEXMAP_IRRADIANCE].tex = rlGenMapIrradiance(cubemap, IRRADIANCE_SIZE);
|
|
|
|
- mat.maps[TEXMAP_PREFILTER].tex = rlGenMapPrefilter(cubemap, PREFILTERED_SIZE);
|
|
|
|
- mat.maps[TEXMAP_BRDF].tex = rlGenMapBRDF(cubemap, BRDF_SIZE);
|
|
|
|
|
|
+ Texture2D cubemap = GenTextureCubemap(hdr, CUBEMAP_SIZE);
|
|
|
|
+ mat.maps[MAP_IRRADIANCE].texture = GenTextureIrradiance(cubemap, IRRADIANCE_SIZE);
|
|
|
|
+ mat.maps[MAP_PREFILTER].texture = GenTexturePrefilter(cubemap, PREFILTERED_SIZE);
|
|
|
|
+ mat.maps[MAP_BRDF].texture = GenTextureBRDF(cubemap, BRDF_SIZE);
|
|
UnloadTexture(cubemap);
|
|
UnloadTexture(cubemap);
|
|
-
|
|
|
|
- // NOTE: All maps textures are set to { 0 }
|
|
|
|
-
|
|
|
|
- // Reset viewport dimensions to default
|
|
|
|
- rlViewport(0, 0, GetScreenWidth(), GetScreenHeight());
|
|
|
|
|
|
|
|
return mat;
|
|
return mat;
|
|
}
|
|
}
|
|
@@ -1355,53 +1350,53 @@ void UnloadMaterial(Material material)
|
|
UnloadShader(material.shader);
|
|
UnloadShader(material.shader);
|
|
|
|
|
|
// Unload loaded texture maps
|
|
// Unload loaded texture maps
|
|
- for (int i = 0; i < MAX_MATERIAL_TEXTURE_MAPS; i++)
|
|
|
|
|
|
+ for (int i = 0; i < MAX_MATERIAL_MAPS; i++)
|
|
{
|
|
{
|
|
// NOTE: We already check for (tex.id > 0) inside function
|
|
// NOTE: We already check for (tex.id > 0) inside function
|
|
- rlDeleteTextures(material.maps[i].tex.id);
|
|
|
|
|
|
+ rlDeleteTextures(material.maps[i].texture.id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Set material texture
|
|
// Set material texture
|
|
void SetMaterialTexture(Material *mat, int texmapType, Texture2D texture)
|
|
void SetMaterialTexture(Material *mat, int texmapType, Texture2D texture)
|
|
{
|
|
{
|
|
- mat->maps[texmapType].tex = texture;
|
|
|
|
|
|
+ mat->maps[texmapType].texture = texture;
|
|
|
|
|
|
// Update MaterialProperty use sampler state to use texture fetch instead of color attribute
|
|
// Update MaterialProperty use sampler state to use texture fetch instead of color attribute
|
|
int location = -1;
|
|
int location = -1;
|
|
switch (texmapType)
|
|
switch (texmapType)
|
|
{
|
|
{
|
|
- case TEXMAP_ALBEDO:
|
|
|
|
|
|
+ case MAP_ALBEDO:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "albedo.useSampler");
|
|
location = GetShaderLocation(mat->shader, "albedo.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_NORMAL:
|
|
|
|
|
|
+ case MAP_NORMAL:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "normals.useSampler");
|
|
location = GetShaderLocation(mat->shader, "normals.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_METALNESS:
|
|
|
|
|
|
+ case MAP_METALNESS:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "metalness.useSampler");
|
|
location = GetShaderLocation(mat->shader, "metalness.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_ROUGHNESS:
|
|
|
|
|
|
+ case MAP_ROUGHNESS:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "roughness.useSampler");
|
|
location = GetShaderLocation(mat->shader, "roughness.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_OCCLUSION:
|
|
|
|
|
|
+ case MAP_OCCLUSION:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "occlusion.useSampler");
|
|
location = GetShaderLocation(mat->shader, "occlusion.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_EMISSION:
|
|
|
|
|
|
+ case MAP_EMISSION:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "emission.useSampler");
|
|
location = GetShaderLocation(mat->shader, "emission.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_HEIGHT:
|
|
|
|
|
|
+ case MAP_HEIGHT:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "height.useSampler");
|
|
location = GetShaderLocation(mat->shader, "height.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 1 }, 1);
|
|
@@ -1412,44 +1407,44 @@ void SetMaterialTexture(Material *mat, int texmapType, Texture2D texture)
|
|
// Unset texture from material and unload it from GPU
|
|
// Unset texture from material and unload it from GPU
|
|
void UnsetMaterialTexture(Material *mat, int texmapType)
|
|
void UnsetMaterialTexture(Material *mat, int texmapType)
|
|
{
|
|
{
|
|
- UnloadTexture(mat->maps[texmapType].tex);
|
|
|
|
- mat->maps[texmapType].tex = (Texture2D){ 0 };
|
|
|
|
|
|
+ UnloadTexture(mat->maps[texmapType].texture);
|
|
|
|
+ mat->maps[texmapType].texture = (Texture2D){ 0 };
|
|
|
|
|
|
// Update MaterialProperty use sampler state to use texture fetch instead of color attribute
|
|
// Update MaterialProperty use sampler state to use texture fetch instead of color attribute
|
|
int location = -1;
|
|
int location = -1;
|
|
switch (texmapType)
|
|
switch (texmapType)
|
|
{
|
|
{
|
|
- case TEXMAP_ALBEDO:
|
|
|
|
|
|
+ case MAP_ALBEDO:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "albedo.useSampler");
|
|
location = GetShaderLocation(mat->shader, "albedo.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_NORMAL:
|
|
|
|
|
|
+ case MAP_NORMAL:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "normals.useSampler");
|
|
location = GetShaderLocation(mat->shader, "normals.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_METALNESS:
|
|
|
|
|
|
+ case MAP_METALNESS:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "metalness.useSampler");
|
|
location = GetShaderLocation(mat->shader, "metalness.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_ROUGHNESS:
|
|
|
|
|
|
+ case MAP_ROUGHNESS:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "roughness.useSampler");
|
|
location = GetShaderLocation(mat->shader, "roughness.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_OCCLUSION:
|
|
|
|
|
|
+ case MAP_OCCLUSION:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "occlusion.useSampler");
|
|
location = GetShaderLocation(mat->shader, "occlusion.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_EMISSION:
|
|
|
|
|
|
+ case MAP_EMISSION:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "emission.useSampler");
|
|
location = GetShaderLocation(mat->shader, "emission.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
} break;
|
|
} break;
|
|
- case TEXMAP_HEIGHT:
|
|
|
|
|
|
+ case MAP_HEIGHT:
|
|
{
|
|
{
|
|
location = GetShaderLocation(mat->shader, "height.useSampler");
|
|
location = GetShaderLocation(mat->shader, "height.useSampler");
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
SetShaderValuei(mat->shader, location, (int [1]){ 0 }, 1);
|
|
@@ -1481,7 +1476,7 @@ void DrawModelEx(Model model, Vector3 position, Vector3 rotationAxis, float rota
|
|
//Matrix matModel = MatrixMultiply(model.transform, matTransform); // Transform to world-space coordinates
|
|
//Matrix matModel = MatrixMultiply(model.transform, matTransform); // Transform to world-space coordinates
|
|
|
|
|
|
model.transform = MatrixMultiply(model.transform, matTransform);
|
|
model.transform = MatrixMultiply(model.transform, matTransform);
|
|
- model.material.maps[TEXMAP_DIFFUSE].color = tint; // TODO: Multiply tint color by diffuse color?
|
|
|
|
|
|
+ model.material.maps[MAP_DIFFUSE].color = tint; // TODO: Multiply tint color by diffuse color?
|
|
|
|
|
|
rlDrawMesh(model.mesh, model.material, model.transform);
|
|
rlDrawMesh(model.mesh, model.material, model.transform);
|
|
}
|
|
}
|
|
@@ -2244,16 +2239,16 @@ static Material LoadMTL(const char *fileName)
|
|
case 'd': // Kd float float float Diffuse color (RGB)
|
|
case 'd': // Kd float float float Diffuse color (RGB)
|
|
{
|
|
{
|
|
sscanf(buffer, "Kd %f %f %f", &color.x, &color.y, &color.z);
|
|
sscanf(buffer, "Kd %f %f %f", &color.x, &color.y, &color.z);
|
|
- material.maps[TEXMAP_DIFFUSE].color.r = (unsigned char)(color.x*255);
|
|
|
|
- material.maps[TEXMAP_DIFFUSE].color.g = (unsigned char)(color.y*255);
|
|
|
|
- material.maps[TEXMAP_DIFFUSE].color.b = (unsigned char)(color.z*255);
|
|
|
|
|
|
+ material.maps[MAP_DIFFUSE].color.r = (unsigned char)(color.x*255);
|
|
|
|
+ material.maps[MAP_DIFFUSE].color.g = (unsigned char)(color.y*255);
|
|
|
|
+ material.maps[MAP_DIFFUSE].color.b = (unsigned char)(color.z*255);
|
|
} break;
|
|
} break;
|
|
case 's': // Ks float float float Specular color (RGB)
|
|
case 's': // Ks float float float Specular color (RGB)
|
|
{
|
|
{
|
|
sscanf(buffer, "Ks %f %f %f", &color.x, &color.y, &color.z);
|
|
sscanf(buffer, "Ks %f %f %f", &color.x, &color.y, &color.z);
|
|
- material.maps[TEXMAP_SPECULAR].color.r = (unsigned char)(color.x*255);
|
|
|
|
- material.maps[TEXMAP_SPECULAR].color.g = (unsigned char)(color.y*255);
|
|
|
|
- material.maps[TEXMAP_SPECULAR].color.b = (unsigned char)(color.z*255);
|
|
|
|
|
|
+ material.maps[MAP_SPECULAR].color.r = (unsigned char)(color.x*255);
|
|
|
|
+ material.maps[MAP_SPECULAR].color.g = (unsigned char)(color.y*255);
|
|
|
|
+ material.maps[MAP_SPECULAR].color.b = (unsigned char)(color.z*255);
|
|
} break;
|
|
} break;
|
|
case 'e': // Ke float float float Emmisive color (RGB)
|
|
case 'e': // Ke float float float Emmisive color (RGB)
|
|
{
|
|
{
|
|
@@ -2285,12 +2280,12 @@ static Material LoadMTL(const char *fileName)
|
|
if (buffer[5] == 'd') // map_Kd string Diffuse color texture map.
|
|
if (buffer[5] == 'd') // map_Kd string Diffuse color texture map.
|
|
{
|
|
{
|
|
result = sscanf(buffer, "map_Kd %s", mapFileName);
|
|
result = sscanf(buffer, "map_Kd %s", mapFileName);
|
|
- if (result != EOF) material.maps[TEXMAP_DIFFUSE].tex = LoadTexture(mapFileName);
|
|
|
|
|
|
+ if (result != EOF) material.maps[MAP_DIFFUSE].texture = LoadTexture(mapFileName);
|
|
}
|
|
}
|
|
else if (buffer[5] == 's') // map_Ks string Specular color texture map.
|
|
else if (buffer[5] == 's') // map_Ks string Specular color texture map.
|
|
{
|
|
{
|
|
result = sscanf(buffer, "map_Ks %s", mapFileName);
|
|
result = sscanf(buffer, "map_Ks %s", mapFileName);
|
|
- if (result != EOF) material.maps[TEXMAP_SPECULAR].tex = LoadTexture(mapFileName);
|
|
|
|
|
|
+ if (result != EOF) material.maps[MAP_SPECULAR].texture = LoadTexture(mapFileName);
|
|
}
|
|
}
|
|
else if (buffer[5] == 'a') // map_Ka string Ambient color texture map.
|
|
else if (buffer[5] == 'a') // map_Ka string Ambient color texture map.
|
|
{
|
|
{
|
|
@@ -2300,12 +2295,12 @@ static Material LoadMTL(const char *fileName)
|
|
case 'B': // map_Bump string Bump texture map.
|
|
case 'B': // map_Bump string Bump texture map.
|
|
{
|
|
{
|
|
result = sscanf(buffer, "map_Bump %s", mapFileName);
|
|
result = sscanf(buffer, "map_Bump %s", mapFileName);
|
|
- if (result != EOF) material.maps[TEXMAP_NORMAL].tex = LoadTexture(mapFileName);
|
|
|
|
|
|
+ if (result != EOF) material.maps[MAP_NORMAL].texture = LoadTexture(mapFileName);
|
|
} break;
|
|
} break;
|
|
case 'b': // map_bump string Bump texture map.
|
|
case 'b': // map_bump string Bump texture map.
|
|
{
|
|
{
|
|
result = sscanf(buffer, "map_bump %s", mapFileName);
|
|
result = sscanf(buffer, "map_bump %s", mapFileName);
|
|
- if (result != EOF) material.maps[TEXMAP_NORMAL].tex = LoadTexture(mapFileName);
|
|
|
|
|
|
+ if (result != EOF) material.maps[MAP_NORMAL].texture = LoadTexture(mapFileName);
|
|
} break;
|
|
} break;
|
|
case 'd': // map_d string Opacity texture map.
|
|
case 'd': // map_d string Opacity texture map.
|
|
{
|
|
{
|
|
@@ -2320,7 +2315,7 @@ static Material LoadMTL(const char *fileName)
|
|
{
|
|
{
|
|
float alpha = 1.0f;
|
|
float alpha = 1.0f;
|
|
sscanf(buffer, "d %f", &alpha);
|
|
sscanf(buffer, "d %f", &alpha);
|
|
- material.maps[TEXMAP_DIFFUSE].color.a = (unsigned char)(alpha*255);
|
|
|
|
|
|
+ material.maps[MAP_DIFFUSE].color.a = (unsigned char)(alpha*255);
|
|
}
|
|
}
|
|
else if (buffer[1] == 'i') // disp string Displacement map
|
|
else if (buffer[1] == 'i') // disp string Displacement map
|
|
{
|
|
{
|
|
@@ -2330,13 +2325,13 @@ static Material LoadMTL(const char *fileName)
|
|
case 'b': // bump string Bump texture map
|
|
case 'b': // bump string Bump texture map
|
|
{
|
|
{
|
|
result = sscanf(buffer, "bump %s", mapFileName);
|
|
result = sscanf(buffer, "bump %s", mapFileName);
|
|
- if (result != EOF) material.maps[TEXMAP_NORMAL].tex = LoadTexture(mapFileName);
|
|
|
|
|
|
+ if (result != EOF) material.maps[MAP_NORMAL].texture = LoadTexture(mapFileName);
|
|
} break;
|
|
} break;
|
|
case 'T': // Tr float Transparency Tr (alpha). Tr is inverse of d
|
|
case 'T': // Tr float Transparency Tr (alpha). Tr is inverse of d
|
|
{
|
|
{
|
|
float ialpha = 0.0f;
|
|
float ialpha = 0.0f;
|
|
sscanf(buffer, "Tr %f", &ialpha);
|
|
sscanf(buffer, "Tr %f", &ialpha);
|
|
- material.maps[TEXMAP_DIFFUSE].color.a = (unsigned char)((1.0f - ialpha)*255);
|
|
|
|
|
|
+ material.maps[MAP_DIFFUSE].color.a = (unsigned char)((1.0f - ialpha)*255);
|
|
|
|
|
|
} break;
|
|
} break;
|
|
case 'r': // refl string Reflection texture map
|
|
case 'r': // refl string Reflection texture map
|