LuxCoreRender Release Notes v2.12: Difference between revisions
Jump to navigation
Jump to search
Created page with "= BlendLuxCore = '''Coding/Backend''' * ... '''Bugfix''' * ... '''Features (of interest for users)''' * ... = BlendLuxHelper = * ... = LuxCore = '''Coding/Backend''' * ... '''Bugfix''' * ... '''Features (of interest for users)''' * ... = LuxCoreDeps = * ..." |
No edit summary |
||
| Line 1: | Line 1: | ||
= | = LuxCore = | ||
''' | '''Features (of interest for users)''' | ||
* ... | * Buffer copies run in parallel on TBB; OpenMP removed from the tessellation and displacement code | ||
* New slg::GroupByEquivalence (parallel TBB union-find) replacing the quotient-set templates; 32-bit indices variant; exposed to Python as pyluxcore.union_find (#721, #745) | |||
* Displacement shape parallelized with TBB (chunked pre-pass, no useless zero-fills, memory-budgeted chunking) (#742) | |||
* New parallel implementation of the Simplify shape; the legacy one kept as simplify_old (#723) | |||
* Faster startup: OpenCL kernels pre-compiled to SPIR-V at build time and cross-baked for all CI legs (work in progress, #733-#739); parallel CUDA/OpenCL kernel compilation with logging and cache management (#724, #725); opencl.splitkernels.enable property and split PathOCL micro-kernels (#726, #727); "Fill kernel cache" without rendering (#732) | |||
* New Prague Sky Model (Wilkie 2021) light sources: sky3 (sky-only) and sun3 (#748) | |||
* OIDN firefly prefilter (#731) | |||
* New "tessellate" shape (flat triforce tessellation of a source mesh, props: source, rate) and test scenes scenes/displacement/tessellate*.{scn,cfg} | |||
* Subdivision shape: enhanced mode is now the default and only mode; the simple path is the separate "subdiv_old" shape; merge-on-distance pre-step removed | |||
* Subdivision shape: new "creases" property (none / computed / imported); imported creases are read from PLY edge elements (vertex1/vertex2/crease) or passed via pyluxcore Scene.DefineMeshExt(crease_pairs=..., crease_weights=...); new Scene.GetMeshCreaseCount() | |||
* Shared mesh point buffers: pyluxcore DefineMeshExt accepts a mesh name as "points" to share the vertex buffer instead of copying | |||
'''Bugfix''' | '''Bugfix''' | ||
* | * Subdivision shape memory bugs and crash on meshes with isolated vertices; cap adaptive subdivision level to prevent tessellation overflow (#753) | ||
* Fix SavePly crash on phantom empty AOV layers (#741); Fix ComputeNormals leaving meshes without normals (#743); transmit AOVs clamped against their own channel in VarianceClamping (#722) | |||
* Fix memory bugs from audit: bevel ownership, ExtTriangleMesh::Merge triAOV overflow, Buffer/ExtMeshProp sizing (#756); Properties move-assign self-move and dangling refs in luxcoreui (#755) | |||
* OpenCL: skip devices already listed by another platform (#728); fix backend availability detection (#729) | |||
* Serialize DLSCBvh/ELVCBvh/FilterLUT subtypes correctly (#757) | |||
* Fix wheel-test on Windows | |||
''' | '''Coding/Backend''' | ||
* ... | * Buffer is now a class template | ||
* C++23; large raw-pointer removal campaign across the codebase (BVH, KdTree, distributions, lights, kernels, devices, meshes...) replaced by smart pointers/spans (#718, #719) | |||
* Windows/macOS/clang build fixes (MSVC u_int, header self-containment, Shape ctor/dtor out-of-line, header-only fmt), CI concurrency control and timeouts for wheel builds | |||
* Default branch renamed to main | |||
= | = BlendLuxCore = | ||
* | '''Features (of interest for users)''' | ||
* New Prague Sky Model (Wilkie 2021) light sources: sky3 (sky-only) and sun3 (#1108) | |||
* OIDN firefly suppression option for the denoiser (#1106) | |||
* Subdivision node: enhanced mode is now the only mode (the "enhanced" toggle is gone); the former simple/uniform path remains available as the "subdiv_old" shape | |||
* New "Tessellate" shape node (flat tessellation, rate^2 triangles per source triangle) | |||
* Subdivision node: creases can now be None / Computed (from dihedral angles, as before) / Imported from the mesh data (Blender's crease_edge attribute) | |||
* The merge-on-distance pre-step before subdivision is gone: coincident vertices are welded at export, so subdivided meshes no longer show gaps | |||
'''Bugfix''' | |||
* Fix multi-submesh objects overwriting each other in the exported scene (only the last submesh of a material was rendered, e.g. only one ear of Suzanne) | |||
* Fix UV-island run detection on seams | |||
* Fix sky3/sun3 viewport update issues and world_cache initialization (avoids unnecessary viewport retriggerings) | |||
* Fix crash from an assert in Debug builds (LuxCore issue #716) | |||
* Update LoL asset bar preview images for the Blender 5.0 API change | |||
'''Coding/Backend''' | '''Coding/Backend''' | ||
* | * Mesh export: coincident vertices are welded once per mesh and the point buffer is shared between all its submeshes (via the new sharing support in pyluxcore's DefineMeshExt), instead of being duplicated per submesh | ||
* Submeshes are split along UV seams (UV islands) at export; the union-find island computation is contracted to triangle level (much faster on large meshes) and skipped when the mesh has no UV layers | |||
* Triangle indices are cast to uint32 at export (fixes pybind11 rejection of int64 arrays) | |||
* CI: bundle workflow attestation job renamed to attest-bundle (fixes the dangling attestation-url output) and skipped for fork PRs, which have no OIDC ID token | |||
= LuxCoreDeps = | |||
* .. | * LuxCoreDeps 2.2.4 (OpenCL/CUDA kernel compilation improvements, #725) | ||
= | = BlendLuxHelper = | ||
* . | * (no changes since v2.11) | ||
Revision as of 07:34, 8 November 2026
LuxCore
Features (of interest for users)
- Buffer copies run in parallel on TBB; OpenMP removed from the tessellation and displacement code
- New slg::GroupByEquivalence (parallel TBB union-find) replacing the quotient-set templates; 32-bit indices variant; exposed to Python as pyluxcore.union_find (#721, #745)
- Displacement shape parallelized with TBB (chunked pre-pass, no useless zero-fills, memory-budgeted chunking) (#742)
- New parallel implementation of the Simplify shape; the legacy one kept as simplify_old (#723)
- Faster startup: OpenCL kernels pre-compiled to SPIR-V at build time and cross-baked for all CI legs (work in progress, #733-#739); parallel CUDA/OpenCL kernel compilation with logging and cache management (#724, #725); opencl.splitkernels.enable property and split PathOCL micro-kernels (#726, #727); "Fill kernel cache" without rendering (#732)
- New Prague Sky Model (Wilkie 2021) light sources: sky3 (sky-only) and sun3 (#748)
- OIDN firefly prefilter (#731)
- New "tessellate" shape (flat triforce tessellation of a source mesh, props: source, rate) and test scenes scenes/displacement/tessellate*.{scn,cfg}
- Subdivision shape: enhanced mode is now the default and only mode; the simple path is the separate "subdiv_old" shape; merge-on-distance pre-step removed
- Subdivision shape: new "creases" property (none / computed / imported); imported creases are read from PLY edge elements (vertex1/vertex2/crease) or passed via pyluxcore Scene.DefineMeshExt(crease_pairs=..., crease_weights=...); new Scene.GetMeshCreaseCount()
- Shared mesh point buffers: pyluxcore DefineMeshExt accepts a mesh name as "points" to share the vertex buffer instead of copying
Bugfix
- Subdivision shape memory bugs and crash on meshes with isolated vertices; cap adaptive subdivision level to prevent tessellation overflow (#753)
- Fix SavePly crash on phantom empty AOV layers (#741); Fix ComputeNormals leaving meshes without normals (#743); transmit AOVs clamped against their own channel in VarianceClamping (#722)
- Fix memory bugs from audit: bevel ownership, ExtTriangleMesh::Merge triAOV overflow, Buffer/ExtMeshProp sizing (#756); Properties move-assign self-move and dangling refs in luxcoreui (#755)
- OpenCL: skip devices already listed by another platform (#728); fix backend availability detection (#729)
- Serialize DLSCBvh/ELVCBvh/FilterLUT subtypes correctly (#757)
- Fix wheel-test on Windows
Coding/Backend
- Buffer is now a class template
- C++23; large raw-pointer removal campaign across the codebase (BVH, KdTree, distributions, lights, kernels, devices, meshes...) replaced by smart pointers/spans (#718, #719)
- Windows/macOS/clang build fixes (MSVC u_int, header self-containment, Shape ctor/dtor out-of-line, header-only fmt), CI concurrency control and timeouts for wheel builds
- Default branch renamed to main
BlendLuxCore
Features (of interest for users)
- New Prague Sky Model (Wilkie 2021) light sources: sky3 (sky-only) and sun3 (#1108)
- OIDN firefly suppression option for the denoiser (#1106)
- Subdivision node: enhanced mode is now the only mode (the "enhanced" toggle is gone); the former simple/uniform path remains available as the "subdiv_old" shape
- New "Tessellate" shape node (flat tessellation, rate^2 triangles per source triangle)
- Subdivision node: creases can now be None / Computed (from dihedral angles, as before) / Imported from the mesh data (Blender's crease_edge attribute)
- The merge-on-distance pre-step before subdivision is gone: coincident vertices are welded at export, so subdivided meshes no longer show gaps
Bugfix
- Fix multi-submesh objects overwriting each other in the exported scene (only the last submesh of a material was rendered, e.g. only one ear of Suzanne)
- Fix UV-island run detection on seams
- Fix sky3/sun3 viewport update issues and world_cache initialization (avoids unnecessary viewport retriggerings)
- Fix crash from an assert in Debug builds (LuxCore issue #716)
- Update LoL asset bar preview images for the Blender 5.0 API change
Coding/Backend
- Mesh export: coincident vertices are welded once per mesh and the point buffer is shared between all its submeshes (via the new sharing support in pyluxcore's DefineMeshExt), instead of being duplicated per submesh
- Submeshes are split along UV seams (UV islands) at export; the union-find island computation is contracted to triangle level (much faster on large meshes) and skipped when the mesh has no UV layers
- Triangle indices are cast to uint32 at export (fixes pybind11 rejection of int64 arrays)
- CI: bundle workflow attestation job renamed to attest-bundle (fixes the dangling attestation-url output) and skipped for fork PRs, which have no OIDC ID token
LuxCoreDeps
- LuxCoreDeps 2.2.4 (OpenCL/CUDA kernel compilation improvements, #725)
BlendLuxHelper
- (no changes since v2.11)