From 4ebd112784a30d4424d27c735104840c61dcf329 Mon Sep 17 00:00:00 2001 From: Luke Benstead Date: Mon, 17 Feb 2020 20:29:12 +0000 Subject: [PATCH] Attempt to fix specular --- GL/lighting.c | 8 ++++---- GL/private.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/GL/lighting.c b/GL/lighting.c index b6dfe42..b462d42 100644 --- a/GL/lighting.c +++ b/GL/lighting.c @@ -338,8 +338,8 @@ GL_FORCE_INLINE void _glLightVertexDirectional(uint8_t* final, int8_t lid, float #define _PROCESS_COMPONENT(T, X) \ F = (MATERIAL.ambient[X] * LIGHTS[lid].ambient[X]); \ F += (LdotN * MATERIAL.diffuse[X] * LIGHTS[lid].diffuse[X]); \ - if(MATERIAL.exponent) \ - F += FPOW(FI * NdotH, MATERIAL.exponent) * MATERIAL.specular[X] * LIGHTS[lid].specular[X]; \ + FI = (MATERIAL.exponent) ? FPOW(FI * NdotH, MATERIAL.exponent) : 1.0f; \ + F += FI * MATERIAL.specular[X] * LIGHTS[lid].specular[X]; \ FO = (uint8_t) (_MIN(F * 255.0f, 255.0f)); \ \ final[T] += _MIN(FO, 255 - final[T]); \ @@ -359,8 +359,8 @@ GL_FORCE_INLINE void _glLightVertexPoint(uint8_t* final, int8_t lid, float LdotN #define _PROCESS_COMPONENT(T, X) \ F = (MATERIAL.ambient[X] * LIGHTS[lid].ambient[X]); \ F += (LdotN * MATERIAL.diffuse[X] * LIGHTS[lid].diffuse[X]); \ - if(MATERIAL.exponent) \ - F += FPOW(FI * NdotH, MATERIAL.exponent) * MATERIAL.specular[X] * LIGHTS[lid].specular[X]; \ + FI = (MATERIAL.exponent) ? FPOW(FI * NdotH, MATERIAL.exponent) : 1.0f; \ + F += FI * MATERIAL.specular[X] * LIGHTS[lid].specular[X]; \ FO = (uint8_t) (_MIN(F * att * 255.0f, 255.0f)); \ \ final[T] += _MIN(FO, 255 - final[T]); \ diff --git a/GL/private.h b/GL/private.h index 1575bb8..71a4e34 100644 --- a/GL/private.h +++ b/GL/private.h @@ -147,7 +147,7 @@ typedef struct { GLfloat specular[4]; /* Valid values are 0-128 */ - GLubyte exponent; + GLfloat exponent; } Material; typedef struct {