Coder Social home page Coder Social logo

scenerygraphics / scenery Goto Github PK

View Code? Open in Web Editor NEW
128.0 10.0 31.0 31.44 MB

Flexible VR Visualisation for Volumetric and Geometric Data on the Java VM, powered by Kotlin and Vulkan.

Home Page: https://scenery.graphics

License: GNU Lesser General Public License v3.0

Kotlin 93.40% GLSL 5.77% JavaScript 0.07% C 0.59% Java 0.08% Shell 0.05% Python 0.04%
visualisation rendering kotlin vulkan opengl java vr ar xr hacktoberfest

scenery's Issues

Fix non-renderloop leaks in VulkanRenderer

By virtue of lwjgl's DebugAllocator, these leaks are

	at graphics.scenery.backends.vulkan.VU$VU.setImageLayout(VU.kt:206)
	at graphics.scenery.backends.vulkan.VU$VU.setImageLayout(VU.kt:264)
	at graphics.scenery.backends.vulkan.VulkanBuffer.<init>(VulkanBuffer.kt:16)
	at graphics.scenery.backends.vulkan.VulkanBuffer.<init>(VulkanBuffer.kt:9)
	at graphics.scenery.backends.vulkan.VulkanCommandBuffer.<init>(VulkanCommandBuffer.kt:13)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer$VulkanFramebufferAttachment.<init>(VulkanFramebuffer.kt:39)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer$VulkanFramebufferAttachment.<init>(VulkanFramebuffer.kt:40)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer$VulkanFramebufferAttachment.<init>(VulkanFramebuffer.kt:44)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.<init>(VulkanFramebuffer.kt:25)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.<init>(VulkanFramebuffer.kt:26)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.<init>(VulkanFramebuffer.kt:27)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.addSwapchainAttachment(VulkanFramebuffer.kt:276)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createAttachment(VulkanFramebuffer.kt:50)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createRenderpassAndFramebuffer(VulkanFramebuffer.kt:314)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createRenderpassAndFramebuffer(VulkanFramebuffer.kt:323)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createRenderpassAndFramebuffer(VulkanFramebuffer.kt:333)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createRenderpassAndFramebuffer(VulkanFramebuffer.kt:343)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createRenderpassAndFramebuffer(VulkanFramebuffer.kt:363)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.createRenderpassAndFramebuffer(VulkanFramebuffer.kt:377)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.getAttachmentDescBuffer(VulkanFramebuffer.kt:298)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.getAttachmentImageViews(VulkanFramebuffer.kt:305)
	at graphics.scenery.backends.vulkan.VulkanFramebuffer.getBestDepthFormat(VulkanFramebuffer.kt:441)
	at graphics.scenery.backends.vulkan.VulkanObjectState$texturesToDescriptorSet$1.accept(VulkanObjectState.kt:71)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:26)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:31)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:42)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:46)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:51)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:57)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:62)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:67)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:85)
	at graphics.scenery.backends.vulkan.VulkanPipeline.<init>(VulkanPipeline.kt:91)
	at graphics.scenery.backends.vulkan.VulkanPipeline.addShaderStages(VulkanPipeline.kt:94)
	at graphics.scenery.backends.vulkan.VulkanRenderer$debugCallback$1.<init>(VulkanRenderer.kt:151)
	at graphics.scenery.backends.vulkan.VulkanRenderer$PresentHelpers.<init>(VulkanRenderer.kt:50)
	at graphics.scenery.backends.vulkan.VulkanRenderer$PresentHelpers.<init>(VulkanRenderer.kt:51)
	at graphics.scenery.backends.vulkan.VulkanRenderer$PresentHelpers.<init>(VulkanRenderer.kt:52)
	at graphics.scenery.backends.vulkan.VulkanRenderer$PresentHelpers.<init>(VulkanRenderer.kt:53)
	at graphics.scenery.backends.vulkan.VulkanRenderer$updateDefaultUBOs$1.accept(VulkanRenderer.kt:2348)
	at graphics.scenery.backends.vulkan.VulkanRenderer$updateDefaultUBOs$1.accept(VulkanRenderer.kt:45)
	at graphics.scenery.backends.vulkan.VulkanRenderer$windowSizeCallback$1.<init>(VulkanRenderer.kt:358)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:207)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:219)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:244)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:245)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:270)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:380)
	at graphics.scenery.backends.vulkan.VulkanRenderer.<init>(VulkanRenderer.kt:383)
	at graphics.scenery.backends.vulkan.VulkanRenderer.createDeviceAndGetGraphicsQueueFamily(VulkanRenderer.kt:1449)
	at graphics.scenery.backends.vulkan.VulkanRenderer.createDeviceAndGetGraphicsQueueFamily(VulkanRenderer.kt:1485)
	at graphics.scenery.backends.vulkan.VulkanRenderer.createVertexBuffers(VulkanRenderer.kt:1777)
	at graphics.scenery.backends.vulkan.VulkanRenderer.createVertexBuffers(VulkanRenderer.kt:1834)
	at graphics.scenery.backends.vulkan.VulkanRenderer.getPhysicalDevice(VulkanRenderer.kt:1412)
	at graphics.scenery.backends.vulkan.VulkanRenderer.initializeNode(VulkanRenderer.kt:544)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareRenderpassesFromConfig(VulkanRenderer.kt:1009)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareRenderpassesFromConfig(VulkanRenderer.kt:1020)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareRenderpassesFromConfig(VulkanRenderer.kt:972)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareStandardVertexDescriptors(VulkanRenderer.kt:788)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareStandardVertexDescriptors(VulkanRenderer.kt:799)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareStandardVertexDescriptors(VulkanRenderer.kt:816)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareStandardVertexDescriptors(VulkanRenderer.kt:835)
	at graphics.scenery.backends.vulkan.VulkanRenderer.prepareStandardVertexDescriptors(VulkanRenderer.kt:843)
	at graphics.scenery.backends.vulkan.VulkanRenderer.recordPostprocessRenderCommands(VulkanRenderer.kt:2263)
	at graphics.scenery.backends.vulkan.VulkanRenderer.render(VulkanRenderer.kt:1266)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$commandBufferBacking$1.invoke(VulkanRenderpass.kt:50)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$commandBufferCount$1.invoke(VulkanRenderpass.kt:63)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:68)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:69)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:70)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:71)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:72)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:73)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:74)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:75)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:76)
	at graphics.scenery.backends.vulkan.VulkanRenderpass$VulkanMetadata.<init>(VulkanRenderpass.kt:77)
	at graphics.scenery.backends.vulkan.VulkanRenderpass.<init>(VulkanRenderpass.kt:79)
	at graphics.scenery.backends.vulkan.VulkanRenderpass.initializeDefaultPipeline(VulkanRenderpass.kt:181)
	at graphics.scenery.backends.vulkan.VulkanRenderpass.initializePipeline(VulkanRenderpass.kt:187)
	at graphics.scenery.backends.vulkan.VulkanRenderpass.initializePipeline(VulkanRenderpass.kt:198)
	at graphics.scenery.backends.vulkan.VulkanShaderModule.<init>(VulkanShaderModule.kt:69)
	at graphics.scenery.backends.vulkan.VulkanShaderModule.<init>(VulkanShaderModule.kt:80)
	at graphics.scenery.backends.vulkan.VulkanShaderModule.<init>(VulkanShaderModule.kt:83)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.copyFrom(VulkanTexture.kt:79)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.copyFrom(VulkanTexture.kt:85)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.copyFrom(VulkanTexture.kt:87)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.copyFrom(VulkanTexture.kt:88)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.copyFrom(VulkanTexture.kt:89)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.transitionLayout(VulkanTexture.kt:46)
	at graphics.scenery.backends.vulkan.VulkanTexture$VulkanImage.transitionLayout(VulkanTexture.kt:53)
	at graphics.scenery.backends.vulkan.VulkanTexture.createImage(VulkanTexture.kt:110)
	at graphics.scenery.backends.vulkan.VulkanTexture.createImageView(VulkanTexture.kt:212)
	at graphics.scenery.backends.vulkan.VulkanTexture.createImageView(VulkanTexture.kt:221)
	at graphics.scenery.backends.vulkan.VulkanTexture.createSampler(VulkanTexture.kt:231)
	at graphics.scenery.controls.GLFWMouseAndKeyHandler$cursorCallback$1.<init>(GLFWMouseAndKeyHandler.kt:34)
	at graphics.scenery.controls.GLFWMouseAndKeyHandler$keyCallback$1.<init>(GLFWMouseAndKeyHandler.kt:47)
	at graphics.scenery.controls.GLFWMouseAndKeyHandler$mouseCallback$1.<init>(GLFWMouseAndKeyHandler.kt:75)
	at graphics.scenery.controls.GLFWMouseAndKeyHandler$scrollCallback$1.<init>(GLFWMouseAndKeyHandler.kt:99)

Some of these are however related to #42, as the debug allocator simply tracks allocs/deallocs within the same scope.

GPU stats for AMD and Intel chips, and not Windows-only

At the moment, GPU stats are only collected on Windows, with Nvidia cards (see https://github.com/scenerygraphics/scenery/blob/master/src/main/kotlin/graphics/scenery/utils/NvidiaGPUStats.kt)

This should be expanded to:

  • support AMD cards
  • support Intel integrated GPUs
  • work on Linux and Mac as well

For OSX, ioreg could be used to query performance data, see http://stackoverflow.com/questions/10110658/programmatically-get-gpu-percent-usage-in-os-x

Upgrade to non-snapshot dependencies

Current offenders are:

  • LWJGL (currently at version 3.1.1-SNAPSHOT, 3.1.1 release should arrive in the week before Xmas) moved to 3.1.1
  • spirvcrossj (currently at version 0.1-SNAPSHOT, release in preparation) moved to 0.2.4 with e63e3df
  • script-editor (at 0.1.1-SNAPSHOT) moved to 0.1.1
  • scripting-javascript (at 0.4.4-SNAPSHOT) moved to 0.4.3
  • ClearGL (currently at 2.0.0-SNAPSHOT, release in preparation) moved to 2.0.1

VectorField style PointCloud

This would be pretty useful for overlaying flow outputs, cell tracking trajectories, and such! Might be easier to do with 3D primitives like cones, but I leave it for consideration.

Creating too many nodes leads to potentially silent failure to allocate memory

Resulting in crashes like:

Caused by: com.jogamp.opengl.GLException: Caught GLException: GL_INVALID_OPERATION: Buffer for target 0x8892 not bound on thread main-FPSAWTAnimator#00-Timer0 at com.jogamp.opengl.GLException.newGLException(GLException.java:76) at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327) at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147) at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759) at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81) ... 4 more Caused by: com.jogamp.opengl.GLException: GL_INVALID_OPERATION: Buffer for target 0x8892 not bound at jogamp.opengl.GLBufferObjectTracker.createBufferStorage(GLBufferObjectTracker.java:164) at jogamp.opengl.gl4.GL4bcImpl.glBufferData(GL4bcImpl.java:40258) at scenery.backends.opengl.OpenGLRenderer.updateVertices(OpenGLRenderer.kt:1389) at scenery.backends.opengl.OpenGLRenderer.preDrawAndUpdateGeometryForNode(OpenGLRenderer.kt:582) at scenery.backends.opengl.OpenGLRenderer.render(OpenGLRenderer.kt:790) at scenery.backends.opengl.OpenGLRenderer.display(OpenGLRenderer.kt:245) at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692) at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674) at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443) at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)

This is just a hypothesis though

Screenshots!

Ability to write screenshots to file (and hopefully to ImageJ/ImgLib2 data structures)

Implement graphics quality options

The rendering quality in scenery should be adjustable. This could be achieved by e.g.

  • using different texture resolutions
  • using less/more samples for SSAO/SSDO
  • upscaling?
  • limiting the number of lights, giving them an importance weight

Add basic statistics

scenery should be able to inform the user about which operations take how much time.

AWT Canvas

If SceneryDefaultApplication is used and the target application is trying to embed within a JPanel, then Scenery needs to hand off a newtCanvasAWT.

ClearVolume has snippets for it already:

  • something like this is needed in SceneryDefaultApplication.main()

and i think a little more stuff is needed, but I'm still poking. I currently chopped main() up and made a separate function to begin the sleep thread at the end of main().

Prepare demo model download package

A package (zip file, or similar) including the models for the examples of scenery has to be created. For this, the licenses of the models have to be checked, and the models replaced if necessary. A suitable host for the file has to be found.

Custom colormaps

We have access to a bunch of colormaps as LUTs in ImageJ. It would be awesome if they could be loaded into Volumes.

Primitive cylinders

Primitive cylinders (and somewhat implicitly, cones) were a primitive type used in the old 3D viewer. Should be an easy addition, and it does provide a way of making arrows for 3D indicators (with a < and = ).

Shadows

axtimwalde brought this up, but I also vote for this one on the longer term for simulation renders.

Enable VR for scenery

In current master branch change true -> false in VulkanRenderer.kt and possibly OpenGLRenderer.kt in line:
ds.set("vr.Active", false)

However, in latter one it seems to be some problem - OpenGL renderer starts and allows to play with it a few seconds and then app crashes (in my case SponzaExample.kt test) or it still works on PC screen but not anymore on VR headset.

Windowing update is delayed

Sometimes the render dimensions do not match the window dimensions after a window resize event. This happens on both linux and osx

Object picker

It would be great to have the ability to take a screen coordinate corresponding to a mouse click and return the closest object that it hits (or possibly all objects along the line, which might be relevant if the user is rendering with transparency or wireframe).

Context menus

For 3D viewer functionality, customizable context menus are needed. This might not need to be within scenery, but it is related (also dependent on the object picker). We need to be able to add menu entries that bind to ops which may modify the selected object.

The majority of the examples don't run or show nothing

The landing page suggests to run the examples to dive into scenery. However the majority of the examples listed under src/test/tests/graphics/scenery/tests/examples don't run, lack resources or show nothing.

Imho the cave specific stuff is not so well suited as a beginner example, because most users are unlikely to own a cave. Some of the demos should have more documentation to indicate what is actually

  • ArcballTargetExample

Black window without any object

  • BileExample

Does not work. Relies on local resources like M:/meshes/adult_mouse_bile_canaliculi_network_2.stl

Unable to load native library: /private/var/folders/cl/j57y4y2504n1nnlyd4q41fj40000gp/T/vrpn-natives-tmp1381526963179001382/libjava_vrpn.dylib: dlopen(/private/var/folders/cl/j57y4y2504n1nnlyd4q41fj40000gp/T/vrpn-natives-tmp1381526963179001382/libjava_vrpn.dylib, 1): Library not loaded: /usr/local/opt/libusb/lib/libusb-1.0.0.dylib
  Referenced from: /private/var/folders/cl/j57y4y2504n1nnlyd4q41fj40000gp/T/vrpn-natives-tmp1381526963179001382/libjava_vrpn.dylib
  Reason: image not found
Did you include jvrpn-natives-mac in your dependencies?
[main] INFO VRPNTrackerInput - Initializing VRPN device DTrack at 10.1.2.201
/private/var/folders/cl/j57y4y2504n1nnlyd4q41fj40000gp/T/vrpn-natives-tmp1381526963179001382/libjava_vrpn.dylib: dlopen(/private/var/folders/cl/j57y4y2504n1nnlyd4q41fj40000gp/T/vrpn-natives-tmp1381526963179001382/libjava_vrpn.dylib, 1): Library not loaded: /usr/local/opt/libusb/lib/libusb-1.0.0.dylib
  Referenced from: /private/var/folders/cl/j57y4y2504n1nnlyd4q41fj40000gp/T/vrpn-natives-tmp1381526963179001382/libjava_vrpn.dylib
  Reason: image not found
Error initializing java_vrpn.
 -- Unable to find native library.
Error initializing remote device [email protected].
 -- Unable to find the right functions.  This may be a version problem.

java.lang.InstantiationException: vrpn.TrackerRemote.init(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z

	at vrpn.VRPNDevice.<init>(VRPNDevice.java:61)
	at vrpn.TrackerRemote.<init>(TrackerRemote.java:80)
	at graphics.scenery.controls.VRPNTrackerInput.initializeTracker(VRPNTrackerInput.kt:62)
	at graphics.scenery.controls.VRPNTrackerInput.setTrackerAddress(VRPNTrackerInput.kt:32)
	at graphics.scenery.controls.VRPNTrackerInput.<init>(VRPNTrackerInput.kt:49)
	at graphics.scenery.controls.TrackedStereoGlasses.<init>(TrackedStereoGlasses.kt:24)
	at graphics.scenery.tests.examples.BileExample.init(BileExample.kt:33)
	at graphics.scenery.SceneryDefaultApplication.main(SceneryDefaultApplication.kt:123)
	at graphics.scenery.tests.examples.BileExample.main(BileExample.kt:99)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

  • BloodCellsExample

works just great

  • BoxedProteinExample

odd output without visible protein, maybe because ORC6.obj is not part of demo data?

  • ClusterExample

does not work. same error as bile

  • CubeExample

works great

  • DemoReelExample

does not work. same error as bile

  • FontRenderingExample

works great

  • LineExample

works great

  • MultiBoxExample

just gray frame is shown

  • MultiBoxInstancedExample

just light source without any box

  • OpenVRExample

just black scene without objects
Edit: Has been removed

  • OrientationBoxesExample

does not work. same error as bile

  • PowerplantExample

Does not work because powerplant.obj is not part of scenery-demo-models

  • RungholtExample

Does not work because rungholt.obj is not part of scenery-demo-models

  • SponzaExample

does not work. same error as bile.

Also used path to sponza.obj is not the same as in scenery-demo-models
Edit: Fixed path.

  • TexturedArrowExample

Does look more like a Galgen, but fine otherwise
Edit: Has been removed

  • TexturedCubeExample

works great

  • TexturedCubeJavaExample

works great

  • TexturedCubeJavaJPanelExample

throws NPE

kotlin.KotlinNullPointerException
	at graphics.scenery.SceneryDefaultJPanelApplication.main(SceneryDefaultJPanelApplication.kt:82)
	at graphics.scenery.tests.examples.TexturedCubeJavaJPanelExample.testExample(TexturedCubeJavaJPanelExample.java:17)

Edit: Has been removed

  • VertexUpdateExample

just black frame

  • VolumeBoxExample

does not work. same error as bile
Edit: Will be removed

  • VolumeDrosoExample

does not work. same error as bile
Edit: Will be removed

  • VolumeExample

does not work. same error as bile
Edit: Updated in #74, example data will be added

  • VolumeHistoneExample

does not work. same error as bile
Edit: Will be removed

  • VRControllerExample

gray scene with light source. It's unclear what the demo is actually about.

My system is a 2016 macbook pro with "Radeon Pro 460 4096 MB + Intel HD Graphics 530 1536 MB"

Edit by @skalarproduktraum: Converted to task list

landing page link is dead

The link to "src/test/kotlin/scenery/examples" in the README is not correct, which makes it harder to find the examples.

X3D file I/O

It would be nice to be able to read/write entire scenes with the X3D standard (or another standard if more convenient). @kmader might want this one too.

Implement Vulkan renderer

A Vulkan renderer might be beneficial for the following reasons:

  • no state machine, might lend itself much better to interfacing with e.g. Clojure
  • several threads can feed the renderer, making distributed data sources easier
  • ... to be extended

Multi-threaded texture loading

Texture loading is currently only single-threaded, which lengthens loading times. This should be done in multiple parallel threads.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.