Merge branch 'main' of community.rokojori.com:Rokojori/rj-action-library

This commit is contained in:
Josef 2025-04-25 10:13:32 +02:00
commit 861ffd1a6d
4 changed files with 40 additions and 17 deletions

View File

@ -17,6 +17,8 @@ uniform Params
float luma; float luma;
float minBrightness; float minBrightness;
float saturate; float saturate;
float blur;
float blurRange;
} params; } params;
@ -27,13 +29,25 @@ void main()
vec4 currentPixel = imageLoad( currentImage, currentPosition ); vec4 currentPixel = imageLoad( currentImage, currentPosition );
vec4 lastPixel = imageLoad( lastProcessedImage, currentPosition ); vec4 lastPixel = imageLoad( lastProcessedImage, currentPosition );
int blurOffset = int( params.blurRange );
vec4 top = imageLoad( lastProcessedImage, currentPosition + ivec2( 0, -blurOffset ) );
vec4 left = imageLoad( lastProcessedImage, currentPosition + ivec2( -blurOffset, 0 ) );
vec4 bottom = imageLoad( lastProcessedImage, currentPosition + ivec2( 0, blurOffset ) );
vec4 right = imageLoad( lastProcessedImage, currentPosition + ivec2( blurOffset, 0 ) );
vec4 blurred = ( top + left + bottom + right ) / 4.0;
vec4 blurredLastPixel = mix( lastPixel, blurred, params.blur );
float luminance = min( 1.0, length( vec3( lastPixel.r, lastPixel.g, lastPixel.b ) ) ); float luminance = min( 1.0, length( vec3( lastPixel.r, lastPixel.g, lastPixel.b ) ) );
float amount = ( luminance - params.minBrightness ) / ( 1.0 - params.minBrightness ); float amount = ( luminance - params.minBrightness ) / ( 1.0 - params.minBrightness );
amount = min( max( 0.0, amount * params.saturate ), 1.0 ) * params.smearing; amount = min( max( 0.0, amount * params.saturate ), 1.0 ) * params.smearing;
amount = mix( 1.0, amount, params.luma ); amount = mix( 1.0, amount, params.luma );
vec4 nextPixel = currentPixel + min( 1.0, amount * params.smearing ) * ( lastPixel - currentPixel ); vec4 nextPixel = currentPixel + min( 1.0, amount * params.smearing ) * ( lastPixel - currentPixel );
vec4 nextPixelBlurred = currentPixel + min( 1.0, amount * params.smearing ) * ( blurredLastPixel - currentPixel );
imageStore( currentImage, currentPosition, mix( currentPixel, nextPixel, params.amount ) ); imageStore( currentImage, currentPosition, mix( currentPixel, nextPixelBlurred, params.amount ) );
imageStore( lastProcessedImage, currentPosition, nextPixel ); imageStore( lastProcessedImage, currentPosition, nextPixel );
} }

View File

@ -27,6 +27,11 @@ namespace Rokojori
[Export( PropertyHint.Range, "0.5,5")] [Export( PropertyHint.Range, "0.5,5")]
public float lumaSaturate = 1.3f; public float lumaSaturate = 1.3f;
[Export( PropertyHint.Range, "0,1")]
public float blur = 0.5f;
[Export( PropertyHint.Range, "1,30")]
public float blurRange = 2f;
protected override void OnConfigure() protected override void OnConfigure()
{ {
@ -43,7 +48,9 @@ namespace Rokojori
1.0f - FrameSmoothing.ComputeCoefficient( 1f/60f, smearingFrames ), 1.0f - FrameSmoothing.ComputeCoefficient( 1f/60f, smearingFrames ),
lumaAmount, lumaAmount,
lumaTreshold, lumaTreshold,
lumaSaturate lumaSaturate,
blur,
blurRange
); );
} }

View File

@ -1,6 +1,6 @@
[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://c7og674edrsy2"] [gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://c7og674edrsy2"]
[ext_resource type="Shader" path="res://addons/rokojori_action_library/Runtime/Shading/Shaders/Billboards/QuadBillboard/QuadBillboard.gdshader" id="1_yfe48"] [ext_resource type="Shader" uid="uid://bmyf1o4fx8en2" path="res://addons/rokojori_action_library/Runtime/Shading/Shaders/Billboards/QuadBillboard/QuadBillboard.gdshader" id="1_yfe48"]
[sub_resource type="Gradient" id="Gradient_cxr4k"] [sub_resource type="Gradient" id="Gradient_cxr4k"]
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1)
@ -17,11 +17,14 @@ noise = SubResource("FastNoiseLite_vt5xb")
render_priority = 0 render_priority = 0
shader = ExtResource("1_yfe48") shader = ExtResource("1_yfe48")
shader_parameter/size = 0.3 shader_parameter/size = 0.3
shader_parameter/sizeMin = 1.0
shader_parameter/sizeMax = 1.0
shader_parameter/randomPosition = 0.0 shader_parameter/randomPosition = 0.0
shader_parameter/albedo = Color(1, 1, 1, 1) shader_parameter/albedo = Color(1, 1, 1, 1)
shader_parameter/rotation = 3.22 shader_parameter/rotation = 3.22
shader_parameter/rotationNoiseAmount = 2.445 shader_parameter/rotationNoiseAmount = 2.445
shader_parameter/rotationNoiseScale = 0.95 shader_parameter/rotationNoiseScale = 0.95
shader_parameter/texture_albedo = SubResource("NoiseTexture2D_ew55x")
shader_parameter/normalBlendAmount = 0.548 shader_parameter/normalBlendAmount = 0.548
shader_parameter/normalBlendDirection = Vector3(0, 1, 0) shader_parameter/normalBlendDirection = Vector3(0, 1, 0)
shader_parameter/roughness = 1.0 shader_parameter/roughness = 1.0
@ -29,17 +32,17 @@ shader_parameter/metalness = 1.0
shader_parameter/specular = 1.0 shader_parameter/specular = 1.0
shader_parameter/alpha_scissor_threshold = 0.176 shader_parameter/alpha_scissor_threshold = 0.176
shader_parameter/alpha_antialiasing_edge = 0.09 shader_parameter/alpha_antialiasing_edge = 0.09
shader_parameter/albedo_texture_size = null shader_parameter/albedo_texture_size = Vector2i(0, 0)
shader_parameter/ao_texture_channel = null shader_parameter/ao_texture_channel = Vector4(0, 0, 0, 0)
shader_parameter/ao_light_affect = 0.62 shader_parameter/ao_light_affect = 0.62
shader_parameter/yMapStart = null shader_parameter/yMapStart = 0.0
shader_parameter/yMapEnd = null shader_parameter/yMapEnd = 0.0
shader_parameter/yMapNoiseAmount = null shader_parameter/yMapNoiseAmount = 0.0
shader_parameter/yMapNoiseScale = null shader_parameter/yMapNoiseScale = 0.0
shader_parameter/discardNoiseScale = 1.0 shader_parameter/discardNoiseScale = 1.0
shader_parameter/discardThreshold = 1.0 shader_parameter/discardThreshold = 1.0
shader_parameter/fresnelNormalSource = 0.5 shader_parameter/fresnelNormalSource = 0.5
shader_parameter/fresnelColor = null shader_parameter/fresnelColor = Color(0, 0, 0, 1)
shader_parameter/fresnelSharpness = 1.0 shader_parameter/fresnelSharpness = 1.0
shader_parameter/fresnelScale = 1.0 shader_parameter/fresnelScale = 1.0
shader_parameter/windAmount = 1.0 shader_parameter/windAmount = 1.0
@ -47,4 +50,3 @@ shader_parameter/windSpeed = Vector2(0.1, 0.1)
shader_parameter/windNoiseScale = 1.0 shader_parameter/windNoiseScale = 1.0
shader_parameter/windStart = 0.0 shader_parameter/windStart = 0.0
shader_parameter/windEnd = 1.0 shader_parameter/windEnd = 1.0
shader_parameter/texture_albedo = SubResource("NoiseTexture2D_ew55x")

File diff suppressed because one or more lines are too long