-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Advanced rendering effects - filters, masks, box-shadows, gradients, and shaders #594
Commits on Jul 23, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 78db66c - Browse repository at this point
Copy the full SHA 78db66cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 05ec09b - Browse repository at this point
Copy the full SHA 05ec09bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b6f70ff - Browse repository at this point
Copy the full SHA b6f70ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for 607a8ce - Browse repository at this point
Copy the full SHA 607a8ceView commit details -
Configuration menu - View commit details
-
Copy full SHA for 679c615 - Browse repository at this point
Copy the full SHA 679c615View commit details -
Configuration menu - View commit details
-
Copy full SHA for 76b8556 - Browse repository at this point
Copy the full SHA 76b8556View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1be3e86 - Browse repository at this point
Copy the full SHA 1be3e86View commit details -
Add Filter class, to be used with the new 'filter' and 'backdrop-filt…
…er' properties Filters are implemented partially like decorators.
Configuration menu - View commit details
-
Copy full SHA for a5e3c7f - Browse repository at this point
Copy the full SHA a5e3c7fView commit details -
Configuration menu - View commit details
-
Copy full SHA for bafca42 - Browse repository at this point
Copy the full SHA bafca42View commit details -
Configuration menu - View commit details
-
Copy full SHA for faae241 - Browse repository at this point
Copy the full SHA faae241View commit details -
Make elements with 'filter' and 'backdrop-filter' properties create a…
… local stacking context
Configuration menu - View commit details
-
Copy full SHA for f6230b2 - Browse repository at this point
Copy the full SHA f6230b2View commit details -
Elements with 'filter' and 'backdrop-filter' properties now act as co…
…ntaining block for absolutely positioned elements
Configuration menu - View commit details
-
Copy full SHA for a5ddc1a - Browse repository at this point
Copy the full SHA a5ddc1aView commit details -
Configuration menu - View commit details
-
Copy full SHA for cb64ba4 - Browse repository at this point
Copy the full SHA cb64ba4View commit details -
Configuration menu - View commit details
-
Copy full SHA for ebc8b65 - Browse repository at this point
Copy the full SHA ebc8b65View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1d7b183 - Browse repository at this point
Copy the full SHA 1d7b183View commit details -
Configuration menu - View commit details
-
Copy full SHA for edcb854 - Browse repository at this point
Copy the full SHA edcb854View commit details -
Configuration menu - View commit details
-
Copy full SHA for 156d2bd - Browse repository at this point
Copy the full SHA 156d2bdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 17246f5 - Browse repository at this point
Copy the full SHA 17246f5View commit details -
Implement drop-shadow filter, integrate filter in GL3 renderer, and a…
…dd to effect sample
Configuration menu - View commit details
-
Copy full SHA for 19281fd - Browse repository at this point
Copy the full SHA 19281fdView commit details -
Configuration menu - View commit details
-
Copy full SHA for a30d3d5 - Browse repository at this point
Copy the full SHA a30d3d5View commit details -
Add geometry utility for creating background geometry on any target a…
…rea with border radius support
Configuration menu - View commit details
-
Copy full SHA for 3429285 - Browse repository at this point
Copy the full SHA 3429285View commit details -
Add clip mask to render interface, introduce render manager to keep t…
…rack of the render state - The clip mask can be rendered to using normal geometry, then during other render commands the clip mask should hide any contents outside its area. - Improved element clipping behavior: Handles more complicated cases, including nested transforms with hidden overflow, and clips to the curved edge of elements with border-radius. - Text culling now also considers the viewport and properly handles transforms. Previously, text was not rendered in some situations, or unnecessarily rendered outside the window. - Clip mask implemented in GL3 renderer using stencil buffer. - Added and modified visual tests for clipping behavior.
Configuration menu - View commit details
-
Copy full SHA for 69ea397 - Browse repository at this point
Copy the full SHA 69ea397View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4bfc80f - Browse repository at this point
Copy the full SHA 4bfc80fView commit details -
Add support for the 'box-shadow' property
- Allow textures to be saved from the current layer through render interface. - Implement GL3 support for saving textures. - Extend bounding box to include ink overflow from box shadows.
Configuration menu - View commit details
-
Copy full SHA for 655cd9a - Browse repository at this point
Copy the full SHA 655cd9aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 72c816f - Browse repository at this point
Copy the full SHA 72c816fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2dba53e - Browse repository at this point
Copy the full SHA 2dba53eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2338f2d - Browse repository at this point
Copy the full SHA 2338f2dView commit details -
Replace gradient decorator syntax 'gradient(horizontal|vertical ...)'…
… with 'horizontal-gradient(...)' and 'vertical-gradient(...)' [deprecation]
Configuration menu - View commit details
-
Copy full SHA for 556607d - Browse repository at this point
Copy the full SHA 556607dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 17f1d95 - Browse repository at this point
Copy the full SHA 17f1d95View commit details -
Improve PropertySpecification::ParsePropertyValues
- Allow splitting by comma - No escaping inside parenthesis - Enable quote mode inside parenthesis - Add unit tests
Configuration menu - View commit details
-
Copy full SHA for 0507e48 - Browse repository at this point
Copy the full SHA 0507e48View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1525fd7 - Browse repository at this point
Copy the full SHA 1525fd7View commit details -
Add 'linear-gradient' and 'repeating-linear-gradient' decorators
- New property parser for color stop lists. - Shorthand parser: Support for repeating, comma-separated patterns. - Supports most of CSS syntax: - Angle and 'to <direction>' syntax for direction. - Multiple color stops, locations in length or percentage units, up to two locations per color. - Hints and color interpolation methods are not supported. - Uses shader to draw the gradient. - GL3 renderer support.
Configuration menu - View commit details
-
Copy full SHA for b6efab1 - Browse repository at this point
Copy the full SHA b6efab1View commit details -
Allow decorators to specify paint area [breaking change]
Breaking change: 'Decorator::GenerateElementData()' has a new paint area parameter.
Configuration menu - View commit details
-
Copy full SHA for c3622e6 - Browse repository at this point
Copy the full SHA c3622e6View commit details -
Visual tests: Highlight differences when comparing to previous captur…
…e by holding shift key
Configuration menu - View commit details
-
Copy full SHA for 81ae0c8 - Browse repository at this point
Copy the full SHA 81ae0c8View commit details -
Add support for conic-gradient and radial-gradient, as well as their …
…repeating variations
Configuration menu - View commit details
-
Copy full SHA for 2f146f4 - Browse repository at this point
Copy the full SHA 2f146f4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5888497 - Browse repository at this point
Copy the full SHA 5888497View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5d52f71 - Browse repository at this point
Copy the full SHA 5d52f71View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0471ce7 - Browse repository at this point
Copy the full SHA 0471ce7View commit details -
Configuration menu - View commit details
-
Copy full SHA for c6f550d - Browse repository at this point
Copy the full SHA c6f550dView commit details -
Configuration menu - View commit details
-
Copy full SHA for ecaaefa - Browse repository at this point
Copy the full SHA ecaaefaView commit details -
Configuration menu - View commit details
-
Copy full SHA for aec3f2a - Browse repository at this point
Copy the full SHA aec3f2aView commit details -
Configuration menu - View commit details
-
Copy full SHA for ae8f2a4 - Browse repository at this point
Copy the full SHA ae8f2a4View commit details -
Configuration menu - View commit details
-
Copy full SHA for bdf5608 - Browse repository at this point
Copy the full SHA bdf5608View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9a00f2c - Browse repository at this point
Copy the full SHA 9a00f2cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 59146e9 - Browse repository at this point
Copy the full SHA 59146e9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 70bcdc7 - Browse repository at this point
Copy the full SHA 70bcdc7View commit details -
Configuration menu - View commit details
-
Copy full SHA for a064612 - Browse repository at this point
Copy the full SHA a064612View commit details -
Configuration menu - View commit details
-
Copy full SHA for 641f8b5 - Browse repository at this point
Copy the full SHA 641f8b5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7ae3bb3 - Browse repository at this point
Copy the full SHA 7ae3bb3View commit details -
Use premultiplied alpha for vertex colors
Introduce a new type for colors with premultiplied alpha.
Configuration menu - View commit details
-
Copy full SHA for c802aeb - Browse repository at this point
Copy the full SHA c802aebView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2f80bdd - Browse repository at this point
Copy the full SHA 2f80bddView commit details -
Configuration menu - View commit details
-
Copy full SHA for cfd963c - Browse repository at this point
Copy the full SHA cfd963cView commit details -
Configuration menu - View commit details
-
Copy full SHA for f4414b8 - Browse repository at this point
Copy the full SHA f4414b8View commit details
Commits on Aug 5, 2023
-
Postpone instancing named decorators until other decorators are insta…
…nced Previously, they were instanced the moment they were encountered in the style sheet parser. With this change, the render manager is always available at the time of instancing.
Configuration menu - View commit details
-
Copy full SHA for a076be2 - Browse repository at this point
Copy the full SHA a076be2View commit details
Commits on Oct 30, 2023
-
Refactor Geometry and Texture, introduce unique render resources
Unique render resources - Consist of a unique handle and a pointer to its render manger. - Automatically cleans up its underlying resource when out of scope. - Ensuring resources are always released in the correct render interface. - Geometry, CompiledShader, CompiledFilter and CallbackTexture, are now unique render resources. - All of which are constructed through the render manager. RenderManager - Now the owner of all resources constructed through the render interface. - Wraps all calls to the render interface, the interface should no longer be called directly. - Added back ability to use multiple render interfaces for separate contexts. - Each render interface is wrapped by a unique render manager. Geometry - Geometry is now a unique render resource. - Geometry is now constructed from a Mesh through the render manager. The mesh cannot be modified after it is submitted. However, it can be released to reuse its buffers, then resubmitted. - With this change, we can guarantee pointer stability of submitted vertex and index pointers, until the call to ReleaseCompiledGeometry. - Move texture out of Geometry, instead, a texture can be provided during the call to render. Mesh - Simple data structure, contains indices and vertices defining the mesh. - Meshes can be constructed directly or using MeshUtilities (previously GeometryUtilities). Texture - The render manager now owns and stores file textures. - File textures are released when the render manager is destroyed, during Rml::Shutdown. - Each render manager has its own texture database to lookup and reuse textures with the same path. - `Texture` is now simply a non-owning view and can be freely copied. - The user is responsible for ensuring validity of the underlying resource's lifetime. - `CallbackTexture` on the other hand is a unique render resource, automatically released when out of scope. - Can make a non-owning reference (Texture). - Handlers are available for managing texture sources for unknown or multiple render managers, generating references (Texture) as needed. - `TextureSource` for file textures and `CallbackTextureSource` for callback textures. StableVector - New container for stable indices which remain valid after entries are erased. Breaking changes - New procedure for generating geometry and textures (see above for details). - GeometryUtilities renamed to MeshUtilities.
Configuration menu - View commit details
-
Copy full SHA for a452f26 - Browse repository at this point
Copy the full SHA a452f26View commit details
Commits on Dec 25, 2023
-
Implement clip masks for the GL2 renderer
Implement compiled geometry to enable rendering clip masks. Takes advantage of the new guarantee that the pointers to vertices and indices are stable until the call to release.
Configuration menu - View commit details
-
Copy full SHA for ba35525 - Browse repository at this point
Copy the full SHA ba35525View commit details -
Configuration menu - View commit details
-
Copy full SHA for 90d2ef2 - Browse repository at this point
Copy the full SHA 90d2ef2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3176c85 - Browse repository at this point
Copy the full SHA 3176c85View commit details
Commits on Dec 26, 2023
-
Refactor render interface: Require compiled geometry, use modern and …
…safer types [breaking change] All geometry now requires compiling, the immediate geometry rendering call is removed for the following reasons: 1. Compiled geometry is required to use any of the new rendering features, including clip mask and shaders. 2. It simplifies the render interface, by removing a function that essentially provided a duplicate feature set. 3. This change enables us to make a clear distinction between required and optional functions. All required functions are now abstract, while optional functions are not. With recent changes, migrating from the immediate render function to using the compiled geometry functions, should be much less effort. Now the pointers to the geometry data (vertices and indices) are guaranteed to be available and immutable until the same geometry is released. Thus, users can simply store the views to this data, and reuse that during rendering. The signatures of several functions are changed: - The Span type is now used to represent contiguous data for improved usability and safety. - Texture load and generate now return the texture handle directly, to be consistent with the way geometry is compiled. The value zero is used to represent an empty texture, like before. - The scissor region now takes a Rectangle type for improved ergonomics. This is a breaking change for all users, and requires some minor adaptation in existing render interfaces. The changes to the backend renderers in this commit can be used as a reference for the change.
Configuration menu - View commit details
-
Copy full SHA for 5faedc4 - Browse repository at this point
Copy the full SHA 5faedc4View commit details -
Add a render interface adapter from the old interface to the newly re…
…factored interface This adapter is implemented to ease the transition to the new render interface, so that users can quickly adopt the new version of RmlUi. Then, users can iteratively migrate to the new interface as they see fit. There are also some comments that can help guide the migration. To use the adapter, simply derive from `Rml::RenderInterfaceCompatibility` instead of `Rml::RenderInterface`. Then submit the adapted interface to RmlUi, as demonstrated in the following: ``` #include <RmlUi/Core/RenderInterfaceCompatibility.h> class MyRenderInterface : public Rml::RenderInterfaceCompatibility { ... }; // During initialization of RmlUi, set the adapted render interface as follows. Rml::SetRenderInterface(my_render_interface.GetAdaptedInterface()); ``` See `Include/RmlUi/Core/RenderInterfaceCompatibility.h` for more details. This commit further adds the GL2 and GL3 renderers from RmlUi 5, using the compatibility adapter, for demonstrating and testing of the adapter. These can be selected by setting the CMake variable `SAMPLES_BACKEND` to `BackwardCompatible_GLFW_GL2` or `BackwardCompatible_GLFW_GL3`.
Configuration menu - View commit details
-
Copy full SHA for 8b292e1 - Browse repository at this point
Copy the full SHA 8b292e1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 94fda35 - Browse repository at this point
Copy the full SHA 94fda35View commit details
Commits on Dec 30, 2023
-
Configuration menu - View commit details
-
Copy full SHA for cbeea43 - Browse repository at this point
Copy the full SHA cbeea43View commit details
Commits on Dec 31, 2023
-
Use default log output also when there is no system interface installed
This ensures that log messages are submitted to the same stream output before and after installing the default provided system interface. In particular, the output from MSVC is given in its debug output.
Configuration menu - View commit details
-
Copy full SHA for ac8e1f2 - Browse repository at this point
Copy the full SHA ac8e1f2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5a27590 - Browse repository at this point
Copy the full SHA 5a27590View commit details
Commits on Feb 3, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 6e1d487 - Browse repository at this point
Copy the full SHA 6e1d487View commit details
Commits on Feb 5, 2024
-
Configuration menu - View commit details
-
Copy full SHA for ff65107 - Browse repository at this point
Copy the full SHA ff65107View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7335eed - Browse repository at this point
Copy the full SHA 7335eedView commit details -
Use RCSS syntax for color-string conversion, format colors using hexa…
…decimal notation
Configuration menu - View commit details
-
Copy full SHA for 7b359d5 - Browse repository at this point
Copy the full SHA 7b359d5View commit details -
Fix defender decorator from being rendered in invader samples
Add warning message when decorators generate invalid data handles
Configuration menu - View commit details
-
Copy full SHA for 144212b - Browse repository at this point
Copy the full SHA 144212bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b301702 - Browse repository at this point
Copy the full SHA b301702View commit details -
Configuration menu - View commit details
-
Copy full SHA for 13b60d1 - Browse repository at this point
Copy the full SHA 13b60d1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7b9d865 - Browse repository at this point
Copy the full SHA 7b9d865View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8dfba05 - Browse repository at this point
Copy the full SHA 8dfba05View commit details -
Configuration menu - View commit details
-
Copy full SHA for 742bbba - Browse repository at this point
Copy the full SHA 742bbbaView commit details -
Configuration menu - View commit details
-
Copy full SHA for c42d729 - Browse repository at this point
Copy the full SHA c42d729View commit details
Commits on Mar 4, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 011b3c1 - Browse repository at this point
Copy the full SHA 011b3c1View commit details
Commits on Mar 25, 2024
-
Make backdrop-filter be affected by any filter and mask-image applied…
… to the same element
Configuration menu - View commit details
-
Copy full SHA for b470b2b - Browse repository at this point
Copy the full SHA b470b2bView commit details -
Render interface: Make layer compositing a separate function instead …
…of being a part of layer pop The purpose of each function should now be more clear. With this change, we can now composite two arbitrary layers which simplifies some use cases of compositing. This commit also uses the changed interface to fix some artifacts when rendering back-drop filter blur combined with plain filter blur.
Configuration menu - View commit details
-
Copy full SHA for e96b950 - Browse repository at this point
Copy the full SHA e96b950View commit details
Commits on Mar 26, 2024
-
Configuration menu - View commit details
-
Copy full SHA for c93dbc0 - Browse repository at this point
Copy the full SHA c93dbc0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 37cf4d3 - Browse repository at this point
Copy the full SHA 37cf4d3View commit details