From b1d61c67c28a9ba4a1de834e401d97cfc9e84764 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sun, 21 Dec 2025 20:53:50 +0100 Subject: Reworking some structures. adding particle tests again --- util/build.sh | 49 --------------------- util/podman/build.sh | 50 +++++++++++++++++++++ util/vtk_renderer/.nix/derivation.nix | 25 +++++++++++ util/vtk_renderer/Makefile | 12 +++++ util/vtk_renderer/kel_vtk_renderer.cpp | 80 ++++++++++++++++++++++++++++++++++ 5 files changed, 167 insertions(+), 49 deletions(-) delete mode 100755 util/build.sh create mode 100755 util/podman/build.sh create mode 100644 util/vtk_renderer/.nix/derivation.nix create mode 100644 util/vtk_renderer/Makefile create mode 100644 util/vtk_renderer/kel_vtk_renderer.cpp (limited to 'util') diff --git a/util/build.sh b/util/build.sh deleted file mode 100755 index 254c1ff..0000000 --- a/util/build.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# --- Configuration: package name and version --- -PKG_NAME="kel-lbm" -PKG_VERSION="0.0.3" - -# --- Ensure we're in the Git root --- -if ! GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null); then - echo "Error: Not inside a git repository." - exit 1 -fi -cd "$GIT_ROOT" - -# --- Ensure default.nix exists --- -if [[ ! -f default.nix ]]; then - echo "Error: no default.nix in Git root ($GIT_ROOT)" - exit 1 -fi - -# --- Run build + packaging inside container --- -podman run --rm -it \ - -v "$GIT_ROOT":/workspace \ - -w /workspace \ - -e USER=nix \ - -e PKG_NAME="$PKG_NAME" \ - -e PKG_VERSION="$PKG_VERSION" \ - docker.io/nixos/nix:latest \ - nix-shell -p bash --run " - set -euo pipefail - - # Build the derivation - nix-build default.nix -A release.examples --out-link result - - # Install fpm if missing - if ! command -v fpm >/dev/null 2>&1; then - nix-shell -p fpm --run 'true' - fi - - # Create .deb package - nix-shell -p fpm --run \"fpm -s dir -t deb -n \$PKG_NAME -v \$PKG_VERSION -C result --prefix /usr/local .\" - - # Create .rpm package - # nix-shell -p fpm rpm --run \"fpm -s dir -t rpm -n \$PKG_NAME -v \$PKG_VERSION -C result --prefix /usr/local .\" - " - -echo "✅ Build complete!" -echo " - result -> $GIT_ROOT/result" -echo " - ${PKG_NAME}_${PKG_VERSION}.deb and ${PKG_NAME}-${PKG_VERSION}.rpm are in $GIT_ROOT" diff --git a/util/podman/build.sh b/util/podman/build.sh new file mode 100755 index 0000000..1f36f2a --- /dev/null +++ b/util/podman/build.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +# --- Configuration: package name and version --- +PKG_NAME="kel-lbm" +PKG_VERSION="0.0.3" + +# --- Ensure we're in the Git root --- +if ! GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null); then + echo "Error: Not inside a git repository." + exit 1 +fi +cd "$GIT_ROOT" + +# --- Ensure default.nix exists --- +if [[ ! -f default.nix ]]; then + echo "Error: no default.nix in Git root ($GIT_ROOT)" + exit 1 +fi + +# --- Run build + packaging inside container --- +podman run --rm -it \ + -v "$GIT_ROOT":/workspace \ + -w /workspace \ + -e USER=nix \ + -e PKG_NAME="$PKG_NAME" \ + -e PKG_VERSION="$PKG_VERSION" \ + docker.io/nixos/nix:latest \ + nix-shell -p bash --run " + set -euo pipefail + + # Build the derivation + nix-build default.nix -A release.examples --out-link result + + # Install fpm if missing + if ! command -v fpm >/dev/null 2>&1; then + nix-shell -p fpm --run 'true' + fi + + # Create .deb package + nix-shell -p fpm --run \"fpm -s dir -t deb -n \$PKG_NAME -v \$PKG_VERSION -C result --prefix /usr/local .\" + + # Create .rpm package + # Turned off right now (Well, commented) + # nix-shell -p fpm rpm --run \"fpm -s dir -t rpm -n \$PKG_NAME -v \$PKG_VERSION -C result --prefix /usr/local .\" + " + +echo "✅ Build complete!" +echo " - result -> $GIT_ROOT/result" +echo " - ${PKG_NAME}_${PKG_VERSION}.deb and ${PKG_NAME}-${PKG_VERSION}.rpm are in $GIT_ROOT" diff --git a/util/vtk_renderer/.nix/derivation.nix b/util/vtk_renderer/.nix/derivation.nix new file mode 100644 index 0000000..e56ee0c --- /dev/null +++ b/util/vtk_renderer/.nix/derivation.nix @@ -0,0 +1,25 @@ +{ lib +, stdenv +, gnumake +, pkg-config +, vtk +}: + +stdenv.mkDerivation { + pname = "kel-vtk-renderer"; + version = "0.0.1"; + + nativeBuildInputs = [ + gnumake + pkg-config + ]; + + buildInputs = [ + vtk + ]; + + installPhase = '' + mkdir -p $out/bin + cp kel_vtk_renderer $out/bin + ''; +} diff --git a/util/vtk_renderer/Makefile b/util/vtk_renderer/Makefile new file mode 100644 index 0000000..00ec9c4 --- /dev/null +++ b/util/vtk_renderer/Makefile @@ -0,0 +1,12 @@ +.PHONY: all + +CXX = c++ +CXXFLAGS=-std=c++20 -O3 -I/nix/store/31vfnljfr5jjh74h4j4v5a1r6w57g6zp-vtk-9.2.6/include/vtk +LIBS=-I/nix/store/31vfnljfr5jjh74h4j4v5a1r6w57g6zp-vtk-9.2.6/lib -lvtkCommonCore -lvtkRenderingCore -lvtkRenderingOpenGL2 -lvtksys -lvtkFiltersGeometry -lvtkCommonExecutionModel -lvtkIOImage -lvtkIOCore -lvtkIOGeometry -lvtkIOLegacy + +TARGET = kel_vtk_renderer + +all: ${TARGET} + +${TARGET}: ${TARGET}.cpp + ${CXX} ${CXXFLAGS} ${LIBS} -o $@ $^ diff --git a/util/vtk_renderer/kel_vtk_renderer.cpp b/util/vtk_renderer/kel_vtk_renderer.cpp new file mode 100644 index 0000000..516e4c3 --- /dev/null +++ b/util/vtk_renderer/kel_vtk_renderer.cpp @@ -0,0 +1,80 @@ +#include +#include +#include // Use vtkXMLStructuredGridReader for .vts +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + // Renderer & offscreen window + auto renderer = vtkSmartPointer::New(); + renderer->SetBackground(0.1, 0.2, 0.4); + + auto renderWindow = vtkSmartPointer::New(); + renderWindow->AddRenderer(renderer); + renderWindow->SetSize(800, 600); + renderWindow->OffScreenRenderingOn(); // No GUI + + auto windowToImage = vtkSmartPointer::New(); + windowToImage->SetInput(renderWindow); + windowToImage->SetInputBufferTypeToRGB(); + windowToImage->ReadFrontBufferOff(); + + auto writer = vtkSmartPointer::New(); + writer->SetInputConnection(windowToImage->GetOutputPort()); + + // Camera setup (fixed) + renderer->GetActiveCamera()->SetPosition(0, 0, 10); + renderer->GetActiveCamera()->SetFocalPoint(0, 0, 0); + renderer->ResetCamera(); + + int startIndex = 0; + int endIndex = 1024; // adjust to your sequence length + + for (int i = startIndex; i <= endIndex; ++i) + { + // Format input filename + std::ostringstream vtkFile; + vtkFile << "poiseulle_2d_gpu_" << (i*4) << ".vtk"; + + // Read structured points (equidistant grid) + auto reader = vtkSmartPointer::New(); + reader->SetFileName(vtkFile.str().c_str()); + reader->Update(); + + // Convert structured grid to surface for rendering + auto surfaceFilter = vtkSmartPointer::New(); + surfaceFilter->SetInputConnection(reader->GetOutputPort()); + surfaceFilter->Update(); + + auto mapper = vtkSmartPointer::New(); + mapper->SetInputConnection(surfaceFilter->GetOutputPort()); + + auto actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + // Clear previous frame + renderer->RemoveAllViewProps(); + renderer->AddActor(actor); + + // Render offscreen + renderWindow->Render(); + windowToImage->Modified(); + + // Save PNG + std::ostringstream pngFile; + pngFile << "tmp/png/frame_" << std::setw(8) << std::setfill('0') << i << ".png"; + writer->SetFileName(pngFile.str().c_str()); + writer->Write(); + } + + return 0; +} -- cgit v1.2.3