Fix WebGL gamma correction;

Ugh, WebGL doesn't have sRGB backbuffers.
This commit is contained in:
bjorn 2019-08-01 13:26:45 -07:00
parent d03d0a39ec
commit aab987dbef
2 changed files with 7 additions and 0 deletions

View File

@ -358,7 +358,9 @@ Color lovrGraphicsGetBackgroundColor() {
void lovrGraphicsSetBackgroundColor(Color color) {
state.backgroundColor = state.linearBackgroundColor = color;
#ifndef LOVR_WEBGL
gammaCorrect(&state.linearBackgroundColor);
#endif
}
void lovrGraphicsGetBlendMode(BlendMode* mode, BlendAlphaMode* alphaMode) {
@ -766,7 +768,9 @@ void lovrGraphicsFlushMesh(Mesh* mesh) {
}
void lovrGraphicsClear(Color* color, float* depth, int* stencil) {
#ifndef LOVR_WEBGL
if (color) gammaCorrect(color);
#endif
if (color || depth || stencil) lovrGraphicsFlush();
lovrGpuClear(state.canvas ? state.canvas : state.camera.canvas, color, depth, stencil);
}

View File

@ -94,6 +94,9 @@ const char* lovrShaderFragmentSuffix = ""
" colors(lovrColor, lovrDiffuseTexture, texCoord); \n"
"#else \n"
" lovrCanvas[0] = color(lovrColor, lovrDiffuseTexture, texCoord); \n"
#ifdef LOVR_WEBGL
" lovrCanvas[0].rgb = pow(lovrCanvas[0].rgb, vec3(.4545)); \n"
#endif
"#endif \n"
"}";