GLSL Struct 1.4.0
glslstruct
Loading...
Searching...
No Matches
std430_layout_traits.hpp
1/*
2 * glslstruct - a C++ library designed to easily represent GLSL's Uniform Buffer Objects (UBOs) and Shader Storage Buffer Objects (SSBOs) in C++.
3 *
4 * Licensed under the BSD 3-Clause License with Attribution Requirement.
5 * See the LICENSE file for details: https://github.com/MAIPA01/glslstruct/blob/main/LICENSE
6 *
7 * Copyright (c) 2025, Patryk Antosik (MAIPA01)
8 */
9
10#pragma once
11#ifndef _GLSL_STRUCT_STD430_LAYOUT_TRAITS_HPP_
12 #define _GLSL_STRUCT_STD430_LAYOUT_TRAITS_HPP_
13
14 #include <glslstruct/config.hpp>
15
17_GLSL_STRUCT_ERROR("This is only available for c++17 and greater!");
18 #else
19
20 #include <glslstruct/layout/traits/contexts/layout_traits_contexts.hpp>
21 #include <glslstruct/utils/ValueType.hpp>
22
23namespace glslstruct {
24 /**
25 * @brief Std430 Layout additional context
26 * @ingroup layout_traits
27 */
30
31 /**
32 * @brief Std430 Layout traits
33 * @ingroup layout_traits
34 */
36 /// @brief std430 layout context type
38
39 /// @brief std430 layout scalar alignment
40 static size_t get_scalar_alignment(ValueType valueType, context_type& ctx) noexcept;
41
42 /// @brief std430 layout vec alignment
43 static size_t get_vec_alignment(ValueType valueType, size_t length, context_type& ctx) noexcept;
44
45 /// @brief std430 layout array alignment
46 static size_t get_array_alignment(size_t elemBaseAlignment, context_type& ctx) noexcept;
47
48 /// @brief std430 layout struct alignment
49 static size_t get_struct_alignment(const context_type& ctx) noexcept;
50
51 /// @brief std430 layout before_add action
52 static void before_add(size_t& currentOffset, context_type& ctx) noexcept;
53
54 /// @brief std430 layout after_add action
55 static void after_add(size_t&, size_t size, size_t alignment, context_type& ctx) noexcept;
56
57 /// @brief std430 layout after_add_struct action
58 static void after_add_struct(size_t& currentOffset, size_t size, size_t alignment, context_type& ctx) noexcept;
59 };
60} // namespace glslstruct
61
62 #endif
63#endif
#define _GLSL_STRUCT_HAS_CXX17
check if compiler has c++ version greater or equal to c++17
Definition config.hpp:130
Main namespace of glslstruct library.
Definition scalar_layout_traits.hpp:23
layout context which contains max alignment of all variables
Definition layout_traits_contexts.hpp:25
Std430 Layout additional context.
Definition std430_layout_traits.hpp:29
Std430 Layout traits.
Definition std430_layout_traits.hpp:35
static size_t get_array_alignment(size_t elemBaseAlignment, context_type &ctx) noexcept
std430 layout array alignment
Definition std430_layout_traits.cpp:31
static size_t get_struct_alignment(const context_type &ctx) noexcept
std430 layout struct alignment
Definition std430_layout_traits.cpp:35
static void before_add(size_t &currentOffset, context_type &ctx) noexcept
std430 layout before_add action
Definition std430_layout_traits.cpp:37
static size_t get_vec_alignment(ValueType valueType, size_t length, context_type &ctx) noexcept
std430 layout vec alignment
Definition std430_layout_traits.cpp:26
static void after_add(size_t &, size_t size, size_t alignment, context_type &ctx) noexcept
std430 layout after_add action
Definition std430_layout_traits.cpp:44
static size_t get_scalar_alignment(ValueType valueType, context_type &ctx) noexcept
std430 layout scalar alignment
Definition std430_layout_traits.cpp:22
std430_layout_context context_type
std430 layout context type
Definition std430_layout_traits.hpp:37
static void after_add_struct(size_t &currentOffset, size_t size, size_t alignment, context_type &ctx) noexcept
std430 layout after_add_struct action
Definition std430_layout_traits.cpp:48
layout context which contains alignment of last added struct
Definition layout_traits_contexts.hpp:39