]> Dogcows Code - chaz/rasterize/blobdiff - config.h
refactor triangle group into a separate class
[chaz/rasterize] / config.h
index 9637deae9233ea9d0e21a67dcc53ca4cfc786c99..593043940e31b6d99d399aa27b27e54fc7510336 100644 (file)
--- a/config.h
+++ b/config.h
 #define IF_DEPTH_TEST(X)
 #endif
 
+/*
+ * DOUBLE_FLOAT
+ * If enabled, scalars will be of type double.  This provides and insane level
+ * of precision at a performance cost.  The default behavior just uses floats.
+ */
+#if DOUBLE_FLOAT
+#define IF_DOUBLE_FLOAT(X) X
+#else
+#define IF_DOUBLE_FLOAT(X)
+#endif
+
 /*
  * EXPORT_BMP
  * If enabled, each scene rasterization will be saved as a BMP image file.
  * LIGHTING
  * If enabled, local lighting will be used to increase realism of the scene.
  * This option has a performance cost, but it can produce interesting visuals.
- * The behavior of this option also depends on the SMOOTH_COLOR option and
- * whether or not the model has unique vertex normals; if SMOOTH_COLOR is
- * disabled, each triangle will be shaded a flat color.  If it is enabled,
- * Gouraud interpolation is used to smooth the lighting across the face of
- * each triangle.  See the PRE_NORMALS and SMOOTH_COLOR options.
+ * The behavior of this option is effected by its precise value:
+ *   1 Phong lighting model with flat (per-face) interpolation.
+ *   2 Phong lighting model with Gouraud (per-vertex) interpolation.
+ *   3 Phong lighting model with Phong (per-pixel) interpolation.
  */
 #if LIGHTING
 #define IF_LIGHTING(X) X
 #endif
 
 /*
- * PRE_NORMALS
- * If enabled, normals are pre-computed while the triangles are loading.
- * Otherwise, the normals are computed during rasterization.  The behavior of
- * this option is effected by its precise value:
- *   1 Normals are computed per-face, according to the right-hand rule and
- *     counter-clockwise winding of the verticies.
- *   2 Normals are computed per-vertex; the normal for a vertex that is shared
- *     between two or more faces will be the average of the normals of the
- *     faces.  There is a performance penalty for this setting.
- *   3 Same as 2, but the normals will be cached so that they will not need to
- *     be computed the next time the mesh is loaded.
+ * CACHE_GEOMETRY
+ * If enabled, models will be saved to a quick-loading binary format after
+ * they are loaded.  Or, if a cached version of a model is discovered when a
+ * model is requested to be loaded, it is loaded from the cache instead.  This
+ * provides a decent speed improvement in cases where the model would
+ * otherwise be loaded from some kind of text format which would load slowly.
+ */
+#if CACHE_GEOMETRY
+#define IF_CACHE_GEOMETRY(X) X
+#else
+#define IF_CACHE_GEOMETRY(X)
+#endif
+
+/*
+ * CALC_NORMALS
+ * If enabled, per-vertex normals are calculated for models that don't come
+ * with pre-computed normals.  This occurs at loading time.  The normals are
+ * calculated by averaging the true normals of all the faces shared by each
+ * vertex.  Otherwise, only per-face normals are calculated for such models,
+ * also at loading time.
  */
-#if PRE_NORMALS
-#define IF_PRE_NORMALS(X) X
+#if CALC_NORMALS
+#define IF_CALC_NORMALS(X) X
 #else
-#define IF_PRE_NORMALS(X)
+#define IF_CALC_NORMALS(X)
 #endif
 
 /*
This page took 0.018953 seconds and 4 git commands to generate.