Euphoria
Main Page
Related Pages
Topics
Namespaces
Classes
Files
File List
File Members
libs
render
src
render
uniform_buffer.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
render/opengl_labels.h
"
4
5
namespace
eu
6
{
7
struct
m4;
8
}
9
10
namespace
eu::render
11
{
12
17
enum class
UniformType
18
{
19
invalid
,
20
bool_type
,
21
int_type
,
22
float_type
,
23
vec2
,
24
vec3
,
25
vec4
,
26
mat4
27
};
28
29
struct
UniformBufferSetup
30
{
31
int
size
= 512;
32
int
binding_point
= 1;
33
std::string
name
;
34
std::string
source
;
35
};
36
38
struct
CompiledUniformProp
39
{
40
int
offset
= -1;
41
UniformType
type
=
UniformType::invalid
;
42
int
array_count
= -1;
43
};
44
47
struct
UniformProp
48
{
49
CompiledUniformProp
*
target
;
50
UniformType
type
;
51
std::string
name
;
52
int
array_count
;
53
};
54
55
struct
UniformBufferCompiler
56
{
57
void
add
(
CompiledUniformProp
* target,
UniformType
type,
const
std::string& name,
int
array_count = 1);
58
59
[[
nodiscard
]]
60
UniformBufferSetup
compile
(
const
std::string& name,
int
binding_point)
const
;
61
62
std::vector<UniformProp>
props
;
63
};
64
65
struct
UniformBuffer
66
{
67
DEBUG_LABEL_EXPLICIT_MANY
UniformBuffer
(
DEBUG_LABEL_ARG_MANY
const
UniformBufferSetup
&
setup
);
68
~UniformBuffer
();
69
70
void
set_mat4
(
const
CompiledUniformProp
&
prop
,
const
m4
&
m
);
71
72
UniformBuffer
(
const
UniformBuffer
&) =
delete
;
73
void
operator=
(
const
UniformBuffer
&) =
delete
;
74
75
UniformBuffer
(
UniformBuffer
&&)
noexcept
;
76
UniformBuffer
&
operator
=(
UniformBuffer
&&)
noexcept
;
77
78
// clears the loaded buffer to a invalid buffer
79
void
unload
();
80
81
unsigned
int
id
;
82
};
83
84
struct
BoundUniformBuffer
85
{
86
explicit
BoundUniformBuffer
(
UniformBuffer
* b);
87
~BoundUniformBuffer
();
88
89
BoundUniformBuffer
(
const
BoundUniformBuffer
&) =
delete
;
90
BoundUniformBuffer
(
BoundUniformBuffer
&&) =
delete
;
91
void
operator=
(
const
BoundUniformBuffer
&) =
delete
;
92
void
operator=
(
BoundUniformBuffer
&&) =
delete
;
93
94
UniformBuffer
*
buffer
;
95
};
96
101
}
// namespace klotter
DEBUG_LABEL_ARG_MANY
#define DEBUG_LABEL_ARG_MANY
first debug label argument of many
Definition
opengl_labels.h:18
DEBUG_LABEL_EXPLICIT_MANY
#define DEBUG_LABEL_EXPLICIT_MANY
optional explicit for when the constructor only takes one more argument and needs to be explicit if t...
Definition
opengl_labels.h:20
eu::render::UniformType
UniformType
Definition
uniform_buffer.h:18
eu::render::UniformType::int_type
@ int_type
eu::render::UniformType::vec4
@ vec4
eu::render::UniformType::bool_type
@ bool_type
eu::render::UniformType::vec2
@ vec2
eu::render::UniformType::vec3
@ vec3
eu::render::UniformType::mat4
@ mat4
eu::render::UniformType::float_type
@ float_type
eu::render::UniformType::invalid
@ invalid
eu::render
Definition
blend.h:4
eu
Definition
assert.h:111
opengl_labels.h
eu::R
A (inclusive) range between two values.
Definition
range.h:19
eu::m4
4x4 matrix
Definition
mat4.h:19
eu::render::BoundUniformBuffer
Definition
uniform_buffer.h:85
eu::render::BoundUniformBuffer::BoundUniformBuffer
BoundUniformBuffer(BoundUniformBuffer &&)=delete
eu::render::BoundUniformBuffer::buffer
UniformBuffer * buffer
Definition
uniform_buffer.h:94
eu::render::BoundUniformBuffer::operator=
void operator=(const BoundUniformBuffer &)=delete
eu::render::BoundUniformBuffer::~BoundUniformBuffer
~BoundUniformBuffer()
eu::render::BoundUniformBuffer::BoundUniformBuffer
BoundUniformBuffer(const BoundUniformBuffer &)=delete
eu::render::BoundUniformBuffer::operator=
void operator=(BoundUniformBuffer &&)=delete
eu::render::BoundUniformBuffer::BoundUniformBuffer
BoundUniformBuffer(UniformBuffer *b)
eu::render::CompiledUniformProp
A compiled uniform buffer property that can be used in a shader.
Definition
uniform_buffer.h:39
eu::render::CompiledUniformProp::array_count
int array_count
Definition
uniform_buffer.h:42
eu::render::CompiledUniformProp::offset
int offset
Definition
uniform_buffer.h:40
eu::render::CompiledUniformProp::type
UniformType type
Definition
uniform_buffer.h:41
eu::render::UniformBufferCompiler
Definition
uniform_buffer.h:56
eu::render::UniformBufferCompiler::compile
UniformBufferSetup compile(const std::string &name, int binding_point) const
eu::render::UniformBufferCompiler::props
std::vector< UniformProp > props
Definition
uniform_buffer.h:62
eu::render::UniformBufferCompiler::add
void add(CompiledUniformProp *target, UniformType type, const std::string &name, int array_count=1)
eu::render::UniformBufferSetup
Definition
uniform_buffer.h:30
eu::render::UniformBufferSetup::binding_point
int binding_point
Definition
uniform_buffer.h:32
eu::render::UniformBufferSetup::size
int size
Definition
uniform_buffer.h:31
eu::render::UniformBufferSetup::name
std::string name
Definition
uniform_buffer.h:33
eu::render::UniformBufferSetup::source
std::string source
Definition
uniform_buffer.h:34
eu::render::UniformBuffer
Definition
uniform_buffer.h:66
eu::render::UniformBuffer::UniformBuffer
UniformBuffer(UniformBuffer &&) noexcept
eu::render::UniformBuffer::operator=
void operator=(const UniformBuffer &)=delete
eu::render::UniformBuffer::UniformBuffer
DEBUG_LABEL_EXPLICIT_MANY UniformBuffer(DEBUG_LABEL_ARG_MANY const UniformBufferSetup &setup)
eu::render::UniformBuffer::set_mat4
void set_mat4(const CompiledUniformProp &prop, const m4 &m)
eu::render::UniformBuffer::~UniformBuffer
~UniformBuffer()
eu::render::UniformBuffer::unload
void unload()
eu::render::UniformBuffer::UniformBuffer
UniformBuffer(const UniformBuffer &)=delete
eu::render::UniformProp
internal
Definition
uniform_buffer.h:48
eu::render::UniformProp::name
std::string name
Definition
uniform_buffer.h:51
eu::render::UniformProp::array_count
int array_count
Definition
uniform_buffer.h:52
eu::render::UniformProp::type
UniformType type
Definition
uniform_buffer.h:50
eu::render::UniformProp::target
CompiledUniformProp * target
Definition
uniform_buffer.h:49
Generated by
1.9.8