osc multi arguments
This commit is contained in:
48
shaders/composition-guides/shader.slang
Normal file
48
shaders/composition-guides/shader.slang
Normal file
@@ -0,0 +1,48 @@
|
||||
float lineMask(float coordinate, float target, float pixelThickness, float resolution)
|
||||
{
|
||||
float halfWidth = max(pixelThickness, 0.5) * 0.5 / max(resolution, 1.0);
|
||||
float distanceToLine = abs(coordinate - target);
|
||||
float feather = halfWidth * 0.85 + (1.0 / max(resolution, 1.0));
|
||||
return 1.0 - smoothstep(halfWidth, feather, distanceToLine);
|
||||
}
|
||||
|
||||
float thirdsMask(float2 uv, float2 resolution)
|
||||
{
|
||||
float thickness = max(lineThicknessPixels, 0.5);
|
||||
float mask = 0.0;
|
||||
mask = max(mask, lineMask(uv.x, 1.0 / 3.0, thickness, resolution.x));
|
||||
mask = max(mask, lineMask(uv.x, 2.0 / 3.0, thickness, resolution.x));
|
||||
mask = max(mask, lineMask(uv.y, 1.0 / 3.0, thickness, resolution.y));
|
||||
mask = max(mask, lineMask(uv.y, 2.0 / 3.0, thickness, resolution.y));
|
||||
return mask;
|
||||
}
|
||||
|
||||
float crosshairMask(float2 uv, float2 resolution)
|
||||
{
|
||||
float2 pixel = (uv - 0.5) * resolution;
|
||||
float halfThickness = max(lineThicknessPixels, 0.5) * 0.5;
|
||||
float halfSize = max(crosshairSizePixels, 1.0) * 0.5;
|
||||
float halfGap = max(crosshairGapPixels, 0.0) * 0.5;
|
||||
|
||||
float horizontalExtent = step(abs(pixel.x), halfSize) * (1.0 - step(abs(pixel.x), halfGap));
|
||||
float verticalExtent = step(abs(pixel.y), halfSize) * (1.0 - step(abs(pixel.y), halfGap));
|
||||
|
||||
float horizontalLine = horizontalExtent * (1.0 - smoothstep(halfThickness, halfThickness + 1.5, abs(pixel.y)));
|
||||
float verticalLine = verticalExtent * (1.0 - smoothstep(halfThickness, halfThickness + 1.5, abs(pixel.x)));
|
||||
return max(horizontalLine, verticalLine);
|
||||
}
|
||||
|
||||
float4 shadeVideo(ShaderContext context)
|
||||
{
|
||||
float2 resolution = max(context.outputResolution, float2(1.0, 1.0));
|
||||
float mask = 0.0;
|
||||
|
||||
if (showThirds)
|
||||
mask = max(mask, thirdsMask(context.uv, resolution));
|
||||
if (showCrosshair)
|
||||
mask = max(mask, crosshairMask(context.uv, resolution));
|
||||
|
||||
float opacity = saturate(lineOpacity * lineColor.a) * mask;
|
||||
float3 color = lerp(context.sourceColor.rgb, lineColor.rgb, opacity);
|
||||
return float4(color, context.sourceColor.a);
|
||||
}
|
||||
Reference in New Issue
Block a user