summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2026-02-14 19:18:12 -0800
committer3gg <3gg@shellblade.net>2026-02-14 19:18:12 -0800
commit117c310e8baf60aa5f052214e1747b5846f34b4e (patch)
treec9a63caf01a13cf575d88ed39dae8680faa601a5 /src
parente0dd69febc8f73b0e39e14d070ecf6b73bbe2d4f (diff)
Directional light
Diffstat (limited to 'src')
-rw-r--r--src/swgfx.c7
1 files changed, 2 insertions, 5 deletions
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) {
1011 if (depth != DepthClearValue) { 1011 if (depth != DepthClearValue) {
1012 const sgColour3* albedo = &gfx->albedo[i]; 1012 const sgColour3* albedo = &gfx->albedo[i];
1013 sgColour4* colour = &gfx->colour[i]; 1013 sgColour4* colour = &gfx->colour[i];
1014 *colour = Vec4FromVec3(mul3(*albedo, ambient), 1.f); 1014 colour->rgb = add3(colour->rgb, mul3(*albedo, ambient));
1015 } 1015 }
1016 } 1016 }
1017} 1017}
@@ -1027,10 +1027,7 @@ void sgDirectional(swgfx* gfx, sgColour3 lightColour, sgVec3 direction) {
1027 const sgVec3* normal = &gfx->normals[i]; 1027 const sgVec3* normal = &gfx->normals[i];
1028 const R NdotL = fmaxf(0.f, dot3(*normal, L)); 1028 const R NdotL = fmaxf(0.f, dot3(*normal, L));
1029 sgColour4* colour = &gfx->colour[i]; 1029 sgColour4* colour = &gfx->colour[i];
1030 // TODO: Here and in sgAmbient() we need to accumulate colour, so this 1030 colour->rgb = add3(colour->rgb, scale3(mul3(*albedo, lightColour), NdotL));
1031 // should be +=. But colour also needs to be sgVec4, not sgPixel. We
1032 // should transform sgVec4 to sgPixel colour on sgPresent() instead.
1033 *colour = Vec4FromVec3(scale3(mul3(*albedo, lightColour), NdotL), 1.f);
1034 } 1031 }
1035 } 1032 }
1036} 1033}