// The Digital Grove Codebase // Copyright (c) Ryan Fleury. All rights reserved. #ifndef RENDER_H #define RENDER_H //////////////////////////////// //~ rjf: Render Pass Parameters typedef struct R_PassParams R_PassParams; struct R_PassParams { Mat4x4F32 view; Mat4x4F32 projection; Vec3F32 keylight_dir; }; //////////////////////////////// //~ rjf: Render Resource Types typedef struct R_Material R_Material; struct R_Material { Vec4F32 color; }; typedef struct R_TriFace R_TriFace; struct R_TriFace { U16 idx[3]; }; //////////////////////////////// //~ rjf: Render Handles typedef struct R_BufferHandle R_BufferHandle; struct R_BufferHandle { UAddr uaddr[1]; }; typedef struct R_SubModelHandle R_SubModelHandle; struct R_SubModelHandle { UAddr uaddr[1]; }; //////////////////////////////// //~ rjf: Render Resources @per_platform function R_BufferHandle R_BufferHandleFromData(void *data, UAddr element_count, UAddr element_size); function R_SubModelHandle R_SubModelHandleFromBuffers(R_BufferHandle vtx_buffer, R_BufferHandle idx_buffer); //////////////////////////////// //~ rjf: Render Commands @per_platform function void R_Pass(R_PassParams *params); function void R_SubModel(R_SubModelHandle handle, R_Material material, Mat4x4F32 xform); #endif // RENDER_H