]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - curves.h
Merge PR 'Make particles solid squares when cl_particles_quake is set to 2'
[xonotic/darkplaces.git] / curves.h
index 48d01219799907cd200794d94418fcfaa8c1c4f4..7c592b3ac060168ee2f8711caac35ea3d41b6863 100644 (file)
--- a/curves.h
+++ b/curves.h
@@ -1,7 +1,23 @@
-
 #ifndef CURVES_H
 #define CURVES_H
 
+#define PATCH_LODS_NUM 2
+#define PATCH_LOD_COLLISION 0
+#define PATCH_LOD_VISUAL 1
+
+typedef struct patchinfo_s
+{
+       int xsize, ysize;
+       struct {
+               int xtess, ytess;
+       } lods[PATCH_LODS_NUM];
+} patchinfo_t;
+
+// Calculate number of resulting vertex rows/columns by given patch size and tesselation factor
+// When tess=0 it means that we reduce detalization of base 3x3 patches by removing middle row and column
+// "DimForTess" is "DIMension FOR TESSelation factor"
+int Q3PatchDimForTess(int size, int tess);
+
 // usage:
 // to expand a 5x5 patch to 21x21 vertices (4x4 tesselation), one might use this call:
 // Q3PatchSubdivideFloat(3, sizeof(float[3]), outvertices, 5, 5, sizeof(float[3]), patchvertices, 4, 4);
@@ -14,7 +30,9 @@ int Q3PatchTesselationOnY(int patchwidth, int patchheight, int components, const
 // (such as those produced by Q3PatchTesselate)
 // (note: width and height are the actual vertex size, this produces
 //  (width-1)*(height-1)*2 triangles, 3 elements each)
-void Q3PatchTriangleElements(int *elements, int width, int height);
+void Q3PatchTriangleElements(int *elements, int width, int height, int firstvertex);
+
+int Q3PatchAdjustTesselation(int numcomponents, patchinfo_t *patch1, float *patchvertices1, patchinfo_t *patch2, float *patchvertices2);
 
 #endif