Cogs.Core
GeometryProcessing.h
1#pragma once
2#include <atomic>
3#include <vector>
4#include <glm/glm.hpp>
5#include "Base.h"
6
7namespace Cogs::Core
8{
9 class Context;
10}
11
12namespace Cogs::Core::GeometryProcessing
13{
28 void COGSCORE_DLL_API uniqueVertexSubset(Context* context,
29 std::vector<uint32_t>& unique,
30 std::vector<uint32_t>& map,
31 const float * P,
32 const size_t P_stride,
33 const float* N,
34 const size_t N_stride,
35 const float * T,
36 const size_t T_stride,
37 const uint32_t Vn,
38 const float epsilon = std::numeric_limits<float>::epsilon());
39
40
41 void COGSCORE_DLL_API normalsFromIndexedTriangles(Context* context,
42 std::vector<glm::vec3>& N,
43 std::vector<uint32_t>& remap,
44 std::vector<uint32_t>& newIndices,
45 const float* P,
46 size_t P_stride, // byte-stride
47 const uint32_t Nv,
48 const uint32_t* indices,
49 const uint32_t Ni,
50 const float featureAngle = 0.7f,
51 const float protrusionAngle = 0.7f,
52 const bool flip = false);
53
54
55 void COGSCORE_DLL_API normalsFromIndexedTriangles(Context* context,
56 float* normals,
57 uint32_t normalStride,
58 const float* vertices,
59 uint32_t vertexStride,
60 const uint32_t numVertices,
61 const uint32_t* indices,
62 const uint32_t numIndices,
63 const uint32_t taskSize = 10000,
64 std::atomic<uint64_t>* elapsed_us = nullptr);
65
66}
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....