Hello everybody !
The NeoFur plugin is out of official maintenance since the 4.15 version of the engine.
Since the owner of the plugin are missing, you can’t buy it anymore but before to be taken by aliens, they release the source code to all licencies.
**The source code of NeoFur is not free and we can’t give it to anyone.
We can only share the modification we make in the source between person who already owns the sources…
This thread is for maintenance only. If you want to discuss the plugin or the situation, please, use the original thread :**
https://forums.unrealengine.com/comm…aces-and-more/
#freeNeoFur
https://forums.unrealengine.com/core/image/gif;base64
That’s how people who bought it before Neoglyphic cease to exist were able to compile it for the 4.16 version of UE without any problem (some warnings tho…)
But it doesn’t compile anymore for the 4.17
I’m every thing but a coder but the error triggered by the compiler are so precise that I manage to find answer to the problems that occures.
I am now able to compile and run NeoFur for UE4.17 !
Here’s the final result of my empiric researches :
[SPOILER]
NeofurEditor.Build.cs :
public NeoFurEditor(ReadOnlyTargetRules Target) : base(Target) // 4.17 - Make the rule readOnly
Neofur.Build.cs :
public NeoFur(ReadOnlyTargetRules Target) : base(Target) // 4.17 - Make the rule readOnly
Many variables in a struct must be set to be accessible from BP…
NeoFurComponentSceneProxy.h :
USTRUCT(BlueprintType) // 4.17 - Make the STRUCT usable by BP
With these 3 changes only, the plugin compile with no error (but has 4 warnings I didn’t address yet…)
Now, we must deal with the shader files…
in the NeoFur/Shader folder, there’s 2 usf files.
In the NeoFurComputeShader.usf file, you must change this line :
#include "Common.ush" // 4.17 - usf to ush
You have to copy the **NeoFurVertexFactory.usf **file and change its extension to .ush
In the newly created **NeoFurVertexFactory.ush **file, modify this line :
#include "LocalVertexFactory.ush" // 4.17 - usf to ush
While the first load of the engine with NeoFur, it will check if the 2 shaders files are copied in the Engine file system.
We need to change the NeoFurShaderInstallCheck.cpp file :
FString ShaderDir = FPlatformProcess::ShaderDir();
ShaderDir = ShaderDir + "/Private/"; // 4.17 - while the check of the shader file, look in Engine/Shader/Private
FString OldShaderContents;
...
NeoFurCheckSpecificShader("NeoFurComputeShader.usf", NeoFurComputeShader_StaticBuffer);
NeoFurCheckSpecificShader("NeoFurVertexFactory.ush", NeoFurVertexFactory_StaticBuffer); // 4.17 - Copy the ush file instead of the usf one.
Now, the 2 shaders files are copied in the Private folder of the Engine/Shaders directory.
We must use these two file in there nex respective location. To do that, we have to change the implementation of the shaders :
in NeoFurVertexFactory.cpp , We have this line to modify :
IMPLEMENT_VERTEX_FACTORY_TYPE(
FNeoFurVertexFactory, "/Engine/Private/NeoFurVertexFactory.ush", // 4.17 - set an absolute path to the shaders files
NeoFurRunShaderCheck_HijackBoolParameter(true), // Ugly hack alert
false,true,false,false);
(don’t put Engine/Shaders/Private here… I don’t know why but this is the right path.)
And now, in the NeoFurComputeShader.cpp :
const TCHAR* FNeoFurComputeShaderCS::GetSourceFilename()
{
NeoFurRunShaderCheck();
return TEXT("/Engine/Private/NeoFurComputeShader.usf"); // 4.17 - set an absolute path to the shaders files
}
There’s a little problem left in the NeoFur_compression BP and the way to correct this is to change the definition of the* float ActiveShellCountScale* in the NeoFurComponent.h file as this (Thunderstruck) :
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "NeoFur") // 4.17 - Correct the NeoFur_compression BP problem
float ActiveShellCountScale;
[/SPOILER]
Compile and serve fresh
While the first successful launch of the 4.17 editor, it has been stuck at 45%…
Just delete the Engine->**DerivedDataCache **folder if you have the same problem.
Thanks to Nate and Thunderstruck for the shader files hacks ^^.
This is certainly very hacky and crappy but it works.
If you want to participate to the maintenance of NeoFur for the future release of UE 4 or can make better modification on the source for the 4.17 version of the engine, please, do it ! I didn’t understand the half of what I did here
SPOILER ALERT !
Here’s the 4 warnings I didn’t address :
[SPOILER]
1>E:\Epic Games\UnrealProject\SauvageGit 4.17\Plugins\NeoFur\Source\NeoFur\Private\NeoFurAsset.cpp(328): warning C4996: 'FStaticLODModel::GetChunkAndSkinType': Please use GetSectionFromVertIndex. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>e:\epic games\ue_4.17\engine\source\runtime\engine\public\SkeletalMeshTypes.h(1409): note: voir la déclaration de 'FStaticLODModel::GetChunkAndSkinType'
1>E:\Epic Games\UnrealProject\SauvageGit 4.17\Plugins\NeoFur\Source\NeoFur\Private\NeoFurAsset.cpp(349): warning C4996: 'FStaticLODModel::GetChunkAndSkinType': Please use GetSectionFromVertIndex. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>e:\epic games\ue_4.17\engine\source\runtime\engine\public\SkeletalMeshTypes.h(1409): note: voir la déclaration de 'FStaticLODModel::GetChunkAndSkinType'
1>E:\Epic Games\UnrealProject\SauvageGit 4.17\Plugins\NeoFur\Source\NeoFur\Private\NeoFurComponent.cpp(385): warning C4996: 'USkinnedMeshComponent::GetSpaceBases': GetComponentSpaceTransforms is now renamed GetComponentSpaceTransforms Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>E:\Epic Games\UE_4.17\Engine\Source\Runtime\Engine\Classes\Components/SkinnedMeshComponent.h(760): note: voir la déclaration de 'USkinnedMeshComponent::GetSpaceBases'
1>E:\Epic Games\UnrealProject\SauvageGit 4.17\Plugins\NeoFur\Source\NeoFur\Private\NeoFurComponent.cpp(387): warning C4996: 'USkinnedMeshComponent::GetSpaceBases': GetComponentSpaceTransforms is now renamed GetComponentSpaceTransforms Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
1>E:\Epic Games\UE_4.17\Engine\Source\Runtime\Engine\Classes\Components/SkinnedMeshComponent.h(760): note: voir la déclaration de 'USkinnedMeshComponent::GetSpaceBases'
[/SPOILER]
They are not a problem for the 4.17 but they will be soon… I didn’t found any understandable (by me) documentation on these yet