CLI tool
LuxCoreRender/LuxCore avatar
LuxCoreRender/LuxCore

LuxCore physically based rendering engine: build and first render

LuxCore source repository

1,340 stars168 forksC++Apache-2.0

At a glance

What is it?
LuxCore is a C++ and Python rendering engine based on physically based light transport. It fits graphics engineers who need path tracing and GPU-oriented rendering, but its native build toolchain and platform requirements make it unsuitable as a one-command install.
Who is it for?
LuxCore is appropriate for graphics engineers who need direct access to its C++ or Python API, can satisfy its native compiler requirements, and are prepared to handle dependency and platform setup. It is a poor fit for users seeking a conventional one-command installer or a lightweight preview tool.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What LuxCore solves for rendering engineers

LuxCoreRender is a physically correct, unbiased rendering engine built around equations that model the transportation of light. Its intended users are graphics engineers working on physically based rendering, path tracing, visualization, and scenes in which light behavior matters. The README says the engine can represent phenomena that many other rendering programs cannot reproduce, although it does not enumerate those effects or provide comparative results.

The repository is more than a single command-line renderer. LuxCore is presented as a C++ and Python API for the LuxCoreRender 2.x line. That makes it relevant when an engineer needs to embed rendering behavior into another application rather than only export a final image through a separate tool. The repository layout supports this interpretation: public headers appear under `include/`, implementation code under `src/`, native examples under `samples/`, Python packages under `python/`, and tests under `tests/` and `pyunittests/`.

This scope differs from using a plug-in that merely opens a LuxCore scene in a host application. LuxCore's core concern is the renderer and its API. LuxCoreUI and LuxCoreConsole demonstrate two consumers of that API, one graphical and one command-line, while Python samples cover bindings and serialization. The README does not document integrations beyond these examples.

How LuxCore's rendering and API structure fit together

LuxCore models light transport as its central rendering mechanism. That physical model is different from treating illumination as a purely artistic overlay. The README identifies bidirectional path tracing and GPU computing as repository topics, and it names CUDA, OpenCL, and OptiX among the topics. Those labels indicate that hardware-oriented paths are part of the project's subject area, but the README excerpt does not specify which device configuration is required for any particular build or sample.

The repository exposes a native library rather than requiring every consumer to invoke one fixed executable. The C++ API serves applications that compile against LuxCore. The Python API is distributed as `pyluxcore`, with bindings under `python/` and sample programs such as `pyluxcoredemo`, `pyluxcoreserializationdemo`, `pyluxcoretool`, and sidecar integration examples. Its `pyproject.toml` defines Python 3.10 or newer as the requirement. On non-Darwin, non-ARM64 systems, it also declares an exact CUDA runtime compiler package dependency, but the README does not explain whether every use case requires that runtime.

LuxCoreUI is described as the most complete example of LuxCore API usage. LuxCoreConsole is deliberately smaller and accepts scene configuration plus render properties on the command line. That pairing makes the repository useful for examining both interactive application structure and a narrower integration path, without treating either example as a simplified reimplementation of the engine.

Native prerequisites before the LuxCore quick build

The documented quick build is a native developer workflow, not a binary installation. A suitable compiler must be present before the prerequisite tools can be considered complete. The README specifies MSVC 194x or a newer listed version for Windows, gcc 14 for Linux, Xcode 15.2 on Intel macOS, and Xcode 15.4 on Arm macOS. Windows also requires a command line configured for building with `vcvarsall.bat`.

Git, Python 3, Conan, CMake, and `patchelf` must be available in `PATH`. On Linux and macOS, that last requirement includes `patchelf`. Conan itself is installed with the Python package command below:

bash
pip install conan

The README marks GitHub CLI, `repairwheel`, `nektos/act`, and Doxygen as optional. `repairwheel` is associated with test wheels, Doxygen with development documentation, and `nektos/act` with testing GitHub scripts locally. GitHub CLI is recommended for dependency signature checking. A developer should therefore distinguish mandatory build inputs from tools that support auxiliary workflows.

For Windows Python packages, `pyproject.toml` specifies the `scikit-build-core` build backend and requires Python 3.10 or newer. This creates a second documented packaging context: native LuxCore sources can be built with the repository's make workflow, while the Python distribution has its own build metadata and platform-specific CUDA dependency.

Cloning and building the Cornell scene path

The README's short build procedure checks out the `for_v2.10` branch even though the repository default branch is `main`. Following the documented example requires the prerequisite tools and a configured Windows build command line where applicable:

bash
git clone https://github.com/LuxCoreRender/LuxCore.git
cd LuxCore
git checkout for_v2.10
make deps
make

The first `make deps` updates or downloads LuxCore's precompiled dependencies, and the second command configures CMake and starts the build. The README says that the second `make` may target `luxcore`, `pyluxcore`, `luxcoreconsole`, or `luxcoreui`. This matters because a developer interested only in Python bindings does not necessarily need every sample executable built.

The build type is selected through the case-sensitive `LUX_BUILD_TYPE` environment variable. The documented values are `Release` and `Debug`, with `Release` as the default. Maintenance commands include `make clean`, which deletes intermediate files, and `make clear`, which removes the build tree. `make config` reconfigures the project, while `make deps` updates dependencies.

The branch choice is a visible compatibility boundary. The README gives this procedure for `for_v2.10`, while recent release names include `v2.11.2` for samples and wheels. The repository material does not provide a corresponding quick-build sequence for those releases, so the documentation does not establish whether the same commands are intended for them.

First LuxCoreUI and LuxCoreConsole renders

After a `Release` build, the README starts LuxCoreUI from the repository root with the included Cornell scene. On Linux and macOS, the command is:

bash
./out/install/Release/bin/luxcoreui scenes/cornell/cornell.cfg

On Windows, the equivalent path uses backslashes:

bat
out\install\Release\bin\luxcoreui scenes\cornell\cornell.cfg

The reader should see LuxCoreUI open or initialize with `scenes/cornell/cornell.cfg` as its scene input. The README does not document expected progress output, rendering time, or a specific final image, so no such result should be inferred.

For the first command-line render, LuxCoreConsole uses `batch.halttime 10`. On Linux and macOS:

bash
./out/install/Release/bin/luxcoreconsole -D batch.halttime 10 scenes/cornell/cornell.cfg

The Windows form is:

bat
out\install\Release\bin\luxcoreconsole -D batch.halttime 10 scenes\cornell\cornell.cfg

According to the README, this is a simple command-line renderer written with the LuxCore API. The `batch.halttime` property is shown with the exact value `10`; the excerpt does not explain its unit or termination semantics, so the tutorial should not relabel it.

LuxCore maintenance, upgrades, and licensing boundaries

The repository is not archived, and its last push was on 2026-10-13. Recent named releases include LuxCore Samples v2.11.2 on 2026-09-20 and LuxCore Wheels v2.11.2 on 2026-09-06, with LuxCore Wheels v2.11.1 on 2026-07-27. Samples and wheels are separate release streams. That split means an upgrade decision may involve more than replacing one renderer package, depending on whether an application uses the samples or Python wheels.

The repository provides an upgrade path for native dependencies through `make deps` and for configuration through `make config`. It also provides targeted builds, which can reduce unnecessary rebuilding work. The README does not provide migration notes for changing LuxCore versions, an API compatibility matrix, or a supported upgrade path from `for_v2.10` to the v2.11 release streams. Source consumers must check the wiki and release-specific project documentation separately.

LuxCore and `pyluxcore` are released under Apache License 2.0, with the license text identified in `COPYING.txt` and the SPDX identifier recorded in `pyproject.toml`. The README says the library may be used in open source and commercial applications. This is a license notice, not legal advice; downstream distribution still requires examination of the actual license text and included dependencies.

Where LuxCore is the wrong rendering choice

LuxCore is the wrong tool when the application needs a prebuilt, low-friction path across supported systems. The documented source build requires particular compilers, Conan, CMake, `patchelf` on Linux and macOS, and a configured Windows development environment. Python packaging lowers the barrier for Python users, but `pyproject.toml` still defines Python 3.10 or newer, a specific build backend, and a pinned CUDA package on covered non-Darwin, non-ARM64 systems.

It is also a poor match for a project that only needs to open a scene and inspect a quick preview. LuxCoreUI exists, but the README presents the primary source build rather than a general installer workflow. LuxCoreConsole's documented first run uses a scene file and a halt-time property, which indicates a rendering task rather than a lightweight image viewer.

A real alternative is an application-specific renderer or rasterizer that does not model global light transport with LuxCore's physically based path-tracing engine. The difference is the rendering model and integration burden: a rasterizer can be suitable when speed and conventional direct lighting dominate, while LuxCore is relevant when physical light simulation and access to the LuxCore API are explicit requirements. The repository does not provide a feature or performance comparison against a named alternative, so selection must be based on those architectural requirements rather than unsupported claims about output quality.

Editorial conclusion

LuxCore is appropriate for graphics engineers who need direct access to its C++ or Python API, can satisfy its native compiler requirements, and are prepared to handle dependency and platform setup. It is a poor fit for users seeking a conventional one-command installer or a lightweight preview tool. Before adoption, verify the target compiler, GPU and platform combination, dependency workflow, sample runtime, and whether the C++ API or `pyluxcore` package best matches the application.

Frequently asked questions

How do I build LuxCore from source?

Install Git, Python 3, Conan, CMake, `patchelf` on Linux and macOS, and the platform-specific compiler. The README then documents cloning the repository, checking out `for_v2.10`, running `make deps`, and running `make`.

Which LuxCore sample should I use for a first render?

LuxCoreUI is the graphical sample and is described as the most complete example of LuxCore API usage. LuxCoreConsole is the simpler command-line renderer based on the same scene configuration format.

What Python version does pyluxcore require?

The repository's `pyproject.toml` sets `requires-python = ">= 3.10"`. It also uses `scikit-build-core` as the build backend.

Can I build only part of LuxCore?

The README says the second `make` can name a specific target. Documented examples include `luxcore`, `pyluxcore`, `luxcoreconsole`, and `luxcoreui`.

What license applies to LuxCore and pyluxcore?

Both are identified as Apache License 2.0. The repository points readers to `COPYING.txt` for the license text.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. LuxCoreRender/LuxCore on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/luxcorerender-luxcore.svg)](https://hysenlabs.com/projects/luxcorerender-luxcore)

Was this useful?