152 lines
3.7 KiB
Plaintext
152 lines
3.7 KiB
Plaintext
[gd_scene load_steps=13 format=2]
|
|
|
|
[ext_resource path="res://material_maker/widgets/histogram/histogram.gd" type="Script" id=1]
|
|
|
|
[sub_resource type="Shader" id=1]
|
|
resource_local_to_scene = true
|
|
code = "shader_type canvas_item;
|
|
render_mode blend_disabled;
|
|
|
|
void fragment() {
|
|
COLOR = vec4(0.0);
|
|
}
|
|
"
|
|
|
|
[sub_resource type="ShaderMaterial" id=3]
|
|
resource_local_to_scene = true
|
|
shader = SubResource( 1 )
|
|
|
|
[sub_resource type="Shader" id=4]
|
|
code = "shader_type canvas_item;
|
|
render_mode blend_disabled;
|
|
|
|
uniform sampler2D tex;
|
|
uniform float size = 256;
|
|
|
|
void fragment() {
|
|
float e = 1.0/size;
|
|
vec4 sum = vec4(0.0);
|
|
for (float y = 0.5*e; y < 1.0; y += e) {
|
|
sum += max(vec4(0.0), vec4(1.0)-16.0*abs(texture(tex, vec2(UV.x, y))-UV.y));
|
|
}
|
|
COLOR = sum/size;
|
|
}
|
|
"
|
|
|
|
[sub_resource type="ViewportTexture" id=5]
|
|
viewport_path = NodePath("ViewportImage")
|
|
|
|
[sub_resource type="ShaderMaterial" id=6]
|
|
resource_local_to_scene = true
|
|
shader = SubResource( 4 )
|
|
shader_param/size = 256
|
|
shader_param/tex = SubResource( 5 )
|
|
|
|
[sub_resource type="Shader" id=7]
|
|
code = "shader_type canvas_item;
|
|
render_mode blend_disabled;
|
|
|
|
uniform sampler2D tex;
|
|
uniform float size = 256;
|
|
|
|
void fragment() {
|
|
float e = 1.0/size;
|
|
vec4 sum = vec4(0.0);
|
|
for (float y = 0.5*e; y < 1.0; y += e) {
|
|
sum += texture(tex, vec2(y, UV.x));
|
|
}
|
|
COLOR = sum/size;
|
|
}"
|
|
|
|
[sub_resource type="ViewportTexture" id=8]
|
|
viewport_path = NodePath("ViewportHistogram1")
|
|
|
|
[sub_resource type="ShaderMaterial" id=9]
|
|
resource_local_to_scene = true
|
|
shader = SubResource( 7 )
|
|
shader_param/size = 256
|
|
shader_param/tex = SubResource( 8 )
|
|
|
|
[sub_resource type="Shader" id=10]
|
|
code = "shader_type canvas_item;
|
|
render_mode blend_disabled;
|
|
|
|
uniform sampler2D tex;
|
|
uniform float gradient_width = 0.1;
|
|
|
|
void fragment() {
|
|
if (abs(fract(UV.y+gradient_width)) < 2.0*gradient_width) {
|
|
COLOR = vec4(vec3(UV.x), 1.0);
|
|
} else {
|
|
float e = 1.0/256.0;
|
|
vec4 highest = vec4(0.0);
|
|
for (float x = 0.5*e; x < 1.0; x += e) {
|
|
highest = max(highest, texture(tex, vec2(x, 0.0)));
|
|
}
|
|
vec4 raw_value = texture(tex, vec2(UV.x, 0.0));
|
|
vec4 value = step(vec4(1.0-gradient_width-UV.y)*highest/(1.0-2.0*gradient_width), raw_value);
|
|
float alpha = step(2.0*gradient_width, dot(value, vec4(1.0)));
|
|
COLOR = vec4(mix(value.rgb, vec3(0.5), 0.3*value.a), alpha);
|
|
}
|
|
}"
|
|
|
|
[sub_resource type="ViewportTexture" id=11]
|
|
flags = 4
|
|
viewport_path = NodePath("ViewportHistogram2")
|
|
|
|
[sub_resource type="ShaderMaterial" id=12]
|
|
resource_local_to_scene = true
|
|
shader = SubResource( 10 )
|
|
shader_param/gradient_width = 0.1
|
|
shader_param/tex = SubResource( 11 )
|
|
|
|
[node name="Histogram" type="Control" groups=["preview"]]
|
|
margin_right = 64.0
|
|
margin_bottom = 64.0
|
|
script = ExtResource( 1 )
|
|
|
|
[node name="ViewportImage" type="Viewport" parent="."]
|
|
size = Vector2( 256, 256 )
|
|
transparent_bg = true
|
|
hdr = false
|
|
usage = 0
|
|
render_target_v_flip = true
|
|
render_target_update_mode = 1
|
|
|
|
[node name="ColorRect" type="ColorRect" parent="ViewportImage"]
|
|
material = SubResource( 3 )
|
|
margin_right = 256.0
|
|
margin_bottom = 256.0
|
|
|
|
[node name="ViewportHistogram1" type="Viewport" parent="."]
|
|
size = Vector2( 256, 256 )
|
|
own_world = true
|
|
transparent_bg = true
|
|
disable_3d = true
|
|
keep_3d_linear = true
|
|
render_target_v_flip = true
|
|
render_target_update_mode = 1
|
|
|
|
[node name="ColorRect" type="ColorRect" parent="ViewportHistogram1"]
|
|
material = SubResource( 6 )
|
|
margin_right = 256.0
|
|
margin_bottom = 256.0
|
|
|
|
[node name="ViewportHistogram2" type="Viewport" parent="."]
|
|
size = Vector2( 256, 2 )
|
|
transparent_bg = true
|
|
disable_3d = true
|
|
keep_3d_linear = true
|
|
render_target_v_flip = true
|
|
render_target_update_mode = 1
|
|
|
|
[node name="ColorRect" type="ColorRect" parent="ViewportHistogram2"]
|
|
material = SubResource( 9 )
|
|
margin_right = 256.0
|
|
margin_bottom = 2.0
|
|
|
|
[node name="Control" type="ColorRect" parent="."]
|
|
material = SubResource( 12 )
|
|
anchor_right = 1.0
|
|
anchor_bottom = 1.0
|