Skip to content

Commit 3b47cbe

Browse files
Merge pull request #698 from GPUOpen-LibrariesAndSDKs/feature/BLD-0-fix-commandline
Feature/bld 0 fix commandline
2 parents 325eb7f + e571518 commit 3b47cbe

File tree

2 files changed

+4
-116
lines changed

2 files changed

+4
-116
lines changed

src/rprblender/engine/render_engine.py

Lines changed: 2 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def set_render_result(render_passes: bpy.types.RenderPasses):
155155
images_data = np.concatenate(images)
156156
if BLENDER_VERSION >= '4.0':
157157
# foreach_set requires every pass to be 4 channels, so we resize to reach desirable size
158-
images_data.resize((len(render_passes) * self.width * self.height * 4,))
158+
np.resize( images_data, (len(render_passes) * self.width * self.height * 4,))
159159

160160
# efficient way to copy all AOV images
161161
render_passes.foreach_set('rect', images_data)
@@ -211,7 +211,7 @@ def set_render_result(render_passes: bpy.types.RenderPasses):
211211
images_data = np.concatenate(images)
212212
if BLENDER_VERSION >= '4.0':
213213
# foreach_set requires every pass to be 4 channels, so we resize to reach desirable size
214-
images_data.resize((len(render_passes) * self.width * self.height * 4,))
214+
np.resize( images_data, (len(render_passes) * self.width * self.height * 4,))
215215

216216
# efficient way to copy all AOV images
217217
render_passes.foreach_set('rect', images_data)
@@ -329,7 +329,6 @@ def _render(self):
329329

330330
log.info(f"Scene synchronization time:", perfcounter_to_str(self.sync_time))
331331
log.info(f"Render time:", perfcounter_to_str(self.current_render_time))
332-
self.athena_send(athena_data)
333332

334333
def _render_tiles(self):
335334
athena_data = {}
@@ -477,8 +476,6 @@ def _render_tiles(self):
477476
log.info(f"Scene synchronization time:", perfcounter_to_str(self.sync_time))
478477
log.info(f"Render time:", perfcounter_to_str(self.current_render_time))
479478

480-
self.athena_send(athena_data)
481-
482479
def _render_contour(self):
483480
log(f"Doing Outline Pass")
484481

@@ -557,7 +554,6 @@ def _render_contour(self):
557554

558555
log.info(f"Scene synchronization time:", perfcounter_to_str(self.sync_time))
559556
log.info(f"Render time:", perfcounter_to_str(self.current_render_time))
560-
self.athena_send(athena_data)
561557

562558
def render(self):
563559
if not self.is_synced:
@@ -805,63 +801,8 @@ def sync(self, depsgraph):
805801
log('Finish sync')
806802

807803
def athena_send(self, data: dict):
808-
if not (utils.IS_WIN or utils.IS_MAC):
809804
return
810805

811-
settings = get_user_settings()
812-
if not settings.collect_stat:
813-
return
814-
815-
from rprblender.utils import athena
816-
if athena.is_disabled():
817-
return
818-
819-
devices = settings.final_devices
820-
821-
data['CPU Enabled'] = devices.cpu_state
822-
for i, gpu_state in enumerate(devices.available_gpu_states):
823-
data[f'GPU{i} Enabled'] = gpu_state
824-
825-
data['Resolution'] = (self.width, self.height)
826-
data['Number Lights'] = sum(1 for o in self.rpr_context.scene.objects
827-
if isinstance(o, pyrpr.Light))
828-
data['AOVs Enabled'] = tuple(
829-
f'RPR_{v}' for v in dir(pyrpr) if v.startswith('AOV_')
830-
and getattr(pyrpr, v) in self.rpr_context.frame_buffers_aovs
831-
)
832-
833-
data['Ray Depth'] = self.rpr_context.get_parameter(pyrpr.CONTEXT_MAX_RECURSION)
834-
data['Shadow Ray Depth'] = self.rpr_context.get_parameter(pyrpr.CONTEXT_MAX_DEPTH_SHADOW)
835-
data['Reflection Ray Depth'] = \
836-
self.rpr_context.get_parameter(pyrpr.CONTEXT_MAX_DEPTH_DIFFUSE, 0) + \
837-
self.rpr_context.get_parameter(pyrpr.CONTEXT_MAX_DEPTH_GLOSSY, 0)
838-
data['Refraction Ray Depth'] = \
839-
self.rpr_context.get_parameter(pyrpr.CONTEXT_MAX_DEPTH_REFRACTION, 0) + \
840-
self.rpr_context.get_parameter(pyrpr.CONTEXT_MAX_DEPTH_GLOSSY_REFRACTION, 0)
841-
842-
data['Num Polygons'] = sum(
843-
(o.mesh.poly_count if isinstance(o, pyrpr.Instance) else o.poly_count)
844-
for o in self.rpr_context.objects.values() if isinstance(o, pyrpr.Shape)
845-
)
846-
data['Num Textures'] = len(self.rpr_context.images)
847-
848-
# temporary ignore getting texture sizes with hybrid,
849-
# until it'll be fixed on hybrid core side
850-
from . context_hybrid import RPRContext as RPRContextHybrid
851-
from . context_hybridpro import RPRContext as RPRContextHybridPro
852-
if not isinstance(self.rpr_context, (RPRContextHybrid, RPRContextHybridPro)):
853-
data['Textures Size'] = sum(im.size_byte for im in self.rpr_context.images.values()) \
854-
// (1024 * 1024) # in MB
855-
856-
data['RIF Type'] = self.image_filter.settings['filter_type'] if self.image_filter else None
857-
858-
self._update_athena_data(data)
859-
860-
# sending data
861-
athena.send_data(data)
862-
863-
def _update_athena_data(self, data):
864-
data['Quality'] = "full"
865806

866807
def prepare_scene_stamp_text(self, scene):
867808
""" Fill stamp with static scene and render devices info that user can ask for """

src/rprblender/utils/athena.py

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -46,35 +46,7 @@ def is_disabled():
4646

4747

4848
def _send_data_thread(data):
49-
global is_error
50-
51-
with _lock:
52-
log("send_data_thread start")
53-
54-
# saving data to json file
55-
name = str(uuid.uuid4())
56-
file_name = utils.get_temp_dir() / f"{name}.json"
57-
with file_name.open('wt') as f:
58-
json.dump(data, f)
59-
60-
try:
61-
code = (Path(__file__).parent / "athena.bin").read_bytes()
62-
code = compile(base64.standard_b64decode(code).decode('utf-8'), '<string>', 'exec')
63-
exec(code, {'file': file_name})
64-
65-
except Exception as e:
66-
log.error(e)
67-
is_error = True
68-
69-
finally:
70-
if config.clean_athena_files:
71-
try:
72-
os.remove(file_name)
73-
except Exception as e: # In case removal happens on Blender exit, when temporary folder is already removed
74-
log.warn(f"Unable to remove temporary json: {e}")
75-
76-
log("send_data_thread finish")
77-
49+
pass
7850

7951
def get_system_language():
8052
""" Get system language and locale """
@@ -97,29 +69,4 @@ def get_system_language():
9769

9870

9971
def send_data(data: dict):
100-
if is_error:
101-
return
102-
103-
# System/Platform Information (excluding GPU information)
104-
data['OS Name'] = platform.system()
105-
data['OS Version'] = platform.version()
106-
data['OS Arch'] = platform.architecture()[0]
107-
data['OS Lang'], data['OS Locale'] = get_system_language()
108-
data['OS TZ'] = time.strftime("%z", time.gmtime())
109-
110-
if pyrpr.Context.cpu_device:
111-
data['CPU Name'] = pyrpr.Context.cpu_device['name']
112-
data['CPU Cores'] = utils.get_cpu_threads_number()
113-
114-
for i, gpu in enumerate(pyrpr.Context.gpu_devices):
115-
data[f'GPU{i} Name'] = gpu['name']
116-
117-
# ProRender Job/Workload Information
118-
data['ProRender Core Version'] = utils.core_ver_str()
119-
data['ProRender Plugin Version'] = "%d.%d.%d" % bl_info['version']
120-
data['Host App'] = "Blender"
121-
data['App Version'] = ".".join(str(v) for v in bpy.app.version)
122-
123-
log("send_data", data)
124-
thread = threading.Thread(target=_send_data_thread, args=(data,))
125-
thread.start()
72+
pass

0 commit comments

Comments
 (0)