Additons
This commit is contained in:
@@ -94,6 +94,15 @@
|
||||
"min": 0.0,
|
||||
"max": 0.2,
|
||||
"step": 0.005
|
||||
},
|
||||
{
|
||||
"id": "noiseSize",
|
||||
"label": "Noise Size",
|
||||
"type": "float",
|
||||
"default": 1.0,
|
||||
"min": 0.25,
|
||||
"max": 6.0,
|
||||
"step": 0.05
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -44,13 +44,23 @@ float noiseHash(float2 p)
|
||||
return frac(sin(dot(p, float2(127.1, 311.7))) * 43758.5453123);
|
||||
}
|
||||
|
||||
float3 chromaSpeckle(float2 uv, float framecount)
|
||||
float grainScalar(float2 uv)
|
||||
{
|
||||
float2 coarseUv = floor(uv);
|
||||
float r = noiseHash(coarseUv + float2(framecount * 19.0, framecount * 11.0));
|
||||
float g = noiseHash(coarseUv + float2(framecount * 23.0 + 17.0, framecount * 7.0 + 31.0));
|
||||
float b = noiseHash(coarseUv + float2(framecount * 13.0 + 47.0, framecount * 29.0 + 9.0));
|
||||
return float3(r, g, b) - 0.5;
|
||||
return frac(sin(dot(uv, float2(12.9898, 78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
float3 animatedChromaGrain(float2 uv, float time, float2 outputResolution, float grainSize)
|
||||
{
|
||||
float safeGrainSize = max(grainSize, 0.001);
|
||||
float2 baseUv = uv * outputResolution * float2(0.85, 0.95) / safeGrainSize;
|
||||
float2 grainUv = floor(baseUv) + 0.5;
|
||||
float2 drift = float2(time * 19.7, time * 23.3);
|
||||
|
||||
float r = grainScalar(grainUv + drift + float2(13.1, 71.7));
|
||||
float g = grainScalar(grainUv * float2(1.03, 0.97) + drift * 1.11 + float2(47.2, 19.4));
|
||||
float b = grainScalar(grainUv * float2(0.96, 1.05) + drift * 0.91 + float2(83.6, 53.8));
|
||||
|
||||
return float3(r, g, b) * 2.0 - 1.0;
|
||||
}
|
||||
|
||||
float3 softBloom(float2 uv, float2 outputResolution, float radius)
|
||||
@@ -145,14 +155,14 @@ float4 shadeVideo(ShaderContext context)
|
||||
color = lerp(color, bloomSource, bloomAmount * 0.18);
|
||||
color += bloomSource * float3(1.0, 0.96, 0.92) * bloomMask * 0.24;
|
||||
|
||||
float2 noiseUv = context.uv * context.outputResolution * float2(0.55, 1.1);
|
||||
float3 speckle = chromaSpeckle(noiseUv, framecount);
|
||||
float3 speckle = animatedChromaGrain(context.uv, context.time, context.outputResolution, noiseSize);
|
||||
float luma = dot(color, float3(0.299, 0.587, 0.114));
|
||||
float noiseMask = lerp(0.65, 1.0, 1.0 - saturate(luma));
|
||||
float3 chromaNoise = float3(speckle.x * 1.1, speckle.y * 0.45, speckle.z * 1.2);
|
||||
color += chromaNoise * noiseAmount * noiseMask;
|
||||
color.rg = lerp(color.rg, float2(color.r, color.g) + speckle.xy * noiseAmount * 0.18, 0.35);
|
||||
color.b = lerp(color.b, color.b + speckle.z * noiseAmount * 0.22, 0.45);
|
||||
float chunkiness = lerp(1.0, 2.4, saturate((noiseSize - 1.0) / 5.0));
|
||||
float3 chromaNoise = float3(speckle.x * 1.2, speckle.y * 0.28, speckle.z * 1.35);
|
||||
color += chromaNoise * noiseAmount * noiseMask * chunkiness;
|
||||
color.rg = lerp(color.rg, float2(color.r, color.g) + speckle.xy * noiseAmount * 0.2 * chunkiness, 0.35);
|
||||
color.b = lerp(color.b, color.b + speckle.z * noiseAmount * 0.28 * chunkiness, 0.5);
|
||||
|
||||
float3 grayscale = float3(luma, luma, luma);
|
||||
color = lerp(color, grayscale, fadeAmount * 0.18);
|
||||
|
||||
Reference in New Issue
Block a user