TressFX 4.0 hair rendering

What I basically did is to rewrite AMD’s TressFX library and shaders using UE’s rendering system.

Given that I don’t use 3Ds max for TressFX asset creation I have no immediate plans to write a 3ds max plugin.

Wow … and how does that rewrite the libraries in the EU rendering system?

Wow, this is amazing, I am going to try this out for sure, thanks for the info!

Hello Lion,

I have met the same bug as Mayne said on your branch TressFX and TressFX-4.16.
And I have tried compiling branch TressFX-4.17 but fail.
So how can I get the fixed version?


Visual Studio 2015.3
Build Error…

it is initial rebase and it is not functional yet.

[USER=“15214”]Aabs Inc.[/USER] now the functional version is up.

Thank you!

Visual Studio 2015.3
Visual Studio 2017 version 15.6.7

New version
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(454): error C2065: ‘IMainFrameModule’: undeclared identifier
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(454): error C2065: ‘MainFrame’: undeclared identifier
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(454): error C2672: ‘FModuleManager::LoadModuleChecked’: no matching overloaded function found
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(454): error C2974: ‘FModuleManager::LoadModuleChecked’: invalid nontype template argument of type
\Engine\Source\Runtime\Core\Public\Modules/ModuleManager.h(303): note: see declaration of ‘FModuleManager::LoadModuleChecked’
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(455): error C2065: ‘MainFrame’: undeclared identifier
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(455): error C2228: left of ‘.GetParentWindow’ must be a class, struct or union
\Engine\Source\Editor\UnrealEd\Private\Factories\TressFXFactory.cpp(455): note: type is an ‘unknown-type’
========== Build: 3 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

[USER=“15214”]Aabs Inc.[/USER]
Will push fix later today

Thank You!
========== Build: 4 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

・Please “how to UE4-K4W-Plugin-TressFX-4.19” and “Sample Projects”.
・Multiplatform support or DirectX only?

“How to” currently will be ineffective due constant design changes.
About example project I need with AMD first because I am using their sample assets.


Multiplatform support or DirectX only?

In theory every platform that supports compute shaders

Build(Visual Studio 2015)
New Project -> Blank

Packege Project -> Windows(64-bit)
UATHelper: Packaging (Windows (64-bit)): BUILD SUCCESSFUL

Packege Project -> Windows(32-bit)
UATHelper: Packaging (Windows (32-bit)): BUILD FAILED

/UE4-K4W-Plugin-TressFX-4.19/Engine/Source/Runtime/Engine/Private/TressFXSceneProxy.cpp(137): error C2719: ‘rotFromXAxisToWindDir’: formal parameter with requested alignment of 16 won’t be aligned

I’ll investigate.

RHISetBlendState(FBlendStateRHIParamRef NewState, const FLinearColor& BlendFactor, uint32 SamplerMask)
RHISetBlendState(FBlendStateRHIParamRef NewState, const FLinearColor& BlendFactor, uint32 SampleMask)
INTERNAL_DECORATOR(RHISetBlendState)(State, BlendFactor);

Hi lion032.

Would it be possible for you to host a known to work set of the .tfx* files (even if they were just a cube with hair) to use for test imports?

The reason I ask is I’ve just merged your TressFX engine code into my custom engine version however my own .tfx* files are crashing the editor and it would be really useful to have some known to work files to check whether it’s the merge or if (as I suspect) it’s my .tfx files.


I need to check that with AMD since I modified their assets.

Hi @lion032
UE4.20 support?

The problem that the 4.16 version had with deferred decals not rendering appears to be happening in the 4.19 version.

I did try to work out which part of your June 29th commit which fixed the problem in the 4.16 version was, but I failed miserably.

Also the global clip plane is still causing the engine to fail to load if enabled with tressfx implemented.

Did you ever get a response from AMD about releasing the modified assets?

I’d have thought they’d have come under AMDs TressFX licence on github but I understand why you’d want to check with them first to make sure.

As I said all I really need is a hairy cube that you know works on your own compiled version as a check to see if the code compiled successfully enough to work.

Also in the DepthOnlyVertexShader.usf file at around line 70 the code has #include “Tessellation.usf” however tesselated materials fail to work as they can’t find this file, it works if I change it from usf to ush though.