From c5808488875484aca814bfc8e526f37f3f447166 Mon Sep 17 00:00:00 2001 From: Omniscient Date: Sat, 15 Jun 2024 16:38:05 +1000 Subject: shinchoku --- assets/shaders/pbr_params.frag | 50 ++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 21 deletions(-) (limited to 'assets/shaders/pbr_params.frag') diff --git a/assets/shaders/pbr_params.frag b/assets/shaders/pbr_params.frag index 06e0f7e..d467aa8 100644 --- a/assets/shaders/pbr_params.frag +++ b/assets/shaders/pbr_params.frag @@ -12,15 +12,21 @@ struct PointLight { }; // --- Uniforms -uniform vec3 viewPos; // Lights data #define NUM_POINT_LIGHTS 4 -uniform PointLight pointLights[NUM_POINT_LIGHTS]; +uniform Scene_Lights { + vec3 viewPos; + PointLight pointLights[NUM_POINT_LIGHTS]; +} scene; // Material properties -uniform vec3 albedo; -uniform float metallic; -uniform float roughness; -uniform float ao; +uniform PBR_Params { + uniform vec3 albedo; + uniform float metallic; + uniform float roughness; + uniform float ao; +} pbr; + +const float PI = 3.14; // Forward declarations vec3 fresnelSchlick(float cosTheta, vec3 F0); @@ -30,20 +36,22 @@ float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness); void main() { vec3 norm = normalize(Normal); - vec3 viewDir = normalize(viewPos - WorldPos); - - vec3 radiance = vec3(0.0); // denoted L in the radiance equation - for (int i = 0; i < 4; i++) { - vec3 lightVec = normalize(pointLights[i].position - WorldPos); - vec3 halfway = normalize(Normal + lightVec); - float distance = length(pointLights[i].position - WorldPos); - float attenuation = 1.0 / (distance * distance); - vec3 radiance = pointLights[i].color * attenuation; - - vec3 F0 = vec3(0.04); - F0 = mix(F0, albedo, metallic); - vec3 F = fresnelSchlick(max(dot(halfway, lightVec), 0.0), F0); - } + vec3 viewDir = normalize(scene.viewPos - WorldPos); + + // vec3 radiance = vec3(0.0); // denoted L in the radiance equation + // for (int i = 0; i < 4; i++) { + // vec3 lightVec = normalize(pointLights[i].position - WorldPos); + // vec3 halfway = normalize(Normal + lightVec); + // float distance = length(pointLights[i].position - WorldPos); + // float attenuation = 1.0 / (distance * distance); + // vec3 radiance = pointLights[i].color * attenuation; + + // vec3 F0 = vec3(0.04); + // F0 = mix(F0, albedo, metallic); + // vec3 F = fresnelSchlick(max(dot(halfway, lightVec), 0.0), F0); + // } + + FragColor = vec4(1.0); } /* The below are from https://learnopengl.com/PBR/Lighting */ @@ -82,4 +90,4 @@ float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) float ggx1 = GeometrySchlickGGX(NdotL, roughness); return ggx1 * ggx2; -} \ No newline at end of file +} -- cgit v1.2.3-70-g09d2