Ver código fonte

imgui_freetype: comments about correct blending and sRGB (#618, #578)

omar 7 anos atrás
pai
commit
cf6b39600b
2 arquivos alterados com 12 adições e 0 exclusões
  1. 6 0
      misc/freetype/README.md
  2. 6 0
      misc/freetype/imgui_freetype.cpp

+ 6 - 0
misc/freetype/README.md

@@ -17,6 +17,12 @@ ImGuiFreeType::BuildFontAtlas(io.Fonts, flags);
 io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);
 ```
 
+**Gamma Correct Blending**
+FreeType assumes blending in linear space rather than gamma space.
+See FreeType note for [FT_Render_Glyph](https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph).
+For correct results you need to be using sRGB and convert to linear space in the pixel shader output.
+The default imgui styles will be impacted by this change (alpha values will need tweaking).
+
 **Test code Usage**
 ```cpp
 #include "misc/freetype/imgui_freetype.h"

+ 6 - 0
misc/freetype/imgui_freetype.cpp

@@ -10,6 +10,12 @@
 // - v0.54: (2018/01/22) fix for addition of ImFontAtlas::TexUvscale member
 // - v0.55: (2018/02/04) moved to main imgui repository (away from http://www.github.com/ocornut/imgui_club)
 
+// Gamma Correct Blending:
+//  FreeType assumes blending in linear space rather than gamma space.
+//  See https://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_Render_Glyph
+//  For correct results you need to be using sRGB and convert to linear space in the pixel shader output.
+//  The default imgui styles will be impacted by this change (alpha values will need tweaking).
+
 // TODO:
 // - Output texture has excessive resolution (lots of vertical waste)
 // - FreeType's memory allocator is not overridden.