Cogs.Core
ParameterBuffers.h
1#pragma once
2
3#include <glm/vec2.hpp>
4#include <glm/vec3.hpp>
5#include <glm/vec4.hpp>
6#include <glm/mat4x4.hpp>
7
8#include "Constants.h"
9
10#define COGS_SCENEFLAGS_NONE ( 0)
11#define COGS_SCENEFLAGS_OUTPUT_SRGB (1<<0)
12#define COGS_SCENEFLAGS_SUBMERGED (1<<1)
13
14namespace Cogs
15{
16 namespace Core
17 {
19 {
20 glm::mat4 projectionMatrix;
21 glm::mat4 viewMatrix;
22 glm::mat4 inverseViewMatrix;
23 glm::mat4 inverseProjectionMatrix;
24 glm::mat4 worldToClipMatrix;
25 glm::mat4 viewFromViewportMatrix;
26 glm::mat4 viewportFromViewMatrix;
27 glm::vec4 projectionParameters;
28 glm::vec4 clippingPlanes[6];
29 glm::vec4 originHigh;
30 glm::vec4 originLow;
31 glm::uvec4 blueNoiseOffset;
32 glm::vec2 viewportOrigin;
33 glm::vec2 viewportSize;
34 glm::vec2 viewportSizeRcp;
35 float shadowDepthClamp;
36 float animationTime;
37 float exposure;
38 unsigned sceneFlags;
39 unsigned clientFlags;
40 float numEnvironmentRadianceMips;
41 float numEnvironmentIrradianceMips;
42 };
43
45 glm::mat4 clipFromView;
46 glm::mat4 clipFromWorld;
47 glm::mat4 viewFromWorld;
48 glm::mat4 viewFromClip;
49 glm::mat4 worldFromView;
50 glm::mat4 viewFromViewport;
51 };
52
54 {
55 glm::mat4 worldMatrix;
56 uint32_t objectId;
57 uint32_t _padding1;
58 uint32_t _padding2;
59 uint32_t _padding3;
60 };
61
63 {
64 glm::mat4 boneTransforms[256];
65 };
66
68 {
69 glm::vec4 lightPositions[kMaxLights];
70 glm::vec4 lightDirections[kMaxLights];
71 glm::vec4 lightColorIntensity[kMaxLights];
72 glm::vec4 lightParameters[kMaxLights];
73 uint32_t numLights[4];
74 glm::vec4 eyePosition;
75 glm::vec4 fogColor;
76 float fogDistance;
77 float fogAmount;
78 int fogEnabled;
79 float ambientIntensity;
80 glm::vec3 ambientColor;
81 float environmentBrightness;
82 float skyMultiplier;
83 int seaFlags;
84 int flags;
85 };
86
88 {
89 glm::vec4 cascadeLine;
90 glm::vec4 nearSplits;
91 glm::vec4 farSplits;
92 glm::mat4 lightMatrix[Cogs::Core::kMaxCascades];
93 float shadowSampleBias;
94 uint32_t numCascades;
95 int shadowsEnabled;
96 float texelSize;
97 };
98
100 {
101 glm::vec4 softShadowJitter[36]; // 36-tap samples in xy, 9-tap samples in zw.
102 ShadowData shadowData[kMaxLights];
103 glm::uvec4 cascadeOffsets[kMaxLights]; // hlsl array elements starts on 4*32-bit offsets.
104 };
105 }
106}
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
unsigned clientFlags
Application defined, camera specific flags.