Cycles: Support Decomposed MetalRT motion interpolation
Currently MetalRT interpolates transformation matrix on per-element basis which leads to issues like #135659. This change adds implementation of for decomposed (Scale/Rotate/Translate) motion interpolation, matching behavior of BVH2 and other HW-RT. This requires macOS 15 and Xcode 16 in order to use this interpolation. On older platforms and compilers old interpolation is used. Currently there is no changes on the user (by default) and it is only available via CYCLES_METALRT_PCMI environment variable. This is because there are some issues with complex motion paths that need to be looked into. Having code available makes it easier to do further debugging. Ref #135659 Authored by Emma Liu Pull Request: https://projects.blender.org/blender/blender/pulls/136253
This commit is contained in:
committed by
Sergey Sharybin
parent
59991e54f5
commit
326d5bca03
@@ -69,17 +69,21 @@ void DebugFlags::Metal::reset()
|
||||
adaptive_compile = true;
|
||||
}
|
||||
|
||||
if (auto *str = getenv("CYCLES_METAL_LOCAL_ATOMIC_SORT")) {
|
||||
if (const char *str = getenv("CYCLES_METAL_LOCAL_ATOMIC_SORT")) {
|
||||
use_local_atomic_sort = (atoi(str) != 0);
|
||||
}
|
||||
|
||||
if (auto *str = getenv("CYCLES_METAL_NANOVDB")) {
|
||||
if (const char *str = getenv("CYCLES_METAL_NANOVDB")) {
|
||||
use_nanovdb = (atoi(str) != 0);
|
||||
}
|
||||
|
||||
if (auto *str = getenv("CYCLES_METAL_ASYNC_PSO_CREATION")) {
|
||||
if (const char *str = getenv("CYCLES_METAL_ASYNC_PSO_CREATION")) {
|
||||
use_async_pso_creation = (atoi(str) != 0);
|
||||
}
|
||||
|
||||
if (const char *str = getenv("CYCLES_METALRT_PCMI")) {
|
||||
use_metalrt_pcmi = (atoi(str) != 0);
|
||||
}
|
||||
}
|
||||
|
||||
DebugFlags::OptiX::OptiX()
|
||||
|
||||
Reference in New Issue
Block a user