aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GPU3D_OpenGL.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/GPU3D_OpenGL.cpp b/src/GPU3D_OpenGL.cpp
index ba9548e..72ce647 100644
--- a/src/GPU3D_OpenGL.cpp
+++ b/src/GPU3D_OpenGL.cpp
@@ -53,17 +53,18 @@ GLuint CurShaderID = -1;
GLuint FinalPassEdgeShader[3];
GLuint FinalPassFogShader[3];
+// std140 compliant structure
struct
{
- float uScreenSize[2];
- u32 uDispCnt;
+ float uScreenSize[2]; // vec2 0 / 2
+ u32 uDispCnt; // int 2 / 1
u32 __pad0;
- float uToonColors[32][4];
- float uEdgeColors[8][4];
- float uFogColor[4];
- float uFogDensity[34][4];
- u32 uFogOffset;
- u32 uFogShift;
+ float uToonColors[32][4]; // vec4[32] 4 / 128
+ float uEdgeColors[8][4]; // vec4[8] 132 / 32
+ float uFogColor[4]; // vec4 164 / 4
+ float uFogDensity[34][4]; // float[34] 168 / 136
+ u32 uFogOffset; // int 304 / 1
+ u32 uFogShift; // int 305 / 1
} ShaderConfig;
@@ -284,7 +285,7 @@ bool Init()
glGenBuffers(1, &ShaderConfigUBO);
glBindBuffer(GL_UNIFORM_BUFFER, ShaderConfigUBO);
- glBufferData(GL_UNIFORM_BUFFER, sizeof(ShaderConfig), &ShaderConfig, GL_STATIC_DRAW);
+ glBufferData(GL_UNIFORM_BUFFER, (sizeof(ShaderConfig) + 15) & ~15, &ShaderConfig, GL_STATIC_DRAW);
glBindBufferBase(GL_UNIFORM_BUFFER, 0, ShaderConfigUBO);