Hey guys! After a lot of work, sweat, and tears, I have finally managed to migrate Renthyl, my frame graph rendering library, to a gradle build. I deployed version 1.2.4 early access to Jitpack today, and I was hoping people wouldn’t mind giving it a try.
Renthyl is compatible with jme3-core:3.8.0-alpha2 and up. alpha1 probably works, too, but I haven’t tried to build with it. Anything below 3.8 is not compatible.
The library is rather complicated, so I also whipped up some wiki pages on github. Hopefully it will cover the basics adequately enough for now.
I realize Renthyl is not very mature and is probably pretty buggy, so this is a lot to ask for. But, the more help I get with finding those bugs and refining the API, the sooner I can deploy the more fun stuff I’ve been working on. It also does wonders for my motivation, too.
I’m just having a play (I’ll test how it works with VR as well once I’ve gotten past the initial set up), plugging it in seems painless and I think it is all working (the SceneProcessors stop working as promised in the tutorial). Would I be correct in saying I need to write my own RenderPass to replace BloomFilter to produce glow effects?
Thanks for trying it out! Yes, at the moment you’d have to write your own bloom filter RenderPass. As @zzuegg mentioned, I did implement one in RenthylPlus, but I’ve only just started migrating that project to gradle.
I’ve now tried this in VR and it works great! Didn’t even need to make any changes to Tamarin, it can all be wired up from the outside. Really impressed with how clean this is! Great job to everyone involved!
I’ve done it like this:
public class Main extends SimpleApplication{
FrameGraph fg;
// Tamarin vr initialisation as normal
public Main(AppState... initialStates) {
super(initialStates);
}
@Override
public void simpleInitApp(){
Renthyl.initialize(this);
fg = Renthyl.forward(getAssetManager());
XrBaseAppState vrAppState = getStateManager().getState(XrBaseAppState.ID, XrBaseAppState.class);
xrAppState.setMainViewportConfiguration(vp -> {
vp.setPipeline(fg);
});
}
I.e. all Viewports share the same FrameGraph. (Relevant because VR has a viewport per eye)
That certainly works but I wanted to check that that was the right approach and I shouldn’t have one FrameGraph per viewport.
I’ll update the Tamarin docs on how to use alternative rendering pipelines
Yes, at the moment you’d have to write your own bloom filter RenderPass. As @zzuegg mentioned, I did implement one in RenthylPlus, but I’ve only just started migrating that project to gradle.
It is absolutely fine to have one FrameGraph control multiple viewports. I only would recommend avoiding using a really heavy main viewport FrameGraph to render the gui viewport, obviously.