summaryrefslogtreecommitdiffstats
path: root/libdimension/dimension
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2009-11-17 18:32:39 -0500
committerTavian Barnes <tavianator@gmail.com>2009-11-17 18:32:39 -0500
commit9f36c26a7f75a58564f60878c42381b451d7d7ba (patch)
treeec070dd2d2f7078bf3aebba4dade28d69043b375 /libdimension/dimension
parent54e1ad43c7629d85f88cefbecdfe3e60e8c42294 (diff)
downloaddimension-9f36c26a7f75a58564f60878c42381b451d7d7ba.tar.xz
Make finish callback a propper BRDF.
Diffstat (limited to 'libdimension/dimension')
-rw-r--r--libdimension/dimension/geometry.h8
-rw-r--r--libdimension/dimension/texture.h9
2 files changed, 14 insertions, 3 deletions
diff --git a/libdimension/dimension/geometry.h b/libdimension/dimension/geometry.h
index 86a0111..08ac1b3 100644
--- a/libdimension/dimension/geometry.h
+++ b/libdimension/dimension/geometry.h
@@ -77,6 +77,14 @@ dmnsn_line_construct(dmnsn_vector x0, dmnsn_vector n)
/* Vector and matrix arithmetic */
DMNSN_INLINE dmnsn_vector
+dmnsn_vector_negate(dmnsn_vector rhs)
+{
+ /* 3 negations */
+ dmnsn_vector v = { -rhs.x, -rhs.y, -rhs.z };
+ return v;
+}
+
+DMNSN_INLINE dmnsn_vector
dmnsn_vector_add(dmnsn_vector lhs, dmnsn_vector rhs)
{
/* 3 additions */
diff --git a/libdimension/dimension/texture.h b/libdimension/dimension/texture.h
index 4d0e2d7..e5a1bfd 100644
--- a/libdimension/dimension/texture.h
+++ b/libdimension/dimension/texture.h
@@ -58,12 +58,15 @@ typedef struct dmnsn_finish dmnsn_finish;
/* Finish callback */
typedef dmnsn_color dmnsn_finish_fn(const dmnsn_finish *finish,
- dmnsn_color color, dmnsn_vector x0,
- dmnsn_vector normal,
- dmnsn_vector reflected);
+ dmnsn_color light, dmnsn_color color,
+ dmnsn_vector ray, dmnsn_vector normal,
+ dmnsn_vector viewer);
/* dmnsn_finish definition */
struct dmnsn_finish {
+ /* Ambient contribution factor */
+ double ambient;
+
/* Callbacks */
dmnsn_finish_fn *finish_fn;
dmnsn_free_fn *free_fn;