Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_geo.hpp
Go to the documentation of this file.
1#pragma once
2#include "../foray_glm.hpp"
3#include "../foray_vma.hpp"
4#include "../foray_vulkan.hpp"
6#include <optional>
7#include <vector>
8
9namespace foray::scene {
10
13 {
15 Normal,
16 Tangent,
17 Uv
18 };
19
26
29 {
30 std::vector<VertexComponentBinding> Components;
31 uint32_t Binding = 0;
32 uint32_t NextLocation = 0;
33 uint32_t Stride = 0;
34
35 std::vector<VkVertexInputAttributeDescription> InputAttributes{};
36 std::vector<VkVertexInputBindingDescription> InputBindings{};
37 VkPipelineVertexInputStateCreateInfo InputStateCI{};
38
39 VertexInputStateBuilder& AddVertexComponentBinding(EVertexComponent component, std::optional<uint32_t> location = {});
40 VertexInputStateBuilder& SetStride(uint32_t stride) { Stride = stride; return *this; }
41 void Build();
42 };
43
45 struct Vertex
46 {
47 glm::vec3 Pos = {};
48 glm::vec3 Normal = {};
49 glm::vec3 Tangent = {};
50 glm::vec2 Uv = {};
51 };
52
53} // namespace foray::scene
Definition foray_animation.hpp:8
EVertexComponent
Vertex Components.
Definition foray_geo.hpp:13
Binding of component to shader input location.
Definition foray_geo.hpp:22
EVertexComponent Component
Definition foray_geo.hpp:23
uint32_t Location
Definition foray_geo.hpp:24
Helper for building a VkPipelineVertexInputStateCreateInfo struct.
Definition foray_geo.hpp:29
VertexInputStateBuilder & AddVertexComponentBinding(EVertexComponent component, std::optional< uint32_t > location={})
VertexInputStateBuilder & SetStride(uint32_t stride)
Definition foray_geo.hpp:40
uint32_t NextLocation
Definition foray_geo.hpp:32
uint32_t Binding
Definition foray_geo.hpp:31
std::vector< VkVertexInputBindingDescription > InputBindings
Definition foray_geo.hpp:36
std::vector< VkVertexInputAttributeDescription > InputAttributes
Definition foray_geo.hpp:35
uint32_t Stride
Definition foray_geo.hpp:33
VkPipelineVertexInputStateCreateInfo InputStateCI
Definition foray_geo.hpp:37
std::vector< VertexComponentBinding > Components
Definition foray_geo.hpp:30
Vertex.
Definition foray_geo.hpp:46
glm::vec2 Uv
Definition foray_geo.hpp:50
glm::vec3 Normal
Definition foray_geo.hpp:48
glm::vec3 Pos
Definition foray_geo.hpp:47
glm::vec3 Tangent
Definition foray_geo.hpp:49