aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2019-09-12 16:27:58 +0200
committerRay <raysan5@gmail.com>2019-09-12 16:27:58 +0200
commitc6d2502bdbdcdbbcbf89795e4574dcff26ad9949 (patch)
tree7cc786dcfd1ade066ce57e0ff06a96c730fb3f77
parenta2fd427224e7e3251c302597d299efd0e47ae6ca (diff)
downloadraylib-c6d2502bdbdcdbbcbf89795e4574dcff26ad9949.tar.gz
raylib-c6d2502bdbdcdbbcbf89795e4574dcff26ad9949.zip
Review example crashing
Note this example is not working properly, it still requires some review.
-rw-r--r--examples/models/models_material_pbr.c20
-rw-r--r--examples/models/rlights.h20
2 files changed, 18 insertions, 22 deletions
diff --git a/examples/models/models_material_pbr.c b/examples/models/models_material_pbr.c
index 0f896f21..8702f79a 100644
--- a/examples/models/models_material_pbr.c
+++ b/examples/models/models_material_pbr.c
@@ -52,14 +52,12 @@ int main(void)
model.materials[0] = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f);
- // Define lights attributes
- // NOTE: Shader is passed to every light on creation to define shader bindings internally
- Light lights[MAX_LIGHTS] = {
- CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.materials[0].shader),
- CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.materials[0].shader),
- CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.materials[0].shader),
- CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.materials[0].shader)
- };
+ // Create lights
+ // NOTE: Lights are added to an internal lights pool automatically
+ CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.materials[0].shader);
+ CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.materials[0].shader);
+ CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.materials[0].shader);
+ CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.materials[0].shader);
SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
@@ -113,8 +111,8 @@ int main(void)
// NOTE: PBR shader is loaded inside this function
static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
{
- Material mat = { 0 }; // NOTE: All maps textures are set to { 0 }
-
+ Material mat = LoadMaterialDefault(); // Initialize material to default
+
#if defined(PLATFORM_DESKTOP)
mat.shader = LoadShader("resources/shaders/glsl330/pbr.vs", "resources/shaders/glsl330/pbr.fs");
#else // PLATFORM_RPI, PLATFORM_ANDROID, PLATFORM_WEB
@@ -136,7 +134,7 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
// Set view matrix location
mat.shader.locs[LOC_MATRIX_MODEL] = GetShaderLocation(mat.shader, "matModel");
- mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view");
+ //mat.shader.locs[LOC_MATRIX_VIEW] = GetShaderLocation(mat.shader, "view");
mat.shader.locs[LOC_VECTOR_VIEW] = GetShaderLocation(mat.shader, "viewPos");
// Set PBR standard maps
diff --git a/examples/models/rlights.h b/examples/models/rlights.h
index 19504473..6593ab4a 100644
--- a/examples/models/rlights.h
+++ b/examples/models/rlights.h
@@ -33,6 +33,8 @@
#ifndef RLIGHTS_H
#define RLIGHTS_H
+#include "raylib.h"
+
//----------------------------------------------------------------------------------
// Defines and Macros
//----------------------------------------------------------------------------------
@@ -66,15 +68,10 @@ extern "C" { // Prevents name mangling of functions
#endif
//----------------------------------------------------------------------------------
-// Global Variables Definition
-//----------------------------------------------------------------------------------
-int lightsCount = 0; // Current amount of created lights
-
-//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
-Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader); // Defines a light and get locations from PBR shader
-void UpdateLightValues(Shader shader, Light light); // Send to PBR shader light values
+void CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader); // Defines a light and get locations from PBR shader
+void UpdateLightValues(Shader shader, Light light); // Send to PBR shader light values
#ifdef __cplusplus
}
@@ -106,7 +103,8 @@ void UpdateLightValues(Shader shader, Light light);
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
-// ...
+static Light lights[MAX_LIGHTS] = { 0 };
+static int lightsCount = 0; // Current amount of created lights
//----------------------------------------------------------------------------------
// Module specific Functions Declaration
@@ -118,7 +116,7 @@ void UpdateLightValues(Shader shader, Light light);
//----------------------------------------------------------------------------------
// Defines a light and get locations from PBR shader
-Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader)
+void CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shader)
{
Light light = { 0 };
@@ -148,10 +146,10 @@ Light CreateLight(int type, Vector3 pos, Vector3 targ, Color color, Shader shade
light.colorLoc = GetShaderLocation(shader, colorName);
UpdateLightValues(shader, light);
+
+ lights[lightsCount] = light;
lightsCount++;
}
-
- return light;
}
// Send to PBR shader light values