
Split up the "Variables" section, and adjust the wording for the splitting of `{blender}` into `{blender}` and `{blenderArgs}` (rFe5a20425c474).
49 lines
1.8 KiB
Markdown
49 lines
1.8 KiB
Markdown
---
|
|
title: Two-way Variables for Multi-Platform Support
|
|
---
|
|
|
|
Two-way variables are there to support mixed-platform Flamenco farms. Basically
|
|
they perform *path prefix replacement*.
|
|
|
|
Let's look at an example configuration:
|
|
|
|
```yaml
|
|
variables:
|
|
my_storage:
|
|
is_twoway: true
|
|
values:
|
|
- platform: linux
|
|
value: /media/shared/flamenco
|
|
- platform: windows
|
|
value: F:\flamenco
|
|
- platform: darwin
|
|
value: /Volumes/shared/flamenco
|
|
```
|
|
|
|
The difference with regular variables is that regular variables are one-way:
|
|
`{variablename}` is replaced with the value, and that's it.
|
|
|
|
Two-way variables go both ways, as follows:
|
|
|
|
- When submitting a job, values are replaced with variables.
|
|
- When sending a task to a worker, variables are replaced with values again.
|
|
|
|
This may seem like a lot of unnecessary work. After all, why go through the
|
|
trouble of replacing in one direction, when later the opposite is done? The
|
|
power lies in the fact that each replacement step can target a different
|
|
platform. In the first step the value for Linux can be recognised, and in the
|
|
second step the value for Windows can be put in its place.
|
|
|
|
Let's look at a more concrete example, based on the configuration shown above.
|
|
|
|
- Alice runs Blender on **macOS**. She submits a job that has its render output set
|
|
to `/Volumes/shared/flamenco/renders/shot_010_a_anim`.
|
|
- Flamenco recognises the path, and stores the job as rendering to
|
|
`{my_storage}/renders/shot_010_a_anim`.
|
|
- Bob's computer is running the Worker on **Windows**, so when it receives a render
|
|
task Flamenco will tell it to render to
|
|
`F:\flamenco\renders\shot_010_a_anim`.
|
|
- Carol's computer is also running a worker, but on **Linux**. When it receives a
|
|
render task, Flamenco will tell it to render to
|
|
`/media/shared/flamenco/renders/shot_010_a_anim`.
|