graphics/zeno: New port: simulation & rendering engine in nodes

ZENO is an open-source, Node based 3D system able to produce
cinematic physics effects at High Efficiency, it was designed
for large scale simulations and has been tested on complex
setups. Aside of its simulation Tools, ZENO provides necessary
visualization nodes for users to import and run simulations if
you feel that the current software you are using is too slow.

https://github.com/zenustech/zeno/blob/master/README.md
https://zenustech.com

PR:	278611
This commit is contained in:
Martin Filla 2024-07-29 19:47:45 +03:00 committed by Vladimir Druzenko
parent 1ec39d3ecc
commit 41828ceba7
27 changed files with 417 additions and 0 deletions

View file

@ -1266,6 +1266,7 @@
SUBDIR += zathura-pdf-poppler SUBDIR += zathura-pdf-poppler
SUBDIR += zathura-ps SUBDIR += zathura-ps
SUBDIR += zbar SUBDIR += zbar
SUBDIR += zeno
SUBDIR += zgv SUBDIR += zgv
SUBDIR += zimg SUBDIR += zimg
SUBDIR += zint SUBDIR += zint

41
graphics/zeno/Makefile Normal file
View file

@ -0,0 +1,41 @@
PORTNAME= zeno
DISTVERSION= 2023.11.16
CATEGORIES= graphics
MAINTAINER= freebsd@sysctl.cz
COMMENT= ZEn NOde system - a simulation & rendering engine in nodes
WWW= https://zenustech.com/
LICENSE= MPL20
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= openmpi>0:net/openmpi \
cgal>=5.0.2:math/cgal \
onetbb>0:devel/onetbb \
openvdb>0:misc/openvdb
USES= cmake compiler:c++17-lang eigen:3 localbase:ldflags qt:5
USE_GITHUB= yes
GH_ACCOUNT= zenustech
USE_LDCONFIG= yes
USE_QT= core gui network opengl svg widgets buildtools:build qmake:build
CMAKE_ON= ZENO_BUILD_EDITOR ZENO_BUILD_SHARED ZENO_IPC_USE_TCP \
ZENO_MULTIPROCESS ZENO_NO_WARNING ZENO_USE_CCACHE
CMAKE_OFF= ZENO_BUILD_DESIGNER ZENO_BUILD_PLAYER ZENO_INSTALL_TARGET \
ZENO_MARCH_NATIVE ZENO_OPTIX_PROC ZENO_USE_FAST_MATH \
ZENO_WIN32_RC ZENO_WITH_CUDA
# ZENO_BUILD_DESIGNER - bug https://github.com/zenustech/zeno/issues/1907
# fix on 13.3: "ld: error: undefined reference due to --no-allow-shlib-undefined:
LDFLAGS+= -Wl,--allow-shlib-undefined -lomp
PLIST_FILES= bin/autotest \
bin/zenoedit \
lib/libzeno.so
do-install:
${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/autotest ${STAGEDIR}${PREFIX}/bin
${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/zenoedit ${STAGEDIR}${PREFIX}/bin
${INSTALL_LIB} ${WRKDIR}/.build/bin/libzeno.so ${STAGEDIR}${PREFIX}/lib
.include <bsd.port.mk>

3
graphics/zeno/distinfo Normal file
View file

@ -0,0 +1,3 @@
TIMESTAMP = 1713709608
SHA256 (zenustech-zeno-2023.11.16_GH0.tar.gz) = ab6cf15c4daaf5afdf98fe5f25b9d9ceabee665c2fd0450227d22c5060e4696e
SIZE (zenustech-zeno-2023.11.16_GH0.tar.gz) = 87281411

View file

@ -0,0 +1,11 @@
--- ui/zenodesign/CMakeLists.txt.orig 2024-04-22 14:05:16 UTC
+++ ui/zenodesign/CMakeLists.txt
@@ -22,7 +22,7 @@ endif (WIN32)
file(GLOB_RECURSE source CONFIGURE_DEPENDS *.h *.cpp *.ui)
file(GLOB_RECURSE resource CONFIGURE_DEPENDS *.qrc)
-qt5_add_big_resources(source ${resource}) # cihou msvc: fatal error C1060: compiler is out of heap space
+#qt5_add_big_resources(source ${resource}) # cihou msvc: fatal error C1060: compiler is out of heap space
add_executable(zenodesign ${source})
target_include_directories(zenodesign PRIVATE ../3rdparty ../zenoui ../editor)

View file

@ -0,0 +1,17 @@
--- ui/zenodesign/layertreeitemdelegate.cpp.orig 2023-11-22 19:17:26 UTC
+++ ui/zenodesign/layertreeitemdelegate.cpp
@@ -1,7 +1,7 @@
#include "framework.h"
#include "layerwidget.h"
#include "layertreeitemdelegate.h"
-
+#include "zenostyle.h"
LayerTreeitemDelegate::LayerTreeitemDelegate(QWidget* parent)
: QStyledItemDelegate(parent), m_treeview(nullptr)
@@ -211,4 +211,4 @@ QSize LayerTreeitemDelegate::sizeHint(const QStyleOpti
void LayerTreeitemDelegate::initStyleOption(QStyleOptionViewItem* option, const QModelIndex& index) const
{
QStyledItemDelegate::initStyleOption(option, index);
}
+}

View file

@ -0,0 +1,11 @@
--- ui/zenodesign/layerwidget.cpp.orig 2023-11-22 19:17:26 UTC
+++ ui/zenodesign/layerwidget.cpp
@@ -5,7 +5,7 @@
#include "layertreeitemdelegate.h"
#include "nodeswidget.h"
#include "util.h"
-
+#include "zenostyle.h"
NodesView* getCurrentView(QWidget* pWidget)
{

View file

@ -0,0 +1,11 @@
--- ui/zenodesign/zpropertiespanel.cpp.orig 2023-11-22 19:17:26 UTC
+++ ui/zenodesign/zpropertiespanel.cpp
@@ -5,7 +5,7 @@
#include "styletabwidget.h"
#include "nodesview.h"
#include "nodeswidget.h"
-
+#include "zenostyle.h"
DesignerMainWin* getMainWindow(QWidget* pWidget)
{

View file

@ -0,0 +1,10 @@
--- ui/zenoedit/launch/offlinemain.cpp.orig 2024-04-26 16:52:52 UTC
+++ ui/zenoedit/launch/offlinemain.cpp
@@ -14,6 +14,7 @@
#include <zeno/extra/assetDir.h>
#include "util/apphelper.h"
#include "launch/ztcpserver.h"
+#include "zenoapplication.h"
int offline_main(const QCoreApplication& app);
int offline_main(const QCoreApplication& app) {

View file

@ -0,0 +1,14 @@
--- ui/zenoedit/launch/viewdecode.cpp.orig 2024-04-23 11:14:37 UTC
+++ ui/zenoedit/launch/viewdecode.cpp
@@ -1,4 +1,4 @@
-#ifdef ZENO_MULTIPROCESS
+//#ifdef ZENO_MULTIPROCESS
#include "viewdecode.h"
#include "zenoapplication.h"
#include <zenomodel/include/graphsmanagment.h>
@@ -335,4 +335,4 @@ void viewDecodeAppend(const char *buf, size_t n)
zeno::log_debug("viewDecodeAppend n={}", n);
viewDecodeData.append(buf, n);
}
-#endif
+//#endif

View file

@ -0,0 +1,15 @@
--- ui/zenoedit/launch/viewdecode.h.orig 2024-04-23 11:14:05 UTC
+++ ui/zenoedit/launch/viewdecode.h
@@ -1,10 +1,10 @@
#pragma once
-#ifdef ZENO_MULTIPROCESS
+//#ifdef ZENO_MULTIPROCESS
#include <cstddef>
void viewDecodeClear();
void viewDecodeAppend(const char *buf, size_t n);
void viewDecodeSetFrameCache(const char *path, int gcmax);
void viewDecodeFinish();
-#endif
+//#endif

View file

@ -0,0 +1,14 @@
--- ui/zenoedit/launch/ztcpserver.cpp.orig 2024-04-23 11:08:52 UTC
+++ ui/zenoedit/launch/ztcpserver.cpp
@@ -1,4 +1,4 @@
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
#include <cstdio>
#include <cstring>
#include "ztcpserver.h"
@@ -443,4 +443,4 @@ void ZTcpServer::onProcFinished(int exitCode, QProcess
emit runFinished();
}
-#endif
+//#endif

View file

@ -0,0 +1,19 @@
--- ui/zenoedit/launch/ztcpserver.h.orig 2024-04-23 11:07:59 UTC
+++ ui/zenoedit/launch/ztcpserver.h
@@ -1,7 +1,7 @@
#ifndef __ZCORE_TCPSERVER_H__
#define __ZCORE_TCPSERVER_H__
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
#include <QObject>
#include <QtNetwork>
@@ -52,6 +52,6 @@ private slots: (private)
int m_port;
};
-#endif
+//#endif
#endif

View file

@ -0,0 +1,16 @@
--- ui/zenoedit/nodesys/zenonode.cpp.orig 2024-04-26 16:28:26 UTC
+++ ui/zenoedit/nodesys/zenonode.cpp
@@ -35,6 +35,7 @@
#include "settings/zenosettingsmanager.h"
#include <zenomodel/include/command.h>
#include <zenomodel/include/nodeparammodel.h>
+#include <comctrl/gv/zveceditoritem.h>
ZenoNode::ZenoNode(const NodeUtilParam &params, QGraphicsItem *parent)
@@ -2079,4 +2080,4 @@ void ZenoNode::onCustomNameChanged()
m_pCategoryItem->setText(text);
ZGraphicsLayout::updateHierarchy(m_pCategoryItem);
}
}
+}

View file

@ -0,0 +1,10 @@
--- ui/zenoedit/recordmain.cpp.orig 2024-04-26 16:42:36 UTC
+++ ui/zenoedit/recordmain.cpp
@@ -15,6 +15,7 @@
#include <zeno/utils/log.h>
#include "common.h"
#include <rapidjson/document.h>
+#include "zenoapplication.h"
//--record true --zsg "C:\zeno\framenum.zsg" --cachePath "C:\tmp" --sframe 0 --frame 10 --sample 1 --optix 1 --path "C:\recordpath" --pixel 4500x3500 --aov 0 --needDenoise 0

View file

@ -0,0 +1,11 @@
--- ui/zenoedit/updaterequest/zsnetthread.cpp.orig 2023-11-22 19:17:26 UTC
+++ ui/zenoedit/updaterequest/zsnetthread.cpp
@@ -37,7 +37,7 @@ void ZsNetThread::run()
void ZsNetThread::netGet()
{
-#ifdef __linux__
+#if defined( __linux__) || defined(__FreeBSD__)
return;
#else
CURL* curl;

View file

@ -0,0 +1,14 @@
--- ui/zenoedit/util/apphelper.cpp.orig 2023-11-22 19:17:26 UTC
+++ ui/zenoedit/util/apphelper.cpp
@@ -11,7 +11,11 @@
#include <zeno/core/Session.h>
#include <zeno/extra/GlobalComm.h>
#include "viewport/zoptixviewport.h"
+#include "timeline/ztimeline.h"
+#include "zenomodel/include/curveutil.h"
+#include "zenomodel/include/nodesmgr.h"
+#include "zenoapplication.h"
QModelIndexList AppHelper::getSubInOutNode(IGraphsModel* pModel, const QModelIndex& subgIdx, const QString& sockName, bool bInput)
{

View file

@ -0,0 +1,25 @@
--- ui/zenoedit/util/apphelper.h.orig 2024-07-27 11:22:11 UTC
+++ ui/zenoedit/util/apphelper.h
@@ -1,19 +1,18 @@
#ifndef __ZENOEDIT_HELPER__
#define __ZENOEDIT_HELPER__
#include <zenomodel/include/igraphsmodel.h>
-#include "zenoapplication.h"
#include <zenomodel/include/graphsmanagment.h>
#include <zenomodel/include/igraphsmodel.h>
-#include "zenomainwindow.h"
#include <zenovis/ObjectsManager.h>
#include <zeno/types/UserData.h>
-#include <zenoui/comctrl/gv/zveceditoritem.h>
-#include <viewport/viewportwidget.h>
#include "launch/corelaunch.h"
#include "settings/zsettings.h"
#include "viewport/recordvideomgr.h"
#include "panel/zenospreadsheet.h"
+
+class ZVecEditorItem;
+class ViewPortWidget;
class AppHelper
{

View file

@ -0,0 +1,13 @@
--- ui/zenoedit/viewportinteraction/nodesync.cpp.orig 2024-04-26 16:47:28 UTC
+++ ui/zenoedit/viewportinteraction/nodesync.cpp
@@ -1,3 +1,4 @@
+#include "zenoapplication.h"
#include "nodesync.h"
#include <zenomodel/include/uihelper.h>
@@ -205,4 +206,4 @@ std::string NodeSyncMgr::getPrimSockName(NodeLocation&
return getPrimSockName(node_type.toStdString());
}
}
+}

View file

@ -0,0 +1,32 @@
--- ui/zenoedit/zenoapplication.cpp.orig 2024-04-23 10:56:09 UTC
+++ ui/zenoedit/zenoapplication.cpp
@@ -13,9 +13,9 @@
ZenoApplication::ZenoApplication(int &argc, char **argv)
: QApplication(argc, argv)
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
, m_server(nullptr)
-#endif
+//#endif
, m_bUIApp(true)
{
initMetaTypes();
@@ -173,7 +173,7 @@ QStandardItemModel* ZenoApplication::logModel() const
return graphsManagment()->logModel();
}
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
ZTcpServer* ZenoApplication::getServer()
{
if (!m_server) {
@@ -182,7 +182,7 @@ ZTcpServer* ZenoApplication::getServer()
}
return m_server;
}
-#endif
+//#endif
ZenoMainWindow* ZenoApplication::getMainWindow()
{

View file

@ -0,0 +1,45 @@
--- ui/zenoedit/zenoapplication.h.orig 2023-11-22 19:17:26 UTC
+++ ui/zenoedit/zenoapplication.h
@@ -3,15 +3,15 @@
#include <QtWidgets>
#include "zwidgetostream.h"
+#include "zenomainwindow.h"
#include "cache/zcachemgr.h"
#include "uilogic/procclipboard.h"
#include <zeno/utils/scope_exit.h>
class GraphsManagment;
-class ZenoMainWindow;
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
class ZTcpServer;
-#endif
+//#endif
class ZenoApplication : public QApplication
{
@@ -26,9 +26,9 @@ class ZenoApplication : public QApplication (public)
QWidget* getWindow(const QString& objName);
std::shared_ptr<ZCacheMgr> cacheMgr() const;
std::shared_ptr<ProcessClipboard> procClipboard() const;
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
ZTcpServer* getServer();
-#endif
+//#endif
QStandardItemModel* logModel() const;
bool isUIApplication() const { return m_bUIApp; }
@@ -39,9 +39,9 @@ private slots: (private)
QString readQss(const QString& qssPath);
void initMetaTypes();
-#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
+//#if defined(ZENO_MULTIPROCESS) && defined(ZENO_IPC_USE_TCP)
ZTcpServer* m_server;
-#endif
+//#endif
std::shared_ptr<ZWidgetErrStream> m_spUILogStream;
std::shared_ptr<ZCacheMgr> m_spCacheMgr;
std::shared_ptr<ProcessClipboard> m_spProcClipboard;

View file

@ -0,0 +1,11 @@
--- ui/zenoedit/zenomainwindow.cpp.orig 2024-04-22 13:07:02 UTC
+++ ui/zenoedit/zenomainwindow.cpp
@@ -1467,7 +1467,7 @@ void ZenoMainWindow::onZenovisFrameUpdate(bool bGLView
void ZenoMainWindow::onCheckUpdate()
{
-#ifdef __linux__
+#if defined( __linux__) || defined(__FreeBSD__)
return;
#else
ZCheckUpdateDlg dlg(this);

View file

@ -0,0 +1,19 @@
--- zeno/include/zeno/utils/PropertyVisitor.h.orig 2024-04-25 15:55:29 UTC
+++ zeno/include/zeno/utils/PropertyVisitor.h
@@ -396,12 +396,12 @@ namespace zeno {
}
if constexpr (IsSharedPtr<ValueType>()) {
- if (!bIsOptional || Primitive->userData().has<ValueType>(KeyName)) {
- ValueRef = Primitive->userData().get<ValueType>(KeyName);
+ if (!bIsOptional || Primitive->userData().template has<ValueType>(KeyName)) {
+ ValueRef = Primitive->userData().template get<ValueType>(KeyName);
}
} else {
- if (!bIsOptional || Primitive->userData().has<ValueType>(KeyName)) {
- ValueRef = Primitive->userData().get2<ValueType>(KeyName);
+ if (!bIsOptional || Primitive->userData().template has<ValueType>(KeyName)) {
+ ValueRef = Primitive->userData().template get2<ValueType>(KeyName);
}
}
};

View file

@ -0,0 +1,10 @@
--- zeno/src/extra/GlobalComm.cpp.orig 2024-04-21 08:28:40 UTC
+++ zeno/src/extra/GlobalComm.cpp
@@ -10,6 +10,7 @@
#include <unordered_set>
#include <zeno/types/MaterialObject.h>
#include <zeno/types/CameraObject.h>
+#include <thread>
#ifdef __linux__
#include<unistd.h>
#include <sys/statfs.h>

View file

@ -0,0 +1,12 @@
--- zenovis/src/Scene.cpp.orig 2024-04-22 12:39:31 UTC
+++ zenovis/src/Scene.cpp
@@ -12,7 +12,9 @@
#include <zenovis/opengl/buffer.h>
#include <zenovis/opengl/common.h>
#include <zenovis/opengl/scope.h>
+#ifdef ZENO_ENABLE_OPTIX
#include "../xinxinoptix/xinxinoptixapi.h"
+#endif
#include <cstdlib>
#include <map>

View file

@ -0,0 +1,14 @@
--- zenovis/src/optx/RenderEngineOptx.cpp.orig 2024-04-22 12:40:25 UTC
+++ zenovis/src/optx/RenderEngineOptx.cpp
@@ -1,10 +1,10 @@
+#ifdef ZENO_ENABLE_OPTIX
#include "optixPathTracer.h"
#include "vec_math.h"
#include "xinxinoptixapi.h"
#include "zeno/utils/vec.h"
#include <limits>
#include <memory>
-#ifdef ZENO_ENABLE_OPTIX
#include "../../xinxinoptix/xinxinoptixapi.h"
#include "../../xinxinoptix/SDK/sutil/sutil.h"
#include <zeno/types/PrimitiveObject.h>

View file

@ -0,0 +1,12 @@
--- CMakeLists.txt.orig 2023-11-22 19:17:26 UTC
+++ CMakeLists.txt
@@ -26,6 +26,9 @@ if (PROJECT_BINARY_DIR STREQUAL PROJECT_SOURCE_DIR)
"Otherwise ZENO may fail to build, or make Git hard to exclude binary files.")
endif()
+#set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
+#set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
+
option(ZENO_BUILD_EDITOR "Build ZENO editor" ON)
option(ZENO_BUILD_DESIGNER "Build ZENO designer" OFF)
option(ZENO_BUILD_PLAYER "Build ZENO player" OFF)

6
graphics/zeno/pkg-descr Normal file
View file

@ -0,0 +1,6 @@
ZENO is an open-source, Node based 3D system able to produce
cinematic physics effects at High Efficiency, it was designed
for large scale simulations and has been tested on complex
setups. Aside of its simulation Tools, ZENO provides necessary
visualization nodes for users to import and run simulations if
you feel that the current software you are using is too slow.