Blender GPU / CPU Render (#81)

* Add script to get GPU information from Blender

* Change run_python_script to allow it to run without a project file

* Simplify run_python_script code

* Fix mistake

* Add system_info to engine classes and api_server. /api/renderer_info now supports standard and full response modes.

* Get full renderer_info response for add job UI

* Enable setting specific Blender render_device using args

* Add Blender render device options to UI
This commit is contained in:
2024-08-03 18:26:56 -05:00
committed by GitHub
parent 9bc490acae
commit ef4fc0e42e
8 changed files with 107 additions and 42 deletions

View File

@@ -363,6 +363,8 @@ def status():
@server.get('/api/renderer_info')
def renderer_info():
response_type = request.args.get('response_type', 'standard')
def process_engine(engine):
try:
# Get all installed versions of the engine
@@ -373,14 +375,27 @@ def renderer_info():
install_path = system_installed_versions[0]['path'] if system_installed_versions else \
installed_versions[0]['path']
return {
engine.name(): {
'is_available': RenderQueue.is_available_for_job(engine.name()),
'versions': installed_versions,
'supported_extensions': engine.supported_extensions(),
'supported_export_formats': engine(install_path).get_output_formats()
en = engine(install_path)
if response_type == 'full': # Full dataset - Can be slow
return {
en.name(): {
'is_available': RenderQueue.is_available_for_job(en.name()),
'versions': installed_versions,
'supported_extensions': engine.supported_extensions(),
'supported_export_formats': en.get_output_formats(),
'system_info': en.system_info()
}
}
}
elif response_type == 'standard': # Simpler dataset to reduce response times
return {
en.name(): {
'is_available': RenderQueue.is_available_for_job(en.name()),
'versions': installed_versions,
}
}
else:
raise AttributeError(f"Invalid response_type: {response_type}")
except Exception as e:
logger.error(f'Error fetching details for {engine.name()} renderer: {e}')
return {}