wave-harmonic / crest

A class-leading water system implemented in Unity
MIT License
3.51k stars 476 forks source link

Lightweight Render Pipeline support? #49

Closed No-Half-Measures closed 5 years ago

No-Half-Measures commented 6 years ago

I'm sure your well aware that this doesn't work on the lightweight render pipeline but do you have any plans to support it?

huwb commented 6 years ago

Thanks for getting in touch! I have not considered any non-vanilla render pipelines, but i put a bit of thought/research into it now.

Browsing through the LRP doc, it seems to cover all of the features Crest needs. I'm guessing whats broken is the hooks which attached to specific camera events that don't fire anymore.

In anticipation of supporting this kind of thing in the future, I'm looking at extracting all scheduling/hook attachments into a single place which can be overridden: #50

For now though, to actually answer your question, i dont think i can go wide on different custom render pipelines myself as it would spread my limited time quite thin and there is still a bunch of core work to do. However i'll leave this open and I'll be curious to see how much demand there is for it.

Btw if you have any details about how it doesnt work, it could be helpful, or if you attempt to get it working I'd of course love to hear your experiences. I'll see if i can jump in and try it myself in the meantime.

To gauge interest could i please get a thumbs up / comment from those that want to use crest on LRP or other render pipelines.

huwb commented 6 years ago

Oh this is probably a very useful resource: https://www.youtube.com/watch?v=0KA1PszNtZw

I've only watched the boat demo section but i'll put some time aside to go through the whole thing.

And the boat demo will hopefully be released with 2018.3 which could be a huge help: https://forum.unity.com/threads/lwrp-boat-racing-demo-from-gdc.527104/

karearea commented 6 years ago

Consider this a thumbs up for HDRP support if possible šŸ‘

konstantin890 commented 6 years ago

I would like to see LWRP support. Please make an upgrade, it shouldn't be that hard...

gameanimation3d commented 6 years ago

Support for HDRP would be amazing :+1:

darrencperry commented 6 years ago

Throwing a vote at LWRP too šŸ‘

Nimuecrypto commented 5 years ago

I'd like LWRP and HDRP support as well.. but I can wait.

huwb commented 5 years ago

Thanks for the input so far!

Over the last weeks I moved the entire crest update to run on a command buffer which gets us a bunch of the way there. What remains is rebuilding the ocean material and figuring out how logistics around distribution and installation will look like, and all the other misc stuff.

Support for SRPs is definitely going to happen at some point. I hope I will have news for you in the next few months.

karearea commented 5 years ago

To be honest, Iā€™m really impressed by how far LWRP can be pushed, but a full ocean system is a bit beyond me- after some time experimenting with both pipelines Iā€™m transferring my vote to LWRP nonetheless!

huwb commented 5 years ago

Hi all, long overdue update from me.

I did some work towards supporting LWRP and HDRP.

LWRP - this port was very pleasant and the resulting implementation was elegant. The general structure stayed the same, but the shader API is nicer and i really like the coding standard they use for SRP shaders. Most of the time was spent updating the coding standard of the existing shaders and doing minor fixup to move them to the new APIs. I have something running I'm fairly confident in, and managed to get all the ocean features running if i recall. I'm sure theres bits and pieces of stuff I've forgotten, and it needs to be brought up to date with the master branch as its a bit out of date now, but the basic pieces are there.

HDRP - in constrast to LWRP, HDRP is set up very differently and requires a fairly extensive shader rewrite. I did enough work to get an understanding of how the implementation should roughly look like. The primary element of the ocean appearance is reflection and refraction. There is a system for that in HDRP (the reflection hierarchy) so much of the existing ocean shader should be moved over to this. There are other differences as well and I anticipate the final HDRP ocean shader will look significantly different. I don't have much at all right now besides this exploration/preproduction. And I'd estimate weeks or months of work to make a high quality HDRP version of Crest.

Both of these SRP pipelines are still in preview and subject to a LOT of change. At this point I start to wonder how I can find time to develop, test and maintain three different versions of Crest. Crest is a spare time / hobby project for me and I don't have bandwidth to go this wide. A lot of work goes into making quality releases of a project with this many features, and supporting multiple versions means additional overhead and coordination.

I am considering publishing a paid asset store offering for Crest LWRP. If it raises enough funds it may open doors and create options to make a HDRP version, and give development a bit of a boost in general. If it does not make enough money to be worth making it closed, then I'll be inclined to issue refunds for any purchases and open source it.

What would happen to this project here on github? It would remain much like how it is now - be targeted at the built-in render pipeline as it is now, and remain completely free. I would continue to provide support where I can, and if I get feature requests or R&D ideas I aim to explore them publicly wherever possible, as I always try to share my work publicly when I can, and I enjoy getting input/help/feedback from you guys.

I hope the above makes sense. If anyone has feedback, let me know.

Huw

karearea commented 5 years ago

Hi Huw,

I would absolutely be interested in a paid Crest LWRP. There is clearly a lot of your time involved in this asset already, and I would prefer to see you fairly remunerated, as well as feel it was worth your while to maintain further support.

I sense from the forums that there has been a bit of a void left after a number of ocean solutions were discontinued, and indeed there are no LWRP compatible oceans yet (The Boat Attack demo is fantastic, but not suitable for cases like a flightsim where you need to view the surface from high above). You would certainly be in a good position to leverage a lot of interest.

Cheers, Nick

sasa42 commented 5 years ago

Hello,

first thanks for the great ocean rendering. LOD system is pure art. I spent a lot of time to get into and its only fun.

In addition to your plans supporting SRP s i would also propose to get in contact with Unity HDRP team.

Why? HDRP will get out of Preview soon. They do great work towards physically correct ibl pbr implementation and are also rewritting sky and post processing to fully land in a new era of quality. I think there is am big chance to get support for an HDRP implementation because of half the screen is ocean in real world on the right location and full screen down under.

From my code browsing view of HRRP and Crest i think it could be done in around 2 weeks with support from Sebastien Lagarde and HDRP team. Could be wrong.)

Also Visual Effect Graph solves all your underwater bubbles and spray particle problems.) Sample #05 ā€“ Volumetric for underwater bubbles Sample #09 ā€“ Genie ,see sand particle emitters from desert ground for wave peaks

https://blogs.unity3d.com/2019/03/06/visual-effect-graph-samples/

New Sky. New Ocean. New Terrain. New Multiplayer. Unity would be sooo complete.

Further thinking on your plan. For the moment i see not so much benefits on LWRP compared to BuiltIn probably resulting in a slower adaptation. HDRP solves a lot of Unity problems and could be faster adopted by the masses. So out of this point a paid HDRP could bring more asset store credits to do LWRP then. Only saying. BuiltIn, HDRP then LWRP could be better strategy.

best,

Sascha

huwb commented 5 years ago

Thanks for the notes. @sasa42 yes i'm tracking the great work they're doing and my usual issue is time rather than needing help, but thanks for noting that stuff. Yes i'm thinking about tying into visual effect graph if i can as the ecosystem starts to mature.

huwb commented 5 years ago

I want to announce to you guys here first that I have published an LWRP version of Crest on the asset store :)

https://assetstore.unity.com/packages/tools/particles-effects/crest-ocean-system-lwrp-141674

As with all software the LWRP version is a bit new so might have some bumps but i did a couple of passes on it already and had some friends running it over the last couple of weeks and I believe its ready enough to run with.

I'll let this sit for a while before announcing it further, to get some more testing mileage. Also i'm aware that unity 2019 is just around the corner and will ensure that the asset is updated for that shortly after release.

Regarding HDRP, I will start to pick this up depending on how things go with the LWRP version. I've created a new issue for posting updates that is dedicated to HDRP: #201

bradley-newman commented 5 years ago

Awesome work! Have you tested on mobile at all?

huwb commented 5 years ago

Yeah I know of a few people using Crest on mobile. We recently did some big optimisations based on perf data from switch so perf should be good on most devices.

There is however currently an issue on metal, specific to the underwater effect, which i've pushed an attempt fix for #192 .

huwb commented 5 years ago

I have Crest working on the 2019.1 beta and will submit it when the option for 2019.1 becomes available in the asset store upload tool.

huwb commented 5 years ago

Now feels as good a time as any to close this. Feeling pretty good about where it landed. Preliminary support for 2019 has gone up. I hope to have HDRP updates soon, will post in the issue and on discord.