shithub: libgraphics

Download patch

ref: 2b19d1a580c0e281010fd200128081b8e3f4af7f
parent: e848ff8f07c022537fd6b369db8f126251e9b96e
author: rodri <rgl@antares-labs.eu>
date: Wed Mar 6 17:09:24 EST 2024

pass material properties to the fshader.

this way users can refer to per-surface material features
when shading pixels.

--- a/render.c
+++ b/render.c
@@ -415,7 +415,7 @@
 		}
 
 		idxtab = &(*ep)->indextab[OBJVTexture];
-		if(params->entity->mdl->tex != nil && idxtab->nindex == 3){
+		if(idxtab->nindex == 3){
 			t[0][0].uv = Pt2(tverts[idxtab->indices[0]].u,
 					 tverts[idxtab->indices[0]].v, 1);
 			t[0][1].uv = Pt2(tverts[idxtab->indices[1]].u,
--- a/vertex.c
+++ b/vertex.c
@@ -53,6 +53,7 @@
 	v->n = lerp3(v0->n, v1->n, t);
 	v->c = lerp3(v0->c, v1->c, t);
 	v->uv = lerp2(v0->uv, v1->uv, t);
+	v->mtl = v0->mtl != nil? v0->mtl: v1->mtl;
 	v->attrs = nil;
 	v->nattrs = 0;
 	for(i = 0; i < v0->nattrs; i++){
@@ -87,6 +88,7 @@
 		mulpt2(v0->uv, bc.x),
 		mulpt2(v1->uv, bc.y)),
 		mulpt2(v2->uv, bc.z));
+	v->mtl = v0->mtl != nil? v0->mtl: v1->mtl != nil? v1->mtl: v2->mtl;
 	v->attrs = nil;
 	v->nattrs = 0;
 	for(i = 0; i < v0->nattrs; i++){