diff options
author | rodri <rgl@antares-labs.eu> | 2024-06-10 15:59:57 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-06-10 15:59:57 +0000 |
commit | 213c3a4e99c3085ee89fda550897213abbc888ad (patch) | |
tree | 6dead68a5f64ca4d23285ab3dd13a7a36e4fea92 /graphics.h | |
parent | 239a319b41474a35e4c9c4b7c6ae3c6e0b0b7185 (diff) | |
download | libgraphics-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.h | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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 */ |