ID:2829744
 
Resolved
Atoms drawn to a render target drew in an incorrect position within the slate if they had a screen_loc with one of the screen-edge keywords (e.g. LEFT, BOTTOM).
BYOND Version:514
Operating System:Windows 10 Pro 64-bit
Web Browser:Chrome 106.0.0.0
Applies to:Dream Seeker
Status: Resolved (515.1593)

This issue has been resolved.
Descriptive Problem Summary:

When using filters that use a render_source (layer, alpha mask), the render target is drawn in the wrong place on elements that are positioned with map relative screen locs like LEFT/TOP/BOTTOM/RIGHT. These filters are rendered correctly with absolute tile or pixel coordinates.

This bug was present in 514 as well as the latest beta build at time of writing (515.1592)

Compile the test project. Instructions should be above the test square.

The test square is a composite of three vis_contents objects. A base, a mask, and a layer:



The final composite image should look like this:



With relative screen locs, we wind up with inconsistent results. With absolute screen locs, we wind up with consistent results.

Bug reproduction environment
Lummox JR resolved issue with message:
Atoms drawn to a render target drew in an incorrect position within the slate if they had a screen_loc with one of the screen-edge keywords (e.g. LEFT, BOTTOM).
A workaround I discovered is for the main testobj to have KEEP_TOGETHER. The reason this works is that the other objects in its vis_contents don't inherit the screen_loc and therefore don't have the edge flags that break the render slate.