git: d5e52eb269e3 - main - graphics/filament: New port: Real-time physically based rendering engine
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 19 Aug 2022 19:40:40 UTC
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=d5e52eb269e3059e37b328ea962be4c2200d1523 commit d5e52eb269e3059e37b328ea962be4c2200d1523 Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2022-08-19 19:39:56 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2022-08-19 19:40:38 +0000 graphics/filament: New port: Real-time physically based rendering engine --- graphics/Makefile | 1 + graphics/filament/Makefile | 43 +++++ graphics/filament/distinfo | 3 + graphics/filament/files/patch-CMakeLists.txt | 10 ++ .../files/patch-filament_backend_src_Platform.cpp | 29 ++++ ...patch-libs_bluevk_include_vulkan_vk__platform.h | 11 ++ .../patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp | 11 ++ .../filament/files/patch-libs_utils_CMakeLists.txt | 15 ++ ...atch-third__party_libsdl2_include_SDL__config.h | 11 ++ graphics/filament/pkg-descr | 4 + graphics/filament/pkg-plist | 187 +++++++++++++++++++++ 11 files changed, 325 insertions(+) diff --git a/graphics/Makefile b/graphics/Makefile index 08f7f486eaf1..124c439f1b09 100644 --- a/graphics/Makefile +++ b/graphics/Makefile @@ -187,6 +187,7 @@ SUBDIR += feh SUBDIR += fig2sxd SUBDIR += figurine + SUBDIR += filament SUBDIR += filmulator SUBDIR += flam3 SUBDIR += flasm diff --git a/graphics/filament/Makefile b/graphics/filament/Makefile new file mode 100644 index 000000000000..87534c01e5fa --- /dev/null +++ b/graphics/filament/Makefile @@ -0,0 +1,43 @@ +PORTNAME= filament +DISTVERSIONPREFIX= v +DISTVERSION= 1.25.5 +CATEGORIES= graphics + +MAINTAINER= yuri@FreeBSD.org +COMMENT= Real-time physically based rendering engine + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= bash:shells/bash \ + evdev-proto>0:devel/evdev-proto + +USES= cmake compiler:c++17-lang localbase:ldflags sdl xorg +USE_SDL= sdl2 +USE_XORG= x11 + +USE_GITHUB= yes +GH_ACCOUNT= google + +#CMAKE_ON= BUILD_SHARED_LIBS # not yet supported, see https://github.com/google/filament/issues/1075 +CMAKE_OFF= USE_STATIC_LIBCXX FILAMENT_ENABLE_JAVA +CMAKE_ARGS+= -DDIST_DIR="." # prevent subdirectory for libraries + +LDFLAGS+= -lexecinfo -lSDL2 + +OPTIONS_DEFINE= SAMPLES +OPTIONS_SUB= yes + +SAMPLES_DESC= Build samples +SAMPLES_CMAKE_OFF= -DFILAMENT_SKIP_SAMPLES=ON + +post-patch: + @${REINPLACE_CMD} -e 's|"/proc/self/exe"|"/proc/curproc/file"|' ${WRKSRC}/libs/utils/src/linux/Path.cpp + +post-install: + # remove unnecessary files + @cd ${STAGEDIR}${PREFIX} && ${RM} -r README.md LICENSE docs + # remove conflicting file, see https://github.com/google/filament/issues/5957 + @${RM} ${STAGEDIR}${PREFIX}/lib/libzstd.a + +.include <bsd.port.mk> diff --git a/graphics/filament/distinfo b/graphics/filament/distinfo new file mode 100644 index 000000000000..f6cdef4894d3 --- /dev/null +++ b/graphics/filament/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1660834922 +SHA256 (google-filament-v1.25.5_GH0.tar.gz) = 4486b3f07f6cb9d1a6118e6bc8b926c7225dfcd8d741a5cc37e4de2c2034acc0 +SIZE (google-filament-v1.25.5_GH0.tar.gz) = 496371556 diff --git a/graphics/filament/files/patch-CMakeLists.txt b/graphics/filament/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..fac357ef46bd --- /dev/null +++ b/graphics/filament/files/patch-CMakeLists.txt @@ -0,0 +1,10 @@ +--- CMakeLists.txt.orig 2022-08-18 20:34:20 UTC ++++ CMakeLists.txt +@@ -99,6 +99,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + # ================================================================================================== + if (UNIX AND NOT APPLE AND NOT ANDROID AND NOT WEBGL) + set(LINUX TRUE) ++ message("setting LINUX=TRUE ... will treat the system as Linux-compatible") + endif() + + if (LINUX) diff --git a/graphics/filament/files/patch-filament_backend_src_Platform.cpp b/graphics/filament/files/patch-filament_backend_src_Platform.cpp new file mode 100644 index 000000000000..b26e228a487f --- /dev/null +++ b/graphics/filament/files/patch-filament_backend_src_Platform.cpp @@ -0,0 +1,29 @@ +--- filament/backend/src/Platform.cpp.orig 2022-08-16 18:01:04 UTC ++++ filament/backend/src/Platform.cpp +@@ -41,7 +41,7 @@ + #if defined(FILAMENT_DRIVER_SUPPORTS_VULKAN) + #include "vulkan/PlatformVkCocoa.h" + #endif +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + #if defined(FILAMENT_SUPPORTS_WAYLAND) + #if defined (FILAMENT_DRIVER_SUPPORTS_VULKAN) + #include "vulkan/PlatformVkLinuxWayland.h" +@@ -125,7 +125,7 @@ DefaultPlatform* DefaultPlatform::create(Backend* back + return new PlatformVkAndroid(); + #elif defined(IOS) + return new PlatformVkCocoaTouch(); +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + #if defined(FILAMENT_SUPPORTS_WAYLAND) + return new PlatformVkLinuxWayland(); + #elif defined(FILAMENT_SUPPORTS_X11) +@@ -159,7 +159,7 @@ DefaultPlatform* DefaultPlatform::create(Backend* back + return new PlatformCocoaTouchGL(); + #elif defined(__APPLE__) + return new PlatformCocoaGL(); +- #elif defined(__linux__) ++ #elif defined(__linux__) || defined(__FreeBSD__) + #if defined(FILAMENT_SUPPORTS_X11) + return new PlatformGLX(); + #elif defined(FILAMENT_SUPPORTS_EGL_ON_LINUX) diff --git a/graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h b/graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h new file mode 100644 index 000000000000..cd131eedc729 --- /dev/null +++ b/graphics/filament/files/patch-libs_bluevk_include_vulkan_vk__platform.h @@ -0,0 +1,11 @@ +--- libs/bluevk/include/vulkan/vk_platform.h.orig 2022-08-19 02:33:42 UTC ++++ libs/bluevk/include/vulkan/vk_platform.h +@@ -25,7 +25,7 @@ + #define VK_USE_PLATFORM_ANDROID_KHR 1 + #elif defined(IOS) + #define VK_USE_PLATFORM_IOS_MVK 1 +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + #if defined(FILAMENT_SUPPORTS_XCB) + #define VK_USE_PLATFORM_XCB_KHR 1 + #endif diff --git a/graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp b/graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp new file mode 100644 index 000000000000..7a36d4b012a5 --- /dev/null +++ b/graphics/filament/files/patch-libs_bluevk_src_BlueVKLinuxAndroid.cpp @@ -0,0 +1,11 @@ +--- libs/bluevk/src/BlueVKLinuxAndroid.cpp.orig 2022-08-18 16:44:25 UTC ++++ libs/bluevk/src/BlueVKLinuxAndroid.cpp +@@ -42,7 +42,7 @@ bool loadLibrary() { + path = FILAMENT_VKLIBRARY_PATH; + #elif defined(__ANDROID__) + path = "libvulkan.so"; +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + path = "libvulkan.so.1"; + #else + #error "This file should only be compiled for Android or Linux" diff --git a/graphics/filament/files/patch-libs_utils_CMakeLists.txt b/graphics/filament/files/patch-libs_utils_CMakeLists.txt new file mode 100644 index 000000000000..2deb894bd724 --- /dev/null +++ b/graphics/filament/files/patch-libs_utils_CMakeLists.txt @@ -0,0 +1,15 @@ +--- libs/utils/CMakeLists.txt.orig 2022-08-16 18:01:04 UTC ++++ libs/utils/CMakeLists.txt +@@ -81,8 +81,10 @@ if (ANDROID) + list(APPEND SRCS src/android/ThermalManager.cpp) + endif() + if (LINUX OR ANDROID) +- list(APPEND SRCS src/linux/Condition.cpp) +- list(APPEND SRCS src/linux/Mutex.cpp) ++ if (NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD") ++ list(APPEND SRCS src/linux/Condition.cpp) ++ list(APPEND SRCS src/linux/Mutex.cpp) ++ endif() + list(APPEND SRCS src/linux/Path.cpp) + endif() + if (APPLE) diff --git a/graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h b/graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h new file mode 100644 index 000000000000..3a196242c609 --- /dev/null +++ b/graphics/filament/files/patch-third__party_libsdl2_include_SDL__config.h @@ -0,0 +1,11 @@ +--- third_party/libsdl2/include/SDL_config.h.orig 2022-08-19 18:37:12 UTC ++++ third_party/libsdl2/include/SDL_config.h +@@ -41,7 +41,7 @@ + #include "SDL_config_android.h" + #elif defined(__PSP__) + #include "SDL_config_psp.h" +-#elif defined(__LINUX__) ++#elif defined(__LINUX__) || defined(__FreeBSD__) + #if defined(FILAMENT_SUPPORTS_WAYLAND) + #include "SDL_config_linux_wayland.h" + #elif defined(FILAMENT_SUPPORTS_X11) diff --git a/graphics/filament/pkg-descr b/graphics/filament/pkg-descr new file mode 100644 index 000000000000..3fea3502fa0c --- /dev/null +++ b/graphics/filament/pkg-descr @@ -0,0 +1,4 @@ +Filament is a real-time physically-based renderer written in C++. +It is mobile-first, but also multi-platform. + +WWW: https://google.github.io/filament/ diff --git a/graphics/filament/pkg-plist b/graphics/filament/pkg-plist new file mode 100644 index 000000000000..ee3832f40cda --- /dev/null +++ b/graphics/filament/pkg-plist @@ -0,0 +1,187 @@ +%%SAMPLES%%bin/assets/fonts/Roboto-License.txt +%%SAMPLES%%bin/assets/fonts/Roboto-Medium.ttf +%%SAMPLES%%bin/assets/lightroom_14b/lightroom_14b_ibl.ktx +%%SAMPLES%%bin/assets/lightroom_14b/lightroom_14b_skybox.ktx +%%SAMPLES%%bin/assets/lightroom_14b/sh.txt +bin/basisu +bin/cmgen +bin/filamesh +bin/glslminifier +%%SAMPLES%%bin/gltf_viewer +bin/matc +%%SAMPLES%%bin/material_sandbox +bin/matinfo +bin/mipgen +bin/normal-blending +bin/resgen +bin/roughness-prefilter +bin/specular-color +bin/uberz +include/backend/BufferDescriptor.h +include/backend/CallbackHandler.h +include/backend/DriverEnums.h +include/backend/Handle.h +include/backend/PipelineState.h +include/backend/PixelBufferDescriptor.h +include/backend/Platform.h +include/backend/PresentCallable.h +include/backend/SamplerDescriptor.h +include/backend/TargetBufferInfo.h +include/camutils/Bookmark.h +include/camutils/Manipulator.h +include/camutils/compiler.h +include/filamat/Enums.h +include/filamat/IncludeCallback.h +include/filamat/MaterialBuilder.h +include/filamat/Package.h +include/filament-iblprefilter/IBLPrefilterContext.h +include/filament/Box.h +include/filament/BufferObject.h +include/filament/Camera.h +include/filament/Color.h +include/filament/ColorGrading.h +include/filament/DebugRegistry.h +include/filament/Engine.h +include/filament/Exposure.h +include/filament/Fence.h +include/filament/FilamentAPI.h +include/filament/Frustum.h +include/filament/IndexBuffer.h +include/filament/IndirectLight.h +include/filament/LightManager.h +include/filament/Material.h +include/filament/MaterialChunkType.h +include/filament/MaterialEnums.h +include/filament/MaterialInstance.h +include/filament/MorphTargetBuffer.h +include/filament/Options.h +include/filament/RenderTarget.h +include/filament/RenderableManager.h +include/filament/Renderer.h +include/filament/Scene.h +include/filament/SkinningBuffer.h +include/filament/Skybox.h +include/filament/Stream.h +include/filament/SwapChain.h +include/filament/Texture.h +include/filament/TextureSampler.h +include/filament/ToneMapper.h +include/filament/TransformManager.h +include/filament/VertexBuffer.h +include/filament/View.h +include/filament/Viewport.h +include/filameshio/MeshReader.h +include/geometry/SurfaceOrientation.h +include/geometry/Transcoder.h +include/gltfio/Animator.h +include/gltfio/AssetLoader.h +include/gltfio/FilamentAsset.h +include/gltfio/FilamentInstance.h +include/gltfio/MaterialProvider.h +include/gltfio/NodeManager.h +include/gltfio/ResourceLoader.h +include/gltfio/TextureProvider.h +include/gltfio/materials/uberarchive.h +include/gltfio/math.h +include/ibl/Cubemap.h +include/ibl/CubemapIBL.h +include/ibl/CubemapSH.h +include/ibl/CubemapUtils.h +include/ibl/Image.h +include/ibl/utilities.h +include/image/ColorTransform.h +include/image/ImageOps.h +include/image/ImageSampler.h +include/image/Ktx1Bundle.h +include/image/LinearImage.h +include/ktxreader/Ktx1Reader.h +include/ktxreader/Ktx2Reader.h +include/math/TMatHelpers.h +include/math/TQuatHelpers.h +include/math/TVecHelpers.h +include/math/compiler.h +include/math/fast.h +include/math/half.h +include/math/mat2.h +include/math/mat3.h +include/math/mat4.h +include/math/mathfwd.h +include/math/norm.h +include/math/quat.h +include/math/scalar.h +include/math/vec2.h +include/math/vec3.h +include/math/vec4.h +include/mathio/ostream.h +include/tsl/robin_growth_policy.h +include/tsl/robin_hash.h +include/tsl/robin_map.h +include/tsl/robin_set.h +include/uberz/ArchiveEnums.h +include/uberz/ReadableArchive.h +include/uberz/WritableArchive.h +include/utils/Allocator.h +include/utils/BitmaskEnum.h +include/utils/CString.h +include/utils/CallStack.h +include/utils/Entity.h +include/utils/EntityInstance.h +include/utils/EntityManager.h +include/utils/FixedCapacityVector.h +include/utils/Invocable.h +include/utils/Log.h +include/utils/Mutex.h +include/utils/NameComponentManager.h +include/utils/Panic.h +include/utils/Path.h +include/utils/PrivateImplementation-impl.h +include/utils/PrivateImplementation.h +include/utils/SingleInstanceComponentManager.h +include/utils/Slice.h +include/utils/SpinLock.h +include/utils/StructureOfArrays.h +include/utils/algorithm.h +include/utils/bitset.h +include/utils/compiler.h +include/utils/compressed_pair.h +include/utils/debug.h +include/utils/linux/Mutex.h +include/utils/memalign.h +include/utils/ostream.h +include/utils/unwindows.h +include/viewer/AutomationEngine.h +include/viewer/AutomationSpec.h +include/viewer/RemoteServer.h +include/viewer/Settings.h +include/viewer/ViewerGui.h +lib/libbackend.a +lib/libbasis_transcoder.a +lib/libbluegl.a +lib/libbluevk.a +lib/libcamutils.a +lib/libcivetweb.a +lib/libdracodec.a +lib/libfilabridge.a +lib/libfilaflat.a +lib/libfilamat.a +lib/libfilamat_lite.a +lib/libfilament-iblprefilter.a +lib/libfilament.a +lib/libfilameshio.a +lib/libgeometry.a +lib/libgltfio.a +lib/libgltfio_core.a +lib/libibl-lite.a +lib/libibl.a +lib/libimage.a +lib/libktxreader.a +lib/libmatdbg.a +lib/libmeshoptimizer.a +lib/libshaders.a +lib/libsmol-v.a +lib/libstb.a +lib/libuberarchive.a +lib/libuberzlib.a +lib/libutils.a +lib/libviewer.a +lib/libvkshaders.a