material-maker/material_maker/preview/preview_2d_panel.tscn

189 lines
5.8 KiB
Plaintext

[gd_scene load_steps=9 format=2]
[ext_resource path="res://material_maker/icons/icons.svg" type="Texture" id=1]
[ext_resource path="res://material_maker/preview/control_point.tscn" type="PackedScene" id=2]
[ext_resource path="res://material_maker/preview/preview_2d.tscn" type="PackedScene" id=3]
[ext_resource path="res://material_maker/preview/preview_2d_panel.gd" type="Script" id=4]
[sub_resource type="Shader" id=1]
code = "shader_type canvas_item;
uniform vec2 size = vec2(585.0, 453.0);
uniform bool show_tiling = false;
uniform float margin = 0.2;
vec4 preview_2d(vec2 uv) {
return vec4(0.8);
}
void fragment() {
float ms = max(size.x, size.y);
float margin_factor = 1.0+max(0.0, margin);
vec2 uv = 0.5+margin_factor*(UV-vec2(0.5))*ms/size.yx;
float is = min(size.x, size.y)/margin_factor;
vec4 image = preview_2d(fract(uv));
float checkerboard = mod(floor(uv.x*32.0)+floor(uv.y*32.0), 2.0);
vec3 image_with_background = mix(vec3(checkerboard), image.xyz, image.a);
if (show_tiling) {
vec2 m2 = min(fract(uv), 1.0-fract(uv));
float lines_color = 0.5*(cos(5.0*TIME+100.0*(uv.x+uv.y))+1.0);
COLOR = vec4(mix(image_with_background, vec3(lines_color), step(is*min(m2.x, m2.y), 1.0)), 1.0);
} else {
vec2 outside = step(abs(uv-vec2(0.5)), vec2(0.5));
COLOR = vec4(mix(vec3(0.0), image_with_background, outside.x*outside.y), 1.0);
}
}"
custom_defines = ""
[sub_resource type="ShaderMaterial" id=2]
shader = SubResource( 1 )
shader_param/size = Vector2( 585, 492 )
shader_param/show_tiling = false
shader_param/margin = 0.5
[sub_resource type="AtlasTexture" id=3]
flags = 4
atlas = ExtResource( 1 )
region = Rect2( 64, 48, 32, 32 )
[sub_resource type="AtlasTexture" id=4]
flags = 4
atlas = ExtResource( 1 )
region = Rect2( 16, 64, 16, 16 )
[node name="Preview2D" instance=ExtResource( 3 )]
material = SubResource( 2 )
margin_right = -758.0
margin_bottom = -267.0
rect_min_size = Vector2( 200, 200 )
script = ExtResource( 4 )
shader = "uniform vec2 size;
uniform bool export = false;
uniform bool show_tiling = true;
uniform float margin = 0.5;
void fragment() {
float ms = max(size.x, size.y);
float margin_factor = 1.0+max(0.0, margin);
vec2 uv = 0.5+margin_factor*(UV-vec2(0.5))*ms/size.yx;
float is = min(size.x, size.y)/margin_factor;
vec4 image = preview_2d(fract(uv));
if (export) {
COLOR = image;
} else {
float checkerboard = mod(floor(uv.x*32.0)+floor(uv.y*32.0), 2.0);
vec3 image_with_background = mix(vec3(checkerboard), image.xyz, image.a);
if (show_tiling) {
vec2 m2 = min(fract(uv), 1.0-fract(uv));
float lines_color = 0.5*(cos(5.0*TIME+100.0*(uv.x+uv.y))+1.0);
COLOR = vec4(mix(image_with_background, vec3(lines_color), step(is*min(m2.x, m2.y), 1.0)), 1.0);
} else {
vec2 outside = step(abs(uv-vec2(0.5)), vec2(0.5));
COLOR = vec4(mix(vec3(0.0), image_with_background, outside.x*outside.y), 1.0);
}
}
}
"
[node name="P1" parent="." index="0" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.466667, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 37.0
margin_bottom = 61.0
texture = SubResource( 3 )
[node name="P2" parent="." index="1" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 0, 0.505882, 1, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 37.0
margin_bottom = 61.0
texture = SubResource( 3 )
[node name="Rect1" parent="." index="2" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.631373, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 21.0
margin_bottom = 45.0
texture = SubResource( 4 )
parent_control = "P1"
control_type = 1
[node name="Radius1" parent="." index="3" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.631373, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 21.0
margin_bottom = 45.0
mouse_default_cursor_shape = 10
texture = SubResource( 4 )
parent_control = "P1"
control_type = 2
[node name="Radius11" parent="." index="4" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.631373, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 21.0
margin_bottom = 45.0
mouse_default_cursor_shape = 10
texture = SubResource( 4 )
parent_control = "Radius1"
control_type = 2
[node name="Scale1" parent="." index="5" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.631373, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 21.0
margin_bottom = 45.0
mouse_default_cursor_shape = 10
texture = SubResource( 4 )
parent_control = "P1"
control_type = 3
[node name="Angle1" parent="." index="6" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.631373, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 21.0
margin_bottom = 45.0
mouse_default_cursor_shape = 10
texture = SubResource( 4 )
parent_control = "P1"
control_type = 2
[node name="Angle2" parent="." index="7" instance=ExtResource( 2 )]
visible = false
self_modulate = Color( 1, 0.631373, 0, 1 )
margin_left = 5.0
margin_top = 29.0
margin_right = 21.0
margin_bottom = 45.0
mouse_default_cursor_shape = 10
texture = SubResource( 4 )
parent_control = "P1"
control_type = 2
[node name="ContextMenu" type="PopupMenu" parent="." index="8"]
margin_right = 109.0
margin_bottom = 52.0
items = [ "Show tiling", null, 1, false, false, 0, 0, null, "", false ]
[node name="Export" type="PopupMenu" parent="ContextMenu" index="1"]
margin_right = 91.0
margin_bottom = 88.0
items = [ "256x256", null, 0, false, false, 0, 0, null, "", false, "512x512", null, 0, false, false, 1, 0, null, "", false, "1024x1024", null, 0, false, false, 2, 0, null, "", false, "2048x2048", null, 0, false, false, 3, 0, null, "", false ]
[connection signal="gui_input" from="." to="." method="_on_gui_input"]
[connection signal="id_pressed" from="ContextMenu" to="." method="_on_ContextMenu_id_pressed"]
[connection signal="id_pressed" from="ContextMenu/Export" to="." method="_on_Export_id_pressed"]