ocornut
55234f7dcf
(Breaking) Obsoleted style.AntiAliasedLinesUseTex which now only makes sense for legacy strokes. Added style.AntiAliasedLineEnds.
2026-09-07 16:24:06 +02:00
ocornut
6d73d52c3b
(Breaking) DrawList: removed ImDrawListFlags_in favor of using ImDrawFlags.
2026-09-07 16:24:05 +02:00
ocornut
f5da056195
DrawList: new ImDrawFlags API (yet unused in this commit)
2026-09-07 16:24:05 +02:00
ocornut
e1a77843e6
DrawList: inverted ImDrawFlags_NoAAEnds into ImDrawFlags_AAEnds.
2026-09-07 16:24:05 +02:00
ocornut
02c3ba796a
DrawList: fixed warnings, added macro to facilitate visualizing rounded corner texture usage.
2026-09-07 16:24:05 +02:00
Mikko Mononen
9c6b0aa8b6
DrawList: Optimize AddNgon()
...
- test overestimate before testing more expensive details when testing if stroked ngon is actualy filled
- Note: not a common function, but the test harness is using this to draw a triangle, which makes it show up in profiling
2026-09-07 16:24:05 +02:00
Mikko Mononen
d3f1dc8053
DrawList: Optimize AddRectFilled()
...
- detect and draw non-rounded non-AA rect with less branches and calculations
- improves new AddRectFilled() overhead from 30% to 5-10%
2026-09-07 16:24:05 +02:00
Mikko Mononen
70f9ef0649
DrawList: Optimize _SelectFringeTexture()
...
- store inverse line thickness in the spare texture uv component (same v was stord twice) to avoid division in _SelectFringeTexture
2026-09-07 16:24:05 +02:00
ocornut
82c2b2c500
DrawList: surround _GetStrokePos() in IM_MSVC_RUNTIME_CHECKS_OFF macro.
2026-09-07 16:24:05 +02:00
ocornut
3d94f04196
ImFontAtlas: moved TexUv buffers and configurable defines to internals.
2026-09-07 16:24:04 +02:00
Mikko Mononen
3f2b49facb
DrawList: Added some comments and amended existing ones
2026-09-07 16:24:04 +02:00
Mikko Mononen
b45c3cd7ad
DrawList: Revert texture selection to simple round() in _SelectFringeTexture
...
- revert texture selection to use just (inlined) round()
- the values were tuned to hide texture selection pops on small thickness
- since we're using super sampling for the problematic range, the tweaks are not necessayr anymore
2026-09-07 16:24:04 +02:00
Mikko Mononen
e1c20644ac
DrawList: No AA ends when line AA is disabled
2026-09-07 16:24:04 +02:00
Mikko Mononen
bd0f8bf544
DrawList: merged _AddPolyline back into AddPolyline.
...
- AddPolyline used to call different versions of _AddPolyline, the separation is not needed anymore, one less function call in debug mode
2026-09-07 16:24:04 +02:00
Mikko Mononen
6fa4cda363
DrawList: removed vertex offset overflow (for 16-bit ImDrawIdx support) handling.
...
This seems unnecessary for now.
2026-09-07 16:24:04 +02:00
Mikko Mononen
7a9a7a874e
DrawList: restored non-AA rendering mode.
...
- the ImDrawListFlags_AntiAliasedFill and ImDrawListFlags_AntiAliasedLines flags work again
- added non-AA rendering for polyline and convex poly filled
- do not use corner textures when AA is not used
- Add missing no-AA for single line case
2026-09-07 16:24:04 +02:00
Mikko Mononen
2fe9792b6d
DrawList: fixed overdraw of transparent rounded rectangles
...
- transition earlier to _AddRectTinyRounding() to avoid overdraw issues
2026-09-07 16:24:04 +02:00
Mikko Mononen
967ae9d240
DrawList: fixed baked corners to better match polyline corners
...
- added CalcArcStepAndCount() to calculate the step size consistently
- _AddRectTinyRounding: fixed stem placement with thin lines (clamping was needed for an older version of the function)
- _AddRectTinyRounding: fixed texture coordinates (uses if inner/outer were reversed)
- use polygon instead of circle when calculating baked corner rounds (the circle was more accurate but looked different size comparet to polyline)
2026-09-07 16:24:04 +02:00
Mikko Mononen
cdfcf0ea11
DrawList: added macro to have consistent check for rounding
...
- use macro to test if rounding value is worthy
- changed threshold to be a bit smaller (for smoother handling of small radius), and relative to fringe
2026-09-07 16:24:03 +02:00
Mikko Mononen
861c165d9f
Demo: added rounding slider+animate to allow better test range of rounding values.
2026-09-07 16:24:03 +02:00
Mikko Mononen
a79ac2d93a
DrawList: increase detailed line textures from 3px to 4px to better hide the texture change.
...
+ amend: align #defines.
2026-09-07 16:24:03 +02:00
Mikko Mononen
fb0bf39054
DrawList: fixed reserve counts in _AddPolyline().
2026-09-07 16:24:03 +02:00
ocornut
52241f3206
DrawList: Debug build optimizations: add non-template ImMin/ImMax/ImClamp for int/float to avoid missing out on IM_MSVC_RUNTIME_CHECKS_OFF.
2026-09-07 16:24:03 +02:00
ocornut
c45034a249
DrawList: Debug build optimizations: disable over zealous stack checks in PrimReserve, PrimUnreserve, PrimRect, PrimRectUV, PrimQuadUV, _CalculateCenterBiasedOffset, ImAlphaMultiply, _SelectFringeTexture
...
+ Undo inlined PrimRect() in AddRectFilled().
2026-09-07 16:24:03 +02:00
Mikko Mononen
bfb1c1aaa1
DrawList: added vertex offset 16-bit ImDrawIdx support for _AddPolyline
2026-09-07 16:24:03 +02:00
Mikko Mononen
50be4ac081
DrawList: improved worst case vertex count for AddConvexPolyFilled, convex polys can have only 2 bevels verts.
2026-09-07 16:24:03 +02:00
Mikko Mononen
9611090874
DrawList: fixed indices when AllowVtxOffset is on
...
- fix shape closing indices for AddPolyline and _AddRectTinyRounding
2026-09-07 16:24:03 +02:00
Mikko Mononen
b1cadec61a
DrawList: Optimization: added specialized 2 point polyline _AddLine().
2026-09-07 16:24:03 +02:00
Mikko Mononen
c87010bb7f
DrawList: added _InvFringeScale to use in cases of 1/_FringeScale.
2026-09-07 16:24:02 +02:00
Mikko Mononen
801cfdaa11
DrawList: minor render optimizations.
...
- Use inline array + AddPolyline/AddConvexPolyFilled for triangle and quad
- do less computation for detecting small shape rendering
- add IM_UNLIKELY for very unlikely branches
2026-09-07 16:24:02 +02:00
Mikko Mononen
9cdeccc0f6
DrawList: debug build optimizations.
...
- changed truncated tests to use macro, and inline the computation in debug builds (~15% was spent on calling the functions)
- inlined the common rectangle cases in AddRect() for debug build speed up
2026-09-07 16:24:02 +02:00
ocornut
9ee6e16ee1
DrawList: amends/review legacy stroke paths + minor tweaks.
2026-09-07 16:24:02 +02:00
ocornut
4d0afafb7b
DrawList: renamed ImDrawFlags_StrokeCenterAligned to ImDrawFlags_StrokeCenterBiased.
2026-09-07 16:24:02 +02:00
Mikko Mononen
261d1887bb
DrawList: Fixed vertex count calculation in_AddRectTinyRounding()
2026-09-07 16:24:02 +02:00
ocornut
af86c8e551
DrawList: skip PathLineTo/PathStroke calls for common AddLine() functions. (4091)
...
Rough numbers
Debug x64, 100k lines: 91.5->80 ms, 87->75.5 ms (NoAAEnds), 87->76 ms (Legacy)
Release x64, 300 lines: 25.2->25 ms, 22.2->18.3 ms (NoAAEnds), 22.2->19.3 ms (Legacy)
2026-09-07 16:24:02 +02:00
Mikko Mononen
e295d429be
DrawList: fixed out of bounds access of baked corner based on thickness
2026-09-07 16:24:02 +02:00
ocornut
c20c3aa5ef
Docs: update changelog.
2026-09-07 16:24:01 +02:00
ocornut
fafa147d2a
DrawList: use straight floats when possible in _AddRectTinyRounding().
2026-09-07 16:24:01 +02:00
ocornut
4b5224d2cb
DrawList: avoid using output references in _SelectFringeTexture() + misc tweaks, comments.
...
Matching coding style and more consistent for matching with other languages.
2026-09-07 16:24:01 +02:00
Mikko Mononen
7372d6ac95
DrawList: fixed thin lines appearing too bright.
...
- fixed how super sampled line textures are generated (and documented wrong assumption)
- switched to more samples and smaller thickness range
- tweaked super sampled texture selection to hide the texture changed better
2026-09-07 16:24:01 +02:00
Mikko Mononen
7fa09cf7f6
DrawList: extend the detailed stroke textures up stroke thickness 4.
2026-09-07 16:24:01 +02:00
ocornut
e6097985be
DrawList: AddQuad() defaults to ImDrawFlags_StrokeInside.
2026-09-07 16:24:01 +02:00
ocornut
92c4dd8670
Demo: fixed using Miter/Square/NoAAends checkboxes interfering with stroke mode. warnings.
...
Demo: update "Lines" demo to help diagnose brightness change.
2026-09-07 16:24:01 +02:00
Mikko Mononen
48be9f0231
DrawList: fixed visual pop in stroke rendering when thickness is between 1 and 2 pixels.
...
- added animated thickness to demo to make it easier to evaluate thickness visual progression
- added super sampled textures in thickness range [1..3] to avoid visual pop
2026-09-07 16:24:01 +02:00
Mikko Mononen
a94f8a4d53
DrawList: improved shape drawing input validation for thin shapes and small thickness.
2026-09-07 16:24:00 +02:00
Mikko Mononen
3096c3927a
DrawList: fixed and optimized _AddRectTinyRounding.
...
- fixed bug where fringe size was not properly applied in _AddRectTinyRounding
- optimized _AddRectTinyRounding to use less vertices
- changed _AddRectTinyRounding to use similar texturing logic as lines
- remove unused fractional line width texture
2026-09-07 16:24:00 +02:00
ocornut
deff9015ce
DrawList: Textured Round Corners: use same array for fill and strokes.
...
Feels like a little less book-keeping.
2026-09-07 16:24:00 +02:00
ocornut
3012bb7aec
DrawList: renamed ImDrawFlags_StrokeCenterPixelAligned to ImDrawFlags_StrokeCenterAligned.
2026-09-07 16:24:00 +02:00
ocornut
5b59b8ffb8
Demo: rework Custom Rendering's Primitives rendering. Fill + Stroke overlap.
...
Use {} style for ImVec2.
2026-09-07 16:24:00 +02:00
ocornut
d03240fecc
DrawList: wired AddPolylineLegacy() to g_LEGACY_STROKES. Fixed AddLine(), AddLineV(), AddLineH() legacy path.
2026-09-07 16:24:00 +02:00