Path: blob/main/RSDKv4/Scene3D.hpp
817 views
#ifndef DRAWING3D_H1#define DRAWING3D_H23#define VERTEXBUFFER_SIZE (0x1000)4#define FACEBUFFER_SIZE (0x400)56enum FaceFlags {7FACE_FLAG_TEXTURED_3D = 0,8FACE_FLAG_TEXTURED_2D = 1,9FACE_FLAG_COLORED_3D = 2,10FACE_FLAG_COLORED_2D = 3,11FACE_FLAG_FADED = 4,12FACE_FLAG_TEXTURED_C = 5,13FACE_FLAG_TEXTURED_C_BLEND = 6,14FACE_FLAG_3DSPRITE = 715};1617enum MatrixTypes {18MAT_WORLD = 0,19MAT_VIEW = 1,20MAT_TEMP = 2,21};2223struct Matrix {24int values[4][4];25};2627struct Vertex {28int x;29int y;30int z;31int u;32int v;33};3435struct Face {36int a;37int b;38int c;39int d;40uint color;41int flag;42};4344struct DrawListEntry3D {45int faceID;46int depth;47};4849extern int vertexCount;50extern int faceCount;5152extern Matrix matFinal;53extern Matrix matWorld;54extern Matrix matView;55extern Matrix matTemp;5657extern Face faceBuffer[FACEBUFFER_SIZE];58extern Vertex vertexBuffer[VERTEXBUFFER_SIZE];59extern Vertex vertexBufferT[VERTEXBUFFER_SIZE];6061extern DrawListEntry3D drawList3D[FACEBUFFER_SIZE];6263extern int projectionX;64extern int projectionY;65extern int fogColor;66extern int fogStrength;6768extern int faceLineStart[SCREEN_YSIZE];69extern int faceLineEnd[SCREEN_YSIZE];70extern int faceLineStartU[SCREEN_YSIZE];71extern int faceLineEndU[SCREEN_YSIZE];72extern int faceLineStartV[SCREEN_YSIZE];73extern int faceLineEndV[SCREEN_YSIZE];7475void SetIdentityMatrix(Matrix *matrix);76void MatrixMultiply(Matrix *matrixA, Matrix *matrixB);77void MatrixTranslateXYZ(Matrix *Matrix, int x, int y, int z);78void MatrixScaleXYZ(Matrix *matrix, int scaleX, int scaleY, int scaleZ);79void MatrixRotateX(Matrix *matrix, int rotationX);80void MatrixRotateY(Matrix *matrix, int rotationY);81void MatrixRotateZ(Matrix *matrix, int rotationZ);82void MatrixRotateXYZ(Matrix *matrix, short rotationX, short rotationY, short rotationZ);83#if !RETRO_REV0084void MatrixInverse(Matrix *matrix);85#endif86void TransformVertexBuffer();87void TransformVertices(Matrix *matrix, int startIndex, int endIndex);88void Sort3DDrawList();89void Draw3DScene(int spriteSheetID);9091void ProcessScanEdge(Vertex *vertA, Vertex *vertB);92void ProcessScanEdgeUV(Vertex *vertA, Vertex *vertB);9394#endif // !DRAWING3D_H959697