From 117c310e8baf60aa5f052214e1747b5846f34b4e Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 14 Feb 2026 19:18:12 -0800 Subject: Directional light --- src/swgfx.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/swgfx.c b/src/swgfx.c index 33b453d..1901057 100644 --- a/src/swgfx.c +++ b/src/swgfx.c @@ -1011,7 +1011,7 @@ void sgAmbient(swgfx* gfx, sgColour3 ambient) { if (depth != DepthClearValue) { const sgColour3* albedo = &gfx->albedo[i]; sgColour4* colour = &gfx->colour[i]; - *colour = Vec4FromVec3(mul3(*albedo, ambient), 1.f); + colour->rgb = add3(colour->rgb, mul3(*albedo, ambient)); } } } @@ -1027,10 +1027,7 @@ void sgDirectional(swgfx* gfx, sgColour3 lightColour, sgVec3 direction) { const sgVec3* normal = &gfx->normals[i]; const R NdotL = fmaxf(0.f, dot3(*normal, L)); sgColour4* colour = &gfx->colour[i]; - // TODO: Here and in sgAmbient() we need to accumulate colour, so this - // should be +=. But colour also needs to be sgVec4, not sgPixel. We - // should transform sgVec4 to sgPixel colour on sgPresent() instead. - *colour = Vec4FromVec3(scale3(mul3(*albedo, lightColour), NdotL), 1.f); + colour->rgb = add3(colour->rgb, scale3(mul3(*albedo, lightColour), NdotL)); } } } -- cgit v1.2.3