Tachyon (current)  Current Main Branch
ac3dparse.h
Go to the documentation of this file.
1 /*
2  * ac3dparse.h - definitions for parsing ac3d modeler files
3  *
4  * (C) Copyright 1994-2022 John E. Stone
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * $Id: ac3dparse.h,v 1.9 2022/02/18 18:18:36 johns Exp $
8  *
9  */
10 
11 #define PARSENOERR 0
12 #define PARSEBADFILE 1
13 #define PARSEBADSUBFILE 2
14 #define PARSEBADSYNTAX 4
15 #define PARSEEOF 8
16 #define PARSEALLOCERR 16
17 
18 unsigned int ParseAC3D(char *, SceneHandle);
19 
20 #ifdef PARSE_INTERNAL
21 #define NUMTEXS 8192
22 #define TEXNAMELEN 24
23 
24 typedef float RotMat[3][3];
25 typedef float TransMat[3];
26 
27 typedef struct {
28  char name[TEXNAMELEN];
29  void * tex;
30 } texentry;
31 
32 typedef struct tri_list_t {
33  int v0; /* index of vertex 0 */
34  int v1; /* index of vertex 1 */
35  int v2; /* index of vertex 2 */
36  int smooth; /* smoothed or flat shaded flag */
37  int texnum; /* index of texture to use */
38  struct tri_list_t * next; /* pointer to next triangle */
39 } tri_list;
40 
41 typedef unsigned int errcode;
42 static errcode add_texture(void * tex, char name[TEXNAMELEN]);
43 
44 static void tlist_add_tri(tri_list ** tlist, int v0, int v1, int v2,
45  int smooth, int texnum);
46 static void tlist_delete(tri_list ** tlist);
47 static void clear_normals(apivector * normals, int numverts);
48 static void normalize(apivector * vec);
49 static void renormalize_normals(apivector * normals, int numverts);
50 static apivector tri_normal(apivector * v0, apivector * v1, apivector * v2);
51 static void gen_triangles(SceneHandle, tri_list * tlist, apivector * vertex,
52  apivector * normal);
53 static errcode GetMaterial(FILE *, SceneHandle);
54 static errcode GetString(FILE *, char *);
55 static errcode GetScenedefs(FILE *, SceneHandle);
56 static errcode GetScene(FILE *, SceneHandle);
57 static errcode GetObject(FILE *, SceneHandle);
58 #endif
59 
__host__ __device__ float3 normalize(const float3 &v)
Normalize input vector to unit length.
static errcode GetMaterial(FILE *dfile, SceneHandle scene)
Definition: ac3dparse.c:206
static errcode GetString(FILE *dfile, char *string)
Definition: ac3dparse.c:85
static void tlist_add_tri(tri_list **tlist, int v0, int v1, int v2, int smooth, int texnum)
Definition: ac3dparse.c:281
static errcode GetScenedefs(FILE *dfile, SceneHandle scene)
Definition: ac3dparse.c:141
static errcode add_texture(void *tex, char name[TEXNAMELEN])
Definition: ac3dparse.c:71
static void renormalize_normals(apivector *normals, int numverts)
Definition: ac3dparse.c:332
static void tri_normal(const tri *trn, const vector *hit, const ray *incident, vector *N)
Definition: triangle.c:302
static void tlist_delete(tri_list **tlist)
Definition: ac3dparse.c:296
static errcode GetScene(FILE *dfile, SceneHandle scene)
Definition: ac3dparse.c:189
void * SceneHandle
Definition: tachyon.h:51
static void clear_normals(apivector *normals, int numverts)
Definition: ac3dparse.c:312
unsigned int ParseAC3D(char *, SceneHandle)
Definition: ac3dparse.c:98
static void gen_triangles(SceneHandle scene, tri_list *tlist, apivector *vertex, apivector *normal)
Definition: ac3dparse.c:361
static errcode GetObject(FILE *dfile, SceneHandle scene)
Definition: ac3dparse.c:586