Renthyl Early Access w/ Gradle

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. :smiley:

repositories {
    maven {
        url "https://jitpack.io"
    }
}

dependencies {
    implementation "com.github.codex128:Renthyl:v1.2.4"
}

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. :wink:

12 Likes

Thanks for creating this!

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?

1 Like

A bloom pass is available in renthyl plus.

2 Likes

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.

Cool, I’ll wait till that is available on gradle

1 Like

That is really good to hear!

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.

1 Like

RenthylPlus has been deployed to Jitpack! I knew what to do this time so it didn’t take nearly as long to migrate to gradle.

dependencies {
    implementation 'com.github.codex128:RenthylPlus:v1.0.0'
}

It contains a lot of experimental features that likely don’t work, but all the filter stuff should work fine. Let me know if you have any problems.

Edit: I forgot to move over the correct test packages for 1.0.0, so I patched that up and released 1.0.1.

3 Likes