Unity与UE4引擎源码内使用到的第三方库的比较

 

首先看UE4中的 Third-Party Libraries

UnrealEngine\Engine\Source\ThirdParty  下: 

源码路径:

Unity与UE4引擎源码内使用到的第三方库的比较_第1张图片Unity与UE4引擎源码内使用到的第三方库的比较_第2张图片

引擎exe的安装路径下(会发现跟源码路径是一样的):

Unity与UE4引擎源码内使用到的第三方库的比较_第3张图片Unity与UE4引擎源码内使用到的第三方库的比较_第4张图片

ADO

 

注意:这只是为Windows访问权限设置了Windows包含的一组lib的include路径。

 

AMD

 

AMD GPU服务(AGS)库使软件开发人员能够查询通常无法通过标准操作系统或图形API获得的AMD GPU软件和硬件状态信息。

解决PC上的AMD驱动程序错误,利用PC上AMD特定的图形功能

https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/

 

Android

 

This is the Android Software Development Kit(Android软件开发工具包)

 

  • cxa_demangle: UE在Android设备上运行时需要调用堆栈打印,UE需要此函数将错误的函数名称转换为易于理解的名称。 UE通过stlport与cxx-stl链接,但是该库中不包含abi :: cxa_demangle函数。 NDK附带的gnu-libstdc ++库确实包含此功能,但是UE不针对gnu-libstdc ++进行链接,也不想仅针对此功能这样做。 最简单的解决方案是编译cxa_demangle源代码文件并手动链接。 https://android.googlesource.com/platform/external/
  • detex:在不支持的情况下,在Android设备上将alpha ETC2解码为RGBA纹理格式。 由于ETC1不支持alpha压缩,因此UE可以分发带有alpha纹理的较小的程序包。 作为OpenGL RHI的一部分,被编译为Android游戏引擎。  https://github.com/hglm/detex/
  • extras:是获取Android支持库的更新版本/不同方式(请参阅相关合同)。 是来自Android SDK的附加安装。 该存储库是Google Play服务的依赖项。             提供用于与Google通信的Java API。 允许Android游戏使用Google的成就,排行榜和广告。 AAR文件将被编译到游戏中。
  • libunwind:帮助生成通过UE的Android崩溃报告报告的调用堆栈

 

AndroidPermission

 

定义应用所需权限, 处理运行时权限请求, 检测权限和请求权限

 

ANGLE

 

复制Windows上许多移动设备(包括HTML)提供的图形功能集。

在为HTML5平台开发时允许更快的迭代,可能在以后为其他移动平台开发,从而允许更快的迭代,而在为HTML5平台开发时允许更高的迭代,而在为HTML5平台以及其他移动平台开发时允许更高的迭代

 

asio

 

Asio用作服务器的IO层,以存储和检索从运行时和编辑器发送的跟踪。

 

Breakpad

 

https://chromium.googlesource.com/breakpad/breakpad  https://github.com/google/breakpad/ 用于为Windows,Mac和Linux二进制文件生成跨平台symbol dumps。Breakpad是实现崩溃报告系统的一组客户端和服务器组件。

 

CEF3( Chromium Embedded Framework)

 

允许在应用程序中嵌入Web浏览器   https://github.com/chromiumembedded

UE需要在编辑器和启动器应用程序中使用Web浏览器来显示文档页面并更无缝地集成用于市场等的外部Web页面

 

coremod

 

播放音频.mod,.it和XM文件…这是一个自包含的音乐音序器和示例播放引擎,用于播放生成的音乐文件

它将是一个不错的插件,可作为在UE4中播放音频的附加选项  https://github.com/cmatsuoka/libxmp/

 

Crunch

 

https://github.com/BinomialLLC/crunch/

用于潜在地压缩光照贴图。

 

CryptoPP

 

提供一个加密方案的C ++类库,其中包括加密函数,哈希函数,加密安全的RNG以及其他帮助程序类,以支持加密和哈希

它使UE能够使用经过安全性测试的行业标准加密和哈希函数。 自己实现这些功能可能会导致错误,使系统容易受到攻击。

http://www.cryptopp.com/

 

DirectShow

 

PC上需要视频捕获,以使UE能够将视频捕获为avi文件格式,以便从游戏和编辑器中进行回放。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd375454(v=VS.85).aspx

 

Distorm

 

Live ++使用的第三方之一。适用于x86 / AMD64的强大反汇编程序库

https://github.com/gdabah/distorm/

 

dlmalloc

 

该库全部放在一个文件中,以简化最常见的用法:

ftp,将其编译(-O3),并将其链接到另一个程序。所有的

编译时选项默认为合理值,可用于

大多数平台。您稍后可能需要逐步进行各种操作

编译时和动态调整选项。

 

为了方便起见,使用此malloc的代码的包含文件位于:

ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.6.h

除非您不调用函数,否则实际上不需要此.h文件

在系统中定义的包含文件。 .h文件仅包含

在ANSI C / C ++上使用此malloc所需的文件摘录

系统,只要您没有更改有关

命名和调整参数。如果这样做,则可以创建您的

自己的malloc.h,它通过切入点包括所有设置

如下所示。请注意,默认情况下您可能已经在使用C

包含基于此版本的malloc的库

malloc(例如在Linux中)。您可能仍想使用

在此文件中以自定义设置或避免相关的开销

与库版本。

 

DotNetZip

 

在UDK安装程序和iPhonePackager中. DotNetZip是用于处理zip文件的快速,免费的类库和工具集。使用VB,C#或任何.NET语言轻松创建,提取或更新zip文件。

https://archive.codeplex.com/?p=dotnetzip

 

Eigen

 

Eigen是一个用于线性代数的C ++模板库:矩阵,向量,数值解算器和相关算法。

用于将压缩方案应用于需要复杂矩阵运算的顶点动画

http://eigen.tuxfamily.org/index.php?title=Main_Page

 

Expat

 

为libstophe提供XML支持

为XMPP支持libstrophe需要对XML的支持。这是James Clark在C中的Expat XML解析器库。它是面向流的解析器,需要设置处理程序来处理解析器

https://sourceforge.net/p/expat/   https://github.com/libexpat/libexpat

 

Facebook

 

作为iOS的Facebook SDK的一部分,使开发人员可以访问FB社交功能。

https://github.com/facebook/FBNotifications/

 

FakeIt

 

它允许程序员创建接口或对象的轻量级“模拟”实现,可用于编写单元测试。

用于强大的单元测试。

https://github.com/eranpeer/FakeIt/

 

FBX (Autodesk FBX SDK integration code)

 

用于读取和写入FBX文件的C ++库(图形交换文件格式。)

 

ForsythTriOO

 

  • Linear-Speed Vertex Cache Optimization :
    用更快的导入速度(快得多的导入时间,更有效的结果)替换现有的对导入时的网格数据进行预处理的网格处理算法。
    被许可方想导入大网格,并且导入时间使这个问题成为问题。
    http://gameangst.com/wp-content/uploads/2009/03/forsythtriangleorderoptimizer.cpp
  • Tri Stripper:
    生成缓存优化的三角带
    可能会大大减少网格的导入时间,可能会改善渲染性能。
    https://github.com/spoonless/tristripper

 

FreeImage

 

对于纹理调整大小,颜色转换。 在运行时从编辑器动态加载dll。

FreeImage是一个开源库项目,面向希望支持当今多媒体应用程序所需的流行图形图像格式(如PNG,BMP,JPEG,TIFF和其他格式)的开发人员。FreeImage易于使用,快速,多线程安全,与所有32位或64位版本的Windows兼容以及跨平台(适用于Linux和Mac OS X)。

https://freeimage.sourceforge.io/

 

FreeType2

 

Slate的字体渲染器需要这个库

FreeType 2是一种软件字体引擎,被设计为小巧,高效,高度可定制和便携式,同时能够产生高质量的输出(字形图像)。它也可以用于图形库,显示服务器,字体转换工具,文本图像生成工具以及许多其他产品。

请注意,FreeType 2是一种字体服务,不提供执行文本布局或图形处理(例如,彩色文本渲染,“凹陷”等)之类的高级功能的API。但是,它通过提供一个简单,易于使用且统一的界面来访问字体文件的内容,极大地简化了这些任务。

http://git.savannah.gnu.org/cgit/freetype/

 

glslang

 

https://github.com/KhronosGroup/glslang

Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.

 

GoogleARCore

 

允许为ARCore开发应用。

https://github.com/google-ar/arcore-android-sdk/

 

GoogleGameSDK

 

用于在Android设备上设置垂直同步速率。 链接到Android版本中包含的静态库的C ++源代码。

https://developer.android.com/games/sdk

 

GoogleInstantPreview

 

属于GoogleVRSDK相关

https://developers.google.com/vr/develop/unreal/instant-preview

 

GoogleOboe

 

Oboe是Google提供的开源兼容性包装程序,用于抽象他们两个完全不同的后端解决方案:OpenSLES和AAudio。

https://www.youtube.com/watch?v=csfHAbr5ilI&list=PLWz5rJ2EKKc_duWv9IPNvx9YBudNMmLSa

 

GooglePlay

 

Google Play Games C++ SDK

提供与Google Play游戏服务一起使用的C ++ API。

允许使用Google的登录名,成就,排行榜等在Android上开发C ++游戏。

https://developers.google.com/games/services/

 

GoogleTest

 

Google的C ++测试框架,可帮助程序员编写各种形式的测试

用于健壮的单元测试和访问Google Mock

https://github.com/google/googletest/

 

GoogleVR

 

允许开发适用于Google Daydream和Cardboard硬件的应用。

https://github.com/googlevr/gvr-android-sdk/

 

HarfBuzz

 

在UE4中为Slate中的复杂语言(例如阿拉伯语)提供文本成形支持。

https://github.com/harfbuzz/harfbuzz/

 

hlslcc

 

HLSLCC-HLSL交叉编译器

该库将HLSL着色器源代码编译为高级IR,执行与设备无关的优化,并生成GLSL兼容的源代码。 该库主要基于Mesa的GLSL编译器。 前端已被大量重写以解析HLSL并从HLSL AST生成Mesa IR。 该库利用Mesa的IR优化来简化代码,并最终从Mesa IR生成GLSL源代码。 GLSL的生成基于glsl-optimizer中的工作。

https://github.com/aras-p/glsl-optimizer

https://github.com/Unity-Technologies/HLSLcc

https://github.com/James-Jones/HLSLCrossCompiler

 

ICU

 

ICU是成熟的,广泛使用的C / C ++和Java库集,可为软件应用程序提供Unicode和Globalization支持。UE4 ship需要这个库

在UE4的核心模块中提供UE culture and internationalization API的ICU实施

https://github.com/unicode-org/icu/

http://www.unicode.org/

 

Intel

 

Intel Extensions Framework

UE在源文件中包含文件,然后在其中调用函数。 没有二进制文件或库(对象),只有一对标头。 与NVAPI和AMD_AGS完全相同。

 

IntelEmbree

 

高性能ray tracing光线追踪内核

加速光质量,使照明构建花费的时间大大减少

 

IntelISPC

 

ISPC是一种用于数据并行问题的语言,编译器会翻译该语言。

https://github.com/ispc/ispc/

 

IntelISPCTexComp

 

Fast ISPC Texture Compressor & ISPC Compiler

将图像压缩为各种DirectX格式,尤其是BC6H和BC7

Black Tusk / Microsoft提交代码以支持UE4中的新纹理格式

https://github.com/GameTechDev/ISPCTextureCompressor/

 

IntelMetricsDiscovery

 

这是一个INTEL库,可以访问D3D11的准确GPU时序,这将使UE能够支持INTEL硬件上的动态分辨率。

https://github.com/intel/metrics-discovery/

 

IntelTBB

 

Intel Threading Building Block

在引擎中用作优化的64位内存分配器。

https://github.com/intel/tbb/

 

IntelVTune

 

Instrumentation and Tracing Technology (ITT) API files

允许与VTune(性能分析器)增强集成。

 

IOS

 

  • Bolts
    facebook SDK支持库
    Facebook SDK升级使用此库
    https://github.com/BoltsFramework/Bolts-iOS/
  • SoundSwitch
    在IOSAppDelegate.cpp中实现。
    https://github.com/moshegottlieb/SoundSwitch/

 

jemalloc

 

内存分配器。 内存分配器的选项之一。 静态链接库。

eMalloc 是一款内存分配器,与其它内存分配器相比,它最大的优势在于多线程情况下的高性能以及内存碎片的减少。

https://github.com/jemalloc/jemalloc

 

Kiss_FFT

 

编辑器工具,用于删除高频元素/或频域中的各种滤波

去除高频元素/或频域中的各种滤波

http://kissfft.sourceforge.net/

 

libcurl

 

实现HTTP协议

Ship requirement. Soon enough, needed for Fortnite Linux server .

http://curl.haxx.se/docs/

 

libJPG

 

  • jpeg-compressor
    允许JPEG压缩和解压缩。
    在运行时压缩视频帧以减少内存使用。 解压缩后再访问数据。
    https://code.google.com/archive/p/jpeg-compressor/
  • Jpeg Library
    UE需要它,因为它是GFx中的第三方库
    http://www.ijg.org/

 

libOpus

 

Audio codec

UE将其用于音频文件。 它是通过Internet进行VoIP和IP音频流的理想选择。

https://opus-codec.org/downloads/

 

libPhonon

 

游戏和虚拟现实的基于物理的音频

获得逼真的遮挡,混响和空间化技术

 

libPNG

 

无损压缩图像

http://www.libpng.org/pub/png/

 

libSampleRate

 

用于对音频资产进行下采样。

https://github.com/erikd/libsamplerate/

 

libstrophe

 

提供XMPP支持

易于修改且重量轻的XMPP库,为UE提供了支持某些平台所需的控件,并且与UE当前的XMPP库相比,其占用空间更小,更易于维护。

https://raw.githubusercontent.com/strophe/libstrophe/

 

libWebSockets

 

将来自浏览器(UE的HTML5客户端)的请求转换为UE服务器可以理解的请求

提供在线游戏等关键功能-可能是HTML5的出厂要求

https://github.com/warmcat/libwebsockets/

 

Linux

 

"libc++" C++ Standard Library

针对C ++ 11的C ++标准库的实现。

为了独立于系统C ++标准库(可能会有所不同),UE想将其静态链接

http://llvm.org/viewvc/llvm-project/libcxx/trunk/

 

llvm

 

使用Clang C ++编译器前端将代码编译为LLVM兼容的目标文件

使UE能够基于Clang开源项目尝试新的C ++技术

http://llvm.org/docs/

 

MCPP

 

将GLSL源代码预处理为紧凑的“distilled”版本

可以用于许多其他目的

http://sourceforge.net/projects/mcpp/

MCPP是便携式C / C ++预处理器,支持GCC,Visual C ++等。其源代码是高度可配置的,并且可以生成各种规格的可执行文件。它带有一个验证套件,可以详尽地检查预处理器的一致性和质量。

 

MikkTSpace

 

  • ComputingTangentSpace
    Computing TangentSpace without explicit storage by Morten S. Mikkelsen
    节省性能和内存  http://mmikkelsen3d.blogspot.com/2011/07/derivative-maps.html
  • MikkTSpace
    用于在编辑器中和运行时生成与DCC工具/现有管道匹配的更高质量的切线。
    https://github.com/tcoppex/ext-mikktspace/

 

mimalloc

 

可配置的内存分配器,由UE4核心库用作选项,以提高性能和降低内存使用量.C代码与核心库静态链接。

https://github.com/microsoft/mimalloc/

 

mtlpp

 

通过将Metal提供的Objective-C类与本机C ++类包装在一起,从而为Metal提供C ++接口。 使用此方法而不是直接调用Metal可以避免Objective-C的复杂性,并将扩展mtlpp代码以在C ++包装器中执行数据和功能指针的缓存,从而避免不必要地调用Objective-C并最大程度地减少开销。

https://github.com/naleksiev/mtlpp/

 

NVIDIA

 

  • NVaftermath
    GPU崩溃诊断
    修复用户的GPU崩溃
  • nvapi
    允许在功能强大的显示器上显示Nvidia显卡的3D图像

 

nvtesslib

 

  • nvTessLib
    为PN-AEN细分生成具有邻接信息的索引缓冲区
  • PN-AEN
    提供邻接信息,该信息随后用于在DX11中渲染无裂纹位移映射

 

nvTextureTools

 

  • FastTextureCompression
    将纹理压缩到BC7
    BC7是可用于DX11类GPU的质量更高的纹理压缩方法。
    https://software.intel.com/en-us/articles/fast-texture-compression-sample
  • NVIDIAnvDXT
    在SHTools中将纹理压缩为更优化的格式
    http://developer.nvidia.com/object/nv_texture_tools.html

 

nvTriStrip

 

重新排列模型中的顶点,以便其更快地渲染。

 

Oculus

 

LibOVRAudio, LibOVRAvatar, LibOVRPlatform, OVRPlugin

https://developer3.oculus.com/

 

Ogg

 

Ogg Vorbis Audio Compression

在引擎中播放声音

 

OneSky

 

众包编辑器和引擎的翻译过程

OneSky将为我们的内部翻译人员提供多种工具,无需额外费用即可使用

50多种语言,1,000多个翻译器,1个平台 -完整的本地化解决方案。

http://www.oneskyapp.com/

 

OpenAL

 

在音频设备上提供跨平台抽象。

在开发过程中,我们还以某种方式编译HTML5平台,使其在浏览器外部的Windows上运行,为此,我们需要复制浏览器/ html5工具链提供的某些功能。

https://github.com/kcat/openal-soft/

 

openexr

 

OpenEXR 2.3.0  + IlmBase 1.0.3

提供对ILM的OpenEXR图像格式的支持。 它允许加载和保存压缩的无损全范围HDR图像。

对于电影后期处理/过场动画非常有用。

http://www.openexr.com/

 

OpenGL

 

渲染API的接口,该接口在PC以外的平台上使用(但也可以在PC上使用)

 

OpenSSL

 

OpenSSL是libcurl使用的可选库

https://www.openssl.org/source/

 

OpenSubdiv

 

OpenSubdiv是一组开源库,可在大规模并行CPU和GPU架构上实现高性能细分表面(subdiv)评估。

将作为Geo 2.0的参考和起点。

http://graphics.pixar.com/opensubdiv/docs/

 

OpenVR

 

Valve的OpenVR SDK-SteamVR的API,包括其HMD和控制器以及对DK2的支持等。

我们需要支持SteamVR硬件。

https://github.com/ValveSoftware/openvr/

 

OpenXR

 

OpenXR在我们的OpenXR插件中提供了跨供应商的API,以通过一个插件就可以使用多种VR和AR平台。

https://github.com/KhronosGroup/OpenXR-SDK/

 

Perforce

 

它用于通过C或C ++与Perforce进行通信

http://www.perforce.com/perforce/doc.current/manuals/p4api/02_clientprog.html

与Perforce服务器对话的编辑器和工具的托管代码界面

https://swarm.workshop.perforce.com/projects/perforce-software-p4api-net/files/main/

 

PhysX3

 

As a physics engine inside our engine

 

PLCrashReporter

 

Mac OS X 和 iOS 的进程中多线程崩溃重新编码和符号化。

Our naive signal handler crash reporting is insufficient for Darwin platforms (OS X & iOS), ,它不能记录所有崩溃,并且无法收集堆栈溢出和其他错误的正确报告详细信息,这些错误需要信号在提升线程以外的线程上处理,不幸的是,这些错误很常见

 

portmidi

 

允许内容创建者使用标准的现成的 Midi 硬件在运行时调整 UE4 中任何 Object 的任何数字属性

它比 Windows Midi API 更简洁、更容易理解 API,并且为输入缓冲区溢出等提供了一些自动恢复功能

https://sourceforge.net/projects/portmedia/

 

Python

 

Python 解释器和标准库,用于使用 Python 进行开发。

https://docs.python.org/2.7/

 

Qualcomm

 

好像只用到了压缩纹理

https://developer.qualcomm.com/software/adreno-gpu-sdk/tools

 

rd_route

 

为UE提供了将系统功能与一个实现"hook"或"interpose"的能力。通常,这不是必需的,但因为UE想用UE自己的替换全局分配器,在苹果的CFNetwork库中有一个系统功能,UE必须替换,没有UE的实现或引擎将崩溃。

https://github.com/rodionovd/rd_route/

 

RenderDoc

 

图形调试器、可视化和探查器

为 RenderDoc dlls 提供 API 层

https://github.com/baldurk/renderdoc/

 

rpclib

 

https://github.com/rpclib/rpclib

允许 UE4 公开与语言无关的远程过程调用,供外部客户端用于机器学习目的。

 

SDL2

 

跨平台库抽象音频、视频和输入

Linux 客户端必需

http://www.libsdl.org/

 

ShaderConductor

 

  • SPIRVTools
    SPIRV 工具包含在着色器导体阴影导体导体中,是一种用于将 HLSL 交叉编译为其他着色语言的工具
    https://github.com/KhronosGroup/SPIRV-Tools/
  • SPIRVHeaders
    SPIRV 标题包含在着色器导体阴影导体导体中,是一种用于将 HLSL 交叉编译为其他着色语言的工具
    https://github.com/KhronosGroup/SPIRV-Headers/
  • SPIRVCross
    SPIRV 十字包含在着色器导体阴影导体导体中,是一种用于将 HLSL 交叉编译为其他着色语言的工具
  • ShaderConductor
    我们为每个编辑器平台(Windows、Mac、Linux)构建动态库。
    https://jira.it.epicgames.net/secure/RapidBoard.jspa?rapidView=748&view=planning.nodetail&epics=visible
  • NinjaBuild
    非 Windows 平台上的生成过程取决于 "ninja" 生成系统
    https://github.com/ninja-build/ninja/
  • GoogleTest
    谷歌测试在着色器检测器中使用。着色器 它是一种工具,用于将 HLSL 交叉编译为其他着色语言
    https://github.com/google/googletest/
  • DirectXShaderCompiler
    DirectXShaderCompiler 在着色器导电器中使用。着色器 它是一种工具,用于将 HLSL 交叉编译为其他着色语言
    https://github.com/Microsoft/DirectXShaderCompiler
  • cxxopts
    cxxopts 在着色器中使用。着色器 它是一种工具,用于将 HLSL 交叉编译为其他着色语言
    https://github.com/jarro2783/cxxopts/

 

SpeedTree

 

https://store.speedtree.com/ue4/

 

SPIRV-Reflect

 

SPIRV-Reflect为SPIRV着色器提供了一个反射API,在ShaderCompileWorker / Editor中使用SPIRV-Reflect来解析SPIRV着色器接口并修复资源绑定位置,然后转换为与Direct3D具有不同绑定要求的Metal / GLSL着色器

 

Steamworks

 

用于连接Steamworks平台的SDK

支持要与UE一起使用Steam的被许可人

http://store.steampowered.com/subscriber_agreement/

 

Tencent

 

  • WeGame
    WeGame的身份验证,社交和商业功能作为新的OnlineSubsystem UE  module/plugin。

 

VHACD

 

将三重网格分解为凸包近似以进行碰撞

目前,我们使用的HACD效果不佳,这是一个改进。

 

Vivox

 

语音聊天中间件

为UE4提供跨平台语音聊天

 

Vorbis

 

  • VorbisQualityImprovements
    提高vorbis音频压缩的质量
    用作libvorbis的一部分
    http://www.geocities.jp/aoyoume/aotuv/

 

Vulkan

 

Vulkan是具有自己的驱动程序的渲染接口,UE现在支持该接口。 我们仅使用Vulkan C ++标头。

https://vulkan.lunarg.com/software/

 

WebRTC

 

与XMPP服务器进行实时通信,这是我们所有游戏以及启动器中社交功能所必需的

http://www.webrtc.org/

 

Windows

 

D3DX12

DirectSound

DirectX

DirectXLegacy

DX11

DX12

DX9

glTF-Toolkit

PIX

VisualStudioDTE

WinHttp

WinInet

XAudio2_9

XInput

 

WindowsMixedRealityInterop

 

Windows平台混合现实

 

WiX

 

用于在Windows平台上创建UE4 .msi安装程序

http://robmensching.com/blog/

 

xxhash

 

https://github.com/Cyan4973/xxHash

极快的非密码哈希算法

 

zlib

 

引擎和其他几个第三方项目使用的压缩库

http://www.zlib.net/

 

UnrealEngine\Engine\Binaries\ThirdParty  下: 

ANGLE

 

AppLocalDependencies

 

DirectXRedist

ucrt

VC140.CRT

VC141.CRT

WinDbg

 

ARM

 

ASTC Evaluation Codec command line tool

用于将纹理编码为ASTC格式,这是最新的Android设备支持的新标准。

由于其尺寸和质量优于其他格式,因此很高兴为Android支持ASTC。

http://malideveloper.arm.com/?modals=astc-evaluation-codec

 

AWSSDK

 

提供客户端API,以使用.NET Framework与Amazon Web Services通信。

为了将构建系统连接到S3,以便在升级过程中可以将分块的数据复制到S3。

https://github.com/aws/aws-sdk-net/

 

CEF3

 

DbgHelp

 

Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (WinDbg)

Engine/Binaries/ThirdParty/DbgHelp/dbghelp.dll

用于从minidump中检索调用堆栈。

 

FreeImage

 

glslang

 

GoogleInstantPreview

 

ICU

 

ImgTec

 

PVRTexTool

在PC上将纹理转换为iPhone格式

https://community.imgtec.com/developers/powervr/

 

IntelISPCTexComp

 

Ionic

 

IOS

 

  • Bouncy Castle
    使用各种加密协议和标准的C#API。
    http://www.bouncycastle.org/

 

libSampleRate

 

用于采样率转换

http://www.libpng.org/pub/png/src/

 

libsndfile

 

处理和解码许多声音文件格式,包括ogg,flac,aiff,au等

新的音频引擎工作,更好地支持多种文件格式,实现更简单

http://www.mega-nerd.com/libsndfile/

 

MCPP

 

Mono

 

Mono Runtime

它用于在Unix系统上运行用C#编写的软件

一些UE4工具是用C#编写的(例如UnrealBuildTool和UrealAutomationTool),我们希望用户能够在不手动安装Mono的情况下运行它们

 

NETDiscUtils

 

.NET DiscUtils

.NET库,方便创建.iso文件

将用于在构建服务器场上创建光盘映像,以使用自动化方式运送游戏。

http://discutils.codeplex.com/SourceControl/

 

Newtonsoft

 

.NET中的JSON序列化/反序列化

 

在C#自动化代码中对JSON MCP响应进行健壮和快速的序列化/反序列化。 其他解决方案具有局限性,例如在将新字段添加到响应时引发错误,因此该库提供了鲁棒性。 它现在也是事实上的.NET JSON序列化程序,并得到Microsoft的完全支持,并由它们作为Visual Studio中创建的新ASP.NET MVC Web应用程序的默认依赖项提供。

https://github.com/JamesNK/Newtonsoft.Json/

 

NVIDIA

 

nvTextureTools

 

Oculus

 

Ogg

 

OpenAL

 

OpenSSL

 

OpenVR

 

OpenXR

 

Phonon

 

PhysX3

 

protobuf-net

 

解析Google的协议缓冲区格式的二进制数据流

从S3读取由CrashReporter数据路由器写入的数据

https://github.com/mgravell/protobuf-net/

 

Python

 

Qualcomm

 

SDL

 

SDL2

 

Steamworks

 

svn

 

增加了对除Perforce之外的版本控制系统的支持

Subversion提供了我们需要的所有功能,可以用作Perforce的类似产品(相对于GIT)。

 

VisualStudio

 

我们使用它来允许编辑器在创建源文件时打开正确版本的Visual Studio。

 

Vivox

 

Vorbis

 

Windows

 

增加了对PIX GPU捕获的支持

允许我们和被许可方在Windows上使用DirectX12调试和分析引擎

 

WindowsDevicePortalWrapper

 

 

 

 

 

 

 

下面Unity中的第三方库的明细来自如下文章:https://gameinstitute.qq.com/community/detail/121551

Unity Engine 中的 Third-Party Libraries

       列出Unity4.6的安装目录层次和一些值得注意的文件(像一些临时文件、log就不列出了),并做上标注。现在我还一点都不明白的就不标注了,存疑的我也会标注好,如果大家有知道的或者我哪里说错了,请一定在评论中指出!

Unity与UE4引擎源码内使用到的第三方库的比较_第5张图片Unity与UE4引擎源码内使用到的第三方库的比较_第6张图片

Editor[编辑器]#

│  │  beast32.dll[Autodesk Beast]

│  │  beast64.dll[Autodesk Beast]

│  │  cairo.dll[Cairo绘图库]

│  │  CFLite.dll[Webkit的第三方扩展,OpenCFLite是一种便携式版本的苹果公司的开源CoreFoundation框架]

│  │  comerr32.dll[?Common error handler for mit kerberos v5 / gss distribution,Kerberos 5协议的免费实现的常见错误处理库]

│  │  FreeImage.dll[FreeImage图像处理库]

│  │  gssapi32.dll[Generic Security Service API,访问安全服务的API,Kerberos 5协议相关]

│  │  iconv.dll[GNU 字符编码转换库]

│  │  JavaScriptCore.dll[?JS处理库,应该是WebKit的一部分]

│  │  k5sprt32.dll[Kerberos 5协议相关]

│  │  krb5_32.dll[Kerberos 5协议库]

│  │  libcurl.dll[客户端URL传输库,可实现很多网络层协议]

│  │  libeay32.dll[OpenSSL相关库]

│  │  libiconv2.dll[GNU 字符编码转换库]

│  │  libintl3.dll[GNU library for native language support]

│  │  libmp3lame.dll[LAME MP3编码库]

│  │  libpq.dll[PostgreSQL访问库]

│  │  libxml2.dll[XML解析库]

│  │  libxslt.dll[提供XSLT支持,是libxml2的扩展]

│  │  mono.pdb[pdb文件?这不是VS编译时生成的的符号文件吗?]

│  │  msvcm80.dll[VC运行库]

│  │  msvcp80.dll[VC运行库]

│  │  msvcr71.dll[VC运行库]

│  │  msvcr80.dll[VC运行库]

│  │  pthreadVC2.dll[pthread多线程库]

│  │  sqlite3.dll[SQLite3库]

│  │  ssleay32.dll[OpenSSL相关库]

│  │  umbraoptimizer32.dll[艺术渲染中间件Umbra的优化组件]

│  │  umbraoptimizer64.dll[艺术渲染中间件Umbra的优化组件]

│  │  Uninstall.exe[卸载程序]

│  │  Unity.exe[主程序]

│  │  Unity.pdb[安装目录里带着163M的调试用的文件是什么鬼?]

│  │  UnityBugReporter.exe[错误报告程序]

│  │  UnityWebPlayer.exe[Unity WebPlayer的安装程序]

│  │  WebKit.dll[WebKit库]

│  │  zlib1.dll[zlib库]

│  ├─CFLite.resources[WebKit的一个第三房库CFLite的相关资源]

Data[数据]#

│  │  ├─BuildTargetTools[生成目标所用的工具]

│  │  │  └─AndroidPlayer[?]

│  │  ├─CGIncludes[CG shader的包含文件,Surface Shader的生成会用到]

│  │  │      AutoLight.cginc[光照相关]

│  │  │      HLSLSupport.cginc[HLSL相关,包含大量的宏定义]

│  │  │      Lighting.cginc[光照相关]

│  │  │      TerrainEngine.cginc[地形相关]

│  │  │      Tessellation.cginc[曲面细分相关]

│  │  │      UnityCG.cginc[一些常用函数(CG版本)]

│  │  │      UnityCG.glslinc[一些常用函数(GLSL版本)]

│  │  │      UnityShaderVariables.cginc[一些Unity内部Constant定义、宏定义]

│  │  ├─Documentation[文档]

│  │  ├─Managed[?托管的,存放C#编译的dll]

│  │  ├─Mono[Mono的运行库]

│  │  ├─MonoBleedingEdge[?最新的Mono库,这些库有可能不稳定而导致问题]

│  │  ├─PackageManager[?包管理器,但具体管理的是什么包就不清楚了]

│  │  ├─PlaybackEngines[?引擎文件,可能是构建各个平台上的程序时所用的一些适配用的组件]

│  │  │  ├─androidplayer[安卓]

│  │  │  ├─blackberryplayer[黑莓]

│  │  │  ├─flashsupport[Flash]

│  │  │  ├─iossupport[IOS]

│  │  │  ├─linuxstandalonesupport[Linux]

│  │  │  ├─macstandalonesupport[mac]

│  │  │  ├─metrosupport[Metro]

│  │  │  ├─WebPlayer[?网页游戏]

│  │  │  ├─windowsstandalonesupport[Windows]

│  │  │  └─wp8support[Windows Phone 8]

│  │  ├─Resources[资源]

│  │  │  ├─Layouts[Unity编辑器的UI Layout]

│  │  │  ├─ScriptTemplates[Sctipt的模板,比如Surface shader、C#脚本,新建shader或脚本中的默认内容]

│  │  │  └─WebPlayerTemplates[?]

 

Tools[工具]#

│  │  │  │  7z.dll[7Zip]

│  │  │  │  7z.exe[7Zip]

│  │  │  │  astcenc.exe[ARM ASTC纹理图像压缩/解压缩工具]

│  │  │  │  auto_quitter.exe[?]

│  │  │  │  binary2text.exe[?]

│  │  │  │  cg.dll[CG核心运行库]

│  │  │  │  convert.exe[ImageMagick,一种图像处理软件,可用于格式转换]

│  │  │  │  D3Dcompiler_46.dll[HLSL编译库]

│  │  │  │  D3Dcompiler_47-x64.dll[HLSL编译库]

│  │  │  │  D3Dcompiler_47.dll[HLSL编译库]

│  │  │  │  diff.exe[文件比较工具,2个文件间]

│  │  │  │  diff3.exe[文件比较工具,3个文件间]

│  │  │  │  etcpack.exe[压缩/解压缩ETC格式的图像的工具]

│  │  │  │  etcpack2.exe[压缩/解压缩ETC1/ETC2格式的图像的工具]

│  │  │  │  FBXMaxExport.ms[3DSMAX的MaxScript脚本,用于从MAX文件导出FBX文件]

│  │  │  │  FBXMayaExport.mel[Maya的MEL脚本,用于从MB文件导出FBX文件]

│  │  │  │  FBXMayaExport5.mel[Maya的MEL脚本,用于从MB文件导出FBX文件]

│  │  │  │  FBXMayaMain.mel[Maya的MEL脚本,主程序(看内容是对导出插件的版本进行了选择)]

│  │  │  │  GeometryToolbox.dll[?]

│  │  │  │  ImportFBX.dll[?]

│  │  │  │  ImportFBX.exp[?]

│  │  │  │  ImportFBX.lib[?]

│  │  │  │  lzma.exe[LZMA压缩/解压缩工具]

│  │  │  │  ModoToUnity.py[将MODO的lxo文件导出为FBX文件或DAE文件的工具]

│  │  │  │  Mono.Cecil.dll[Mono的Cecil库]

│  │  │  │  monolinker.exe[Mono CIL Linker]

│  │  │  │  PVRTexTool.exe[PVR格式纹理处理工具]

│  │  │  │  QuicktimeTools.exe[QuickTime视频处理工具]

│  │  │  │  ShaderFixor.exe[?]

│  │  │  │  umbraoptimizer32.dll[艺术渲染中间件Umbra的优化组件]

│  │  │  │  umbraoptimizer64.dll[艺术渲染中间件Umbra的优化组件]

│  │  │  │  umbraprocess32.exe[?]

│  │  │  │  umbraprocess64.exe[?]

│  │  │  │  Unity-BlenderToFBX.py[将Blender的文件导出为FBX文件或DAE文件的工具]

│  │  │  │  UnityShaderCompiler.exe[?估计是Surface Shader的编译器]

│  │  │  │  UnusedBytecodeStripper.exe[?]

│  │  │  │  Unwrap.dll[?好像是用来做UV展开的一个库]

│  │  │  ├─Beast[Autodesk的光照仿真中间件]

│  │  │  ├─SocketPolicyServer[?]

│  │  │  ├─UNITY-C4DToFBXConverter[将Cinema 4D的C4D文件转换为FBX的工具]

│  │  │  └─VersionControl[版本控制]

│  │  └─UnityExtensions[Unity的扩展]

│  │      └─Unity

│  │          └─GUISystem

│  │              └─4.6.0[新的GUI系统]

 

其它文件夹#

│  ├─JavaScriptCore.resources

│  ├─Standard Packages[一些标准示例]

│  ├─Temp[临时文件夹,一些转换FBX时产生的中间文件就在这里面,当然用完即删]

│  └─WebKit.resources[WebKit的相关资源]

└─MonoDevelop[MonoDevelop IDE]

 

三、分析#

可以看得出来,Unity用了超多的第三方工具!下面就列举下看看。

就按照出现的顺序来说吧。

1. Autodesk Beast#

文件:beast32.dll/beast64.dll/thebeast.exe/thebeast-64.exe等

它是什么?#

参考: http://gameware.autodesk.com/beast?lang=cn

Autodesk® Beast™ 是一组用于制作游戏中的逼真光照 (Realistic Lighting) 的工具。利用 Beast,开发者可以模拟自然光照效果:实时游戏环境中的色彩反弹 (Color Bounce)、柔和阴影、高动态范围光照 (High Dynamic Range Lighting) 和移动对象光照。Beast 有助于制作者提高游戏的视觉质量,创造更加引人注目的游戏体验。

应用#

光照图的生成

2. Cairo#

文件:cairo.dll

它是什么?#

参考: http://cairographics.org/

Cairo提供了跨平台2D绘图的支持

应用#

2D绘图,也可能是其他库的依赖项

3. Webkit#

文件:WebKit.resources、JavaScriptCore.dll、WebKit.dll、JavaScriptCore.resources等

它是什么?#

参考: http://www.webkit.org/

WebKit是一个开源的浏览器引擎

应用#

与浏览器相关的功能,可能应用于内置的Asset Store、Web player等,也可能是其他库的依赖项

4. Kerberos 5协议#

文件:comerr32.dll、k5sprt32.dll、krb5_32.dll、gssapi32.dll等

它是什么?#

参考: http://zh.wikipedia.org/zh/Kerberos

Kerberos协议是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。

应用#

可能用于网络认证中,比如游戏登录等(个人猜测,不确定),也可能是其他库的依赖项

5. FreeImage#

文件:FreeImage.dll

它是什么?#

参考: http://freeimage.sourceforge.net/

FreeImage是一款免费的、开源的、跨平台的,支持很多种图像类型的图像处理库。

应用#

可能用于图像资源导入,图像格式转换,图像处理(如缩放、修改)中,也可能是其他库的依赖项

6. gettext(iconv / libiconv2 / libintl3)#

文件:iconv.dll、libiconv2.dll、libintl3.dll

它们是什么?

参考: http://gettext.sourceforge.net/ http://www.gnu.org/software/libiconv/ http://www.gnu.org/software/libiconv/

iconv提供了在多种国际编码格式之间进行文本内码的转换的功能;libiconv是iconv的实现;libintl3提供了本地化语言支持

应用#

可能用于文本的编码转换、本地语言支持(比如说一个游戏的不同语言版本)

6. cURL#

文件:libcurl.dll

它是什么?#

参考: http://curl.haxx.se/libcurl/

libcurl是一个免费易用的客户端URL传输库。

应用#

基本和应用层网络相关的一切都可以用libcurl来实现(个人猜测),如FTP、HTTP、SMTP等协议

7. OpenSSL#

文件:libeay32.dll、ssleay32.dll

它是什么?#

参考: http://www.openssl.org/

OpenSSL是套开放源代码的软件函数库包,实现了SSL与TLS协议。

应用#

可能是网络相关的如Webkit的依赖项

8. LAME#

文件:libmp3lame.dll

它是什么?#

参考: http://lame.sourceforge.net/

LAME是一个高质量MP3编码器(LGPL)

应用#

可能用于MP3音频文件的生成,如将录音输出为MP3文件,也可能是其他库的依赖项

9. PostgreSQL#

文件:libpq.dll

它是什么?#

参考: http://www.postgresql.org/docs/9.4/static/libpq.html

libpq是PostgreSQL的C应用程序接口。libpq是一套允许客户程序向PostgreSQL服务器服务进程发送查询并且获得查询返回的库函数。

应用#

用于访问PostgreSQL数据库

10. XML#

文件:libxml2.dll、libxslt.dll

它是什么?#

参考: http://xmlsoft.org/

libxml是一个用来解析XML文档的函数库;libxslt提供XSLT支持。

应用#

用于读取、导入XML数据,也可能是其他库的依赖项

11. Pthreads#

文件:pthreadVC2.dll

它是什么?#

参考: http://zh.wikipedia.org/zh/POSIX%E7%BA%BF%E7%A8%8B

libxml是一个用实现了POSIX线程标准的库

应用#

可能是Unity自身的一些功能采用了多线程时会用到,也可能是其他库的依赖项

12. SQLite3#

文件:sqlite3.dll

它是什么?#

参考: http://sqlite.org/

SQLite是一个独立的、无服务器的、无需配置的transactional SQL数据库引擎。

应用#

可能是Unity自身的一些功能采用了SQLLite时会用到,或者某些游戏机制使用了SQLLite作为数据存储的手段,也可能是其他库的依赖项

13. Umbra#

文件:umbraoptimizer32.dll、umbraoptimizer64.dll

它是什么?#

参考: http://umbra3d.com/ http://www.cnblogs.com/umbra/archive/2012/07/31/2617456.html

Umbra 3提供了一种自动化遮挡裁剪系统。

应用#

游戏中的遮挡裁剪

14. zlib#

文件:zlib1.dll

它是什么?#

参考: http://www.zlib.net/

zlib是提供数据压缩用的库。

应用#

可能是FreeImage的依赖项,也可能用于其他需要数据压缩功能的程序或库中。

15. 7Zip#

文件:7z.dll、7z.exe、lzma.exe

它是什么?#

参考: http://www.zlib.net/

7-Zip是一款拥有极高压缩比的开源压缩软件。lzma.exe是其LZMA压缩、解压缩算法的实现。

应用#

用于解压缩7z压缩文件,或者压缩文件为为7z压缩文件,可能在导入7z格式的文件时使用

16. ARM ASTC纹理#

文件:astcenc.exe

它是什么?#

参考: http://community.arm.com/thread/3981

astcenc是用于ARM ASTC纹理图像的压缩/解压缩工具。

应用#

用于压缩/解压缩ARM ASTC纹理图像,可能用于移动设备的纹理转换过程

17. CG#

文件:cg.dll

它是什么?#

参考: https://developer.nvidia.com/cg-toolkit

Cg语言(C for Graphics)是为GPU编程设计的高级着色器语言,由NVIDIA公司开发。cg.dll是CG的运行库。

应用#

用于CG语言的支持,这个比较老了,现在一般都用HLSL或者GLSL了

18. ImageMagick#

文件:convert.exe

它是什么?#

参考: http://www.imagemagick.org/script/convert.php

ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。convert.exe是其组件,用于转换图像文件格式。

应用#

用于处理图像,如格式转换、缩放等

20. HLSL#

文件:D3Dcompiler_46.dll、D3Dcompiler_47-x64.dll、D3Dcompiler_47.dll

它是什么?#

参考: https://msdn.microsoft.com/en-us/library/windows/desktop/dd607340.aspx

D3Dcompiler是Direct3D的一个组件,用于编译HLSL。

应用#

用于编译HLSL

21. diff diff3#

文件:diff.exe、diff3.exe

它是什么?#

参考: http://en.wikipedia.org/wiki/Diff_utility http://en.wikipedia.org/wiki/Diff3

文件比较工具

应用#

用于比较文件,可能用于检测某Asset文件是否变化,比如脚本文件是否变化,从而决定是否重新编译它

22. ETC/ETC1/ETC2纹理#

文件:etcpack.exe、etcpack2.exe

它是什么?#

参考: https://bitbucket.org/wolfpld/etcpak/wiki/Home http://en.wikipedia.org/wiki/Ericsson_Texture_Compression

etcpack是压缩/解压缩ETC格式的图像的工具;etcpack2是压缩/解压缩ETC1/ETC2格式的图像的工具。

应用#

用于压缩/解压缩ETC/ETC1/ETC2纹理图像,可能用于移动设备的纹理转换过程

23. Maxscript脚本 MEL脚本#

文件:FBXMaxExport.ms FBXMayaExport.mel FBXMayaExport5.mel FBXMayaMain.mel

它是什么?#

参考: MAXScript MEL

FBXMaxExport.ms用于从MAX文件导出FBX文件;FBXMayaExport.mel FBXMayaExport5.mel FBXMayaMain.mel用于从MB文件导出FBX文件。

应用#

用于MAX文件、MB文件导入Unity的过程(即转换为FBX的过程)

24. Python脚本#

文件:ModoToUnity.py Unity-BlenderToFBX.py

它是什么?#

参考: http://en.wikipedia.org/wiki/Diff_utility

ModoToUnity.py用于将MODO的lxo文件导出为FBX文件或DAE文件的脚本。MODO是一个3D建模软件;Unity-BlenderToFBX.py是将Blender的文件导出为FBX文件或DAE文件的脚本

应用#

用于将MODO的lxo文件、Blender的3D文件导入Unity(即转换为FBX的过程)

25. QuickTime#

文件:QuicktimeTools.exe

它是什么?#

参考: https://developer.apple.com/quicktime/

视频处理工具

应用#

用于处理视频文件,如压缩、转码等

26. UNITY-C4DToFBXConverter#

文件:UNITY-C4DToFBXConverter下的cdl、cdl64文件

它是什么?#

参考: http://en.wikipedia.org/wiki/Diff_utility

用于将Cinema 4D的C4D文件转换为FBX的工具

应用#

用于将Cinema 4D的C4D文件转换为FBX的工具(这个应该是Unity自己写的)

四、Unity内总结#

现在对上面的各类工具做一下分类和小结。

  1. 图形图像 - 3D模型导入(FBX): Maxscript脚本(3DSMax) / MEL脚本(Maya) / Python脚本(Modo/Blender)
  2. 图形图像 - 图像处理: FreeImage、ARM ASTC纹理、ImageMagick、ETCx纹理
  3. 图形图像 - 渲染: Autodesk Beast、Umbra、CG、HLSL
  4. 图形图像 - 2D绘图: Cairo
  5. 音频: LAME
  6. 视频: QuickTime
  7. 文本: gettext(iconv / libiconv2 / libintl3)、XML(libxml2)、diff / diff3
  8. 网络: Webkit、Kerberos 5协议、cURL(libcurl)、OpenSSL
  9. 数据库: PostgreSQL(libpq)、SQLite3
  10. 多线程:Pthreads
  11. 数据压缩:zlib、7Zip

这里只是从文件层面分析和列举了Unity4所使用的第三方工具。可以看出来,数量很多,类别很多,这也说明了游戏引擎或者说游戏开发工具的复杂性。

 

 

 

 

你可能感兴趣的:(UE4/5)