summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2017-07-20 14:27:17 +0200
committerraysan5 <[email protected]>2017-07-20 14:27:17 +0200
commit4c06725461227d90feb169b30208e5bc3cec9c4d (patch)
tree9d29f29f3d927b4fbd46c0bbce9107e75d9b4d1f
parent52cd5c63243df8be4a13d3500d2701d368c731c5 (diff)
downloadraylib-4c06725461227d90feb169b30208e5bc3cec9c4d.tar.gz
raylib-4c06725461227d90feb169b30208e5bc3cec9c4d.zip
Removed useless functions
SetMaterialTexture() and UnsetMaterialTexture()... too shader dependant...
-rw-r--r--examples/models/models_material_pbr.c32
-rw-r--r--src/models.c100
2 files changed, 21 insertions, 111 deletions
diff --git a/examples/models/models_material_pbr.c b/examples/models/models_material_pbr.c
index 49a905a8..f443e245 100644
--- a/examples/models/models_material_pbr.c
+++ b/examples/models/models_material_pbr.c
@@ -111,8 +111,8 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
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_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");
@@ -122,19 +122,18 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view");
mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos");
- // Set PBR standard maps
- SetMaterialTexture(&mat, MAP_ALBEDO, LoadTexture("resources/pbr/trooper_albedo.png"));
- SetMaterialTexture(&mat, MAP_NORMAL, LoadTexture("resources/pbr/trooper_normals.png"));
- SetMaterialTexture(&mat, MAP_METALNESS, LoadTexture("resources/pbr/trooper_metalness.png"));
- SetMaterialTexture(&mat, MAP_ROUGHNESS, LoadTexture("resources/pbr/trooper_roughness.png"));
- SetMaterialTexture(&mat, MAP_OCCLUSION, LoadTexture("resources/pbr/trooper_ao.png"));
+ // Set PBR standard maps
+ mat.maps[MAP_ALBEDO].texture = LoadTexture("resources/pbr/trooper_albedo.png");
+ mat.maps[MAP_NORMAL].texture = LoadTexture("resources/pbr/trooper_normals.png");
+ mat.maps[MAP_METALNESS].texture = LoadTexture("resources/pbr/trooper_metalness.png");
+ mat.maps[MAP_ROUGHNESS].texture = LoadTexture("resources/pbr/trooper_roughness.png");
+ mat.maps[MAP_OCCLUSION].texture = LoadTexture("resources/pbr/trooper_ao.png");
// Set environment maps
#define PATH_CUBEMAP_VS "resources/shaders/cubemap.vs" // Path to equirectangular to cubemap vertex shader
#define PATH_CUBEMAP_FS "resources/shaders/cubemap.fs" // Path to equirectangular to cubemap fragment shader
#define PATH_SKYBOX_VS "resources/shaders/skybox.vs" // Path to skybox vertex shader
#define PATH_IRRADIANCE_FS "resources/shaders/irradiance.fs" // Path to irradiance (GI) calculation fragment shader
- #define PATH_SKYBOX_VS "resources/shaders/skybox.vs" // Path to skybox vertex shader
#define PATH_PREFILTER_FS "resources/shaders/prefilter.fs" // Path to reflection prefilter calculation fragment shader
#define PATH_BRDF_VS "resources/shaders/brdf.vs" // Path to bidirectional reflectance distribution function vertex shader
#define PATH_BRDF_FS "resources/shaders/brdf.fs" // Path to bidirectional reflectance distribution function fragment shader
@@ -146,9 +145,9 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
Texture2D texHDR = LoadTexture("resources/pinetree.hdr");
Texture2D cubemap = GenTextureCubemap(shdrCubemap, texHDR, CUBEMAP_SIZE);
- SetMaterialTexture(&mat, MAP_IRRADIANCE, GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE));
- SetMaterialTexture(&mat, MAP_PREFILTER, GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE));
- SetMaterialTexture(&mat, MAP_BRDF, GenTextureBRDF(shdrBRDF, cubemap, BRDF_SIZE));
+ mat.maps[MAP_IRRADIANCE].texture = GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE);
+ mat.maps[MAP_PREFILTER].texture = GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE);
+ mat.maps[MAP_BRDF].texture = GenTextureBRDF(shdrBRDF, cubemap, BRDF_SIZE);
UnloadTexture(cubemap);
UnloadTexture(texHDR);
@@ -164,6 +163,13 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
SetTextureFilter(mat.maps[MAP_ROUGHNESS].texture, FILTER_BILINEAR);
SetTextureFilter(mat.maps[MAP_OCCLUSION].texture, FILTER_BILINEAR);
+ // Enable sample usage in shader for assigned textures
+ SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "albedo.useSampler"), (int[1]){ 1 }, 1);
+ SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "normals.useSampler"), (int[1]){ 1 }, 1);
+ SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "metalness.useSampler"), (int[1]){ 1 }, 1);
+ SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "roughness.useSampler"), (int[1]){ 1 }, 1);
+ SetShaderValuei(mat.shader, GetShaderLocation(mat.shader, "occlusion.useSampler"), (int[1]){ 1 }, 1);
+
int renderModeLoc = GetShaderLocation(mat.shader, "renderMode");
SetShaderValuei(mat.shader, renderModeLoc, (int[1]){ 0 }, 1);
@@ -177,4 +183,4 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
mat.maps[MAP_HEIGHT].value = 0.5f;
return mat;
-}
+} \ No newline at end of file
diff --git a/src/models.c b/src/models.c
index 7c325c5e..03e0cb45 100644
--- a/src/models.c
+++ b/src/models.c
@@ -592,8 +592,6 @@ Model LoadModel(const char *fileName)
model.mesh = LoadMesh(fileName);
model.transform = MatrixIdentity();
model.material = LoadMaterialDefault();
-
- rlLoadMesh(&model.mesh, false); // Upload mesh data to GPU (static)
return model;
}
@@ -622,7 +620,7 @@ void UnloadModel(Model model)
}
// Load mesh from file
-// NOTE: Mesh data loaded in CPU, not GPU
+// NOTE: Mesh data loaded in CPU and GPU
Mesh LoadMesh(const char *fileName)
{
Mesh mesh = { 0 };
@@ -634,6 +632,7 @@ Mesh LoadMesh(const char *fileName)
#endif
if (mesh.vertexCount == 0) TraceLog(LOG_WARNING, "Mesh could not be loaded");
+ else rlLoadMesh(&mesh, false); // Upload vertex data to GPU (static mesh)
// TODO: Initialize default mesh data in case loading fails, maybe a cube?
@@ -1271,101 +1270,6 @@ void UnloadMaterial(Material material)
}
}
-// Set material texture
-void SetMaterialTexture(Material *mat, int mapType, Texture2D texture)
-{
- mat->maps[mapType].texture = texture;
-
- // Update MaterialProperty use sampler state to use texture fetch instead of color attribute
- int location = -1;
- switch (mapType)
- {
- case MAP_ALBEDO:
- {
- location = GetShaderLocation(mat->shader, "albedo.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- case MAP_NORMAL:
- {
- location = GetShaderLocation(mat->shader, "normals.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- case MAP_METALNESS:
- {
- location = GetShaderLocation(mat->shader, "metalness.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- case MAP_ROUGHNESS:
- {
- location = GetShaderLocation(mat->shader, "roughness.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- case MAP_OCCLUSION:
- {
- location = GetShaderLocation(mat->shader, "occlusion.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- case MAP_EMISSION:
- {
- location = GetShaderLocation(mat->shader, "emission.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- case MAP_HEIGHT:
- {
- location = GetShaderLocation(mat->shader, "height.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 1 }, 1);
- } break;
- }
-}
-
-// Unset texture from material and unload it from GPU
-void UnsetMaterialTexture(Material *mat, int mapType)
-{
- UnloadTexture(mat->maps[mapType].texture);
- mat->maps[mapType].texture = (Texture2D){ 0 };
-
- // Update MaterialProperty use sampler state to use texture fetch instead of color attribute
- int location = -1;
- switch (mapType)
- {
- case MAP_ALBEDO:
- {
- location = GetShaderLocation(mat->shader, "albedo.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- case MAP_NORMAL:
- {
- location = GetShaderLocation(mat->shader, "normals.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- case MAP_METALNESS:
- {
- location = GetShaderLocation(mat->shader, "metalness.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- case MAP_ROUGHNESS:
- {
- location = GetShaderLocation(mat->shader, "roughness.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- case MAP_OCCLUSION:
- {
- location = GetShaderLocation(mat->shader, "occlusion.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- case MAP_EMISSION:
- {
- location = GetShaderLocation(mat->shader, "emission.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- case MAP_HEIGHT:
- {
- location = GetShaderLocation(mat->shader, "height.useSampler");
- SetShaderValuei(mat->shader, location, (int[1]){ 0 }, 1);
- } break;
- }
-}
-
// Draw a model (with texture if set)
void DrawModel(Model model, Vector3 position, float scale, Color tint)
{