feat: implement better Colour Emulation
This commit is contained in:
parent
acddaf76aa
commit
4b7ef52a7a
|
@ -25,10 +25,10 @@ pub const Gui = struct {
|
||||||
// zig fmt: off
|
// zig fmt: off
|
||||||
const vertices: [32]f32 = [_]f32{
|
const vertices: [32]f32 = [_]f32{
|
||||||
// Positions // Colours // Texture Coords
|
// Positions // Colours // Texture Coords
|
||||||
1.0, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // Top Right
|
1.0, -1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // Top Right
|
||||||
1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, // Bottom Right
|
1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, // Bottom Right
|
||||||
-1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, // Bottom Left
|
-1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, // Bottom Left
|
||||||
-1.0, -1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // Top Left
|
-1.0, -1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, // Top Left
|
||||||
};
|
};
|
||||||
|
|
||||||
const indices: [6]u32 = [_]u32{
|
const indices: [6]u32 = [_]u32{
|
||||||
|
@ -236,7 +236,8 @@ pub const Gui = struct {
|
||||||
|
|
||||||
pub fn deinit(self: *Self) void {
|
pub fn deinit(self: *Self) void {
|
||||||
self.audio.deinit();
|
self.audio.deinit();
|
||||||
|
// TODO: Buffer deletions
|
||||||
|
gl.deleteProgram(self.program_id);
|
||||||
SDL.SDL_GL_DeleteContext(self.ctx);
|
SDL.SDL_GL_DeleteContext(self.ctx);
|
||||||
SDL.SDL_DestroyWindow(self.window);
|
SDL.SDL_DestroyWindow(self.window);
|
||||||
SDL.SDL_Quit();
|
SDL.SDL_Quit();
|
||||||
|
|
|
@ -1,13 +1,25 @@
|
||||||
#version 330 core
|
#version 330 core
|
||||||
out vec4 FragColor;
|
out vec4 frag_color;
|
||||||
|
|
||||||
in vec3 ourColor;
|
in vec3 color;
|
||||||
in vec2 TexCoord;
|
in vec2 uv;
|
||||||
|
|
||||||
// texture sampler
|
uniform sampler2D screen;
|
||||||
uniform sampler2D texture1;
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
FragColor = texture(texture1, TexCoord);
|
// https://near.sh/video/color-emulation
|
||||||
|
// Thanks to Talarubi + Near for the Colour Correction
|
||||||
|
// Thanks to fleur + mattrb for the Shader Impl
|
||||||
|
|
||||||
|
vec4 color = texture(screen, uv);
|
||||||
|
color.rgb = pow(color.rgb, vec3(4.0)); // LCD Gamma
|
||||||
|
|
||||||
|
frag_color = vec4(
|
||||||
|
pow(vec3(
|
||||||
|
0 * color.b + 50 * color.g + 255 * color.r,
|
||||||
|
30 * color.b + 230 * color.g + 10 * color.r,
|
||||||
|
220 * color.b + 10 * color.g + 50 * color.r
|
||||||
|
) / 255, vec3(1.0 / 2.2)), // Out Gamma
|
||||||
|
1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#version 330 core
|
#version 330 core
|
||||||
layout (location = 0) in vec3 aPos;
|
layout (location = 0) in vec3 pos;
|
||||||
layout (location = 1) in vec3 aColor;
|
layout (location = 1) in vec3 in_color;
|
||||||
layout (location = 2) in vec2 aTexCoord;
|
layout (location = 2) in vec2 in_uv;
|
||||||
|
|
||||||
out vec3 ourColor;
|
out vec3 color;
|
||||||
out vec2 TexCoord;
|
out vec2 uv;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
gl_Position = vec4(aPos, 1.0);
|
color = in_color;
|
||||||
ourColor = aColor;
|
uv = in_uv;
|
||||||
TexCoord = aTexCoord;
|
gl_Position = vec4(pos, 1.0);
|
||||||
}
|
}
|
Loading…
Reference in New Issue