Revision control

Copy as Markdown

{
"QEN": {
"description": "Creates ledscreen effect of the source item. Note: Uses source item texture so this node should be used in the beginning of node tree and nodes with color operations applied after it.",
"fragmentCode": [
"@main",
"{",
" const float maxLedSize = ledScreenLedSize;",
" vec2 center = floor(fragCoord / maxLedSize) * maxLedSize + maxLedSize * 0.5;",
" vec3 ledColor = texture(scaledSourceImage, center / iResolution.xy).rgb;",
"",
"#if LED_SCREEN_SIZE_FROM_COLOR == 1",
" vec3 sizeColorMultiplier = vec3(0.8, 0.4, 0.2);",
" float ledSize = clamp(dot(ledColor, maxLedSize * sizeColorMultiplier), 0.1, maxLedSize);",
"#else",
" float ledSize = maxLedSize;",
"#endif",
"",
" float alpha = 0.0;",
" if (ledSize > 2.0) {",
" float dist = distance(center, fragCoord) * 2.0;",
" alpha = smoothstep(1.0, 0.5, dist / ledSize);",
" }",
"",
"#if LED_SCREEN_COLOR_FROM_SOURCE == 1",
" fragColor.rgb = ledColor.rgb * alpha;",
"#else",
" fragColor.rgb = vec3(alpha) * ledScreenLedColor.rgb;",
"#endif",
"",
"}"
],
"name": "LedScreen",
"properties": [
{
"defaultValue": "1",
"description": "When this is set to 1, the size of the led is determined by its color.",
"name": "LED_SCREEN_SIZE_FROM_COLOR",
"type": "define"
},
{
"defaultValue": "1",
"description": "When this is set to 1, the color of the led is determined by the color of the source item.",
"name": "LED_SCREEN_COLOR_FROM_SOURCE",
"type": "define"
},
{
"defaultValue": "20",
"description": "Size of a single led in pixels.",
"maxValue": "50",
"minValue": "4",
"name": "ledScreenLedSize",
"type": "float"
},
{
"defaultValue": "1, 1, 1, 1",
"description": "Color of the leds. This only affects when LED_SCREEN_COLOR_FROM_SOURCE is not set.",
"name": "ledScreenLedColor",
"type": "color"
},
{
"customValue": "scaledSource",
"defaultValue": "",
"description": "Helper property for the scaled source item.",
"name": "scaledSourceImage",
"type": "image",
"useCustomValue": true
}
],
"qmlCode": [
"ShaderEffectSource {",
" id: scaledSource",
" sourceItem: source",
" textureSize: Qt.size(source.width / ledScreenLedSize, source.height / ledScreenLedSize);",
"}"
],
"version": 1
}
}