Download

Linker tool error

I have a 4.15 modified engine and a 4.12 modified engine. The 4.15 version is missing the SSAO files and is necessary to compile. I moved:

Engine\Source\ThirdParty\GameWorks\GFSDK_SSAO
Engine\Binaries\ThirdParty\GameWorks\GFSDK_SSAO

these two folders from the 4.12 version to the 4.15 version however there is an external library that is not properly connecting. There is an error:

Error LNK1181 cannot open input file ‘GFSDK_SSAO_D3D11.win64.lib’ ShaderCompileWorker D:\UnrealEngine-CataclysmDemo-4.15\Engine\Intermediate\ProjectFiles\LINK

how do I set the link to the external file in VS 2015? If I right click on UE4->properties there is no linker including in the 4.12 engine that is correctly linked to the external file. Thanks

Hi, The thing it’s more than link to the missing library. What You have modified? VXGI and Cataclysm as diferents SSAO’s versions, You have to find and change to the new SSAO from Cataclysm, and some code conflicts in this, so research between VXGI branch and Cataclysm branch what it’s new, an in code also.

In ShaderCompileWorker.build_cs
Add reference for SSAO same for VXGI or others lib’s implemented.

Do a code compare with VXGI and Cataclysm to see the changes.

Use most current HBAO version here https://github.com/NVIDIAGameWorks/HBAOPlus

In ThirdParty/GamerWorks/GFSDK_SSAO/GFSDK_SSAO.Build.cs VXGI and Cataclysm different things use from Cataclysm. As Lib’s and DLL’s binarys use from Github NVIDIAGameWorks/HBAOPlus most recent version.

For HBAO+
In Windows\WindowsD3D11Device.cpp important to use new interface.



	// NVCHANGE_BEGIN: Add HBAO+
#if WITH_GFSDK_SSAO
	CreateHbaoInterface();
#endif
	// NVCHANGE_END: Add HBAO+


In D3D11Hbao.cpp temporary fix for the new NVIDIAGameWorks/HBAOPlus version




	GFSDK_SSAO_Status Status;
	bool m_DebugNormals = false; // TODO probably I can move this for debug view
	const GFSDK_SSAO_RenderMask RenderMask = m_DebugNormals ? GFSDK_SSAO_RENDER_DEBUG_NORMAL_Z : GFSDK_SSAO_RENDER_AO;
	Status = HBAOContext->RenderAO(Direct3DDeviceIMContext, Input, Params, Output, RenderMask);
	check(Status == GFSDK_SSAO_OK);
}
#endif
// NVCHANGE_END: Add HBAO+


Exist conflict in code about create Hbaointerface HbaoContext and Hbaomodule between VXGI and Cataclysm, Research that one in the code.

where in the shader compiler should the reference go?



// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;
using System.IO;


public class ShaderCompileWorker : ModuleRules
{
	public ShaderCompileWorker(TargetInfo Target)
	{
		PrivateDependencyModuleNames.AddRange(
			new string] {
				"Core",
				"Projects",
				"ShaderCore",
				"SandboxFile",
				"TargetPlatform",
			}
			);

		if (Target.Platform == UnrealTargetPlatform.Linux)
		{
			PrivateDependencyModuleNames.AddRange(
			new string] {
				"NetworkFile",
				"PakFile",
				"StreamingFile",
				}
			);
		}

		PrivateIncludePathModuleNames.AddRange(
			new string] {
				"Launch",
				"TargetPlatform",
			}
			);

		PrivateIncludePaths.Add("Runtime/Launch/Private");      // For LaunchEngineLoop.cpp include

        // Include D3D compiler binaries
        string EngineDir = Path.GetFullPath(BuildConfiguration.RelativeEnginePath);

        if (Target.Platform == UnrealTargetPlatform.Win32)
        {
            RuntimeDependencies.Add(new RuntimeDependency(EngineDir + "Binaries/ThirdParty/Windows/DirectX/x86/d3dcompiler_47.dll"));
        }
        else if (Target.Platform == UnrealTargetPlatform.Win64)
        {
            RuntimeDependencies.Add(new RuntimeDependency(EngineDir + "Binaries/ThirdParty/Windows/DirectX/x64/d3dcompiler_47.dll"));
        }
    }
}



Sorry, no need for this one Change in ShaderCompilerWorker. Check and search for the GFSDK_SSAO_D3D11 in the code referenced to the GFSDK_SSAO_D3D11.win64.lib and dll check if it only compiles for win64. Like VXGI and other libs only as 64bits .dll and .lib for Win64, do a if for only win64.