Skip to content

Poor performance of NegPy in modest computer #294

Description

@Jeremias-A-Queiroz

Hi @marcinz606,

First of all, I would like to congratulate you on NegPy. The way your software handles film color science, sensitometric inversion, and the Richards curve is absolutely brilliant. I have tested numerous solutions over the years—ranging from free software like darktable's Negadoctor to expensive commercial tools like Lightroom+NLP—and I can confidently say that NegPy's initial color fidelity and output are absurdly superior to anything else on the market. It mimics the look of a digital minilab flawlessly.

However, I am facing a severe performance bottleneck that makes the software almost unusable for a full workflow on my current hardware setup.
My Hardware Specifications:

CPU: Intel Core i7-3612QM (4 Cores / 8 Threads, 3rd Gen)

RAM: 16 GB

GPU: Intel HD Graphics 4000 (Integrated, with 256MB VRAM allocated in BIOS)

OS: Linux (Ubuntu-based environment)

The Issue:

When working with high-resolution 16-bit linear DNGs generated by VueScan, any geometric modification (such as rotating 90 degrees or fine-tuning the rotation to fix camera leveling alignment) causes severe lag. The preview takes so long to recalculate and redraw that I am spending an average of 15 minutes per photo just to get the framing and alignment right.

Furthermore, it is currently impossible to load a full roll of 36 exposures into NegPy without the application freezing completely and crashing my session.
Technical Context & Observations:

  • Comparison with other software: Other heavy image processing software, such as Filmlabapp (appimage), darktable (repos) and Filmvert (appimage), run seamlessly on this exact same computer. They manage to handle geometry adjustments smoothly, likely due to processing a lightweight display-resolution preview tile rather than recalculating the full-resolution pixel array on every slider move. My instalation of NegPy is by sources.
  • GPU vs. CPU rendering: I noticed NegPy relies heavily on WGSL/Vulkan shaders. Since my integrated GPU is quite old and lacks dedicated VRAM, I tried running the application with GPU acceleration completely disabled. Unfortunately, this made performance roughly 40% worse, pushing the processing entirely onto a single thread of my CPU.

The Dilemma: Since I scan long film strips containing a mix of both portrait and landscape shots—alongside inevitable small leveling errors—I cannot rely entirely on Sync Crop to batch-process the geometry. Every frame requires individual attention.

Feature Request / Suggestion:

Would it be possible to decouple the user-interface preview geometry from the high-resolution array transformation? For instance, computing a low-res proxy matrix for the interactive crop/rotate sliders, and only applying the expensive bilinear interpolations to the full image array during the final export or when explicitly "committing" the edit?

Thank you so much for your hard work on this amazing project. I really want to adopt NegPy as my central workflow tool, and improving performance on host-managed or integrated GPU memory architectures would be a game-changer for many analog photographers running modest setups.

Best regards,
Jeremias

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions