mirror of
https://github.com/open-goal/jak-project
synced 2026-06-17 23:21:41 -04:00
40e2f113e6
## Problem OpenGOAL uses OpenGL 4.3. Apple stopped upgrading OpenGL after 4.1, so the way OpenGOAL currently works will never be playable on Macs using OpenGL. ## Solution Luckily, downgrading to OpenGL 4.1 is not a huge change (at least it doesn't seem like it to my untrained eyes). ## Changes * set hints for OpenGL 4.1 instead of 4.3 for __APPLE__ * skip the OpenGL debugging callback setup for macOS (requires 4.3) * bump down the version string for all shaders * stop using the `binding` layout qualifier in shader code * move the `flat` qualifier first (not sure if this is a 4.1 thing or just Macs being more strict) * don't mix signed and unsigned ints in shaders (not sure if this is a 4.1 thing or just Macs being more strict) * add some hacky CPP to the Shader constructor for binding texture units and bones buffers based on variable names in the shader code ## Results   
38 lines
1.0 KiB
GLSL
38 lines
1.0 KiB
GLSL
#version 410 core
|
|
|
|
layout (location = 0) in vec3 position_in;
|
|
|
|
uniform int clear_mode;
|
|
uniform float fog;
|
|
uniform vec4 perspective_x;
|
|
uniform vec4 perspective_y;
|
|
uniform vec4 perspective_z;
|
|
uniform vec4 perspective_w;
|
|
uniform vec4 hvdf_offset;
|
|
|
|
|
|
void main() {
|
|
if (clear_mode == 1) {
|
|
// this is just copied from shadow 1, needs revisiting.
|
|
gl_Position = vec4((position_in.x - 0.5) * 16., -(position_in.y - 0.5) * 32, position_in.z * 2 - 1., 1.0);
|
|
gl_Position.y *= SCISSOR_ADJUST;
|
|
} else {
|
|
vec4 transformed = -perspective_w;
|
|
transformed -= perspective_x * position_in.x;
|
|
transformed -= perspective_y * position_in.y;
|
|
transformed -= perspective_z * position_in.z;
|
|
transformed.xyz *= fog / transformed.w;
|
|
|
|
|
|
transformed.xyz += hvdf_offset.xyz;
|
|
transformed.xy -= (2048.);
|
|
transformed.z /= (8388608);
|
|
transformed.z -= 1;
|
|
transformed.x /= (256);
|
|
transformed.y /= -(128);
|
|
transformed.xyz *= transformed.w;
|
|
transformed.y *= SCISSOR_ADJUST * HEIGHT_SCALE;
|
|
gl_Position = transformed;
|
|
}
|
|
}
|