53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
/* KallistiGL for KallistiOS ##version##
|
|
|
|
libgl/gl-clip.h
|
|
Copyright (C) 2013-2014 Josh Pearson
|
|
|
|
Near-Z Clipping Algorithm (C) 2013-2014 Josh PH3NOM Pearson
|
|
Input Primitive Types Supported:
|
|
-GL_TRIANGLES
|
|
-GL_TRIANGLE_STRIPS
|
|
-GL_QUADS
|
|
Outputs a mix of Triangles and Triangle Strips for use with the PVR
|
|
*/
|
|
|
|
#ifndef GL_CLIP_H
|
|
#define GL_CLIP_H
|
|
|
|
#include "gl.h"
|
|
#include "gl-sh4.h"
|
|
|
|
#define NONE 0x0000 /* Clip Codes */
|
|
#define FIRST 0x0001
|
|
#define SECOND 0x0010
|
|
#define THIRD 0x0100
|
|
#define ALL 0x0111
|
|
#define FIRST_TWO_OUT 0x0011
|
|
#define FIRST_AND_LAST_OUT 0x0101
|
|
#define LAST_TWO_OUT 0x0110
|
|
|
|
#define ALPHA 0xFF000000 /* Color Components using PVR's Packed 32bit int */
|
|
#define RED 0x00FF0000
|
|
#define GREEN 0x0000FF00
|
|
#define BLUE 0x000000FF
|
|
|
|
#define CLIP_NEARZ -0.20f /* Clip Threshold */
|
|
|
|
typedef struct {
|
|
float x, y, z;
|
|
} float3;
|
|
|
|
typedef struct {
|
|
unsigned char b, g, r, a;
|
|
} colorui;
|
|
|
|
static inline void _glKosVertexCopy3f(float3 *src, float3 *dst) {
|
|
*dst = *src;
|
|
}
|
|
|
|
static inline GLfloat _glKosNearZClipMag(float3 *v1, float3 *v2) {
|
|
return ((CLIP_NEARZ - v1->z) / (v2->z - v1->z));
|
|
}
|
|
|
|
#endif
|