Using Renderling to render a big, complex, dynamic world. #140
Replies: 11 comments 15 replies
-
Here's an image from Sharpview. That's the kind of content I'm dealing with. You can walk into that shop and closely examine the objects on sale. |
Beta Was this translation helpful? Give feedback.
-
Tried loading the famous Bistro scene, from the Dropbox linked at https://www.reddit.com/r/godot/comments/gxccc9/been_playing_with_an_optimized_version_of_the/ Result:
|
Beta Was this translation helpful? Give feedback.
-
Thanks for your interest @John-Nagle. Though I've been working on
Shadow mapping is in the works, I should have an initial implementation by the end of the year. Reflections/mirrors aren't on the roadmap yet, but of course I'd like to have them. As far as your performance requirements - who knows?
I'm glad you're digging in! |
Beta Was this translation helpful? Give feedback.
-
See WGPU: Bindless tracking issue I wrote up how I think that should work. Comments appreciated. Probably more useful to comment at that issue. I update content from separate threads, not the rendering thread. So that kind of buffer separation and interlocking is needed. The big engines, like UE5, do this. |
Beta Was this translation helpful? Give feedback.
-
OK. So if we can get WGPU to support bindless, is there anything else needed to have multiple sized textures? This is looking encouraging. (Incidentally, my textures are always powers of 2 pixels, and range from 1 to to 2048x2048 pixels. The most common size is 256x256. Textures are sometimes not square. 256x512 is often used.) |
Beta Was this translation helpful? Give feedback.
-
Ah. Almost everything I have is bigger than Bistro, which, as noted above, won't currently fit into Renderling. Something needs a scale-up. Agree that we need to get WGPU to implement more bindless support. Or port to Vulkano instead of WGPU. |
Beta Was this translation helpful? Give feedback.
-
Any interest in switching from WGPU to Vulkano? Vulkano can do bindless. There's an egui integration for Vulkano now, so that's covered. MacOS support has been made to work for Vulkano, using MoltenVK. Vulkano has some spatial filtering functions to help with lights vs. objects culling. WGPU seems to lack that. You give up Android and web browser support, of course. But you can't do 3D game speed high-detail graphics on those platforms anyway. |
Beta Was this translation helpful? Give feedback.
-
Reading through the code. Some comments. Renderling notes John Nagle 2024-11-20Renderling is a new renderer in Rust, sitting above WGPU. It looks promising. Looking at the basic types. These are the main data structures. Most renderers have something roughly similar. Vertexhttps://github.com/schell/renderling/blob/main/crates/renderling/src/stage.rs#L99
The usual fields. The "joints" array seems to be an index into an array of joint transforms. This corresponds to Vertex in Rend3. Renderletrenderling/crates/renderling/src/stage.rs Line 200 in 61eecac
This corresponds to Object in Rend3. As with Rend3, dropping the Renderlet removes the item from the visible scene. Or so say the comments. Can't find a drop function for Renderlet, so that may not be implemented yet. Materialhttps://github.com/schell/renderling/blob/main/crates/renderling/src/pbr.rs#L32
This corresponds to Material in Rend3. AtlasTexturehttps://github.com/schell/renderling/blob/main/crates/renderling/src/atlas.rs#L38
} This corresponds to Texture in Rend3, but instead of being in a separate buffer, it's a place in a giant texture atlas texture. That needs to change for proper bindless operation. NestedTransformrenderling/crates/renderling/src/stage/cpu.rs Line 1024 in 61eecac
There's a hierarchy of transforms. Nodes contain an ID into an array of these. Misc. questions and notes
|
Beta Was this translation helpful? Give feedback.
-
Google just today announced their plans for WPGU in Chrome. WGPU has been sort of "Vulkan lite", and Google is preparing to add more mainstream Vulkan features. This includes two major performance fixes: Please take a look at that update. Eventually, WGPU has to support that. |
Beta Was this translation helpful? Give feedback.
-
WGPU seems to support bindless mode now. I think. At least on non-web platforms. Or so the WGPU people say. What's your take on that? I have a test program called render-bench which I use to test Rend3/WGPU. It basically generates a dummy city, then adds and removes buildings to see how that impacts timing. Is Renderling far enough along to try doing that? I'd like to have a shim which converts the Rend3 API to the Renderling API. Once all objects deallocate cleanly on drop, and textures can be any size, that should work. How far off is that? Thanks. |
Beta Was this translation helpful? Give feedback.
-
The WGPU situation for bindless is ... complicated. See the WGPU bindless tracking issue.
OK. Then I will hold off for now. A rough API spec would help. There aren't that many calls needed, really. Look at the Rend3 API. It's pretty simple. Three.js is more widely used and has a more complex API, but it's mostly the same thing underneath plus lots of convenience functions, such as draw_sphare, draw_torus, etc. You're already pretty close to the Rend3 API. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Let me describe what I'm doing, and ask if Renderling can get me there.
Here's some video from my Sharpview metaverse viewer. This is an all-new, all Rust client for Second Life and Open Simulator.
Four years of work so far. The graphics stack is Rend3 -> EGUI -> WGPU -> Vulkan.
Rend3 has been abandoned. I'm maintaining a copy, but it doesn't have much lighting, and has no environmental reflections. There are serious performance problems. Thus my interest in Renderling.
Renderling has much of what I need in a renderer. Here's what I need:
Features
Performance
Can Renderling potentiallty do this? If so, how far in the future? Thanks.
Beta Was this translation helpful? Give feedback.
All reactions