mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-28 07:48:37 -04:00
filter: Add built-in sRGB encoding filter
This commit is contained in:
parent
005d187ac4
commit
f7375e215e
@ -341,6 +341,11 @@ class CommonFilters:
|
|||||||
elif gamma != 1.0:
|
elif gamma != 1.0:
|
||||||
text += " o_color.rgb = pow(o_color.rgb, %ff);\n" % (gamma)
|
text += " o_color.rgb = pow(o_color.rgb, %ff);\n" % (gamma)
|
||||||
|
|
||||||
|
if ("SrgbEncode" in configuration):
|
||||||
|
text += " o_color.r = (o_color.r < 0.0031308) ? (o_color.r * 12.92) : (1.055 * pow(o_color.r, 0.41666) - 0.055);\n"
|
||||||
|
text += " o_color.g = (o_color.g < 0.0031308) ? (o_color.g * 12.92) : (1.055 * pow(o_color.g, 0.41666) - 0.055);\n"
|
||||||
|
text += " o_color.b = (o_color.b < 0.0031308) ? (o_color.b * 12.92) : (1.055 * pow(o_color.b, 0.41666) - 0.055);\n"
|
||||||
|
|
||||||
if ("Inverted" in configuration):
|
if ("Inverted" in configuration):
|
||||||
text += " o_color = float4(1, 1, 1, 1) - o_color;\n"
|
text += " o_color = float4(1, 1, 1, 1) - o_color;\n"
|
||||||
text += "}\n"
|
text += "}\n"
|
||||||
@ -547,6 +552,32 @@ class CommonFilters:
|
|||||||
return self.reconfigure((old_gamma != 1.0), "GammaAdjust")
|
return self.reconfigure((old_gamma != 1.0), "GammaAdjust")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def setSrgbEncode(self, force=False):
|
||||||
|
""" Applies the inverse sRGB EOTF to the output, unless the window
|
||||||
|
already has an sRGB framebuffer, in which case this filter refuses to
|
||||||
|
apply, to prevent accidental double-application.
|
||||||
|
|
||||||
|
Set the force argument to True to force it to be applied in all cases.
|
||||||
|
|
||||||
|
.. versionadded:: 1.10.7
|
||||||
|
"""
|
||||||
|
new_enable = force or not self.manager.win.getFbProperties().getSrgbColor()
|
||||||
|
old_enable = self.configuration.get("SrgbEncode", False)
|
||||||
|
if new_enable and not old_enable:
|
||||||
|
self.configuration["SrgbEncode"] = True
|
||||||
|
return self.reconfigure(True, "SrgbEncode")
|
||||||
|
elif not new_enable and old_enable:
|
||||||
|
del self.configuration["SrgbEncode"]
|
||||||
|
return new_enable
|
||||||
|
|
||||||
|
def delSrgbEncode(self):
|
||||||
|
""" Reverses the effects of setSrgbEncode. """
|
||||||
|
if ("SrgbEncode" in self.configuration):
|
||||||
|
old_enable = self.configuration["SrgbEncode"]
|
||||||
|
del self.configuration["SrgbEncode"]
|
||||||
|
return self.reconfigure(old_enable, "SrgbEncode")
|
||||||
|
return True
|
||||||
|
|
||||||
#snake_case alias:
|
#snake_case alias:
|
||||||
del_cartoon_ink = delCartoonInk
|
del_cartoon_ink = delCartoonInk
|
||||||
set_half_pixel_shift = setHalfPixelShift
|
set_half_pixel_shift = setHalfPixelShift
|
||||||
@ -555,7 +586,6 @@ class CommonFilters:
|
|||||||
del_inverted = delInverted
|
del_inverted = delInverted
|
||||||
del_view_glow = delViewGlow
|
del_view_glow = delViewGlow
|
||||||
set_volumetric_lighting = setVolumetricLighting
|
set_volumetric_lighting = setVolumetricLighting
|
||||||
del_gamma_adjust = delGammaAdjust
|
|
||||||
set_bloom = setBloom
|
set_bloom = setBloom
|
||||||
set_view_glow = setViewGlow
|
set_view_glow = setViewGlow
|
||||||
set_ambient_occlusion = setAmbientOcclusion
|
set_ambient_occlusion = setAmbientOcclusion
|
||||||
@ -566,3 +596,6 @@ class CommonFilters:
|
|||||||
del_blur_sharpen = delBlurSharpen
|
del_blur_sharpen = delBlurSharpen
|
||||||
del_volumetric_lighting = delVolumetricLighting
|
del_volumetric_lighting = delVolumetricLighting
|
||||||
set_gamma_adjust = setGammaAdjust
|
set_gamma_adjust = setGammaAdjust
|
||||||
|
del_gamma_adjust = delGammaAdjust
|
||||||
|
set_srgb_encode = setSrgbEncode
|
||||||
|
del_srgb_encode = delSrgbEncode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user