diff options
author | Ptolemy <ptolemy@lindenlab.com> | 2022-07-06 12:29:19 -0700 |
---|---|---|
committer | Ptolemy <ptolemy@lindenlab.com> | 2022-07-06 12:29:19 -0700 |
commit | 6369180eae30f2a4dfa7dc4a10149c632d69c4c3 (patch) | |
tree | aa92cdbaf3b6fa43dfffd8fda1b03b1e406cf403 /indra/newview/app_settings | |
parent | f49579ad25128b643f62115d9df249788d77d435 (diff) |
SL-17682 PBR: Fix Occlusion Roughness Metal not being in linear space; removes need for redundant linear/sRGB conversions.
Diffstat (limited to 'indra/newview/app_settings')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl | 5 | ||||
-rw-r--r-- | indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl | 7 |
2 files changed, 5 insertions, 7 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl index 6e96186c18..5072f16988 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pbropaqueF.glsl @@ -137,8 +137,9 @@ void main() col.rgb = vary_position.xyz; #endif + // See: C++: addDeferredAttachments(), GLSL: softenLightF frag_data[0] = vec4(col, 0.0); // Diffuse - frag_data[1] = vec4(spec.rgb, vertex_color.a); // Occlusion, Roughness, Metal + frag_data[1] = vec4(emissive, vertex_color.a); // PBR sRGB Emissive frag_data[2] = vec4(encode_normal(tnorm), vertex_color.a, GBUFFER_FLAG_HAS_PBR); // normal, environment intensity, flags - frag_data[3] = vec4(emissive,0); // Emissive + frag_data[3] = vec4(spec.rgb,0); // PBR linear packed Occlusion, Roughness, Metal. } diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index fbcc69586a..2bf2183f29 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -223,13 +223,13 @@ void main() // These values MUST be encoded with a linear transfer function. vec3 colorDiffuse = vec3(0); - vec3 colorEmissive = srgb_to_linear(texture2DRect(emissiveRect, tc).rgb); + vec3 colorEmissive = spec.rgb; // PBR sRGB Emissive. See: pbropaqueF.glsl vec3 colorSpec = vec3(0); // vec3 colorClearCoat = vec3(0); // vec3 colorSheen = vec3(0); // vec3 colorTransmission = vec3(0); - vec3 packedORM = spec.rgb; // Packed: Occlusion Roughness Metal + vec3 packedORM = texture2DRect(emissiveRect, tc).rgb; // PBR linear packed Occlusion, Roughness, Metal. See: pbropaqueF.glsl #if DEBUG_PBR_PACK_ORM0 packedORM = vec3(0,0,0); #endif @@ -323,21 +323,18 @@ void main() #endif #if DEBUG_PBR_METAL color.rgb = vec3(metal); - color.rgb = linear_to_srgb(color.rgb); #endif #if DEBUG_PBR_NORMAL_MAP color.rgb = diffuse.rgb; #endif #if DEBUG_PBR_OCCLUSION color.rgb = vec3(packedORM.r); - color.rgb = linear_to_srgb(color.rgb); #endif #if DEBUG_PBR_ORM color.rgb = packedORM; #endif #if DEBUG_PBR_ROUGH_PERCEPTUAL color.rgb = vec3(perceptualRough); - color.rgb = linear_to_srgb(color.rgb); #endif #if DEBUG_PBR_ROUGH_ALPHA color.rgb = vec3(alphaRough); |