mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-29 07:41:47 +00:00
5fcfcd56b3
This commit includes the following changes: * When vid_fullscreen is 1, the game is now drawn centered in the screen instead of the top left corner, by modifying the viewport and scissor when drawing the world warp and UI render passes. * When vid_fullscreen is 1, the world view no longer has an incorrect size and/or aspect ratio. This was due to the world warp and UI render passes sampling from the whole color buffer instead of the restricted render area. To fix this, the postprocessing and world warp shaders now use unnormalized coordinates, corrected with the frame offset, and sample directly from the appropriate texels. * The game no longer outputs pixels which have not been written to, which are usually displayed black but may come out with undefined colors. For this, some output color attachments are cleared before drawing the final elements in the frame.
33 lines
899 B
GLSL
33 lines
899 B
GLSL
#version 450
|
|
#extension GL_ARB_separate_shader_objects : enable
|
|
|
|
layout(push_constant) uniform PushConstant
|
|
{
|
|
layout(offset = 68) float postprocess;
|
|
layout(offset = 72) float gamma;
|
|
layout(offset = 76) float scrWidth;
|
|
layout(offset = 80) float scrHeight;
|
|
layout(offset = 84) float offsetX;
|
|
layout(offset = 88) float offsetY;
|
|
} pc;
|
|
|
|
layout(set = 0, binding = 0) uniform sampler2D sTexture;
|
|
|
|
layout(location = 0) in vec2 texCoord;
|
|
layout(location = 0) out vec4 fragmentColor;
|
|
|
|
void main()
|
|
{
|
|
vec2 unnormTexCoord = texCoord * vec2(pc.scrWidth, pc.scrHeight) + vec2(pc.offsetX, pc.offsetY);
|
|
|
|
// apply any additional world-only postprocessing effects here (if enabled)
|
|
if (pc.postprocess > 0.0)
|
|
{
|
|
//gamma + color intensity bump
|
|
fragmentColor = vec4(pow(texture(sTexture, unnormTexCoord).rgb * 1.5, vec3(pc.gamma)), 1.0);
|
|
}
|
|
else
|
|
{
|
|
fragmentColor = texture(sTexture, unnormTexCoord);
|
|
}
|
|
}
|