Add new node asset scripts for geometry and shader operations
- Implemented `build_mesh_plane.py` to create a geometry node group for mesh planes with customizable parameters. - Created `build_shadeless.py` for a shader node group that displays color without scene lighting while preserving shadows and reflections. - Added `validate.py` to validate the integrity of the newly created node groups and their inputs. - Introduced `validate_cutout.py` to ensure the functionality of cutout node groups and their dependencies. - Developed `validate_mesh_plane.py` to test the mesh plane creation and its modifier settings.
This commit is contained in:
@@ -1,32 +1,4 @@
|
||||
import math
|
||||
|
||||
|
||||
SCALE = 4
|
||||
MAX_OUTPUT_SIZE = 8192
|
||||
MAX_OUTPUT_PIXELS = 32 * 1024 * 1024
|
||||
|
||||
|
||||
def _limited_input(image, max_output_size):
|
||||
from PIL import Image
|
||||
|
||||
max_output_size = int(max_output_size)
|
||||
if max_output_size < 1 or max_output_size > MAX_OUTPUT_SIZE:
|
||||
raise ValueError(
|
||||
f"Max Output Size must be between 1 and {MAX_OUTPUT_SIZE} pixels"
|
||||
)
|
||||
width, height = image.size
|
||||
scale = min(
|
||||
1.0,
|
||||
max_output_size / (max(width, height) * SCALE),
|
||||
math.sqrt(MAX_OUTPUT_PIXELS / (width * height * SCALE * SCALE)),
|
||||
)
|
||||
if scale >= 1.0:
|
||||
return image
|
||||
size = (
|
||||
max(1, int(width * scale)),
|
||||
max(1, int(height * scale)),
|
||||
)
|
||||
return image.resize(size, Image.Resampling.LANCZOS)
|
||||
from ..media.resolution import DEFAULT_MAX_AI_INPUT_SIZE, limit_image
|
||||
|
||||
|
||||
def _source_alpha(image):
|
||||
@@ -53,9 +25,10 @@ def infer_one(
|
||||
)
|
||||
try:
|
||||
with Image.open(image_path) as opened:
|
||||
source = opened
|
||||
if "max_output_size" in parameters:
|
||||
source = _limited_input(source, parameters["max_output_size"])
|
||||
source = limit_image(
|
||||
opened,
|
||||
parameters.get("max_input_size", DEFAULT_MAX_AI_INPUT_SIZE),
|
||||
)
|
||||
source_alpha = _source_alpha(source) if preserve_alpha else None
|
||||
prediction = infer(model, source, cancel_check=cancel_check)
|
||||
if source_alpha is None:
|
||||
@@ -72,5 +45,5 @@ def infer_one(
|
||||
device = str(parameters.get("device", "selected device")).upper()
|
||||
raise RuntimeError(
|
||||
f"Upscale could not finish on {device}: {error}. "
|
||||
"Reduce Max Output Size or select CPU, then try again."
|
||||
"Reduce Maximum AI Input Size or select CPU, then try again."
|
||||
) from error
|
||||
|
||||
Reference in New Issue
Block a user