ref: 27724b010694549f17cad50158cf73ca035e9cad
parent: ecdeed125c0fe00b6a90f85db44ad37f0913e992
author: rodri <rgl@antares-labs.eu>
date: Thu Jul 4 11:11:40 EDT 2024
med,vis: fix normal map sampling. recent changes in libgraphics assume every texture resides in an sRGB color space, which is not the case for material resources like normals.
--- a/med.c
+++ b/med.c
@@ -283,9 +283,9 @@
{
Color tc, c;
- if(sp->v.mtl != nil && sp->v.mtl->diffusemap != nil && sp->v.uv.w != 0){
+ if(sp->v.mtl != nil && sp->v.mtl->diffusemap != nil && sp->v.uv.w != 0)
tc = texture(sp->v.mtl->diffusemap, sp->v.uv, tsampler);
- }else if(sp->su->entity->mdl->tex != nil && sp->v.uv.w != 0)
+ else if(sp->su->entity->mdl->tex != nil && sp->v.uv.w != 0)
tc = texture(sp->su->entity->mdl->tex, sp->v.uv, tsampler);
else
tc = Pt3(1,1,1,1);
@@ -358,6 +358,7 @@
else{
/* TODO implement this on the VS instead and apply Gram-Schmidt here */
n = texture(sp->v.mtl->normalmap, sp->v.uv, neartexsampler);
+ n = linear2srgb(n); /* TODO not all textures require color space conversion */
n = normvec3(subpt3(mulpt3(n, 2), Vec3(1,1,1)));
TBN.p = Pt3(0,0,0,1);
--- a/vis.c
+++ b/vis.c
@@ -161,9 +161,9 @@
{
Color tc, c;
- if(sp->v.mtl != nil && sp->v.mtl->diffusemap != nil && sp->v.uv.w != 0){
+ if(sp->v.mtl != nil && sp->v.mtl->diffusemap != nil && sp->v.uv.w != 0)
tc = texture(sp->v.mtl->diffusemap, sp->v.uv, tsampler);
- }else if(sp->su->entity->mdl->tex != nil && sp->v.uv.w != 0)
+ else if(sp->su->entity->mdl->tex != nil && sp->v.uv.w != 0)
tc = texture(sp->su->entity->mdl->tex, sp->v.uv, tsampler);
else
tc = Pt3(1,1,1,1);
@@ -240,6 +240,7 @@
else{
/* TODO implement this on the VS instead and apply Gram-Schmidt here */
n = texture(sp->v.mtl->normalmap, sp->v.uv, neartexsampler);
+ n = linear2srgb(n); /* TODO not all textures require color space conversion */
n = normvec3(subpt3(mulpt3(n, 2), Vec3(1,1,1)));
TBN.p = Pt3(0,0,0,1);