#include <stdio.h>
#include <string.h>
+#define _USE_MATH_DEFINES
#include <math.h>
#include "quakedef.h"
#include "dpsoftrast.h"
#define SKIPBACKFACE \
if(cullface != GL_NONE) \
{ \
- __m128 triangleedge[2] = { _mm_sub_ps(screen[0], screen[1]), _mm_sub_ps(screen[2], screen[1]) }; \
+ __m128 triangleedge[2]; \
+ __m128 trianglenormal; \
+ triangleedge[0] = _mm_sub_ps(screen[0], screen[1]); \
+ triangleedge[1] = _mm_sub_ps(screen[2], screen[1]); \
/* store normal in 2, 0, 1 order instead of 0, 1, 2 as it requires fewer shuffles and leaves z component accessible as scalar */ \
- __m128 trianglenormal = _mm_sub_ss(_mm_mul_ss(triangleedge[0], _mm_shuffle_ps(triangleedge[1], triangleedge[1], _MM_SHUFFLE(3, 0, 2, 1))), \
+ trianglenormal = _mm_sub_ss(_mm_mul_ss(triangleedge[0], _mm_shuffle_ps(triangleedge[1], triangleedge[1], _MM_SHUFFLE(3, 0, 2, 1))), \
_mm_mul_ss(_mm_shuffle_ps(triangleedge[0], triangleedge[0], _MM_SHUFFLE(3, 0, 2, 1)), triangleedge[1])); \
/* apply current cullface mode (this culls many triangles) */ \
switch(cullface) \
y = _mm_cvtss_si32(mipedgetc);
if (y > 0)
{
- y = (int)(log(y)/M_LN2);
+ y = (int)(log((float)y)/M_LN2);
if (y > texture->mipmaps - 1)
y = texture->mipmaps - 1;
}
case 0xF000: /*1110*/ edge0p = 3;edge0n = 0;edge1p = 3;edge1n = 2;break;
case 0x0FFF: /*0001*/ edge0p = 2;edge0n = 3;edge1p = 0;edge1n = 3;break;
case 0x0FF0: /*1001*/ edge0p = 2;edge0n = 3;edge1p = 1;edge1n = 0;break;
- case 0x0F0F: /*0101*/ edge0p = 2;edge0n = 3;edge1p = 1;edge1n = 2;break; // concave - nonsense
+ case 0x0F0F: /*0101*/ edge0p = 2;edge0n = 3;edge1p = 2;edge1n = 1;break; // concave - nonsense
case 0x0F00: /*1101*/ edge0p = 2;edge0n = 3;edge1p = 2;edge1n = 1;break;
case 0x00FF: /*0011*/ edge0p = 1;edge0n = 2;edge1p = 0;edge1n = 3;break;
case 0x00F0: /*1011*/ edge0p = 1;edge0n = 2;edge1p = 1;edge1n = 0;break;