FIxing the gamma correction for Quest, intoducing simple gpu lib conversion shaders

This commit is contained in:
Sam Gateau 2019-02-24 20:49:51 -08:00
parent 26ad42b965
commit 4ee2b43229
3 changed files with 6 additions and 26 deletions

View file

@ -1,23 +0,0 @@
// OpenGLDisplayPlugin_present.frag
LAYOUT(binding=0) uniform sampler2D colorMap;
layout(location=0) in vec2 varTexCoord0;
layout(location=0) out vec4 outFragColor;
float sRGBFloatToLinear(float value) {
const float SRGB_ELBOW = 0.04045;
return mix(pow((value + 0.055) / 1.055, 2.4), value / 12.92, float(value <= SRGB_ELBOW));
}
vec3 colorToLinearRGB(vec3 srgb) {
return vec3(sRGBFloatToLinear(srgb.r), sRGBFloatToLinear(srgb.g), sRGBFloatToLinear(srgb.b));
}
void main(void) {
outFragColor.a = 1.0;
// outFragColor.rgb = colorToLinearRGB(texture(colorMap, varTexCoord0).rgb);
outFragColor.rgb = pow(texture(colorMap, varTexCoord0).rgb, vec3(1.0 / 2.2));
}

View file

@ -1 +0,0 @@
VERTEX gpu::vertex::DrawUnitQuadTexcoord

View file

@ -23,7 +23,10 @@ float color_scalar_sRGBToLinear(float value) {
}
vec3 color_sRGBToLinear(vec3 srgb) {
return vec3(color_scalar_sRGBToLinear(srgb.r), color_scalar_sRGBToLinear(srgb.g), color_scalar_sRGBToLinear(srgb.b));
// return vec3(color_scalar_sRGBToLinear(srgb.r), color_scalar_sRGBToLinear(srgb.g), color_scalar_sRGBToLinear(srgb.b));
// Same as pow(value, 2.2)
return mix(pow((srgb + vec3(0.055)) / vec3(1.055), vec3(2.4)), srgb / vec3(12.92), vec3(lessThanEqual(srgb, vec3(0.04045))));
}
vec4 color_sRGBAToLinear(vec4 srgba) {
@ -38,7 +41,8 @@ float color_scalar_LinearTosRGB(float value) {
vec3 color_LinearTosRGB(vec3 lrgb) {
// Same as return pow(lrgb, 1/2.2)
return vec3(color_scalar_LinearTosRGB(lrgb.r), color_scalar_LinearTosRGB(lrgb.g), color_scalar_LinearTosRGB(lrgb.b));
// return vec3(color_scalar_LinearTosRGB(lrgb.r), color_scalar_LinearTosRGB(lrgb.g), color_scalar_LinearTosRGB(lrgb.b));
return mix(vec3(1.055) * pow(vec3(lrgb), vec3(0.41666)) - vec3(0.055), vec3(lrgb) * vec3(12.92), vec3(lessThan(lrgb, vec3(0.0031308))));
}
vec4 color_LinearTosRGBA(vec4 lrgba) {