33 inline void LeRasterizer::fillFlatTexAlphaZCFog(
int y,
float x1,
float x2,
float w1,
float w2,
float u1,
float u2,
float v1,
float v2)
35 uint8_t * sc = (uint8_t *)&curTriangle->
solidColor;
36 uint8_t * fc = (uint8_t *)&curTrilist->
fog.
color;
39 if (d == 0.0f)
return;
41 float au = (u2 - u1) / d;
42 float av = (v2 - v1) / d;
43 float aw = (w2 - w1) / d;
45 float znear = curTrilist->
fog.
near;
46 float zfar = curTrilist->
fog.
far;
47 float zscale = -1.0f / (znear - zfar);
50 int xe = (int)(x2 + 1.9999f);
53 uint8_t * p = (uint8_t *)(xb + ((
int)y) *
frame.
tx + pixels);
55 for (
int x = xb; x < xe; x++) {
57 uint32_t tu = ((int32_t)(u1 * z)) & texMaskU;
58 uint32_t tv = ((int32_t)(v1 * z)) & texMaskV;
59 uint8_t * t = (uint8_t *)&texDiffusePixels[tu + (tv << texSizeU)];
61 float ff = (z - znear) * zscale;
64 ff = 256.0f * ff * ff;
73 r = r + (((fc[0] * n - r) * fb) >> 8);
74 g = g + (((fc[1] * n - g) * fb) >> 8);
75 b = b + (((fc[2] * n - b) * fb) >> 8);
77 p[0] = (p[0] * a + r) >> 8;
78 p[1] = (p[1] * a + g) >> 8;
79 p[2] = (p[2] * a + b) >> 8;
LeColor color
Definition: trilist.h:53
LeColor solidColor
Definition: trilist.h:83
#define cmmin(a, b)
Definition: global.h:45
int tx
Definition: bitmap.h:81
LeBitmap frame
Definition: rasterizer_float.h:61
float near
Definition: trilist.h:54
LeFog fog
Definition: trilist.h:103
float far
Definition: trilist.h:55
#define cmmax(a, b)
Definition: global.h:44