Submit
Submit is the action of launching a job on the render farm.
Purpose
The goal of the submitter is to be able to launch render jobs with different render engines and tools.
It must be flexible enough to construct different kind of commands used for rendering.
We currently support:
- V-Ray
.vrscene
files - Blender
.blend
files - Husk (render USD files with Houdini's Karma or other Hydra delegate)
- Kick (Arnold command line)
.ass
sequences - Houdini scenes
.hip*
- Maya scenes
.ma/mb
- Nuke scripts
.nk
Architecture
This is an example of the V-Ray submitter:
submit.yml
action definition
submit:
shelf: "output"
thumbnail: "submit.svg"
steps:
setup:
lavel: "Setup"
index: 50
commands:
get_submiter:
label: "Select submiter"
path: "silex_client.commands.select_submit.SelectSubmit"
tooltip: "Select the type of conform you want to make"
ask_user: true
append_submit_actions:
label: "Append selected submit action"
path: "silex_client.commands.insert_action.InsertAction"
tooltip: "Append the selected submit to the list of commands to execute"
parameters:
category: "submit"
action:
value: !command-output "setup:get_submiter:action"
hide: true
silex_coins:
index: 500
hide: true
commands:
add_silex_coins:
path: "silex_client.commands.user.silex_coins.AddSilexCoinsCommand"
parameters:
amount:
value: 3
vray.yml
action definition
vray:
label: "Submit V-Ray scene"
steps:
build_output_path:
label: "Build output path"
index: 10
commands:
select_extension:
label: "Output extension"
path: "silex_client.commands.select_list.SelectList"
parameters:
param_name: "Output extension"
parameters_list:
- "exr"
- "png"
- "jpg"
- "tiff"
build_output_path:
label: "Build output path"
path: "silex_client.commands.build_output_path.BuildOutputPath"
tooltip: "Build the complete output path"
ask_user: true
parameters:
output_type:
value: !command-output "build_output_path:select_extension"
hide: true
create_temp_dir: false
create_output_dir: false
task:
hide: true
use_current_context:
value: true
hide: true
frame_set:
hide: true
name:
value: "render"
vray_render:
label: "Setup render parameters"
index: 20
commands:
build_vray_tasks:
path: "silex_client.commands.farm.vray_render_tasks.VrayRenderTasksCommand"
label: "V-Ray Job parameters"
ask_user: true
parameters:
output_directory:
value: !command-output "build_output_path:build_output_path:directory"
output_filename:
value: !command-output "build_output_path:build_output_path:file_name"
output_extension:
value: !command-output "build_output_path:select_extension"
submit_to_tractor:
label: "Submit"
path: "silex_client.commands.farm.submit_to_tractor.SubmitToTractorCommand"
ask_user: true
parameters:
tasks:
value: !command-output "vray_render:build_vray_tasks:tasks"
job_title:
value: !command-output "vray_render:build_vray_tasks:file_name"
job_tags:
value:
- "vray"
The steps are:
- We launch the action defined by
submit.yml
. This is the base action. append_submit_actions
is using theInsertAction
command to insert the appropriate submitter based on the user input. We specify thesubmit
category to look at theconfig/submit/xxxx.yml
submitter action definitions.- The submitter is inserted and we build the output path of the image files for the render
build_vray_tasks
constructs tasks and commands based on thetask_size
and other user input. It returns a list of tasks in an abstract data model.submit_to_tractor
receives those tasks and convert them in Tractor's own data model. It then sends the job with the user, pools, RAM requirement and priority. For that we use our own Tractor's Python library but patched for Python 3.x.