novelrt / NovelRT

A cross-platform 2D game engine accompanied by a strong toolset for visual novels.
MIT License
183 stars 43 forks source link

Add explicit Scissor Rect adjustment support to NovelRT render pipeline (`NovelRT::Graphics`) APIs. #524

Open RubyNova opened 1 year ago

RubyNova commented 1 year ago

Note: for support questions, please use the #engine-user-help channel in our Discord or create a discussion. This repository's issues are reserved for feature requests and bug reports.

What is the current behaviour? Currently I believe the only way a scissor rect gets generated is based on the context and state of the window, and probably other internal factors.

What is the expected behaviour/change? In addition to the current behaviour, there should be away to explicitly set a new scissor rect.

What is the motivation / use case for changing the behavior? Since this is additive, there shouldn't actually be any behavioural changes in the existing logic - just additive ones.

The current use case that inspired this feature proposal is that imgui actually requires it for removing certain artifacts from objects it generates. See this example for additional context.

Describe alternatives you've considered: There are no alternatives for this particular change as it is an explicit requirement of dependencies such as imgui.

Are there any potential roadblocks or challenges facing this change? Depending on how the scissor rect is handled internally this might result in additional blockers that surface in between where the scissor rect is actually utilised and where imgui needs to modify it.

Are there any downsides to implementing this change? Potential API creep given the fact that the scissor rect is currently completely internally managed.

Additional context N/A