{ "id": "feedback-highlight-accumulator", "name": "Feedback Highlight Accumulator", "description": "Demonstrates shader-local feedback by accumulating only the brightest-looking parts of the image over a timed window, then resetting and starting again. The highlight selection is an approximation based on a luminance threshold rather than an exact percentile reduction.", "category": "Feedback", "entryPoint": "shadeVideo", "feedback": { "enabled": true }, "parameters": [ { "id": "highlightThreshold", "label": "Highlight Threshold", "type": "float", "default": 0.99, "min": 0.5, "max": 1.5, "step": 0.001, "description": "Approximate cutoff for the brightest parts of the frame." }, { "id": "softness", "label": "Threshold Softness", "type": "float", "default": 0.05, "min": 0.001, "max": 0.25, "step": 0.001, "description": "Softens the threshold so near-highlights can contribute gradually." }, { "id": "accumulateAmount", "label": "Accumulate Amount", "type": "float", "default": 0.2, "min": 0.0, "max": 2.0, "step": 0.001, "description": "How much of each bright sample gets added into the running feedback image." }, { "id": "displayGain", "label": "Display Gain", "type": "float", "default": 1.0, "min": 0.0, "max": 4.0, "step": 0.01, "description": "Brightness applied to the accumulated feedback when displayed." }, { "id": "baseMix", "label": "Base Mix", "type": "float", "default": 0.25, "min": 0.0, "max": 1.0, "step": 0.01, "description": "Amount of the live source image kept under the accumulation." }, { "id": "resetSeconds", "label": "Reset Seconds", "type": "float", "default": 10.0, "min": 1.0, "max": 60.0, "step": 0.1, "description": "Length of each accumulation window before the feedback resets." } ] }