mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-20 02:08:12 +00:00
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:
@@ -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 {}
|
||||
|
||||
@@ -248,17 +248,18 @@ class RenderServerProxy:
|
||||
|
||||
# --- Renderer --- #
|
||||
|
||||
def get_renderer_info(self, timeout=5):
|
||||
def get_renderer_info(self, response_type='standard', timeout=5):
|
||||
"""
|
||||
Fetches renderer information from the server.
|
||||
|
||||
Args:
|
||||
response_type (str, optional): Returns standard or full version of renderer info
|
||||
timeout (int, optional): The number of seconds to wait for a response from the server. Defaults to 5.
|
||||
|
||||
Returns:
|
||||
dict: A dictionary containing the renderer information.
|
||||
"""
|
||||
all_data = self.request_data(f'renderer_info', timeout=timeout)
|
||||
all_data = self.request_data(f"renderer_info?response_type={response_type}", timeout=timeout)
|
||||
return all_data
|
||||
|
||||
def delete_engine(self, engine, version, system_cpu=None):
|
||||
|
||||
Reference in New Issue
Block a user