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::vec4 projectionParameters;
27 glm::vec4 clippingPlanes[6];
28 glm::uvec4 blueNoiseOffset;
29 glm::vec2 viewportOrigin;
30 glm::vec2 viewportSize;
31 glm::vec2 viewportSizeRcp;
32 float shadowDepthClamp;
33 float animationTime;
34 float exposure;
35 unsigned sceneFlags;
36 unsigned clientFlags;
37 float numEnvironmentRadianceMips;
38 float numEnvironmentIrradianceMips;
39 };
40
42 glm::mat4 clipFromView;
43 glm::mat4 clipFromWorld;
44 glm::mat4 viewFromWorld;
45 glm::mat4 viewFromClip;
46 glm::mat4 worldFromView;
47 glm::mat4 viewFromViewport;
48 };
49
51 {
52 glm::mat4 worldMatrix;
53 uint32_t objectId;
54 uint32_t _padding1;
55 uint32_t _padding2;
56 uint32_t _padding3;
57 };
58
60 {
61 glm::mat4 boneTransforms[256];
62 };
63
65 {
66 glm::vec4 lightPositions[kMaxLights];
67 glm::vec4 lightDirections[kMaxLights];
68 glm::vec4 lightColorIntensity[kMaxLights];
69 glm::vec4 lightParameters[kMaxLights];
70 uint32_t numLights[4];
71 glm::vec4 eyePosition;
72 glm::vec4 fogColor;
73 float fogDistance;
74 float fogAmount;
75 int fogEnabled;
76 float ambientIntensity;
77 glm::vec3 ambientColor;
78 float environmentBrightness;
79 float skyMultiplier;
80 int seaFlags;
81 int flags;
82 };
83
85 {
86 glm::vec4 cascadeLine;
87 glm::vec4 nearSplits;
88 glm::vec4 farSplits;
89 glm::mat4 lightMatrix[Cogs::Core::kMaxCascades];
90 float shadowSampleBias;
91 uint32_t numCascades;
92 int shadowsEnabled;
93 float texelSize;
94 };
95
97 {
98 glm::vec4 softShadowJitter[36]; // 36-tap samples in xy, 9-tap samples in zw.
99 ShadowData shadowData[kMaxLights];
100 glm::uvec4 cascadeOffsets[kMaxLights]; // hlsl array elements starts on 4*32-bit offsets.
101 };
102 }
103}
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
unsigned clientFlags
Application defined, camera specific flags.