Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions
subdivision.hh File Reference
#include <stdint.h>
#include "psyqo/primitives/common.hh"
#include "psyqo/vector.hh"
Include dependency graph for subdivision.hh:

Go to the source code of this file.

Classes

struct  psyqo::Subdivision::TexturedVertex
 A model-space vertex and its texture coordinates. More...
 

Namespaces

namespace  psyqo
 
namespace  psyqo::Subdivision
 Recursive polygon subdivision.
 

Enumerations

enum  psyqo::Subdivision::Edge : unsigned {
  psyqo::Subdivision::NoEdges = 0 , psyqo::Subdivision::EdgeAB = 1 << 0 , psyqo::Subdivision::EdgeBD = 1 << 1 , psyqo::Subdivision::EdgeCD = 1 << 2 ,
  psyqo::Subdivision::EdgeAC = 1 << 3 , psyqo::Subdivision::AllEdges = EdgeAB | EdgeBD | EdgeCD | EdgeAC
}
 Which edges of a quad lie on an outer boundary. More...
 

Functions

constexpr TexturedVertex psyqo::Subdivision::half (const TexturedVertex &a, const TexturedVertex &b)
 Midpoint of two vertices, in position and texture coordinates at once.
 
template<typename Decide , typename EmitQuad , typename EmitFill >
void psyqo::Subdivision::divideQuad (const TexturedVertex &a, const TexturedVertex &b, const TexturedVertex &c, const TexturedVertex &d, unsigned depth, unsigned edges, Decide &&decide, EmitQuad &&emitQuad, EmitFill &&emitFill)
 Recursively divide a quad, in three dimensions.