cppast/src/refl/cpp/vertex.h

47 lines
1.1 KiB
C
Raw Normal View History

2024-04-29 14:58:45 +08:00
#pragma once
#include "math/vector3.h"
#include "math/vector2.h"
#include "meta.h"
// 顶点最多关联4个骨骼
#define MAX_NUM_BONES_PER_VERTEX 4
2024-04-21 21:44:53 +08:00
2024-04-29 14:58:45 +08:00
namespace engineapi {
struct Vertex {
};
struct PosVertex {
using MyMetas = class PosVertex_MultyMeta;
UPROPERTY_vk({}, VertexMeta{ VK_FORMAT_R32G32B32_SFLOAT })
Vector3 Position = {};
};
struct TexVertex : public Vertex {
using MyMetas = class TexVertex_MulytMeta;
UPROPERTY_vk({}, VertexMeta{ VK_FORMAT_R32G32B32_SFLOAT })
Vector3 Position = {};
UPROPERTY_vk()
Vector3 Normal = {};
UPROPERTY_vk()
Vector2 TexCoords = {};
};
struct BoneVertex : public Vertex
{
using MyMetas = class BoneVertex_MulytMeta;
UPROPERTY_vk({}, VertexMeta{ VK_FORMAT_R32G32B32_SFLOAT })
Vector3 Position = {};
UPROPERTY_vk()
Vector2 TexCoords = {};
UPROPERTY_vk()
Vector3 Normal = {};
UPROPERTY_vk()
Vector3 Tangent = {};
// 骨骼蒙皮数据
UPROPERTY_vk()
float Weights[MAX_NUM_BONES_PER_VERTEX] = {};
UPROPERTY_vk()
uint32_t BoneIDs[MAX_NUM_BONES_PER_VERTEX] = {};
UFUNCTION_vk({1,2},"hello")
void AddBoneData(uint32_t boneID, float weight);
};
2024-04-26 19:22:14 +08:00
};
2024-04-29 14:58:45 +08:00
#include "vertex_gen.inl"