Files
workinf_Blender_Wasm/tools/web/generate-m11-compositor-allowlist.py
mes123456 0fe8d2bb56
Some checks are pending
M6 deployable RC / quick (push) Waiting to run
M6 deployable RC / chromium (push) Blocked by required conditions
M6 deployable RC / release (push) Blocked by required conditions
Advance M8-M11 parity workflows
2026-08-17 04:37:07 -04:00

55 lines
2.2 KiB
Python

import pathlib
import sys
import bpy
SCENES = (
("M11 Constant", (0.125, 0.25, 0.5, 0.75), ()),
("M11 Exposure", (0.125, 0.25, 0.5, 0.75), (("EXPOSURE", 1.0),)),
("M11 Invert", (0.125, 0.25, 0.5, 0.75), (("INVERT", None),)),
("M11 Chain", (0.125, 0.25, 0.5, 0.75), (("EXPOSURE", 1.0), ("INVERT", None))),
)
def add_graph(scene, color_value, operations):
tree = bpy.data.node_groups.new(f"{scene.name} Tree", "CompositorNodeTree")
scene.compositing_node_group = tree
tree.interface.new_socket(name="Image", in_out="OUTPUT", socket_type="NodeSocketColor")
color = tree.nodes.new("CompositorNodeRGB")
color.name = f"{scene.name} Constant"
color.outputs["Color"].default_value = color_value
previous = color.outputs["Color"]
for index, (operation, parameter) in enumerate(operations):
if operation == "EXPOSURE":
node = tree.nodes.new("CompositorNodeExposure")
node.inputs["Exposure"].default_value = parameter
else:
node = tree.nodes.new("CompositorNodeInvert")
node.name = f"{scene.name} {operation.title()} {index}"
tree.links.new(previous, node.inputs["Image" if operation == "EXPOSURE" else "Color"])
previous = node.outputs["Image" if operation == "EXPOSURE" else "Color"]
output = tree.nodes.new("NodeGroupOutput")
output.name = f"{scene.name} Composite"
tree.links.new(previous, output.inputs["Image"])
def main(output_path):
bpy.ops.wm.read_factory_settings(use_empty=True)
first = bpy.context.scene
for index, (name, color, operations) in enumerate(SCENES):
scene = first if index == 0 else bpy.data.scenes.new(name)
scene.name = name
add_graph(scene, color, operations)
output = pathlib.Path(output_path).resolve()
output.parent.mkdir(parents=True, exist_ok=True)
bpy.ops.wm.save_as_mainfile(filepath=str(output), compress=True)
print(f"m11-compositor-allowlist fixture={output} scenes={len(SCENES)}")
if __name__ == "__main__":
arguments = sys.argv[sys.argv.index("--") + 1:]
if len(arguments) != 1:
raise SystemExit("usage: blender -b --python generate-m11-compositor-allowlist.py -- OUTPUT")
main(arguments[0])