bartoszek / AUR-luxcorerender-git

0 stars 1 forks source link

How to render without OpenCL? #3

Open Urs11 opened 4 years ago

Urs11 commented 4 years ago

Without an OpenCL runtime installed, I get OpenCL driver API error (code: -1001, file:/var/tmp/pamac-build-urs/luxcorerender-git/src/luxcorerender/src/luxrays/devices/ocldevice.cpp, line: 72): -1001 whenever I try to render.

In the past, luxcore rendered without a runtime installed, so I assume that I somehow have to tell the AUR helper to build luxcore without opencl, but I couldn't find the right command. Using LUXRAYS_DISABLE_OPENCL=1 pamac-manager did not work.

Could you please tell me the right command?

bartoszek commented 4 years ago

Fast call, this feature is 10 days old I'll implement appropriate switches to build without cuda/opencl support, similar to one in blender-develop-git 🀞

Urs11 commented 4 years ago

Nice! Looking forward to it

bartoszek commented 4 years ago

Should be working now:

bartoszek commented 4 years ago

@Urs11 btw. could you test both blender-plugin-luxcorrerender{,-git} for denoiser. I've made a patch that uses openimagedenoise but only for non git version and wonder if it has been resolved upstream in -git one 🀔

Urs11 commented 4 years ago

So I used DISABLE_OPENCL=1 pamac-manager to upgrade to luxcorerender-git 2.3.r900.g4cb96ab42-1 but I still get OpenCL driver API error (code: -1001, file:/var/tmp/pamac-build-urs/luxcorerender-git/src/luxcorerender/src/luxrays/devices/ocldevice.cpp, line: 72): -1001 once I start rendering. Addon version blender-plugin-luxcorerender-git 2.3.r267.g066bde9-1 Seems like the pkgbuild is not up to date: your updates are not yet in https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=luxcorerender-git

could you test both blender-plugin-luxcorrerender{,-git} for denoiser

Sure, I will test the denoiser once I get luxcore working.

Urs11 commented 4 years ago

Okay, so I substituted .SRCINFO and PKGBUILD in /var/tmp/pamac-build-urs/luxcorerender-git/ with the ones from here and kept the lastest pkgver. Now I can successfully use DISABLE_OPENCL=1 pamac-manager and can render without any OpenCL error. Thanks a lot!

Denoiser tests (Blender 2.83): blender-plugin-luxcorerender-git 2.3.r267.g066bde9-1( luxcorerender-git 2.3.r900.g4cb96ab42-1):

  1. Viewport denoiser: no denoising and this error: Could not start denoiser: Binary not found. Download it from https://github.com/OpenImageDenoise/oidn/releases (although I have oidn 1.2.0-2 installed from official repos)

  2. F12 rendering denoiser: Both OIDN and BCD can be selected and rendering works but there is no visible denoising and no error message. Console output if Denoise is checked:

    [SDL][40.114] Image pipeline: film.imagepipelines.001
    [SDL][40.114] Image pipeline step 0: INTEL_OIDN
    [SDL][40.114] Image pipeline step 1: NOP
    [SDL][40.114] Image pipeline step 2: TONEMAP_LINEAR
    [Engine/Final] Finished rendering layer "View Layer"

blender-plugin-luxcorerender 2:2.3-1 I can't render nor denoise - error message:

Python argument types in
    Scene.DefineBlenderMesh(Scene, str, int, int, int, int, int, list, list, int, NoneType)
did not match C++ signature:
    DefineBlenderMesh(luxcore::detail::SceneImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, boost::python::api::object, boost::python::api::object, unsigned long, unsigned int)
    DefineBlenderMesh(luxcore::detail::SceneImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, boost::python::api::object, boost::python::api::object, unsigned long, unsigned int, boost::python::api::object)

For comparison, I tested BlendLuxCore-v2.3-linux64 with Blender 2.82a and it denoises viewport and F12 render. Also it seems to render faster, i.e. if I set Halt Condition to 2 sec, the 2.82 render using the BlendLuxCore addon has less noise than the 2.83 render using blender-plugin-luxcorerender-git !? Time for 1 sample (repeated measurements):

Using blender-plugin-luxcorerender-git there is a region where the samples look almost as "smooth" as when using BlendLuxCore. In consecutive renderings, that region is not constant in size, seems like the last rendering step is incomplete (also when using halt after x samples instead of halt after time) although it is taking longer.

bartoszek commented 4 years ago

@Urs11 I've updated AUR clone, I've been working on a script that automatically update AUR when Travis build succeed on a PUSH build type, looks like it sill need some polish..

As for speed, I'll have to dig deeper. Perhaps it's related to missing optimizations in luxcorerender-master branch or some extra feature that was added after luxcorerendero:v2.3...

As for plugins, blender-plugin-luxcorerender works against luxcorerender and luxcorerender-git should be used with blender-plugin-luxcorerender-git. It's not a rigid rule and sometimes cross operation may works thought.

Urs11 commented 4 years ago

@bartoszek luxcorerender-git has not been updated so far. blender-plugin-luxcorerender-git now is at 2.4.beta1.r1.g504867b but it does not work anymore: like before with blender-plugin-luxcorerender 2:2.3-1 I can't render nor denoise - error message (almost identical):

Python argument types in
    Scene.DefineBlenderMesh(Scene, str, int, int, int, int, int, list, list, int, int, NoneType, tuple)
did not match C++ signature:
    DefineBlenderMesh(luxcore::detail::SceneImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, boost::python::api::object, boost::python::api::object, unsigned long, unsigned int)
    DefineBlenderMesh(luxcore::detail::SceneImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, boost::python::api::object, boost::python::api::object, unsigned long, unsigned int, boost::python::api::object)
bartoszek commented 4 years ago

luxcorerender-git was updated like two days ago 🀔 to v2.4.beta1

bartoszek commented 4 years ago

I've updated denoiser.patch :feelsgood: : somehow I've missed oidn renaming its binary from denoise to oidnDenoise :exploding_head: Tested with [community]/blender: Zrzut ekranu z 2020-06-30 08-30-53 AUR/blender-develop-git:2.90 fails with SystemError: initialization of pyluxcore raised unreported exception will report upstream.

bartoszek commented 4 years ago

btw. thanks for poking me about this, I'd tend to use Cycles, so LuxCore get a bit neglected

Urs11 commented 4 years ago

Glad I'm not a nuisance :-)

Pamac once again insisted on being weird, even cleaning the build files and refreshing the databases did not make it show the luxcorerender-git update to me (but it showed to blender-plugin... update). Only after I started it with DISABLE_OPENCL=1 pamac-manager the new version was available - that was never necessary to see updates so far. Now I have the latest version.

The blender-plugin-luxcorerender-git works now in 2.83, viewport denoising works, too [edit: not anymore. After todays (30.6.) update to blender-plugin-luxcorerender-git 2.4.beta1.r2.g4532c9d: Warning | Could not start denoiser: stat: path should be string, bytes, os.PathLike or integer, not None Type], but F12 render does not look denoised although it prints "Denoising..." in the header. In 2.90, the last blender-plugin-luxcorerender-git version worked, but the latest one doesn't:

Python argument types in
    Scene.DefineBlenderMesh(Scene, str, int, int, int, int, int, list, list, int, int, NoneType, tuple)
did not match C++ signature:
    DefineBlenderMesh(luxcore::detail::SceneImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, boost::python::api::object, boost::python::api::object, unsigned long, unsigned int)
    DefineBlenderMesh(luxcore::detail::SceneImpl*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, boost::python::api::object, boost::python::api::object, unsigned long, unsigned int, boost::python::api::object)

It even crashed after pressing F12 too often.

BTW: If I try to activate the plugin, I get "import certifi ModuleNotFoundError: No module named 'certifi' " from __init__.py - so far I just commented the respective lines in __init__.py since I don't need that functionality but I assume that there is a dependency missing.

bartoszek commented 4 years ago

I asked around on BlendLuxCore bug tracker, and was told that blender:v2.90 is not supported until officially released. I've updated the depends, now it list all required BlendLuxCore modules (requests,certifi,numpy).

bartoszek commented 4 years ago

And denoising is working just fine in Render, you just need to switch to DENOISED render pass. As opposite to Cycles LuxCore doesn't populate combined pass with denoised data and stores raw data in noisy pass. It has DENOISED pass for processed data and combined holds raw data.

ScreenCast:

Urs11 commented 4 years ago

Great, thanks!

Sorry, I didn't know about the denoised pass. Not sure if it is working though: the OIDN Denoised pass looks like a darkened version of Combined pass with the same amount of noise (BCD seems to work ok).

Have you seen my edit in the last post - something seems to be wrong with the viewport denoiser.

bartoszek commented 4 years ago

As for viewport denoise: None Type error suggests that binary can't be found. denoise.patch is supposed to work with openimagedenoise>=1.2.1 (check your version pacman -Qi openimagedenoise) where binary name is oidnDenoise (for openimagedenoise<=1.2.0 the binary was named denoise).

Urs11 commented 4 years ago

I see, you added it in the latest version that is not yet available - might take some hours until the mirrors are synced. Thanks!

Urs11 commented 4 years ago

Since openimagedenoise needs to be >=1.2.1, I would suggest adding openimagedenoise-bin [AUR] to the dependencies.

Sorry, I can't build the latest blender-plugin-luxcorerender-git 2.4.beta1.r2.g4532c9d-1, even after removing and clearing the cache.

Preparing...
Cloning blender-plugin-luxcorerender-git build files...
Checking blender-plugin-luxcorerender-git dependencies...
Warning: blender-plugin-luxcorerender-git-2.4.beta1.r2.g4532c9d-1 is up to date -- reinstalling
Resolving dependencies...
Checking inter-conflicts...
Download of python-certifi (2019.11.28-1) finished
Checking keyring...
Checking integrity...
Loading packages files...
Checking file conflicts...
Checking available disk space...
Installing python-certifi (2019.11.28-1)...

Building blender-plugin-luxcorerender-git...
==> Making package: blender-plugin-luxcorerender-git 2.4.beta1.r2.g4532c9d-1 (Do 02 Jul 2020 01:20:56 CEST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Cloning luxcorerender git repo...
Cloning into bare repository '/var/tmp/pamac-build-urs/blender-plugin-luxcorerender-git/luxcorerender'...
  -> Found denoise.patch
==> Validating source files with sha256sums...
    luxcorerender ... Skipped
    denoise.patch ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Creating working copy of luxcorerender git repo...
Cloning into 'luxcorerender'...
done.
==> Starting prepare()...
Checking patch __init__.py...
error: while searching for:
import addon_utils
import platform
import os

_, luxblend_is_enabled = addon_utils.check("luxrender")

error: patch failed: __init__.py:2
error: __init__.py: patch does not apply
Checking patch draw/viewport.py...
Hunk #1 succeeded at 9 (offset 1 line).
error: while searching for:
        self._albedo_file_path = self._make_denoiser_filepath("albedo")
        self._normal_file_path = self._make_denoiser_filepath("normal")
        self._denoised_file_path = self._make_denoiser_filepath("denoised")
        current_dir = os.path.dirname(os.path.realpath(__file__))
        self._denoiser_path = os.path.join(os.path.dirname(current_dir), "bin", "denoise")
        if platform.system() == "Windows":
            self._denoiser_path += ".exe"
        self._denoiser_process = None

error: patch failed: draw/viewport.py:72
error: draw/viewport.py: patch does not apply
==> ERROR: A failure occurred in prepare().
    Aborting...
bartoszek commented 4 years ago

That's because denoise.patch was merged upstream and is no longer needed, just didn't find a slit of time near a computer to update the PKGBUILD. Just for you pal I wake up earlier and patch this up 😏

Urs11 commented 3 years ago

Thanks for adding the openexr patch, unfortunately I can't build, because no matter if I use pamac-manager or DISABLE_CUDA=1 DISABLE_OPENCL=1 pamac-manager or DISABLE_OPENCL=1 pamac-manager or DISABLE_CUDA=1 pamac-manager every time, the dependencies ocl-icd, nvidia-utils, opencl-nvidia and cuda get selected for installation. This does not happen with the fracture-modifier package.

bartoszek commented 3 years ago

That's weird, just tested with aurutils --margs="DISABLE_CUDA=1" and it works fine. I've tried DISABLE_CUDA=1 pamac install luxcorerende-git and it seems to work fine env={pamac:10.1.2,dist:Arch}

$LC_ALL=C DISABLE_CUDA=1 pamac build luxcorerender-git
Install luxcorerender-git from aur ? [y/N]

Preparing...
Cloning luxcorerender-git build files...
Checking luxcorerender-git dependencies...
Resolving dependencies...
Checking inter-conflicts...

To build (1):
  luxcorerender-git  2:2.5.r105.g575dcd2f4-1                                   AUR
To remove (1):
  luxcorerender-bin  2.5-1                    (Conflicts With: luxcorerender)  aur

Total removed size: 272.7 MB

Edit build files : [e]
Apply transaction ? [e/y/N] y

Building luxcorerender-git...
==> Making package: luxcorerender-git 2:2.5.r105.g575dcd2f4-1 (Sun May 16 18:55:30 2021)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Cloning luxcorerender git repo...
Cloning into bare repository '/var/tmp/pamac-build-bartus/luxcorerender-git/luxcorerender'...

Where without DISABLE_CUDA=1 it stops due to unsatisfied dependencies:

$LC_ALL=C pamac build luxcorerender-git
Install luxcorerender-git from aur ? [y/N]
Preparing...
Cloning luxcorerender-git build files...
Checking luxcorerender-git dependencies...
Resolving dependencies...
Checking inter-conflicts...
To build (1):
luxcorerender-git  2:2.5.r105.g575dcd2f4-1                                   AUR
To remove (1):
luxcorerender-bin  2.5-1                    (Conflicts With: luxcorerender)  aur

Total removed size: 272.7 MB

Edit build files : [e]
Apply transaction ? [e/y/N] y

Building luxcorerender-git...
==> Making package: luxcorerender-git 2:2.5.r105.g575dcd2f4-1 (Sun May 16 18:55:07 2021)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Missing dependencies:
  -> cuda
==> ERROR: Could not resolve all dependencies.
Urs11 commented 3 years ago

Manjaro is still using pamac 10.0.6, don't know if that is the problem. 10.1 should arrive in 4-8 weeks, will report back then. In the meantime, deleting the opencl and cuda parts from the pkgbuild seems to work.

DISABLE_CUDA=1 pamac install luxcorerender-git
Warning: luxcorerender-git is only available from AUR
Preparing...
Cloning luxcorerender-git build files...
Checking luxcorerender-git dependencies...
Resolving dependencies...
Checking inter-conflicts...

To install (4):
  ocl-icd            2.2.14-1                 (Required By: luxcorerender-git)  extra      
  nvidia-utils       460.73.01-1              (Required By: luxcorerender-git)  extra      115,4 MB
  opencl-nvidia      460.73.01-1              (Required By: luxcorerender-git)  extra      24,1 MB
  cuda               11.3.0-1                 (Required By: luxcorerender-git)  community  1,2 GB
To build (1):
  luxcorerender-git  2:2.5.r105.g575dcd2f4-1                                    AUR

Total download size: 1,3 GB
Total installed size: 3,8 GB

Edit build files : [e] 
Apply transaction ? [e/y/N] 
Urs11 commented 3 years ago

Finally, pamac got updated to 10.1.3-3 but nothing changed. Also tried it on a different computer (same OS/same versions) and it's the same.

DISABLE_CUDA=1 pamac install luxcorerender-git
Warning: luxcorerender-git is only available from AUR
Preparing...
Cloning luxcorerender-git build files...
Checking luxcorerender-git dependencies...
Resolving dependencies...
Checking inter-conflicts...

To install (6):
  ocl-icd            2.3.0-1                  (Required By: luxcorerender-git)  extra      60,3 kB
  gcc10-libs         1:10.2.0-3               (Required By: luxcorerender-git)  community  13,2 MB
  nvidia-utils       470.42.01-1              (Required By: luxcorerender-git)  extra      178,3 MB
  gcc10              1:10.2.0-3               (Required By: luxcorerender-git)  community  26,0 MB
  opencl-nvidia      470.42.01-1              (Required By: luxcorerender-git)  extra      16,1 MB
  cuda               11.3.1-1                 (Required By: luxcorerender-git)  community  1,3 GB
To build (1):
  luxcorerender-git  2:2.5.r182.gc7d4e677f-1  (2:2.5.r105.g575dcd2f4-1)         AUR

Total download size: 1,5 GB
Total installed size: 4,4 GB

Edit build files : [e] 
Apply transaction ? [e/y/N] 
bartoszek commented 3 years ago

Ups, sorry. Accidently committed cuda in .SRCINFO in 0f1dd63763a71337e3712285b3670995e07f6ccf, should be fixed now.

Urs11 commented 3 years ago

Thank you! Only issue: even with DISABLE_OPENCL=1 or DISABLE_CUDA=1, or both, ocl-icd is still listed as dependency (it is also listed in .SRCINFO):

DISABLE_OPENCL=1 pamac install luxcorerender-git
Warning: luxcorerender-git is only available from AUR
Preparing...
Cloning luxcorerender-git build files...
Checking luxcorerender-git dependencies...
Resolving dependencies...
Checking inter-conflicts...

To install (1):
  ocl-icd            2.3.0-1                  (Required By: luxcorerender-git)  extra  60,3 kB
To build (1):
  luxcorerender-git  2:2.5.r182.gc7d4e677f-1  (2:2.5.r105.g575dcd2f4-1)         AUR

Total download size: 60,3 kB
Total installed size: 277,9 kB
Urs11 commented 3 years ago

Just in case you haven't seen my last post: ocl-icd is still required after disabling OpenCL.