307 lines
13 KiB
Markdown
307 lines
13 KiB
Markdown
|
|
<!-- Generated by SpecStory -->
|
|||
|
|
|
|||
|
|
# Switching to OptiX GPU Rendering (2025-05-06 20:07Z)
|
|||
|
|
|
|||
|
|
_**User**_
|
|||
|
|
|
|||
|
|
I have a worker that I think is rendering Cycles scenes in CPU, I need it to render OptiX GPU. I can use ssh to connect to the system. How would I edit my blender preferences via text?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
_**Assistant**_
|
|||
|
|
|
|||
|
|
<think><details><summary>Thought Process</summary>The user is asking about how to edit Blender preferences via text to change from CPU rendering to OptiX GPU rendering. They mention having a worker that they can connect to via SSH. This suggests they need to modify Blender's config files remotely without using the GUI.
|
|||
|
|
|
|||
|
|
Let me first search for information about Blender configuration files and how to modify rendering settings via text.</details></think>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Let me help you configure Blender to use OptiX GPU rendering via text files. First, I'll locate the relevant configuration files.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "blender change cycles render device to optix via config file" • **5** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| GPU Rendering - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html |
|
|||
|
|
| GPU Rendering — Blender Manual | https://docs.blender.org/manual/en/2.82/render/cycles/gpu_rendering.html |
|
|||
|
|
| Cycles: add Optix device backend · a2b52dc571 | https://projects.blender.org/blender/blender/commit/a2b52dc5716a97e5413acbd6eefc9ce3788b6456 |
|
|||
|
|
| CUDA vs OptiX Render in Blender Cycles | https://irendering.net/cuda-vs-optix-render-in-blender-cycles/ |
|
|||
|
|
| Cycles: Enable OptiX on all Maxwell+ GPUs · 473aaa389c | https://projects.blender.org/blender/blender/commit/473aaa389cca1a5062a5867b08fb05276d0b385d |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Based on my research, I'll help you set up Blender to use OptiX GPU rendering over SSH. This will significantly improve your rendering performance compared to CPU rendering.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "blender editing preferences file location ssh" • **5** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| File Paths — Blender Manual | https://docs.blender.org/manual/en/3.3/editors/preferences/file_paths.html |
|
|||
|
|
| File Paths - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/editors/preferences/file_paths.html |
|
|||
|
|
| Blender’s Directory Layout - Blender 4.3 Manual | https://docs.blender.org/manual/en/dev/advanced/blender_directory_layout.html |
|
|||
|
|
| Blender’s Directory Layout - Blender 4.1 Manual | https://docs.blender.org/manual/en/latest/advanced/blender_directory_layout.html |
|
|||
|
|
| Blender’s Directory Layout — Blender Manual | https://docs.blender.org/manual/en/3.3/advanced/blender_directory_layout.html |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "blender preferences file cycles optix gpu rendering command line" • **4** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| GPU Rendering - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html |
|
|||
|
|
| GPU Rendering — Blender Manual | https://docs.blender.org/manual/en/2.82/render/cycles/gpu_rendering.html |
|
|||
|
|
| CUDA vs OptiX Render in Blender Cycles | https://irendering.net/cuda-vs-optix-render-in-blender-cycles/ |
|
|||
|
|
| Curing RTX FOMO for Blender Artists - I don't need a new GPU | https://www.youtube.com/watch?v=cpT6CNKzjGw |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "configure blender for optix gpu rendering command line ssh" • **5** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| GPU Rendering - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html |
|
|||
|
|
| Command Line Rendering — Blender Manual | https://docs.blender.org/manual/en/3.6/advanced/command_line/render.html |
|
|||
|
|
| GitHub - mpapili/BlenderHeadlessGPUScript | https://github.com/mpapili/BlenderHeadlessGPUScript |
|
|||
|
|
| beyondwatts \| Running Blender remotely on Ubuntu with Tiger VNC | https://www.beyondwatts.com/posts/running-blender-remotely-on-ubuntu-with-tiger-vnc/ |
|
|||
|
|
| Curing RTX FOMO for Blender Artists - I don't need a new GPU | https://www.youtube.com/watch?v=cpT6CNKzjGw |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "modify blender preferences file cycles gpu compute_device_type python script" • **4** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| GPU not being used when using Blender as a Python module | https://blenderartists.org/t/gpu-not-being-used-when-using-blender-as-a-python-module/1463774 |
|
|||
|
|
| Force GPU rendering python script #54099 | https://developer.blender.org/T54099 |
|
|||
|
|
| Force GPU rendering python scriptClosed, ArchivedPublicPATCHActions | https://developer.blender.org/T54099 |
|
|||
|
|
| Force GPU rendering python script | https://projects.blender.org/studio/flamenco/issues/54099 |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "blender configure gpu preferences userpref.blend file" • **5** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| How to set GPU preferences remotely? - Technical Support | https://blenderartists.org/t/how-to-set-gpu-preferences-remotely/1147766 |
|
|||
|
|
| GPU Rendering - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html |
|
|||
|
|
| The perfect startup file for Blender 3.x | https://www.blendernation.com/2022/04/15/the-perfect-startup-file-for-blender-3-x/ |
|
|||
|
|
| glinfo.blendPublicActions | https://developer.blender.org/F86432 |
|
|||
|
|
| User Preferences¶ | http://builder.openhmd.net/blender-hmd-viewport-temp/preferences/index.html |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched codebase "How to create a Python script to enable OptiX GPU rendering in Blender Cycles via command line" • **25** results</summary>
|
|||
|
|
|
|||
|
|
| File | Lines |
|
|||
|
|
|------|-------|
|
|||
|
|
| `run_blender-boss_worker.bat` | L1-2 |
|
|||
|
|
| `localrecover/recover_blender-boss.ps1` | L26-81 |
|
|||
|
|
| `run_max_worker.ps1` | L60-100 |
|
|||
|
|
| `start_all_workers.bat` | L1-16 |
|
|||
|
|
| `run_blender-boss_worker.ps1` | L60-100 |
|
|||
|
|
| `run_echo_worker.ps1` | L60-100 |
|
|||
|
|
| `localrecover/recover_blender-boss.bat` | L1-2 |
|
|||
|
|
| `run_i9-13ks_worker.ps1` | L60-100 |
|
|||
|
|
| `run_masterbox_worker.ps1` | L60-100 |
|
|||
|
|
| `localrecover/recover_max.ps1` | L26-81 |
|
|||
|
|
| `localrecover/recover_echo.ps1` | L26-81 |
|
|||
|
|
| `localrecover/recover_masterbox.ps1` | L26-81 |
|
|||
|
|
| `run_blender-boss_worker.ps1` | L1-60 |
|
|||
|
|
| `localrecover/recover_i9-13ks.ps1` | L26-81 |
|
|||
|
|
| `localrecover/recover_blender-boss.ps1` | L1-26 |
|
|||
|
|
| `localrecover/recover_files.ps1` | L61-99 |
|
|||
|
|
| `run_max_worker.bat` | L1-2 |
|
|||
|
|
| `run_max_worker.ps1` | L1-60 |
|
|||
|
|
| `run_i9-13ks_worker.bat` | L1-2 |
|
|||
|
|
| `run_masterbox_worker.bat` | L1-2 |
|
|||
|
|
| `run_masterbox_worker.ps1` | L1-60 |
|
|||
|
|
| `run_echo_worker.ps1` | L1-60 |
|
|||
|
|
| `run_echo_worker.bat` | L1-2 |
|
|||
|
|
| `run_i9-13ks_worker.ps1` | L1-60 |
|
|||
|
|
| `localrecover/recover_max.bat` | L1-2 |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "how to configure blender optix gpu rendering via python script instead of gui" • **4** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| GPU Rendering - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html |
|
|||
|
|
| Using GPU in Optix and CUDA builds | https://github.com/TylerGubala/blenderpy/wiki/Using-GPU-in-Optix-and-CUDA-builds |
|
|||
|
|
| Curing RTX FOMO for Blender Artists - I don't need a new GPU | https://www.youtube.com/watch?v=cpT6CNKzjGw |
|
|||
|
|
| GitHub - NVIDIA/otk-pyoptix: Complete Python bindings for the OptiX host API | https://github.com/NVIDIA/otk-pyoptix |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "blender edit userpref.blend cycles optix gpu python script command line" • **4** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| Change GPU usage cmd line - Python API | https://devtalk.blender.org/t/change-gpu-usage-cmd-line/9797 |
|
|||
|
|
| Headless rendering no longer automatically picking up ... | https://devtalk.blender.org/t/headless-rendering-no-longer-automatically-picking-up-gpus/12176 |
|
|||
|
|
| Using GPU in Optix and CUDA builds | https://github.com/TylerGubala/blenderpy/wiki/Using-GPU-in-Optix-and-CUDA-builds |
|
|||
|
|
| Curing RTX FOMO for Blender Artists - I don't need a new GPU | https://www.youtube.com/watch?v=cpT6CNKzjGw |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<details>
|
|||
|
|
<summary>Searched web "python script to enable optix gpu rendering in blender command line" • **4** results</summary>
|
|||
|
|
|
|||
|
|
| Title | URL |
|
|||
|
|
|-------|-----|
|
|||
|
|
| enable optix GPU rendering in blender python | https://gist.github.com/danthemango/1aaab8264c75be9c165dc8610357e3f3 |
|
|||
|
|
| Command Line Arguments - Blender 4.4 Manual | https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html |
|
|||
|
|
| Using GPU in Optix and CUDA builds | https://github.com/TylerGubala/blenderpy/wiki/Using-GPU-in-Optix-and-CUDA-builds |
|
|||
|
|
| Curing RTX FOMO for Blender Artists - I don't need a new GPU | https://www.youtube.com/watch?v=cpT6CNKzjGw |
|
|||
|
|
|
|||
|
|
</details>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Based on my research, here's how to modify Blender preferences to enable OptiX GPU rendering via a Python script over SSH:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import bpy
|
|||
|
|
|
|||
|
|
# First, set rendering engine to Cycles
|
|||
|
|
bpy.context.scene.render.engine = 'CYCLES'
|
|||
|
|
|
|||
|
|
# Access the user preferences for Cycles
|
|||
|
|
prefs = bpy.context.preferences
|
|||
|
|
cycles_prefs = prefs.addons['cycles'].preferences
|
|||
|
|
|
|||
|
|
# Update the device list and set compute device type to OptiX
|
|||
|
|
cycles_prefs.compute_device_type = 'OPTIX'
|
|||
|
|
cycles_prefs.get_devices() # This is critical - refreshes the device list
|
|||
|
|
|
|||
|
|
# Enable all available OptiX GPU devices
|
|||
|
|
for device in cycles_prefs.devices:
|
|||
|
|
if device.type == 'OPTIX':
|
|||
|
|
device.use = True
|
|||
|
|
print(f"Enabled device: {device.name} ({device.type})")
|
|||
|
|
|
|||
|
|
# Set Cycles to use GPU for rendering
|
|||
|
|
for scene in bpy.data.scenes:
|
|||
|
|
scene.cycles.device = 'GPU'
|
|||
|
|
|
|||
|
|
# Save the preferences (optional but recommended)
|
|||
|
|
bpy.ops.wm.save_userpref()
|
|||
|
|
|
|||
|
|
print("OptiX GPU rendering enabled successfully!")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
To use this script:
|
|||
|
|
|
|||
|
|
1. Connect to your worker via SSH
|
|||
|
|
2. Create a file (e.g., `enable_optix.py`) with the above script
|
|||
|
|
3. Run it with Blender in background mode: `blender --background --python enable_optix.py`
|
|||
|
|
|
|||
|
|
Alternatively, you can run it directly as a one-liner:
|
|||
|
|
```bash
|
|||
|
|
blender --background --python-expr "import bpy; bpy.context.preferences.addons['cycles'].preferences.compute_device_type = 'OPTIX'; bpy.context.preferences.addons['cycles'].preferences.get_devices(); [device.use = True for device in bpy.context.preferences.addons['cycles'].preferences.devices if device.type == 'OPTIX']; [setattr(scene.cycles, 'device', 'GPU') for scene in bpy.data.scenes]; bpy.ops.wm.save_userpref()"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
This approach ensures that:
|
|||
|
|
1. The device list is properly refreshed with `get_devices()`
|
|||
|
|
2. OptiX is selected as the compute device type
|
|||
|
|
3. All OptiX-compatible GPUs are enabled
|
|||
|
|
4. Every scene is set to use GPU rendering
|
|||
|
|
5. The preferences are saved for future Blender sessions
|
|||
|
|
|
|||
|
|
The script should work for Blender 2.8+ versions. Once the preferences are saved, Blender should use OptiX GPU rendering by default.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
_**User**_
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
_**Assistant**_
|
|||
|
|
|
|||
|
|
<think><details><summary>Thought Process</summary>I see the issue with the command. There's a syntax error in the one-liner version of the Python command that's causing it to fail. The error is related to the list comprehension syntax.
|
|||
|
|
|
|||
|
|
The problematic part is:
|
|||
|
|
```
|
|||
|
|
[device.use = True for device in bpy.context.preferences.addons['cycles'].preferences.devices if device.type == 'OPTIX']
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
In a list comprehension, you can't have assignment operations (`device.use = True`). List comprehensions are meant to create new lists, not perform side effects.
|
|||
|
|
|
|||
|
|
Let's fix this by using a regular for loop instead. Here's the corrected version:</details></think>
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
I see the error in the one-liner command. The problem is with the list comprehension syntax - you can't use assignments like `device.use = True` directly in a list comprehension.
|
|||
|
|
|
|||
|
|
Here's a corrected version of the command:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
blender --background --python-expr "import bpy; bpy.context.preferences.addons['cycles'].preferences.compute_device_type = 'OPTIX'; bpy.context.preferences.addons['cycles'].preferences.get_devices(); [setattr(device, 'use', True) for device in bpy.context.preferences.addons['cycles'].preferences.devices if device.type == 'OPTIX']; [setattr(scene.cycles, 'device', 'GPU') for scene in bpy.data.scenes]; bpy.ops.wm.save_userpref()"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Or if you prefer a more readable approach, create a separate Python script instead:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import bpy
|
|||
|
|
|
|||
|
|
# Set compute device to OptiX
|
|||
|
|
prefs = bpy.context.preferences
|
|||
|
|
cycles_prefs = prefs.addons['cycles'].preferences
|
|||
|
|
cycles_prefs.compute_device_type = 'OPTIX'
|
|||
|
|
cycles_prefs.get_devices()
|
|||
|
|
|
|||
|
|
# Enable all OptiX devices
|
|||
|
|
for device in cycles_prefs.devices:
|
|||
|
|
if device.type == 'OPTIX':
|
|||
|
|
device.use = True
|
|||
|
|
print(f"Enabled: {device.name}")
|
|||
|
|
|
|||
|
|
# Set all scenes to use GPU
|
|||
|
|
for scene in bpy.data.scenes:
|
|||
|
|
scene.cycles.device = 'GPU'
|
|||
|
|
|
|||
|
|
# Save preferences
|
|||
|
|
bpy.ops.wm.save_userpref()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Save this as `enable_optix.py` and run:
|
|||
|
|
```bash
|
|||
|
|
blender --background --python enable_optix.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|