utility functions

This commit is contained in:
h4570
2022-08-17 00:19:16 +02:00
parent 4fb0ab3b6c
commit fea2398699
27 changed files with 419 additions and 247 deletions
@@ -11,7 +11,7 @@
#pragma once
#include <vector>
#include "./ee_clip_vertex.hpp"
#include "./planes_clip_vertex.hpp"
#include "debug/debug.hpp"
#include "renderer/renderer_settings.hpp"
@@ -21,30 +21,30 @@ struct EEClipAlgorithmSettings {
bool lerpNormals, lerpTexCoords, lerpColors;
};
class EEClipAlgorithm {
class PlanesClipAlgorithm {
public:
EEClipAlgorithm();
~EEClipAlgorithm();
PlanesClipAlgorithm();
~PlanesClipAlgorithm();
void init(const RendererSettings& settings);
u8 clip(EEClipVertex* o_vertices, EEClipVertexPtrs* i_vertices,
u8 clip(PlanesClipVertex* o_vertices, PlanesClipVertexPtrs* i_vertices,
const EEClipAlgorithmSettings& settings);
static float clipMargin;
private:
float halfWidth, halfHeight, near, far;
EEClipVertex* tempVertices;
PlanesClipVertex* tempVertices;
float getValueByPlane(const EEClipVertex& v, const int& plane);
float getValueByPlane(const PlanesClipVertex& v, const int& plane);
bool isInside(const int& plane, const float& v, const float& w,
const float& planeLimitValue);
/** @return clipped size */
u8 clipAgainstPlane(EEClipVertex* original, const u8& originalSize,
EEClipVertex* clipped, const int& plane,
u8 clipAgainstPlane(PlanesClipVertex* original, const u8& originalSize,
PlanesClipVertex* clipped, const int& plane,
const float& planeLimitValue,
const EEClipAlgorithmSettings& settings);
};
@@ -14,11 +14,11 @@
namespace Tyra {
struct EEClipVertex {
struct PlanesClipVertex {
Vec4 position, normal, st, color;
};
struct EEClipVertexPtrs {
struct PlanesClipVertexPtrs {
Vec4 *position, *normal, *st, *color;
};