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"
|