shithub: semblance

Download patch

ref: 11087295a24b0a8d08897824c7ee9676026fa159
parent: af0338b7ba4d9c6011caaf10f4fd363da4651a42
author: rodri <rgl@antares-labs.eu>
date: Sat Aug 31 10:42:15 EDT 2024

omit references section. add a very rough example.

--- a/readme.md
+++ b/readme.md
@@ -104,7 +104,62 @@
 		Point3 viewport2world(Point3);	/* Point3 viewport2world(Camera*, Point3); */
 		Point3 world2model(Point3);	/* Point3 world2model(Entity*, Point3); */
 
-## References
+## Examples
+
+in libgraphics:
+
+	Point3
+	phongvshader(VSparams *sp)
+	{
+		Point3 pos;
+		Color a, d, s;
+		double ss;
+	
+		sp->v->n = model2world(sp->su->entity, sp->v->n);
+		sp->v->p = model2world(sp->su->entity, sp->v->p);
+		pos = sp->v->p;
+		addvattr(sp->v, "pos", VAPoint, &pos);
+		if(sp->v->mtl != nil && sp->v->mtl->normalmap != nil && sp->v->uv.w != 0){
+			sp->v->tangent = model2world(sp->su->entity, sp->v->tangent);
+			addvattr(sp->v, "tangent", VAPoint, &sp->v->tangent);
+		}
+		if(sp->v->mtl != nil){
+			a = sp->v->mtl->ambient;
+			d = sp->v->mtl->diffuse;
+			s = sp->v->mtl->specular;
+			ss = sp->v->mtl->shininess;
+			addvattr(sp->v, "ambient", VAPoint, &a);
+			addvattr(sp->v, "diffuse", VAPoint, &d);
+			addvattr(sp->v, "specular", VAPoint, &s);
+			addvattr(sp->v, "shininess", VANumber, &ss);
+		}
+		return world2clip(sp->su->camera, pos);
+	}
+
+in semblance:
+
+	out point pos;
+	out vector tangent;
+	out color ambient;
+	out color diffuse;
+	out color specular;
+	out double shininess;
+
+	vs phong() {
+		normal = model2world(normal);
+		position = model2world(position);
+		pos = position;
+		if(material != nil){
+			if(material->normalmap && uv.w != 0)
+				tangent = model2world(tangent);
+			ambient = material.ambient;
+			diffuse = material.diffuse;
+			specular = material.specular;
+			shininess = material.shininess;
+		}
+		return world2clip(pos);
+	}
+
 
 [1]: https://shithub.us/rodri/libgraphics
 [2]: https://shithub.us/rodri/renderfs