Added multisampling to shader

rose_physics
jonathan 2 months ago
parent 01812b45c3
commit 865a13335b

@ -85,15 +85,15 @@ density = 0.1
[sub_resource type="Environment" id="Environment_dp7jk"]
tonemap_mode = 3
ssao_enabled = true
glow_enabled = true
glow_normalized = true
glow_intensity = 1.43
glow_strength = 1.04
glow_bloom = 0.16
volumetric_fog_enabled = true
[sub_resource type="Curve" id="Curve_gcpng"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.055555545, 0.022194743), 0.984991, 0.984991, 0, 0, Vector2(0.30246913, 0.3828606), 1.409688, 1.409688, 0, 0, Vector2(0.5864197, 0.6313193), 1.2172475, 1.2172475, 0, 0, Vector2(0.882716, 0.94389635), 1.9908764, 1.9908764, 0, 0, Vector2(1, 1), 0.063336894, 0.0, 0, 0]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.26234567, 0.14241672), 0.0, 0.0, 0, 0, Vector2(0.5092592, 0.3427866), 0.0, 0.0, 0, 0, Vector2(0.79320985, 0.6313193), 0.0, 0.0, 0, 0, Vector2(0.87962955, 0.96794075), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.063336894, 0.0, 0, 0]
point_count = 6
[sub_resource type="CurveTexture" id="CurveTexture_5747v"]
@ -102,7 +102,8 @@ curve = SubResource("Curve_gcpng")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_gcpng"]
shader = ExtResource("9_k5i88")
shader_parameter/target_tex_size = Vector2(427, 240)
shader_parameter/color_steps = 24.0
shader_parameter/sample_count = 1
shader_parameter/color_steps = 16.0
shader_parameter/color_curve = SubResource("CurveTexture_5747v")
[sub_resource type="ViewportTexture" id="ViewportTexture_dp7jk"]

@ -1,6 +1,7 @@
shader_type canvas_item;
uniform vec2 target_tex_size = vec2(1280,720);
uniform int sample_count:hint_range(1, 20) = 1;
uniform float color_steps:hint_range(1.0, 255.0, 1.0);
uniform sampler2D color_curve;
@ -10,12 +11,31 @@ void vertex() {
// Called for every vertex the material is visible on.
}
vec2 spiralPoint(float t, float spacing)
{
float b = spacing / (2.0 * PI);
float r = b * t;
return vec2(
r * cos(t),
r * sin(t)
);
}
void fragment() {
//vec2 texSize = vec2(textureSize(TEXTURE,0)); // For performance reasons, this function should be avoided as it always performs a full texture read. When possible, you should pass the texture size as a uniform instead.
//texSize = texSize / 4.;
ivec2 intUv = ivec2(target_tex_size * UV);
vec2 flooredUv = vec2(intUv) / target_tex_size;
vec3 fullColor = texture(TEXTURE,flooredUv).rgb;
vec2 uvPixelWidth = 1. / target_tex_size;
vec3 fullColor = vec3(0);
for(int i = 0;i<sample_count;i++){
float f = float(i);
fullColor += texture(TEXTURE,flooredUv+spiralPoint(f*2.,uvPixelWidth.x / (float(sample_count)/6.283))).rgb;
}
fullColor /= float(sample_count);
vec3 strechedColor = vec3(
texture(color_curve,vec2(fullColor.r,0)).r,
texture(color_curve,vec2(fullColor.g,0)).g,

Loading…
Cancel
Save