Skip to content
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

Improvements for distributed rendering #505

Open
wants to merge 82 commits into
base: main
Choose a base branch
from
Open

Conversation

skalarproduktraum
Copy link
Member

@skalarproduktraum skalarproduktraum commented Nov 17, 2022

This PR improves scenery's behaviour when using distributed rendering. In particular:

  • launch behaviour on multiple machines is improved, with customiseable scripts defined on the master node
  • scene networking synchronisation has been substantially improved (thanks @moreApi 👍 )
  • screen resolution when using OpenGLSwapchain in quad-buffer stereo mode is now determined correctly
  • the distributed rendering examples have been improved

PowerOfNames and others added 30 commits October 4, 2022 16:40
…e, SwingBridgeFrame, TransferFunctionEditor.kt + example
…es, CTRL+Click on CP removes, changed volume path to local volume (for now)
…olume hitbox too big), dragging and clicking is conflicting with each other rn in the bridge
…in standard, RangeSlider.kt -KDoc, SwingBridgeFrame, SwingUINode, TFEditor -KDoc, minor code imprs, all mmopved into new package 'UI', TFEExample -KDoc, removed hardcoded path
@moreApi
Copy link
Member

moreApi commented Dec 7, 2022

depends on #491

# Conflicts:
#	build.gradle.kts
#	src/main/kotlin/graphics/scenery/SceneryBase.kt
#	src/main/kotlin/graphics/scenery/Settings.kt
#	src/main/kotlin/graphics/scenery/controls/DTrackTrackerInput.kt
#	src/main/kotlin/graphics/scenery/net/NodePublisher.kt
#	src/main/kotlin/graphics/scenery/ui/RangeSliderUI.kt
#	src/main/kotlin/graphics/scenery/ui/SwingBridgeFrame.kt
#	src/main/kotlin/graphics/scenery/volumes/TransferFunctionEditor.kt
#	src/main/kotlin/graphics/scenery/volumes/Volume.kt
#	src/main/kotlin/graphics/scenery/volumes/VolumeManager.kt
#	src/test/kotlin/graphics/scenery/tests/examples/volumes/TransferFunctionEditorExample.kt
#	src/test/kotlin/graphics/scenery/tests/unit/network/NodePublisherNodeSubscriberTest.kt
…: removing the code no one loved not even the IDE :.(
@moreApi moreApi changed the title Improvements for distributed rendering (WIP) Improvements for distributed rendering Oct 24, 2023
@moreApi moreApi self-assigned this Oct 24, 2023
Copy link
Member

@moreApi moreApi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@skalarproduktraum I commented on all things that look like they might affect regular scenery usage. There is still a bit of WIP code in the CAVE sections but IMO we have to work on this anyway and we need to finaly merge this branch. Also I fixed all codacy issues that seemed reasonable to me.

Most importantly have a look at this skip vs sceneGraphVisibility thing. I am not sure what happened here.

} else {
window.width
}
//val windowWidth = window.width
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clean up

0.0f, 1.0f, 0.5f, 0.0f)

glDrawBuffer(GL_BACK_RIGHT)
glClear(GL_COLOR_BUFFER_BIT)
glDisable(GL_DEPTH_TEST)

NVDrawVulkanImage.glDrawVkImageNV(images[presentedFrames.toInt() % bufferCount], 0,
0.0f, 0.0f, window.width.toFloat(), window.height.toFloat(), 0.0f,
0.0f, 0.0f, window.width.toFloat()/2.0f, window.height.toFloat(), 0.0f,
Copy link
Member

@moreApi moreApi Oct 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and Line 368: valid for normal rendering? OpenGL?

behaviourMap.put("gamepad_camera_control", GamepadRotationControl(listOf(Component.Identifier.Axis.Z, Component.Identifier.Axis.RZ)) { scene.findObserver() })
behaviourMap.put("gamepad_movement_control", GamepadMovementControl(listOf(Component.Identifier.Axis.X, Component.Identifier.Axis.Y)) { scene.findObserver() })
//behaviourMap.put("gamepad_camera_control", GamepadRotationControl(listOf(Component.Identifier.Axis.Z, Component.Identifier.Axis.RZ)) { scene.findObserver() })
behaviourMap.put("gamepad_movement_control", GamepadMovementControl(listOf(Component.Identifier.Axis.X, Component.Identifier.Axis.Y, Component.Identifier.Axis.Z)) { scene.findObserver() })
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is thi correct for non cave setup?

@@ -612,7 +612,7 @@ class VolumeManager(
renderStateUpdated = false
}

var repaint = true
var repaint = true // todo: variable is never modified
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see todo

bool vis = false;
intersectBoundingBox( wfront, wback, n, f );
f = min( tmax, f );
if ( n < f )
if ( n < f && skip == 0)
Copy link
Member

@moreApi moreApi Oct 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I forgot what we did this skip thing. During the merge there was something from main that looks like it would do the same as skip. I was called scenegraphvisibility or something like that. Therefore I deleted all mentioned of skip in the kotlin part. Now I see that scenegraphvisibility is not present at this position in the code. The volumes still run without skip beeing set. Though this bvv flickering we alse experienced at the girls and boys dat at HZDR is present.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Issue or PR discusses an enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants