Cogs.Core
EffectBinding.h
1#pragma once
2
3#include "Rendering/Common.h"
4
5#include "Resources/Resources.h"
6#include "Resources/MaterialTypes.h"
7
8#include <unordered_map>
9#include <vector>
10
11namespace Cogs
12{
13 namespace Core
14 {
15 struct RenderEffect;
16
18 {
23
24
32
33 // used by es2
36
45 SamplerStateBindingHandle ambientIrradianceSamplerBinding = SamplerStateBindingHandle::NoHandle;
47
49
52 };
53
55 {
56 std::vector<ConstantBufferBindingHandle> bufferBindings;
57 uint16_t buffersGeneration = static_cast<uint16_t>(-1);
58 uint16_t generation = 0;
59 uint16_t effectGeneration = static_cast<uint16_t>(-1);
60
61 std::vector<TextureBindingHandle> textureBindings;
62 std::vector<SamplerStateBindingHandle> samplerBindings;
63
65
67
69 {
71 size_t offset;
73 Cogs::Core::ConstantBufferKey buffer;
74 };
75 std::vector<ConstantBufferVariable> constantBufferVariables;
76
77
79 {
80 EffectVariableHandle projectionMatrix;
81 EffectVariableHandle viewMatrix;
82 EffectVariableHandle inverseViewMatrix;
83 EffectVariableHandle inverseProjectionMatrix;
84 EffectVariableHandle worldToClipMatrix;
85 EffectVariableHandle viewFromiewportTMatrix;
86 EffectVariableHandle projectionParameters;
87 EffectVariableHandle viewport;
88 EffectVariableHandle clippingPlanesBinding;
89 } sceneBindings;
90
92 {
93 EffectVariableHandle lightTransforms;
94 EffectVariableHandle lightColors;
95 EffectVariableHandle numLights;
96 EffectVariableHandle eyePosition;
97 EffectVariableHandle fogColor;
98 EffectVariableHandle ambientColor;
99 } lightBindings;
100
102 {
103 EffectVariableHandle worldMatrix;
104 EffectVariableHandle objectData;
105 } objectBindings;
106
107 struct Buffer
108 {
109 BufferHandle handle;
110 size_t generation = 0;
111 };
112
113 RenderEffect * renderEffect = nullptr;
114 std::vector<Buffer> buffers;
115 };
116 }
117}
MaterialDataType
Defines available data types for material properties.
Definition: MaterialTypes.h:20
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
static const Handle_t NoHandle
Represents a handle to nothing.
Definition: Common.h:77