TressFX Hair For Unreal [Release, Open Source]

Hi All,

After roughly a year of work off and on, we are releasing our implementation of AMD’s hair rendering library in Unreal Engine to the community as an open source engine fork. For in depth details, as well as samples, see the engine repository below.

https://github.com/kostenickj/UnrealEngine_TressFX

This open source Unreal Engine fork implements a modified version AMD’s TressFX hair/fur rendering and simulation technology into Unreal Engine. It uses the GPU and compute shaders to physically simulate each individual strand of hair. We are opening the source to the community to get more people involved and help solve the remaining issues. Much more in-depth information can be found at the source repository readme linked above.

In the repository below you can find a sample project and sample hair asset

Frequently Asked Questions

https://github.com/kostenickj/UnrealEngine_TressFX#faq

Video demo

Some screenshots:

tressfx2.jpg

Features Overview - See repository readme for more
[ul]
[li]Support for up to 16 bone influences per hair (as opposed to the original 4)[/li][li]Morph target support[/li][li]New exporters for Maya and Blender[/li][li]Multi Platform (mostly) thanks to unreal’s cross compiling[/li][li]Two render modes for hair which can be set on a per material basis:[ol][/li][li]Opaque: Opaque mode should support all unreal engine features.[/li][li]Order Independent Transparency (OIT): OIT mode supports most Unreal Engine features, but is currently limited to 4 dynamic lights (same as the forward renderer). Additionally, there are two OIT modes: Shortcut (recommended), and K-Buffer Linked List (experimental, performance heavy). The mode used can be set from a Console Variable. Information on how each mode works can be found here.[/li][/ul]
[li]Velocity Rendering[/li][ul]
[li]To support Temporal Anti Aliasing and more that Unreal needs.[/li][/ul]
[li]Physics asset integration (partial)[/li][/ol]
Want to help?

Please do! My goal is for this to become a community project where many developers can contribute. There are are many things that can be improved and several features that are not fully implemented and we want your help! See the issues on github for starters. Feel free to open new issues as well.

Please follow the Unreal Engine Coding standards.

Join the TressFX for Unreal discord server to coordinate work and discuss ideas: TressFX_UE4

Bugs? Yes. When you encounter bugs please open an issue.

Authors
[ul]
[li]Code:[/li][LIST]
[li]AMD[/li][li]Jacob Kostenick [EMAIL=“kostenickj@gmail.com”]kostenickj@gmail.com[/li][li]Leon Rosengarten [EMAIL=“lion032@gmail.com”]lion032@gmail.com[/li][li]zwywilliam https://github.com/zwywilliam[/li][/ul]
[li]Assets:[/li][ul]
[li]Craig Mason [EMAIL=“craig.mason@stasismedia.com”]craig.mason@stasismedia.com[/li][li]Iain Kilner [EMAIL=“iain.kilner@stasismedia.com”]iain.kilner@stasismedia.com[/li][/ul]
[/LIST]

Diving in with a post to handle any Sample updates in the future!

This looks awesome! Congratulations and thank you so much for your work!

Testing this is on my schedule for this week :cool:

Thanks :). Looking forward to your feedback!

Thanks i hope i will find some time to test your branch, i have a question which Blender ver you support?

Currently the exporter only support 2.79. Does not yet support 2.8

Hey :cool: I found a little time to check out the engine fork. This is fantastic work and the performance is really great.
I saw in the FAQ that you don’t plan to support VR (forward renderer and instanced stereo). I tried to activate both and the project crashes right away on load, unsurprisingly.
Can you estimate how difficult it would be for you to support TressFX in VR?

I don’t personally think it would be difficult. It would be fairly straightforward actually for anyone who knows how the rendering module works. It would just take quite a bit of time, and I simply don’t have the time to invest in it right now. I also don’t use VR in any of my projects so i cant justify the time investment when my time is already pretty limited.

If you were to make a go at it doing it yourself, i would do my best to assist where i can :slight_smile:

I’ve never touched the rendering module :wink: Time is an issue, too.

However, I’d like to give it a try sooner or later. Do you know any documentation I should read beforehand or would you suggest to grab the debugger and dive in and see how far I get?

The main rending docs are here: Graphics Programming for Unreal Engine | Unreal Engine 5.3 Documentation

I would read through those and the just dive in. You can find all tressfx code pretty easy with a search. Its all wrapped in begin/end comments so you can see where the changes were made. If you have specific questions about how stuff works just ask! For quicker answers message me on discord in the channel :slight_smile:

Great works! Downloading and testing…
BTW.Does bransh 4…22TFXDev_kostenickj compile and work properly?And is there some test demos in bransh 4…22TFXDev_kostenickj?

If you want to use 4.22 branch, use 422TFXDev. _Kostenickj is my personal branch

https://gpuopen.com/tressfx-4-1-engi…deon-cauldron/
TressFX 4.1, Engine Integration with Unreal 4.22 and Radeon™ Cauldron

What about Deep opacity maps implementation?