From cde29d5a5af9608ec1ce5bbcd54f6088973a1557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Sat, 24 Aug 2024 20:09:41 +0200 Subject: [PATCH] pbr load as srgb + gamma correction tweaks --- engine/art/shaderlib/surface.glsl | 5 ++++- engine/joint/v4k.h | 4 ++-- engine/split/v4k_render.c | 4 ++-- engine/v4k.c | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/engine/art/shaderlib/surface.glsl b/engine/art/shaderlib/surface.glsl index d023270..fa2e931 100644 --- a/engine/art/shaderlib/surface.glsl +++ b/engine/art/shaderlib/surface.glsl @@ -209,9 +209,12 @@ surface_t surface() { float c = 2.43f; float d = 0.59f; float e = 0.14f; - vec3 color = clamp((x*(a*x+b))/(x*(c*x+d)+e), 0.0, 1.0); + // vec3 color = clamp((x*(a*x+b))/(x*(c*x+d)+e), 0.0, 1.0); + vec3 color = x / ( vec3(1.) + x ); // gamma correction + s.fragcolor.rgb = pow( color, vec3(1.0/2.2) ); + // s.fragcolor.rgb = pow(s.fragcolor.rgb, vec3(1.0/2.2) ); } #endif diff --git a/engine/joint/v4k.h b/engine/joint/v4k.h index e2555e2..115da4f 100644 --- a/engine/joint/v4k.h +++ b/engine/joint/v4k.h @@ -384602,8 +384602,8 @@ bool colormap( colormap_t *cm, const char *texture_name, bool load_as_srgb ) { FREE(cm->texture), cm->texture = NULL; } - // int srgb = load_as_srgb ? TEXTURE_SRGB : 0; - int srgb = 0; + int srgb = load_as_srgb ? TEXTURE_SRGB : 0; + // int srgb = 0; int hdr = strendi(texture_name, ".hdr") ? TEXTURE_FLOAT|TEXTURE_RGBA : 0; texture_t t = texture_compressed(texture_name, TEXTURE_LINEAR | TEXTURE_ANISOTROPY | TEXTURE_MIPMAPS | TEXTURE_REPEAT | hdr | srgb); diff --git a/engine/split/v4k_render.c b/engine/split/v4k_render.c index 8e21185..3715a8d 100644 --- a/engine/split/v4k_render.c +++ b/engine/split/v4k_render.c @@ -2945,8 +2945,8 @@ bool colormap( colormap_t *cm, const char *texture_name, bool load_as_srgb ) { FREE(cm->texture), cm->texture = NULL; } - // int srgb = load_as_srgb ? TEXTURE_SRGB : 0; - int srgb = 0; + int srgb = load_as_srgb ? TEXTURE_SRGB : 0; + // int srgb = 0; int hdr = strendi(texture_name, ".hdr") ? TEXTURE_FLOAT|TEXTURE_RGBA : 0; texture_t t = texture_compressed(texture_name, TEXTURE_LINEAR | TEXTURE_ANISOTROPY | TEXTURE_MIPMAPS | TEXTURE_REPEAT | hdr | srgb); diff --git a/engine/v4k.c b/engine/v4k.c index 614d353..8ce191c 100644 --- a/engine/v4k.c +++ b/engine/v4k.c @@ -19744,8 +19744,8 @@ bool colormap( colormap_t *cm, const char *texture_name, bool load_as_srgb ) { FREE(cm->texture), cm->texture = NULL; } - // int srgb = load_as_srgb ? TEXTURE_SRGB : 0; - int srgb = 0; + int srgb = load_as_srgb ? TEXTURE_SRGB : 0; + // int srgb = 0; int hdr = strendi(texture_name, ".hdr") ? TEXTURE_FLOAT|TEXTURE_RGBA : 0; texture_t t = texture_compressed(texture_name, TEXTURE_LINEAR | TEXTURE_ANISOTROPY | TEXTURE_MIPMAPS | TEXTURE_REPEAT | hdr | srgb);