AcademySoftwareFoundation / AcademySoftwareFoundation/OpenRV

[Bug]: RVOverlay rendering diagonal line

Open
#1,311 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
C++
Stars
764
Forks
246
Avg merge
6d 12h
Merged PRs (30d)
13

Description

### What happened?

We use the `RVOverlay` node to make stereo floating windows, using similar property commands to those below. This worked as expected up through `RB-2.2.0-VFX2023`, but as of `RB-3.1.X-VFX2024` renders a diagonal line through the middle of the image.

I've confirmed the issue also exists in the latest OpenRV `main` branch, 4.0.0 (3f56ee12).

To reproduce:
1. `rv [ solid,red=1,green=1,blue=1,width=1920,height=1080.movieproc solid,red=1,green=1,blue=1,width=1920,height=1080.movieproc`
2. Open a python console, and execute the following commands:
```
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.eye", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_left.eye", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_left.windowActive", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.outlineActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_left.outlineActive", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.firstFrame", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_left.firstFrame", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowColor", [0.0, 0.0, 0.0, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.outlineColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.outlineColor", [0.13, 0.42, 0.58, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.pixelScale", commands.FloatType, 2)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.pixelScale", [1920.0, 804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowULx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowLLx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowURx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowLRx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowULy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowULy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowLLy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowLLy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowURy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowURy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.windowLRy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowLRy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_left.antialias", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_left.antialias", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.eye", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_right.eye", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_right.windowActive", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.outlineActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_right.outlineActive", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.firstFrame", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_right.firstFrame", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowColor", [0.0, 0.0, 0.0, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.outlineColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.outlineColor", [0.13, 0.42, 0.58, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.pixelScale", commands.FloatType, 2)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.pixelScale", [1920.0, 804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowULx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowLLx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowURx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowLRx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowULy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowULy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowLLy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowLLy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowURy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowURy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.windowLRy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowLRy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:DCinema_right.antialias", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:DCinema_right.antialias", [1], True)
commands.setFloatProperty("sourceGroup000000_sourceStereo.stereo.relativeOffset", [0.0], True)
commands.setFloatProperty("sourceGroup000000_sourceStereo.stereo.rightOffset", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.eye", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_left.eye", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_left.windowActive", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.outlineActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_left.outlineActive", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.firstFrame", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_left.firstFrame", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.windowColor", [0.0, 0.0, 0.0, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.outlineColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.outlineColor", [0.13, 0.42, 0.58, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.pixelScale", commands.FloatType, 2)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.pixelScale", [1920.0, 804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowULx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowLLx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowURx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowLRx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowULy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.windowULy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowLLy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.windowLLy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowURy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.windowURy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.windowLRy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_left.windowLRy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_left.antialias", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_left.antialias", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.eye", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_right.eye", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_right.windowActive", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.outlineActive", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_right.outlineActive", [0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.firstFrame", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_right.firstFrame", [1], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.windowColor", [0.0, 0.0, 0.0, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.outlineColor", commands.FloatType, 4)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.outlineColor", [0.13, 0.42, 0.58, 1.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.pixelScale", commands.FloatType, 2)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.pixelScale", [1920.0, 804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowULx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowLLx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowURx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowLRx", commands.FloatType, 1)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowULy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.windowULy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowLLy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.windowLLy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowURy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.windowURy", [804.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.windowLRy", commands.FloatType, 1)
commands.setFloatProperty("sourceGroup000000_overlay.window:HD_right.windowLRy", [0.0], True)
commands.newProperty("sourceGroup000000_overlay.window:HD_right.antialias", commands.IntType, 1)
commands.setIntProperty("sourceGroup000000_overlay.window:HD_right.antialias", [1], True)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowULx", [17.0], True)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowULx", [10.0], True)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_left.windowURx", [1910.0], True)
commands.setFloatProperty("sourceGroup000000_overlay.window:DCinema_right.windowURx", [1893.0], True)
```

The result will be a black line rendered diagonally through the center of the image:
Image

### List all the operating systems versions where this is happening

Linux RHEL 9.6

### On what computer hardware is this happening?

HP Z8 G4 workstation, nVidia NVIDIA RTX A6000, 40 cores (Intel Xeon Gold 6242R 3.1), 191 GB RAM

### Relevant console log output

```shell

```

### Environment variables

_No response_

### Extra information

_No response_

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct

Contributor guide

Open the contributing guide

Research direction

Start with the RVOverlay rendering path and reproduce the issue using the supplied rv command and Python console property commands on the current main branch. Compare the rendering with RB-2.2.0-VFX2023 and RB-3.1.X-VFX2024; done means the stereo floating-window image renders without the diagonal line.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
computer-graphics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.