Parallel Lua Beta

Will ever GPGPU (Like CUDA / OpenCL / Vulkan or OpenGL compute shaders) be considered? I’m aware its not really viable / possible to implement on Roblox, but I cant stop thinking about all these amazing creations that advanced developers would be able to make with parallel GPU computing!

I understand, that’s why I said its easy to learn GLSL if you know C/C++, which is the official language for OpenGL/Vulkan/DirectX.

Actually, DirectX uses HLSL, so you would have to write two separate shaders.

I was talking about C++ being the “official language” for DirectX/Vulkan/OpenGL, but you are correct.

1 Like

To be honest, I wouldn’t really care if there were multiple shader languages, I just want shader code into roblox.

Did the ability to change properties while parallel ever get added? I would really love that. when dealing with a script that needs to change properties quite often, I swear I’m slowing down my code by having to un-parallel so often. Perhaps I’m putting them in the wrong places, but I genuinely have been losing performance on so much of my code when trying to make it work in parallel.

This is actively in development. For now ideally you would batch up all the changes you wanted to make, and then desynchronize once and make them all. Switching back and forth can incur a one frame (23ms) penalty, so it will slow you down if you do it a bunch.

4 Likes

That makes sense. I was actually trying to use it for something rendering every frame, which explains why it slowed me down - Syncing every frame basically nuked the performance. Oh well, I can wait.

Well, you may not care, but I’m sure other developers do.

Here would be a solution to the HLSL and GLSL coding problem: Make a section specifically for shaders in the toolbox, where people can take shaders that are coded by other people and use them in their game.

1 Like

Shaders are interesting to think about, but if they ever get implemented in Roblox it would be an entirely different project.

7 Likes

So is this a yes to shader code in the future? :eyes:

2 Likes

What about creating multiple script objects? If I have multiple scripts in my game, say, 3 different server scripts, is that considered multi-threading?

A script is the same as a coroutine. Only one coroutine can run at a time. If you want a better explanation, coroutines are an implementation of green threads.

So Roblox runs different scripts in a queue?

Roblox runs coroutines in a queue. A script just creates a new coroutine when ran.

1 Like

Thanks. That’s the kind of answer I wanted to hear.

I wish you guys changed how tables worked too right now they cause a lot of performance penalty if you heavily rely on them.

Example:
Something like checking a grid of blocks and finding which ones are touching into each other every time a block is deleted so you could put them into groups etc. literally freezes the entire server unless you implement something like MaybeYield in fact through some experimenting I found out ray casting for something like that is about 3 times faster when done correctly. :thinking:

@EthicalRobot

Do you think you could give your best estimate as to when this feature will be out of beta?

A couple of months? a year?

1 Like

I’m very interested in the implementation of the global container. How would access across multiple VMs work, and would things like metatables and table addresses stay the same?

Also, it would be amazing if we could manually create and manage threads from a single script. My games use a single-script architecture, meaning all of the logic is separated into modules called from a single script and local script. I know many others work the same way, however this wouldn’t work too well with the new actor system.