mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-04-09 18:17:52 +08:00
385 lines
11 KiB
JSON
385 lines
11 KiB
JSON
{
|
|
"revision": 0,
|
|
"last_node_id": 19,
|
|
"last_link_id": 0,
|
|
"nodes": [
|
|
{
|
|
"id": 19,
|
|
"type": "2c5ef154-2bde-496d-bc8b-9dcf42f2913f",
|
|
"pos": [
|
|
3710,
|
|
-2070
|
|
],
|
|
"size": [
|
|
260,
|
|
82
|
|
],
|
|
"flags": {},
|
|
"order": 4,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"label": "image",
|
|
"localized_name": "images.image0",
|
|
"name": "images.image0",
|
|
"type": "IMAGE",
|
|
"link": null
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"label": "IMAGE",
|
|
"localized_name": "IMAGE0",
|
|
"name": "IMAGE0",
|
|
"type": "IMAGE",
|
|
"links": []
|
|
}
|
|
],
|
|
"title": "Chromatic Aberration",
|
|
"properties": {
|
|
"proxyWidgets": [
|
|
[
|
|
"17",
|
|
"choice"
|
|
],
|
|
[
|
|
"18",
|
|
"value"
|
|
]
|
|
]
|
|
},
|
|
"widgets_values": []
|
|
}
|
|
],
|
|
"links": [],
|
|
"version": 0.4,
|
|
"definitions": {
|
|
"subgraphs": [
|
|
{
|
|
"id": "2c5ef154-2bde-496d-bc8b-9dcf42f2913f",
|
|
"version": 1,
|
|
"state": {
|
|
"lastGroupId": 0,
|
|
"lastNodeId": 18,
|
|
"lastLinkId": 23,
|
|
"lastRerouteId": 0
|
|
},
|
|
"revision": 0,
|
|
"config": {},
|
|
"name": "Chromatic Aberration",
|
|
"inputNode": {
|
|
"id": -10,
|
|
"bounding": [
|
|
3270,
|
|
-2050,
|
|
120,
|
|
60
|
|
]
|
|
},
|
|
"outputNode": {
|
|
"id": -20,
|
|
"bounding": [
|
|
4260,
|
|
-2050,
|
|
120,
|
|
60
|
|
]
|
|
},
|
|
"inputs": [
|
|
{
|
|
"id": "3b33ac46-93a6-4b1c-896a-ed6fbd24e59c",
|
|
"name": "images.image0",
|
|
"type": "IMAGE",
|
|
"linkIds": [
|
|
20
|
|
],
|
|
"localized_name": "images.image0",
|
|
"label": "image",
|
|
"pos": [
|
|
3370,
|
|
-2030
|
|
]
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"id": "abe7cd79-a87b-4bd0-8923-d79a57d81a6e",
|
|
"name": "IMAGE0",
|
|
"type": "IMAGE",
|
|
"linkIds": [
|
|
23
|
|
],
|
|
"localized_name": "IMAGE0",
|
|
"label": "IMAGE",
|
|
"pos": [
|
|
4280,
|
|
-2030
|
|
]
|
|
}
|
|
],
|
|
"widgets": [],
|
|
"nodes": [
|
|
{
|
|
"id": 16,
|
|
"type": "GLSLShader",
|
|
"pos": [
|
|
3810,
|
|
-2320
|
|
],
|
|
"size": [
|
|
390,
|
|
212
|
|
],
|
|
"flags": {},
|
|
"order": 2,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"label": "image0",
|
|
"localized_name": "images.image0",
|
|
"name": "images.image0",
|
|
"type": "IMAGE",
|
|
"link": 20
|
|
},
|
|
{
|
|
"label": "image1",
|
|
"localized_name": "images.image1",
|
|
"name": "images.image1",
|
|
"shape": 7,
|
|
"type": "IMAGE",
|
|
"link": null
|
|
},
|
|
{
|
|
"label": "u_float0",
|
|
"localized_name": "floats.u_float0",
|
|
"name": "floats.u_float0",
|
|
"shape": 7,
|
|
"type": "FLOAT",
|
|
"link": 22
|
|
},
|
|
{
|
|
"label": "u_float1",
|
|
"localized_name": "floats.u_float1",
|
|
"name": "floats.u_float1",
|
|
"shape": 7,
|
|
"type": "FLOAT",
|
|
"link": null
|
|
},
|
|
{
|
|
"label": "u_int0",
|
|
"localized_name": "ints.u_int0",
|
|
"name": "ints.u_int0",
|
|
"shape": 7,
|
|
"type": "INT",
|
|
"link": 21
|
|
},
|
|
{
|
|
"label": "u_int1",
|
|
"localized_name": "ints.u_int1",
|
|
"name": "ints.u_int1",
|
|
"shape": 7,
|
|
"type": "INT",
|
|
"link": null
|
|
},
|
|
{
|
|
"localized_name": "fragment_shader",
|
|
"name": "fragment_shader",
|
|
"type": "STRING",
|
|
"widget": {
|
|
"name": "fragment_shader"
|
|
},
|
|
"link": null
|
|
},
|
|
{
|
|
"localized_name": "size_mode",
|
|
"name": "size_mode",
|
|
"type": "COMFY_DYNAMICCOMBO_V3",
|
|
"widget": {
|
|
"name": "size_mode"
|
|
},
|
|
"link": null
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "IMAGE0",
|
|
"name": "IMAGE0",
|
|
"type": "IMAGE",
|
|
"links": [
|
|
23
|
|
]
|
|
},
|
|
{
|
|
"localized_name": "IMAGE1",
|
|
"name": "IMAGE1",
|
|
"type": "IMAGE",
|
|
"links": null
|
|
},
|
|
{
|
|
"localized_name": "IMAGE2",
|
|
"name": "IMAGE2",
|
|
"type": "IMAGE",
|
|
"links": null
|
|
},
|
|
{
|
|
"localized_name": "IMAGE3",
|
|
"name": "IMAGE3",
|
|
"type": "IMAGE",
|
|
"links": null
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "GLSLShader"
|
|
},
|
|
"widgets_values": [
|
|
"#version 300 es\nprecision highp float;\n\nuniform sampler2D u_image0;\nuniform vec2 u_resolution;\nuniform int u_int0; // Mode\nuniform float u_float0; // Amount (0 to 100)\n\nin vec2 v_texCoord;\nout vec4 fragColor;\n\nconst int MODE_LINEAR = 0;\nconst int MODE_RADIAL = 1;\nconst int MODE_BARREL = 2;\nconst int MODE_SWIRL = 3;\nconst int MODE_DIAGONAL = 4;\n\nconst float AMOUNT_SCALE = 0.0005;\nconst float RADIAL_MULT = 4.0;\nconst float BARREL_MULT = 8.0;\nconst float INV_SQRT2 = 0.70710678118;\n\nvoid main() {\n vec2 uv = v_texCoord;\n vec4 original = texture(u_image0, uv);\n\n float amount = u_float0 * AMOUNT_SCALE;\n\n if (amount < 0.000001) {\n fragColor = original;\n return;\n }\n\n // Aspect-corrected coordinates for circular effects\n float aspect = u_resolution.x / u_resolution.y;\n vec2 centered = uv - 0.5;\n vec2 corrected = vec2(centered.x * aspect, centered.y);\n float r = length(corrected);\n vec2 dir = r > 0.0001 ? corrected / r : vec2(0.0);\n vec2 offset = vec2(0.0);\n\n if (u_int0 == MODE_LINEAR) {\n // Horizontal shift (no aspect correction needed)\n offset = vec2(amount, 0.0);\n }\n else if (u_int0 == MODE_RADIAL) {\n // Outward from center, stronger at edges\n offset = dir * r * amount * RADIAL_MULT;\n offset.x /= aspect; // Convert back to UV space\n }\n else if (u_int0 == MODE_BARREL) {\n // Lens distortion simulation (r² falloff)\n offset = dir * r * r * amount * BARREL_MULT;\n offset.x /= aspect; // Convert back to UV space\n }\n else if (u_int0 == MODE_SWIRL) {\n // Perpendicular to radial (rotational aberration)\n vec2 perp = vec2(-dir.y, dir.x);\n offset = perp * r * amount * RADIAL_MULT;\n offset.x /= aspect; // Convert back to UV space\n }\n else if (u_int0 == MODE_DIAGONAL) {\n // 45° offset (no aspect correction needed)\n offset = vec2(amount, amount) * INV_SQRT2;\n }\n \n float red = texture(u_image0, uv + offset).r;\n float green = original.g;\n float blue = texture(u_image0, uv - offset).b;\n \n fragColor = vec4(red, green, blue, original.a);\n}",
|
|
"from_input"
|
|
]
|
|
},
|
|
{
|
|
"id": 18,
|
|
"type": "PrimitiveFloat",
|
|
"pos": [
|
|
3810,
|
|
-2430
|
|
],
|
|
"size": [
|
|
270,
|
|
58
|
|
],
|
|
"flags": {},
|
|
"order": 0,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"label": "amount",
|
|
"localized_name": "value",
|
|
"name": "value",
|
|
"type": "FLOAT",
|
|
"widget": {
|
|
"name": "value"
|
|
},
|
|
"link": null
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "FLOAT",
|
|
"name": "FLOAT",
|
|
"type": "FLOAT",
|
|
"links": [
|
|
22
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "PrimitiveFloat",
|
|
"min": 0,
|
|
"max": 100,
|
|
"step": 1
|
|
},
|
|
"widgets_values": [
|
|
30
|
|
]
|
|
},
|
|
{
|
|
"id": 17,
|
|
"type": "CustomCombo",
|
|
"pos": [
|
|
3520,
|
|
-2320
|
|
],
|
|
"size": [
|
|
270,
|
|
222
|
|
],
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"label": "mode",
|
|
"localized_name": "choice",
|
|
"name": "choice",
|
|
"type": "COMBO",
|
|
"widget": {
|
|
"name": "choice"
|
|
},
|
|
"link": null
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "STRING",
|
|
"name": "STRING",
|
|
"type": "STRING",
|
|
"links": null
|
|
},
|
|
{
|
|
"localized_name": "INDEX",
|
|
"name": "INDEX",
|
|
"type": "INT",
|
|
"links": [
|
|
21
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "CustomCombo"
|
|
},
|
|
"widgets_values": [
|
|
"Linear",
|
|
0,
|
|
"Linear",
|
|
"Radial",
|
|
"Barrel",
|
|
"Swirl",
|
|
"Diagonal",
|
|
""
|
|
]
|
|
}
|
|
],
|
|
"groups": [],
|
|
"links": [
|
|
{
|
|
"id": 22,
|
|
"origin_id": 18,
|
|
"origin_slot": 0,
|
|
"target_id": 16,
|
|
"target_slot": 2,
|
|
"type": "FLOAT"
|
|
},
|
|
{
|
|
"id": 21,
|
|
"origin_id": 17,
|
|
"origin_slot": 1,
|
|
"target_id": 16,
|
|
"target_slot": 4,
|
|
"type": "INT"
|
|
},
|
|
{
|
|
"id": 20,
|
|
"origin_id": -10,
|
|
"origin_slot": 0,
|
|
"target_id": 16,
|
|
"target_slot": 0,
|
|
"type": "IMAGE"
|
|
},
|
|
{
|
|
"id": 23,
|
|
"origin_id": 16,
|
|
"origin_slot": 0,
|
|
"target_id": -20,
|
|
"target_slot": 0,
|
|
"type": "IMAGE"
|
|
}
|
|
],
|
|
"extra": {
|
|
"workflowRendererVersion": "LG"
|
|
},
|
|
"category": "Image Tools/Color adjust"
|
|
}
|
|
]
|
|
}
|
|
}
|