Skip to content

Commit

Permalink
imgui_freetype: comments about correct blending and sRGB (#618, #578)
Browse files Browse the repository at this point in the history
  • Loading branch information
ocornut committed Feb 5, 2018
1 parent a33b86d commit cf6b396
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
6 changes: 6 additions & 0 deletions misc/freetype/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
6 changes: 6 additions & 0 deletions misc/freetype/imgui_freetype.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit cf6b396

Please sign in to comment.