summaryrefslogtreecommitdiffhomepage
path: root/examples/models
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2021-04-02 15:41:44 +0200
committerraysan5 <[email protected]>2021-04-02 15:41:44 +0200
commit46650b5fb12ea3e350c0a2160d05b895260e87e3 (patch)
tree8f58e98f647c9652a2b038d8d3003f5f077866d0 /examples/models
parent51f3129c5dfa4be70787fa9c4473335252abffcd (diff)
downloadraylib-46650b5fb12ea3e350c0a2160d05b895260e87e3.tar.gz
raylib-46650b5fb12ea3e350c0a2160d05b895260e87e3.zip
Reviewed skybox and pbr examples
Diffstat (limited to 'examples/models')
-rw-r--r--examples/models/models_material_pbr.c52
-rw-r--r--examples/models/models_skybox.c22
2 files changed, 36 insertions, 38 deletions
diff --git a/examples/models/models_material_pbr.c b/examples/models/models_material_pbr.c
index f0420d30..eac9d9c0 100644
--- a/examples/models/models_material_pbr.c
+++ b/examples/models/models_material_pbr.c
@@ -21,12 +21,18 @@
#define RLIGHTS_IMPLEMENTATION
#include "rlights.h"
+#if defined(PLATFORM_DESKTOP)
+ #define GLSL_VERSION 330
+#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
+ #define GLSL_VERSION 100
+#endif
+
#define CUBEMAP_SIZE 1024 // Cubemap texture size
#define IRRADIANCE_SIZE 32 // Irradiance texture size
#define PREFILTERED_SIZE 256 // Prefiltered HDR environment texture size
#define BRDF_SIZE 512 // BRDF LUT texture size
-#define LIGHT_DISTANCE 1000.0f
-#define LIGHT_HEIGHT 1.0f
+#define LIGHT_DISTANCE 1000.0f
+#define LIGHT_HEIGHT 1.0f
// PBR texture maps generation
static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, int format); // Generate cubemap (6 faces) from equirectangular (panorama) texture
@@ -127,11 +133,8 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
Material mat = LoadMaterialDefault(); // Initialize material to default
// Load PBR shader (requires several maps)
-#if defined(PLATFORM_DESKTOP)
- mat.shader = LoadShader("resources/shaders/glsl330/pbr.vs", "resources/shaders/glsl330/pbr.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- mat.shader = LoadShader("resources/shaders/glsl100/pbr.vs", "resources/shaders/glsl100/pbr.fs");
-#endif
+ mat.shader = LoadShader(TextFormat("resources/shaders/glsl%i/pbr.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/pbr.fs", GLSL_VERSION));
// Get required locations points for PBR material
// NOTE: Those location names must be available and used in the shader code
@@ -187,12 +190,11 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
// Generate cubemap from panorama texture
//--------------------------------------------------------------------------------------------------------
Texture2D panorama = LoadTexture("resources/dresden_square_2k.hdr");
+
// Load equirectangular to cubemap shader
-#if defined(PLATFORM_DESKTOP)
- Shader shdrCubemap = LoadShader("resources/shaders/glsl330/cubemap.vs", "resources/shaders/glsl330/cubemap.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- Shader shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs");
-#endif
+ Shader shdrCubemap = LoadShader(TextFormat("resources/shaders/glsl%i/pbr.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/pbr.fs", GLSL_VERSION));
+
SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT);
TextureCubemap cubemap = GenTextureCubemap(shdrCubemap, panorama, CUBEMAP_SIZE, PIXELFORMAT_UNCOMPRESSED_R32G32B32);
UnloadTexture(panorama);
@@ -202,11 +204,9 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
// Generate irradiance map from cubemap texture
//--------------------------------------------------------------------------------------------------------
// Load irradiance (GI) calculation shader
-#if defined(PLATFORM_DESKTOP)
- Shader shdrIrradiance = LoadShader("resources/shaders/glsl330/skybox.vs", "resources/shaders/glsl330/irradiance.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- Shader shdrIrradiance = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/irradiance.fs");
-#endif
+ Shader shdrIrradiance = LoadShader(TextFormat("resources/shaders/glsl%i/skybox.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/irradiance.fs", GLSL_VERSION));
+
SetShaderValue(shdrIrradiance, GetShaderLocation(shdrIrradiance, "environmentMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT);
mat.maps[MATERIAL_MAP_IRRADIANCE].texture = GenTextureIrradiance(shdrIrradiance, cubemap, IRRADIANCE_SIZE);
UnloadShader(shdrIrradiance);
@@ -215,11 +215,9 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
// Generate prefilter map from cubemap texture
//--------------------------------------------------------------------------------------------------------
// Load reflection prefilter calculation shader
-#if defined(PLATFORM_DESKTOP)
- Shader shdrPrefilter = LoadShader("resources/shaders/glsl330/skybox.vs", "resources/shaders/glsl330/prefilter.fs");
-#else
- Shader shdrPrefilter = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/prefilter.fs");
-#endif
+ Shader shdrPrefilter = LoadShader(TextFormat("resources/shaders/glsl%i/skybox.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/prefilter.fs", GLSL_VERSION));
+
SetShaderValue(shdrPrefilter, GetShaderLocation(shdrPrefilter, "environmentMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT);
mat.maps[MATERIAL_MAP_PREFILTER].texture = GenTexturePrefilter(shdrPrefilter, cubemap, PREFILTERED_SIZE);
UnloadTexture(cubemap);
@@ -228,11 +226,9 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
// Generate BRDF (bidirectional reflectance distribution function) texture (using shader)
//--------------------------------------------------------------------------------------------------------
-#if defined(PLATFORM_DESKTOP)
- Shader shdrBRDF = LoadShader("resources/shaders/glsl330/brdf.vs", "resources/shaders/glsl330/brdf.fs");
-#else
- Shader shdrBRDF = LoadShader("resources/shaders/glsl100/brdf.vs", "resources/shaders/glsl100/brdf.fs");
-#endif
+ Shader shdrBRDF = LoadShader(TextFormat("resources/shaders/glsl%i/brdf.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/brdf.fs", GLSL_VERSION));
+
mat.maps[MATERIAL_MAP_BRDG].texture = GenTextureBRDF(shdrBRDF, BRDF_SIZE);
UnloadShader(shdrBRDF);
//--------------------------------------------------------------------------------------------------------
@@ -293,7 +289,7 @@ static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int s
rlClearScreenBuffers();
DrawCubeV(Vector3Zero(), Vector3One(), WHITE);
- rlDrawRenderBatch(RLGL.currentBatch);
+ rlDrawRenderBatchActive();
}
//------------------------------------------------------------------------------------------
diff --git a/examples/models/models_skybox.c b/examples/models/models_skybox.c
index cef34611..2060688e 100644
--- a/examples/models/models_skybox.c
+++ b/examples/models/models_skybox.c
@@ -12,6 +12,12 @@
#include "raylib.h"
#include "rlgl.h"
+#if defined(PLATFORM_DESKTOP)
+ #define GLSL_VERSION 330
+#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
+ #define GLSL_VERSION 100
+#endif
+
// Generate cubemap (6 faces) from equirectangular (panorama) texture
static TextureCubemap GenTextureCubemap(Shader shader, Texture2D panorama, int size, int format);
@@ -35,21 +41,17 @@ int main(void)
// Load skybox shader and set required locations
// NOTE: Some locations are automatically set at shader loading
-#if defined(PLATFORM_DESKTOP)
- skybox.materials[0].shader = LoadShader("resources/shaders/glsl330/skybox.vs", "resources/shaders/glsl330/skybox.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- skybox.materials[0].shader = LoadShader("resources/shaders/glsl100/skybox.vs", "resources/shaders/glsl100/skybox.fs");
-#endif
+ skybox.materials[0].shader = LoadShader(TextFormat("resources/shaders/glsl%i/skybox.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/skybox.fs", GLSL_VERSION));
+
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 }, SHADER_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
-#if defined(PLATFORM_DESKTOP)
- Shader shdrCubemap = LoadShader("resources/shaders/glsl330/cubemap.vs", "resources/shaders/glsl330/cubemap.fs");
-#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
- Shader shdrCubemap = LoadShader("resources/shaders/glsl100/cubemap.vs", "resources/shaders/glsl100/cubemap.fs");
-#endif
+ Shader shdrCubemap = LoadShader(TextFormat("resources/shaders/glsl%i/cubemap.vs", GLSL_VERSION),
+ TextFormat("resources/shaders/glsl%i/cubemap.fs", GLSL_VERSION));
+
SetShaderValue(shdrCubemap, GetShaderLocation(shdrCubemap, "equirectangularMap"), (int[1]){ 0 }, SHADER_UNIFORM_INT);
char skyboxFileName[256] = { 0 };