summaryrefslogtreecommitdiff
path: root/graphics.h
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-06-10 15:59:57 +0000
committerrodri <rgl@antares-labs.eu>2024-06-10 15:59:57 +0000
commit213c3a4e99c3085ee89fda550897213abbc888ad (patch)
tree6dead68a5f64ca4d23285ab3dd13a7a36e4fea92 /graphics.h
parent239a319b41474a35e4c9c4b7c6ae3c6e0b0b7185 (diff)
downloadlibgraphics-213c3a4e99c3085ee89fda550897213abbc888ad.tar.gz
libgraphics-213c3a4e99c3085ee89fda550897213abbc888ad.tar.bz2
libgraphics-213c3a4e99c3085ee89fda550897213abbc888ad.zip
add spotlight params and a light color shading routine. other things.
among these other things are clamping the color channels to [0,1] internally, and adding a modulation function for mixing colors/points.
Diffstat (limited to 'graphics.h')
-rw-r--r--graphics.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/graphics.h b/graphics.h
index b7cfdce..b30dd9f 100644
--- a/graphics.h
+++ b/graphics.h
@@ -104,8 +104,12 @@ struct Vertex
struct LightSource
{
Point3 p;
+ Point3 dir;
Color c;
int type;
+ /* spotlights */
+ double θu; /* umbra angle. anything beyond is unlit */
+ double θp; /* penumbra angle. anything within is fully lit */
};
struct Material
@@ -330,11 +334,14 @@ Color cubemaptexture(Cubemap*, Point3, Color(*)(Memimage*, Point2));
/* util */
double fmin(double, double);
double fmax(double, double);
+Point2 modulapt2(Point2, Point2);
+Point3 modulapt3(Point3, Point3);
Memimage *rgb(ulong);
/* shadeop */
double sign(double);
double step(double, double);
double smoothstep(double, double, double);
+Color getlightcolor(LightSource*, Point3);
extern Rectangle UR; /* unit rectangle */