fix: OnShaderLoaded now checks if locations exist before setting uniforms
This commit is contained in:
		
							parent
							
								
									8422c9166f
								
							
						
					
					
						commit
						90f01de0cb
					
				|  | @ -11,7 +11,7 @@ static Matrix g_light_direction = {}; | ||||||
| 
 | 
 | ||||||
| void InitializeRenderingSubsystem() { | void InitializeRenderingSubsystem() { | ||||||
|     g_render_objects = list_from_type(Renderable); // Allocate list of renderable typeclass wrappers
 |     g_render_objects = list_from_type(Renderable); // Allocate list of renderable typeclass wrappers
 | ||||||
|     g_light_direction = QuaternionToMatrix(QuaternionFromEuler(-65.f, 45.f, 0.f)); |     g_light_direction = QuaternionToMatrix(QuaternionFromEuler(50.f * DEG2RAD, 0.f, 0.f)); | ||||||
|     g_shaders = list_from_type(ShaderResource); |     g_shaders = list_from_type(ShaderResource); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -64,9 +64,13 @@ void RenderNextFrame() { | ||||||
| void Internal_OnShaderLoaded(ShaderResource resource) { | void Internal_OnShaderLoaded(ShaderResource resource) { | ||||||
|     list_add(&g_shaders, &resource); |     list_add(&g_shaders, &resource); | ||||||
|     int light_direction_loc = GetShaderLocation(*resource.resource, "lightDirection"); |     int light_direction_loc = GetShaderLocation(*resource.resource, "lightDirection"); | ||||||
|     int ambient_level_loc = GetShaderLocation(*resource.resource, "ambient"); |     int ambient_level_loc = GetShaderLocation(*resource.resource, "ambientLight"); | ||||||
|     SetShaderValue(*resource.resource, light_direction_loc, &MATRIX_FORWARD(g_light_direction), SHADER_UNIFORM_VEC3); |     Vector3 lightdir = MATRIX_FORWARD(g_light_direction); | ||||||
|     SetShaderValue(*resource.resource, ambient_level_loc, &WHITE, SHADER_UNIFORM_VEC4); |     Vector4 ambient_color = {0.2, 0.2, 0.2, 1.0}; | ||||||
|  |     if(light_direction_loc != -1) | ||||||
|  |         SetShaderValue(*resource.resource, light_direction_loc, &MATRIX_FORWARD(g_light_direction), SHADER_UNIFORM_VEC3); | ||||||
|  |     if(ambient_level_loc != -1) | ||||||
|  |         SetShaderValue(*resource.resource, ambient_level_loc, &ambient_color, SHADER_UNIFORM_VEC4); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Internal_OnShaderUnloaded(ShaderResource resource) { | void Internal_OnShaderUnloaded(ShaderResource resource) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Sara
						Sara