candlewick 0.1.0
A renderer
Loading...
Searching...
No Matches
DefaultVertex.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace candlewick {
7
8struct alignas(16) DefaultVertex {
10 alignas(16) GpuVec3 normal;
11 alignas(16) GpuVec4 color;
12 alignas(16) GpuVec3 tangent;
13};
14static_assert(IsVertexType<DefaultVertex>, "");
15
16template <> struct VertexTraits<DefaultVertex> {
17 static auto layout() {
18 return MeshLayout{}
19 .addBinding(0, sizeof(DefaultVertex))
21 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3,
22 offsetof(DefaultVertex, pos))
24 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3,
25 offsetof(DefaultVertex, normal))
27 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT4,
28 offsetof(DefaultVertex, color))
30 SDL_GPU_VERTEXELEMENTFORMAT_FLOAT3,
31 offsetof(DefaultVertex, tangent));
32 }
33};
34
35} // namespace candlewick
This class defines the layout of a mesh's vertices.
Definition MeshLayout.h:98
constexpr MeshLayout & addAttribute(VertexAttrib loc, Uint32 binding, SDL_GPUVertexElementFormat format, Uint32 offset)
Add a vertex attribute.
Definition MeshLayout.h:123
MeshLayout & addBinding(Uint32 slot, Uint32 pitch)
Add a binding (i.e. a vertex binding) for the mesh.
Definition MeshLayout.h:111
Basic concept checking if type V has the correct layout and alignment requirements to be a vertex ele...
Definition MeshLayout.h:206
Definition Camera.h:8
@ Position
Definition MeshLayout.h:81
@ Tangent
Definition MeshLayout.h:83
@ Normal
Definition MeshLayout.h:82
@ Color0
Definition MeshLayout.h:85
Eigen::Matrix< float, 3, 1, Eigen::DontAlign > GpuVec3
Definition math_types.h:18
Eigen::Matrix< float, 4, 1, Eigen::DontAlign > GpuVec4
Definition math_types.h:19
Definition DefaultVertex.h:8
GpuVec3 normal
Definition DefaultVertex.h:10
GpuVec3 pos
Definition DefaultVertex.h:9
GpuVec4 color
Definition DefaultVertex.h:11
GpuVec3 tangent
Definition DefaultVertex.h:12
static auto layout()
Definition DefaultVertex.h:17
Definition MeshLayout.h:208