dreamcast/q3bsp/q3bsp_patch.hpp
Zack Buhman 7213d5f30d bezier: switch to quad-vector interpolation
This allows 20kdm2 to use bezier normals.
2025-04-28 20:43:13 -05:00

32 lines
814 B
C++

#pragma once
#include "math/bezier.hpp"
namespace q3bsp_patch {
constexpr int max_patch_count = 16; // 12
constexpr int max_surface_count = 32; // 20
constexpr int max_level = 5;
constexpr int level = 5;
constexpr int max_vertices_per_surface = (max_level + 1) * (max_level + 1);
constexpr int max_triangles_per_surface = max_level * max_level * 2;
constexpr int vertices_per_surface = (level + 1) * (level + 1);
constexpr int triangles_per_surface = level * level * 2;
void triangulate_patches(const void * bsp);
extern int patch_count;
using vertex_plm = bezier::vec_lmno<float, 3, 2, 2, 3>;
struct patch {
int face_ix;
int vertex_ix;
int triangle_ix;
};
extern vertex_plm patch_vertices[];
extern bezier::triangle patch_triangles[];
extern patch patches[];
}