mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-16 05:02:34 +00:00
Added support for rendering multiple lights, standardized shaders to use snake case for variables and camel case for functions, stubbed PBR material shader include.
This commit is contained in:
@@ -1,22 +1,23 @@
|
||||
#version 330 core
|
||||
out vec4 FragColor;
|
||||
out vec4 frag_color;
|
||||
|
||||
@include "light_struct"
|
||||
const int DIRECTIONAL = 0;
|
||||
const int POINT = 1;
|
||||
const int SPOT = 2;
|
||||
|
||||
in vec2 outTexCoords;
|
||||
flat in Light outLight[1];
|
||||
flat in Light out_lights[7];
|
||||
in vec2 out_tex_coords;
|
||||
flat in int out_light_count;
|
||||
|
||||
uniform sampler2D diffuse, position, texcoord, normal, depth;
|
||||
|
||||
vec4 directionalLight(Light light) {
|
||||
vec3 norm = normalize(texture(normal, outTexCoords).rgb);
|
||||
vec3 diffuse_color = texture(diffuse, outTexCoords).rgb;
|
||||
vec3 fragPos = texture(position, outTexCoords).rgb;
|
||||
vec3 norm = normalize(texture(normal, out_tex_coords).rgb);
|
||||
vec3 diffuse_color = texture(diffuse, out_tex_coords).rgb;
|
||||
vec3 frag_pos = texture(position, out_tex_coords).rgb;
|
||||
|
||||
vec3 lightDir = normalize(light.position - fragPos);
|
||||
vec3 lightDir = normalize(light.position - frag_pos);
|
||||
float diff = max(dot(norm, lightDir), 0);
|
||||
|
||||
vec3 _ambient = light.ambient;
|
||||
@@ -59,5 +60,10 @@ vec4 calculateLighting(Light light) {
|
||||
}
|
||||
|
||||
void main() {
|
||||
FragColor = texture(diffuse, outTexCoords) * calculateLighting(outLight[0]);
|
||||
}
|
||||
frag_color = vec4(0.0);
|
||||
|
||||
for(int i = 0; i < out_light_count; i++)
|
||||
{
|
||||
frag_color += texture(diffuse, out_tex_coords) * calculateLighting(out_lights[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user