Cycles: Update Acceleration Structure UI Visibility #113077
No reviewers
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#113077
Loading…
Reference in New Issue
No description provided.
Delete Branch "Alaska/blender:fix-incorrect-bvh-settings"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Update the visibility of the Acceleration Structure (AS) UI so the UI
better aligns with the options you can actually adjust.
Here's what changed:
Embree GPU.
debug settings.
is built without Embree.
and now show up whenever BVH2 will be used on the CPU when it
could be using Embree.
As a side effect of some of the refactoring done, other settings will
now show up when they should (E.G. OSL and Path Guiding settings will
now show up if you've selected GPU Compute as your device, but only
selected your CPU in the user preferences)
This pull request should probably be backported to 3.6, and a modified version should be backported to 3.3 (3.3 lacks HIPRT and oneAPI Embree).
There are a few assumptions I make with this pull request:
I'm unsure what happens when a computer has multiple active GPUs of which only some are "Hardware RT" compatible.
For example, a computer with an RX 5700XT and RX 6700XT enabled. Only one of them supports HIPRT. Based on my understanding, this will trigger the
use_hiprt
section of the code below, resulting in the acceleration structure settings not being visible, even though some of settings are still useful for the RX 5700XT using BVH2 (Assuming the RX 5700XT even uses BVH2). Please correct me if I'm wrong.In the scenario you've described I don't think rendering will happen at all. The HWRT HIP capable device will report
BVH_LAYOUT_HIPRT
and the non-HWRT will reportBVH_LAYOUT_BVH2
. If my calculation is correct, theMultilDevice::get_bvh_layout_mask
will return 0 in this case, which I don't think is ever supposed to happen. When I was working on the code there must have been at least one common BVH layout to fall-back to. So, Cycles will just crash?I just wanted to update you on some information I found. Apparently HIP RT runs on all HIP supported devices in Cycles (Vega - RDNA3). So there's no concerns about a HIP RT + BHV2 combination on the AMD side. It's just that on older devices, standard compute is used to traverse the HIP RT BVH. Although there are bug reports for Blender that suggests HIP RT isn't supported on older devices (E.G. RX 5700XT in #108115).
HIP can run on Nvidia GPUs and AMD claims HIP RT runs on Nvidia GPUs, yet omits Nvidia from the list of supported devices https://gpuopen.com/hiprt/. So there may be the possibility for a HIPRT + BVH2 option there. But using HIP to offer Nvidia GPU support is not officially supported by the Blender foundation so I don't believe we should concern ourselves with that.
OneAPI can also be used for multiple vendors (E.G. Nvidia + AMD + Intel GPUs). And there are some Intel GPUs that don't have RT Cores. Based on what I could find online, it's very similar to the HIPRT situation. Some sources claim that Embree GPU runs on all GPUs that support SYCL through the various compilers, but hardware acceleration is only on Intel. While other sources only mention it working on Intel GPUs. Once again, I don't believe the Blender foundation supports oneAPI Intel devices that don't have ray tracing cores. Nor do they support building Cycles with Nvidia and AMD support through oneAPI. So we probably don't need to worry about it.
If all that is true, then the only case we do need to worry about is the GPU with custom BVH and CPU using BVH2 (which occurs when building Blender without Embree). I have already covered this case in
ui.py
, but this combination isn't actually supported for rendering, causing crashes or missing scenes.Pinging to get this reviewed before 4.0 releases.
I'm primarily interested in seeing if this should be merged into 4.0, or delayed to 4.1.
The reason I bring up delaying to 4.1 is that there are quite a few assumptions and unknowns due to my lack programming knowledge or lack of access to specific hardware configurations, that could make this commit provide "wrong" information in some situations. Examples of these include:
Note: If this is to be delayed to 4.1, then I will make pull requests for some changes I made in this one that will be useful else where (E.G. Show CPU only settings when "GPU Compute" is selected, but the only enabled "GPU" is a CPU)
Checkout
From your project repository, check out a new branch and test the changes.