VEX Engine
Retro looking game engine made in vulkan mostly because i wanted to understand it better.
Loading...
Searching...
No Matches
uniforms.hpp
Go to the documentation of this file.
1
6
7#pragma once
8#include <glm/glm.hpp>
9#include "limits.hpp"
10
11namespace vex {
13 struct alignas(256) SceneUBO {
15 alignas(16) glm::mat4 view;
17 alignas(16) glm::mat4 proj;
18
19 alignas(16) glm::vec4 ambientLight;
20 alignas(16) glm::vec4 sunLight;
21 alignas(16) glm::vec4 sunDirection;
22
23 alignas(8) glm::vec2 renderResolution;
24 alignas(8) glm::vec2 windowResolution;
25
26 alignas(4) float snapResolution;
27 alignas(4) float jitterIntensity;
29 alignas(4) int enablePS1Effects;
30
31 alignas(4) float time;
32 alignas(4) int frame;
33 alignas(4) float upscaleRatio;
34 alignas(4) float ambientLightStrength;
35
36 alignas(16) glm::vec4 fogColor = glm::vec4(0.0f);
37 alignas(16) glm::vec2 fogDistances;
38 };
39
41 struct alignas(16) Light {
42 glm::vec4 position = glm::vec4(0.0f); // w = radius
43 glm::vec4 color = glm::vec4(0.0f); // w = intensity
44 };
45
47 struct alignas(256) SceneLightsUBO {
48 alignas(4) uint32_t lightCount;
49 alignas(16) Light lights[MAX_DYNAMIC_LIGHTS]; // Light is already glm::vec4 position + glm::vec4 color
50 };
51
53 struct alignas(128) PushConstants {
54 alignas(16) glm::vec4 color;
55 alignas(16) glm::mat4 model;
56 alignas(4) int textureID = 0;
57 };
58
61 namespace PS1Effects {
62 constexpr int VERTEX_SNAPPING = 0x1;
63 constexpr int AFFINE_WARPING = 0x2;
64 constexpr int SCREEN_QUANTIZATION = 0x4;
65 constexpr int VERTEX_JITTER = 0x8;
66 constexpr int NTSC_ARTIFACTS = 0x10;
67 constexpr int GOURAUD_SHADING = 0x20;
68 constexpr int TEXTURE_QUANTIZATION = 0x40;
69 constexpr int SCREEN_DITHER = 0x80;
70 }
71}
This files defines global variables defining vulkan limits.
PS1Effects namespace for easier setting of them in push constant.
Definition uniforms.hpp:61
Light struct for shader.
Definition uniforms.hpp:41
Push constants, holds model information.
Definition uniforms.hpp:53
Scene lights uniform buffer object.
Definition uniforms.hpp:47
Scene uniform buffer object. Holds data that is bind once per scene.
Definition uniforms.hpp:13
glm::mat4 proj
Projection matrix.
Definition uniforms.hpp:17
int enablePS1Effects
contains multiple PS1Effects thanks to bitwise operations.
Definition uniforms.hpp:29
glm::mat4 view
View matrix.
Definition uniforms.hpp:15