X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=curves.h;h=af9ba15044c8c09babb08aed7d1f0d18428a26fe;hb=d3e2f7e92ec8883147b70a7bc0971a7b4561d3d5;hp=0b4610372e3d0f3a53dc9cf1d8bcd81fae4ba544;hpb=1b29ff9409bcfd21e842e81e1e44924de83ab4a2;p=xonotic%2Fdarkplaces.git diff --git a/curves.h b/curves.h index 0b461037..af9ba150 100644 --- a/curves.h +++ b/curves.h @@ -2,13 +2,19 @@ #ifndef CURVES_H #define CURVES_H -void QuadraticSplineSubdivideFloat(int inpoints, int components, const float *in, int instride, float *out, int outstride); -void QuadraticSplinePatchSubdivideFloatBuffer(int cpwidth, int cpheight, int xlevel, int ylevel, int components, const float *in, float *out); -float QuadraticSplinePatchLargestDeviationOnX(int cpwidth, int cpheight, int components, const float *in); -float QuadraticSplinePatchLargestDeviationOnY(int cpwidth, int cpheight, int components, const float *in); -int QuadraticSplinePatchSubdivisionLevelForDeviation(float deviation, float level1tolerance, int levellimit); -int QuadraticSplinePatchSubdivisionLevelOnX(int cpwidth, int cpheight, int components, const float *in, float level1tolerance, int levellimit); -int QuadraticSplinePatchSubdivisionLevelOnY(int cpwidth, int cpheight, int components, const float *in, float level1tolerance, int levellimit); +// 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); +void Q3PatchTesselateFloat(int numcomponents, int outputstride, float *outputvertices, int patchwidth, int patchheight, int inputstride, float *patchvertices, int tesselationwidth, int tesselationheight); +// returns how much tesselation of each segment is needed to remain under tolerance +int Q3PatchTesselationOnX(int patchwidth, int patchheight, int components, const float *in, float tolerance); +// returns how much tesselation of each segment is needed to remain under tolerance +int Q3PatchTesselationOnY(int patchwidth, int patchheight, int components, const float *in, float tolerance); +// calculates elements for a grid of vertices +// (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, int firstvertex); #endif