<!-- 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
```

---

