Vulkan API

In this forum we discuss the future of Ren'Py, both bug fixes and longer-term development. Pre-releases are announced and discussed here.
Post Reply
Message
Author
User avatar
vollschauer
Veteran
Posts: 231
Joined: Sun Oct 11, 2015 9:38 am
Github: vollschauer
Contact:

Vulkan API

#1 Post by vollschauer »

As you might notice yesterday the Khronos group releases the Vulkan 1.0 specification.
What do you think, would it bring any benefit to the engine if PyTom is going to implement that soon?
Maybe for the 7.0/7.1 Release ;) ?

Update:
Maybe someone could move that topic to "Development of Ren'Py"
Last edited by vollschauer on Wed Feb 17, 2016 5:35 am, edited 1 time in total.

User avatar
xela
Lemma-Class Veteran
Posts: 2481
Joined: Sun Sep 18, 2011 10:13 am
Contact:

Re: Vulkan API

#2 Post by xela »

Looks really complicated... it's one of those things only PyTom can really tell :)

(This should prolly be under dev section)
Like what we're doing? Support us at:
Image

User avatar
jack_norton
Lemma-Class Veteran
Posts: 4084
Joined: Mon Jul 21, 2008 5:41 pm
Completed: Too many! See my homepage
Projects: A lot! See www.winterwolves.com
Tumblr: winterwolvesgames
Contact:

Re: Vulkan API

#3 Post by jack_norton »

I saw that but I'm not sure exactly how many benefits would bring vs the current openGL implementation. But indeed only Pytom can say if it's worth it or not :)
follow me on Image Image Image
computer games

User avatar
PyTom
Ren'Py Creator
Posts: 16093
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Vulkan API

#4 Post by PyTom »

I don't see a huge advantage to using Vulkan.

From what I understand, Vulkan is designed to make sending commands to the GPU a lot faster. Ren'Py doesn't send a lot of commands to the GPU - we draw a lot of big quads, which consists of switching the texture, then sending the four corner points. I'll admit I haven't looked into it to closely, but I'd be surprised if the driver overhead on this is particularly large.

That doesn't mean Ren'Py's GPU performance couldn't be improved. Right now, we're basically compatible with OpenGL 1 - and moving to OpenGL 2+ would likely improve performance significantly. We could also benefit by reducing the amount of texture switching we do. And custom shaders are something I think nearly everybody wants.

But these are also possible - and in many cases, easier - on top of the current OpenGL stack, where the shader compiler is part of the driver and not an external tool. There's also the general issue that Ren'Py tends to target 5-10 year old computers, and requiring the latest-and-greatest hardware and drivers is contrary to that goal.

I'd also need to know if people are having framerate problems with Ren'Py. It's actually hard to measure framerate on Ren'Py, since we drop to 5fps when the screen is relatively static so as not to waste power. The new http://www.renpy.org/doc/html/other.htm ... _framerate function lets you boost that up if you want to do benchmarks.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
rabcor
Regular
Posts: 81
Joined: Sun Mar 17, 2013 3:07 pm
Projects: None (Need a programmer?)
Organization: Cestarian Games
Contact:

Re: Vulkan API

#5 Post by rabcor »

Ren'py is only 2D graphics after all, it's games are more often than not going to be software rendered (we don't have benchmarks yet to see how much if at all vulkan improves software rendering performance to some significant degree, although valve's dota 2 demo of iGPU running dota 2 on vulkan implied that it might actually be a significant improvement)

Better performance is always better, 2D graphics can be pretty sneaky with performance lags in such a way that it's significantly harder for devs to notice them than users.

However I think for Ren'py the most suitable graphics api would be OpenGL ES; besides vulkan it's the most portable one, and it performs extremely well if well written.

With engines like this where you want backwards compatibility with old hardware, it's not right to jump the gun on a new API. It would probably be the best practice to add experimental support for a new API (be that GL2 or GLES) while phasing the other one out, and then maybe if PyTom feels like it, implement experimental (and optional) vulkan support (who knows, might be good for experience).

I really would like to see GLES support, i've been hearing some complaints about performance when going outside traditonal VN territory (like minigames and RPG styled games)

User avatar
jack_norton
Lemma-Class Veteran
Posts: 4084
Joined: Mon Jul 21, 2008 5:41 pm
Completed: Too many! See my homepage
Projects: A lot! See www.winterwolves.com
Tumblr: winterwolvesgames
Contact:

Re: Vulkan API

#6 Post by jack_norton »

The only performance issues I have with Renpy for my non VN games (I have many!) are on mobile. On desktop, even if you have a 7-8 years old computer, you can run games smoothly enough. On mobile instead even an ipad mini shows sign of slowdowns. Luckily at the speed which the mobile replaces old HW with new more powerful one, I don't think won't be a problem for long :)
follow me on Image Image Image
computer games

User avatar
PyTom
Ren'Py Creator
Posts: 16093
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Vulkan API

#7 Post by PyTom »

rabcor wrote:Ren'py is only 2D graphics after all, it's games are more often than not going to be software rendered (we don't have benchmarks yet to see how much if at all vulkan improves software rendering performance to some significant degree, although valve's dota 2 demo of iGPU running dota 2 on vulkan implied that it might actually be a significant improvement)
An iGPU isn't software rendering, at least in any meaningful sense of the word. While Ren'Py still has a vestigial software renderer, nowadays it's mostly used to tell you your video hardware isn't working. Ren'Py uses OpenGL 2, OpenGL ES 2, or OpenGL 2 ES 2 over DirectX (via the ANGLE renderer) when any of that is available. (It can still use OpenGL 1 as well, but it gives a warning and doesn't support newer features.)
I really would like to see GLES support, i've been hearing some complaints about performance when going outside traditonal VN territory (like minigames and RPG styled games)
You need to be very specific about this. Newer versions of Ren'Py use GL, and the newest ones accelerate Screen Language in a way older game didn't. That being said, I think there are a lot of improvements that could be had on the OpenGL side before we need to consider Vulkan.
jack_norton wrote:The only performance issues I have with Renpy for my non VN games (I have many!) are on mobile. On desktop, even if you have a 7-8 years old computer, you can run games smoothly enough. On mobile instead even an ipad mini shows sign of slowdowns. Luckily at the speed which the mobile replaces old HW with new more powerful one, I don't think won't be a problem for long :)
Yeah, the problem with mobile is that a lot of it is under-specced, to the point where there's probably about an order-of-magnitude difference between the worst and best current hardware. It probably makes sense to use lighter UIs of the mobile side.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

Post Reply

Who is online

Users browsing this forum: Google [Bot]