mirror of
https://github.com/Relintai/material-maker.git
synced 2024-12-27 23:17:14 +01:00
109 lines
4.0 KiB
Plaintext
109 lines
4.0 KiB
Plaintext
{
|
|
"name": "blend",
|
|
"node_position": {
|
|
"x": 0,
|
|
"y": 0
|
|
},
|
|
"parameters": {
|
|
"amount": 0.935642,
|
|
"blend_type": 0
|
|
},
|
|
"shader_model": {
|
|
"global": "vec3 blend_normal(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1 + (1.0-opacity)*c2;\n}\n\nvec3 blend_dissolve(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\tif (rand(uv) < opacity) {\n\t\treturn c1;\n\t} else {\n\t\treturn c2;\n\t}\n}\n\nvec3 blend_multiply(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*c1*c2 + (1.0-opacity)*c2;\n}\n\nvec3 blend_screen(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*(1.0-(1.0-c1)*(1.0-c2)) + (1.0-opacity)*c2;\n}\n\nfloat blend_overlay_f(float c1, float c2) {\n\treturn (c1 < 0.5) ? (2.0*c1*c2) : (1.0-2.0*(1.0-c1)*(1.0-c2));\n}\n\nvec3 blend_overlay(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_overlay_f(c1.x, c2.x), blend_overlay_f(c1.y, c2.y), blend_overlay_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_hard_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*0.5*(c1*c2+blend_overlay(uv, c1, c2, 1.0)) + (1.0-opacity)*c2;\n}\n\nfloat blend_soft_light_f(float c1, float c2) {\n\treturn (c2 < 0.5) ? (2.0*c1*c2+c1*c1*(1.0-2.0*c2)) : 2.0*c1*(1.0-c2)+sqrt(c1)*(2.0*c2-1.0);\n}\n\nvec3 blend_soft_light(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_soft_light_f(c1.x, c2.x), blend_soft_light_f(c1.y, c2.y), blend_soft_light_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_burn_f(float c1, float c2) {\n\treturn (c1==0.0)?c1:max((1.0-((1.0-c2)/c1)),0.0);\n}\n\nvec3 blend_burn(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_burn_f(c1.x, c2.x), blend_burn_f(c1.y, c2.y), blend_burn_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nfloat blend_dodge_f(float c1, float c2) {\n\treturn (c1==1.0)?c1:min(c2/(1.0-c1),1.0);\n}\n\nvec3 blend_dodge(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*vec3(blend_dodge_f(c1.x, c2.x), blend_dodge_f(c1.y, c2.y), blend_dodge_f(c1.z, c2.z)) + (1.0-opacity)*c2;\n}\n\nvec3 blend_lighten(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*max(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blend_darken(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*min(c1, c2) + (1.0-opacity)*c2;\n}\n\nvec3 blend_difference(vec2 uv, vec3 c1, vec3 c2, float opacity) {\n\treturn opacity*clamp(c2-c1, vec3(0.0), vec3(1.0)) + (1.0-opacity)*c2;\n}\n",
|
|
"inputs": [
|
|
{
|
|
"default": "vec4($uv.x, 1.0, 1.0, 1.0)",
|
|
"label": "Source1",
|
|
"name": "s1",
|
|
"type": "rgba"
|
|
},
|
|
{
|
|
"default": "vec4(1.0, $uv.y, 1.0, 1.0)",
|
|
"label": "Source2",
|
|
"name": "s2",
|
|
"type": "rgba"
|
|
},
|
|
{
|
|
"default": "1.0",
|
|
"label": "Opacity",
|
|
"name": "a",
|
|
"type": "f"
|
|
}
|
|
],
|
|
"instance": "",
|
|
"name": "Blend",
|
|
"outputs": [
|
|
{
|
|
"rgba": "vec4(blend_$blend_type($uv, $s1($uv).rgb, $s2($uv).rgb, $amount*$a($uv)*$s1($uv).a), min(1.0, $s2($uv).a+$amount*$a($uv)*$s1($uv).a))",
|
|
"type": "rgba"
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"default": 0,
|
|
"label": "",
|
|
"name": "blend_type",
|
|
"type": "enum",
|
|
"values": [
|
|
{
|
|
"name": "Normal",
|
|
"value": "normal"
|
|
},
|
|
{
|
|
"name": "Dissolve",
|
|
"value": "dissolve"
|
|
},
|
|
{
|
|
"name": "Multiply",
|
|
"value": "multiply"
|
|
},
|
|
{
|
|
"name": "Screen",
|
|
"value": "screen"
|
|
},
|
|
{
|
|
"name": "Overlay",
|
|
"value": "overlay"
|
|
},
|
|
{
|
|
"name": "Hard Light",
|
|
"value": "hard_light"
|
|
},
|
|
{
|
|
"name": "Soft Light",
|
|
"value": "soft_light"
|
|
},
|
|
{
|
|
"name": "Burn",
|
|
"value": "burn"
|
|
},
|
|
{
|
|
"name": "Dodge",
|
|
"value": "dodge"
|
|
},
|
|
{
|
|
"name": "Lighten",
|
|
"value": "lighten"
|
|
},
|
|
{
|
|
"name": "Darken",
|
|
"value": "darken"
|
|
},
|
|
{
|
|
"name": "Difference",
|
|
"value": "difference"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"default": 0.5,
|
|
"label": "3:",
|
|
"max": 1,
|
|
"min": 0,
|
|
"name": "amount",
|
|
"step": 0,
|
|
"type": "float"
|
|
}
|
|
]
|
|
}
|
|
} |