mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-21 20:39:57 +01:00
Rename constant
This commit is contained in:
parent
f3817882b0
commit
c0e5c383a8
2 changed files with 23 additions and 18 deletions
39
s3l.h
39
s3l.h
|
@ -158,14 +158,15 @@ typedef int32_t S3L_Unit; /**< Units of measurement in 3D space. There is
|
||||||
plane. */
|
plane. */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef S3L_LERP_QUALITY
|
#ifndef S3L_FAST_LERP_QUALITY
|
||||||
#define S3L_LERP_QUALITY 8 /**< Quality (scaling) of SOME linear
|
#define S3L_FAST_LERP_QUALITY 8 /**< Quality (scaling) of SOME linear
|
||||||
interpolations. 0 will most likely be faster,
|
interpolations. 0 will most likely be
|
||||||
but artifacts can occur for bigger tris,
|
faster, but artifacts can occur for
|
||||||
while higher values can fix this -- in theory
|
bigger tris, while higher values can fix
|
||||||
all higher values will have the same speed
|
this -- in theory all higher values will
|
||||||
(it is a shift value), but it mustn't be too
|
have the same speed (it is a shift
|
||||||
high to prevent overflow. */
|
value), but it mustn't be too high to
|
||||||
|
prevent overflow. */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Predefined vertices of a cube to simply insert in an array. These come with
|
/** Predefined vertices of a cube to simply insert in an array. These come with
|
||||||
|
@ -382,6 +383,7 @@ void S3L_vec3Xmat4(S3L_Vec4 *v, S3L_Mat4 *m)
|
||||||
{
|
{
|
||||||
S3L_Vec4 vBackup;
|
S3L_Vec4 vBackup;
|
||||||
|
|
||||||
|
#undef dotCol
|
||||||
#define dotCol(col)\
|
#define dotCol(col)\
|
||||||
(vBackup.x * (*m)[col][0]) / S3L_FRACTIONS_PER_UNIT +\
|
(vBackup.x * (*m)[col][0]) / S3L_FRACTIONS_PER_UNIT +\
|
||||||
(vBackup.y * (*m)[col][1]) / S3L_FRACTIONS_PER_UNIT +\
|
(vBackup.y * (*m)[col][1]) / S3L_FRACTIONS_PER_UNIT +\
|
||||||
|
@ -1002,7 +1004,7 @@ void _S3L_drawFilledTriangle(
|
||||||
lSideStep, rSideStep, lSideUnitPosScaled, rSideUnitPosScaled;
|
lSideStep, rSideStep, lSideUnitPosScaled, rSideUnitPosScaled;
|
||||||
/* ^ These are helper vars for faster linear iterpolation (we scale the
|
/* ^ These are helper vars for faster linear iterpolation (we scale the
|
||||||
S3L_FRACTIONS_PER_UNIT up by shifting to the right by
|
S3L_FRACTIONS_PER_UNIT up by shifting to the right by
|
||||||
S3L_LERP_QUALITY and simply increment by steps. */
|
S3L_FAST_LERP_QUALITY and simply increment by steps. */
|
||||||
|
|
||||||
/* init side for the algorithm, params:
|
/* init side for the algorithm, params:
|
||||||
s - which side (l or r)
|
s - which side (l or r)
|
||||||
|
@ -1013,12 +1015,12 @@ void _S3L_drawFilledTriangle(
|
||||||
s##X = p1##PointSx;\
|
s##X = p1##PointSx;\
|
||||||
s##Dx = p2##PointSx - p1##PointSx;\
|
s##Dx = p2##PointSx - p1##PointSx;\
|
||||||
s##Dy = p2##PointSy - p1##PointSy;\
|
s##Dy = p2##PointSy - p1##PointSy;\
|
||||||
s##SideStep = (S3L_FRACTIONS_PER_UNIT << S3L_LERP_QUALITY)\
|
s##SideStep = (S3L_FRACTIONS_PER_UNIT << S3L_FAST_LERP_QUALITY)\
|
||||||
/ (s##Dy != 0 ? s##Dy : 1);\
|
/ (s##Dy != 0 ? s##Dy : 1);\
|
||||||
s##SideUnitPosScaled = 0;\
|
s##SideUnitPosScaled = 0;\
|
||||||
if (!down)\
|
if (!down)\
|
||||||
{\
|
{\
|
||||||
s##SideUnitPosScaled = S3L_FRACTIONS_PER_UNIT << S3L_LERP_QUALITY;\
|
s##SideUnitPosScaled = S3L_FRACTIONS_PER_UNIT << S3L_FAST_LERP_QUALITY;\
|
||||||
s##SideStep *= -1;\
|
s##SideStep *= -1;\
|
||||||
}\
|
}\
|
||||||
s##Inc = s##Dx >= 0 ? 1 : -1;\
|
s##Inc = s##Dx >= 0 ? 1 : -1;\
|
||||||
|
@ -1077,8 +1079,8 @@ void _S3L_drawFilledTriangle(
|
||||||
S3L_Unit *tmp = barycentric##b0;\
|
S3L_Unit *tmp = barycentric##b0;\
|
||||||
barycentric##b0 = barycentric##b1;\
|
barycentric##b0 = barycentric##b1;\
|
||||||
barycentric##b1 = tmp;\
|
barycentric##b1 = tmp;\
|
||||||
s##SideUnitPosScaled =\
|
s##SideUnitPosScaled = (S3L_FRACTIONS_PER_UNIT\
|
||||||
(S3L_FRACTIONS_PER_UNIT << S3L_LERP_QUALITY) - s##SideUnitPosScaled;\
|
<< S3L_FAST_LERP_QUALITY) - s##SideUnitPosScaled;\
|
||||||
s##SideStep *= -1;
|
s##SideStep *= -1;
|
||||||
|
|
||||||
if (splitOnLeft)
|
if (splitOnLeft)
|
||||||
|
@ -1120,8 +1122,11 @@ void _S3L_drawFilledTriangle(
|
||||||
lDepth, rDepth,
|
lDepth, rDepth,
|
||||||
lT, rT; // perspective-corrected position along either side
|
lT, rT; // perspective-corrected position along either side
|
||||||
|
|
||||||
lT = S3L_correctPerspective(lSideUnitPosScaled >> S3L_LERP_QUALITY,&lPC);
|
lT = S3L_correctPerspective(lSideUnitPosScaled >> S3L_FAST_LERP_QUALITY,
|
||||||
rT = S3L_correctPerspective(rSideUnitPosScaled >> S3L_LERP_QUALITY,&rPC);
|
&lPC);
|
||||||
|
|
||||||
|
rT = S3L_correctPerspective(rSideUnitPosScaled >> S3L_FAST_LERP_QUALITY,
|
||||||
|
&rPC);
|
||||||
|
|
||||||
lDepth = S3L_interpolateByUnit(lPC.a[2],lPC.b[2],lT);
|
lDepth = S3L_interpolateByUnit(lPC.a[2],lPC.b[2],lT);
|
||||||
rDepth = S3L_interpolateByUnit(rPC.a[2],rPC.b[2],rT);
|
rDepth = S3L_interpolateByUnit(rPC.a[2],rPC.b[2],rT);
|
||||||
|
@ -1172,8 +1177,8 @@ void _S3L_drawFilledTriangle(
|
||||||
*barycentric0 = S3L_interpolateByUnitFrom0(rT,rowT);
|
*barycentric0 = S3L_interpolateByUnitFrom0(rT,rowT);
|
||||||
*barycentric1 = S3L_interpolateByUnit(lT,0,rowT);
|
*barycentric1 = S3L_interpolateByUnit(lT,0,rowT);
|
||||||
#else
|
#else
|
||||||
*barycentric0 = b0 >> S3L_LERP_QUALITY;
|
*barycentric0 = b0 >> S3L_FAST_LERP_QUALITY;
|
||||||
*barycentric1 = b1 >> S3L_LERP_QUALITY;
|
*barycentric1 = b1 >> S3L_FAST_LERP_QUALITY;
|
||||||
|
|
||||||
b0 += b0Step;
|
b0 += b0Step;
|
||||||
b1 -= b1Step;
|
b1 -= b1Step;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#define S3L_RESOLUTION_X 640
|
#define S3L_RESOLUTION_X 640
|
||||||
#define S3L_RESOLUTION_Y 480
|
#define S3L_RESOLUTION_Y 480
|
||||||
|
|
||||||
#define S3L_PERSPECTIVE_CORRECTION 1
|
#define S3L_PERSPECTIVE_CORRECTION 0
|
||||||
|
|
||||||
#include "s3l.h"
|
#include "s3l.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue